<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>230812</bug_id>
          
          <creation_ts>2021-09-26 19:51:12 -0700</creation_ts>
          <short_desc>Move Cross-Origin-Opener-Policy handling to the NetworkProcess</short_desc>
          <delta_ts>2021-12-02 14:27:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233783</dependson>
          <blocked>228755</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>pfeldman</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797331</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-26 19:51:12 -0700</bug_when>
    <thetext>Move Cross-Origin-Opener-Policy handling to from the WebContent process to the NetworkProcess. This is safer since the WebContent process is not a trusted process and it avoids having to send the ResourceResponse to the WebProcess in order to trigger cross-origin isolation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797332</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-26 19:51:27 -0700</bug_when>
    <thetext>&lt;rdar://83504842&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797337</commentid>
    <comment_count>2</comment_count>
      <attachid>439307</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-26 20:07:57 -0700</bug_when>
    <thetext>Created attachment 439307
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797338</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-26 20:08:52 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797471</commentid>
    <comment_count>4</comment_count>
      <attachid>439356</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-27 08:24:36 -0700</bug_when>
    <thetext>Created attachment 439356
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797534</commentid>
    <comment_count>5</comment_count>
      <attachid>439365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-27 09:45:44 -0700</bug_when>
    <thetext>Created attachment 439365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797773</commentid>
    <comment_count>6</comment_count>
      <attachid>439365</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-28 00:35:41 -0700</bug_when>
    <thetext>Comment on attachment 439365
Patch

LGTM with some nits below.
I would just make sure to cover all code paths (service worker, cache) now that we are moving checks to the network process.

View in context: https://bugs.webkit.org/attachment.cgi?id=439365&amp;action=review

&gt; Source/WebCore/ChangeLog:28
&gt; +        context group switch but currently do not involved the network process. I also had to add

s/involved/involve.

&gt; Source/WebCore/loader/CrossOriginOpenerPolicy.cpp:239
&gt; +// https://html.spec.whatwg.org/multipage/browsing-the-web.html#process-a-navigate-fetch (Step 12.5.6)

13.5.6?

&gt; Source/WebCore/loader/DocumentLoader.cpp:745
&gt;  // https://html.spec.whatwg.org/multipage/browsing-the-web.html#process-a-navigate-fetch (Step 12.5.6)

13.5.6?

&gt; Source/WebCore/loader/NavigationRequester.h:81
&gt; +    return NavigationRequester { WTFMove(*url), securityOrigin.releaseNonNull(), topOrigin.releaseNonNull(), WTFMove(*crossOriginOpenerPolicy), WTFMove(*globalFrameIdentifier) };

Probably do not need move for the last two.

&gt; Source/WebCore/loader/ReportingEndpointsCache.cpp:70
&gt; +    return addEndPointsFromReportToHeader(response.url(), response.httpHeaderField(HTTPHeaderName::ReportTo));

s/EndPoints/Endpoints/

&gt; Source/WebCore/loader/ReportingEndpointsCache.cpp:73
&gt; +void ReportingEndpointsCache::addEndPointsFromReportToHeader(const URL&amp; responseURL, const String&amp; reportToHeaderValue)

Ditto.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:326
&gt; +    result.openerURL = *openerURL;

Could use a move

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:77
&gt; +    uint64_t navigationID { 0 };

Should we use an ObjectIdentifier?

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:1012
&gt; +        didFailLoading(ResourceError { errorDomainWebKitInternal, 0, redirectRequest.url(), &quot;Redirection was blocked by Cross-Origin-Opener-Policy&quot;_s, ResourceError::Type::AccessControl });

It would be nice to have doCrossOriginOpenerHandlingOfResponse return an optional&lt;ResourceError&gt;.
Do we have a test case for this one?

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:1324
&gt; +        didFailLoading(ResourceError { errorDomainWebKitInternal, 0, response.url(), &quot;Navigation was blocked by Cross-Origin-Opener-Policy&quot;_s, ResourceError::Type::AccessControl });

return missing.
It might be good to add a test case.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:163
&gt; +    if (!m_loader.doCrossOriginOpenerHandlingOfResponse(response)) {

Do we have tests for that code path?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:439
&gt; +void NetworkProcessProxy::triggerBrowsingContextGroupSwitchForNavigation(WebPageProxyIdentifier pageID, uint64_t navigationID, BrowsingContextGroupSwitchDecision browsingContextGroupSwitchDecision, WebCore::RegistrableDomain responseDomain, NetworkResourceLoadIdentifier existingNetworkResourceLoadIdentifierToResume)

s/RegistrationDomain/const RegistrationDomain&amp; or RegistrationDomain&amp;&amp;

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:443
&gt; +        page-&gt;triggerBrowsingContextGroupSwitchForNavigation(navigationID, browsingContextGroupSwitchDecision, responseDomain, existingNetworkResourceLoadIdentifierToResume);

It would be nice to have a &apos;cancel&apos; switch for navigation that would just clear the entry from the pending switch loader map in network process.
As an async callback for instance. Not sure we can make it 100% working though

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5676
&gt; +void WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation(uint64_t navigationID, BrowsingContextGroupSwitchDecision browsingContextGroupSwitchDecision, WebCore::RegistrableDomain responseDomain, NetworkResourceLoadIdentifier existingNetworkResourceLoadIdentifierToResume)

const WebCore::RegistrableDomain&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797882</commentid>
    <comment_count>7</comment_count>
      <attachid>439365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-28 07:29:43 -0700</bug_when>
    <thetext>Comment on attachment 439365
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=439365&amp;action=review

&gt;&gt; Source/WebCore/loader/CrossOriginOpenerPolicy.cpp:239
&gt;&gt; +// https://html.spec.whatwg.org/multipage/browsing-the-web.html#process-a-navigate-fetch (Step 12.5.6)
&gt; 
&gt; 13.5.6?

Indeed, I guess the spec got updated.

&gt;&gt; Source/WebCore/loader/NavigationRequester.h:81
&gt;&gt; +    return NavigationRequester { WTFMove(*url), securityOrigin.releaseNonNull(), topOrigin.releaseNonNull(), WTFMove(*crossOriginOpenerPolicy), WTFMove(*globalFrameIdentifier) };
&gt; 
&gt; Probably do not need move for the last two.

CrossOriginOpenerPolicy is a struct containing Strings so I think it is useful. I agree for globalFrameIdentifier though.

&gt;&gt; Source/WebCore/loader/ReportingEndpointsCache.cpp:70
&gt;&gt; +    return addEndPointsFromReportToHeader(response.url(), response.httpHeaderField(HTTPHeaderName::ReportTo));
&gt; 
&gt; s/EndPoints/Endpoints/

Ah yes, I keep making this mistake.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:326
&gt;&gt; +    result.openerURL = *openerURL;
&gt; 
&gt; Could use a move

Agreed.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:77
&gt;&gt; +    uint64_t navigationID { 0 };
&gt; 
&gt; Should we use an ObjectIdentifier?

Well yes but probably not in this patch. NavigationID is currently typed as a uint64_t in WebKit.

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:163
&gt;&gt; +    if (!m_loader.doCrossOriginOpenerHandlingOfResponse(response)) {
&gt; 
&gt; Do we have tests for that code path?

Definitely, that&apos;s how I found out I was missing it in an earlier patch iteration (both here and in the cached resource case, which I had not thought about initially).

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:443
&gt;&gt; +        page-&gt;triggerBrowsingContextGroupSwitchForNavigation(navigationID, browsingContextGroupSwitchDecision, responseDomain, existingNetworkResourceLoadIdentifierToResume);
&gt; 
&gt; It would be nice to have a &apos;cancel&apos; switch for navigation that would just clear the entry from the pending switch loader map in network process.
&gt; As an async callback for instance. Not sure we can make it 100% working though

If I understand the request correctly, maybe we could add a CompletionHandler&lt;void(bool success)&gt; parameter and have the NetworkProcess destroy the cached loader when success == false?
Currently, it would naturally happen on a timer but I guess it is good to be pro-active.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5676
&gt;&gt; +void WebPageProxy::triggerBrowsingContextGroupSwitchForNavigation(uint64_t navigationID, BrowsingContextGroupSwitchDecision browsingContextGroupSwitchDecision, WebCore::RegistrableDomain responseDomain, NetworkResourceLoadIdentifier existingNetworkResourceLoadIdentifierToResume)
&gt; 
&gt; const WebCore::RegistrableDomain&amp;

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797885</commentid>
    <comment_count>8</comment_count>
      <attachid>439475</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-28 07:58:04 -0700</bug_when>
    <thetext>Created attachment 439475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797886</commentid>
    <comment_count>9</comment_count>
      <attachid>439476</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-28 08:12:10 -0700</bug_when>
    <thetext>Created attachment 439476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797946</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-28 10:21:24 -0700</bug_when>
    <thetext>Committed r283179 (242227@main): &lt;https://commits.webkit.org/242227@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439476.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439307</attachid>
            <date>2021-09-26 20:07:57 -0700</date>
            <delta_ts>2021-09-27 08:24:36 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>move_COOP_to_NetworkProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>134781</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDg3OTE2Yzk2ODNlMS4uMTc2ZTMxNDVhNzc4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
cm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IE5hdmlnYXRpb24gd2FzIGJs
b2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kKK0NPTlNPTEUgTUVTU0FHRTogTmF2
aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeQogCiBQQVNT
IDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1v
cmlnaW4iPiBTYW5kYm94ZWQgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgcG9wdXAgc2hvdWxk
IHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJyb3IKIFBBU1MgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1w
b3B1cHMgYWxsb3ctc2NyaXB0cyI+IFNhbmRib3hlZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSBwb3B1cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBlcnJvcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1vcGVuZXItcG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9w
ZW5lci1wb2xpY3kvY29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NzkxNmM5
NjgzZTEuLjE3NmUzMTQ1YTc3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3At
c2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3At
c2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw1IEBACitDT05TT0xFIE1FU1NB
R0U6IE5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kK
K0NPTlNPTEUgTUVTU0FHRTogTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeQogCiBQQVNTIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93
LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iPiBTYW5kYm94ZWQgQ3Jvc3MtT3JpZ2luLU9wZW5l
ci1Qb2xpY3kgcG9wdXAgc2hvdWxkIHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJyb3IKIFBBU1MgPGlm
cmFtZSBzYW5kYm94PSJhbGxvdy1wb3B1cHMgYWxsb3ctc2NyaXB0cyI+IFNhbmRib3hlZCBDcm9z
cy1PcmlnaW4tT3BlbmVyLVBvbGljeSBwb3B1cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBl
cnJvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9jb29wLWNvZXAu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL2Nvb3AtY29lcC5weQppbmRleCAzM2M0
YWMyMmIyMjIuLjIwZjA1ZTA2MjE4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jl
c291cmNlcy9jb29wLWNvZXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9j
b29wLWNvZXAucHkKQEAgLTEwLDYgKzEwLDcgQEAgZGVmIG1haW4ocmVxdWVzdCwgcmVzcG9uc2Up
OgogICAgIGNvZXAgPSByZXF1ZXN0RGF0YS5maXJzdChiImNvZXAiKQogICAgIGNvZXBSZXBvcnRP
bmx5ID0gcmVxdWVzdERhdGEuZmlyc3QoYiJjb2VwLXJlcG9ydC1vbmx5IiwgTm9uZSkKICAgICBy
ZWRpcmVjdCA9IHJlcXVlc3REYXRhLmZpcnN0KGIicmVkaXJlY3QiLCBOb25lKQorICAgIHJlc3Bv
bnNlLmhlYWRlcnMuc2V0KGIiWC1TZWNyZXQiLCAibXktc2VjcmV0IikKICAgICBpZiBjb29wICE9
IGIiIjoKICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDcm9zcy1PcmlnaW4tT3BlbmVy
LVBvbGljeSIsIGNvb3ApCiAgICAgaWYgY29vcFJlcG9ydE9ubHkgaXMgbm90IE5vbmU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBlYzA1MDE0MmE1ZmMuLjhmMzk0Y2UyZGYzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC04MzEsNiArODMxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKICAgICBsb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5oCiAgICAgbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorICAgIGxv
YWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmgKICAgICBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaAogICAgIGxvYWRlci9QaW5nTG9hZGVyLmgKICAgICBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDQzMjBhZGMyODllMC4uZTM2YWQ0N2ZhYmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMTU2MCw2ICsxNTYwLDcgQEAgbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNw
cAogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCiBsb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorbG9hZGVyL05hdmlnYXRpb25S
ZXF1ZXN0ZXIuY3BwCiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKIGxvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKIGxvYWRlci9QaW5nTG9hZGVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQx
ODdmMTMzMzQzMy4uNjEzMzU1MDUyMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzIzLDYgKzEzMjMsNyBAQAogCQk0Njgz
NDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2
MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJv
YWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjlENzdCODI3
MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8q
IE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDYzLDgg
Kzg0NjQsMTAgQEAKIAkJNDY5Q0NDRkEyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5u
ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNh
c3RDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2Fz
dENoYW5uZWwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uUmVxdWVz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QUFBQTNBMjVEMzYzMTQwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkFDRDgxMTI3MDE2NTZBMDBF
RjhDRUQgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhB
QTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFnZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCODU5M0Ey
NjE2NzIwQzAwMTlFREM2IC8qIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNzc4OSw2ICsyNzc5Miw4IEBACiAJCQkJOTNDQ0YwNUYwQUY2Q0E3NjAwMDE4
RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICovLAogCQkJCTkzQ0NGMDI2MEFGNkM1MjkwMDAx
OEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi8sCiAJCQkJOUJBODI3NzgxRjA2MTU2NTAwRjcx
RTc1IC8qIE5hdmlnYXRpb25EaXNhYmxlci5oICovLAorCQkJCTQ2QUNEODExMjcwMTY1NkEwMEVG
OENFRCAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcCAqLywKKwkJCQk0NjlENzdCNjI3MDE2MjUw
MDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovLAogCQkJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLywKIAkJCQk5NzlGNDNEMjEw
NzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oICovLAogCQkJCTkzRTIyN0RE
MEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgKi8sCkBA
IC0zMjI4NSw2ICszMjI5MCw3IEBACiAJCQkJOTNBODA2MTUxRTAzQjUxQzAwOEExRjI2IC8qIERv
dWJsZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDE3NjJFNDE3NjY4NkVBMDBEODM2QTgg
LyogRG93blNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTg3NjBFMEIyQTEyMDEwMEEx
NkVDRSAvKiBEcmFnQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5RDc3QjgyNzAxNjI1
MTAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
Q0E1OTYzMEIyN0MxRjIwMEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0NBNTk1RDBCMjdCRDlFMDBGQTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QjZFNjlGMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGVhMGEwODAyYzU3Zi4uYzQxOGQ1OTBkMTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTYW1lT3JpZ2luQXNUb3BEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHNlY3VyaXR5
T3JpZ2luKCkuaXNTYW1lT3JpZ2luQXModG9wT3JpZ2luKCkpOyB9CiAgICAgYm9vbCBzaG91bGRG
b3JjZU5vT3BlbmVyQmFzZWRPbkNPT1AoKSBjb25zdDsKIAotICAgIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiBjcm9zc09yaWdpbk9wZW5lclBvbGljeSgpIGNvbnN0IGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjcm9zc09yaWdp
bk9wZW5lclBvbGljeSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3koY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmKTsKIAogICAgIHZvaWQgd2ls
bExvYWRTY3JpcHRFbGVtZW50KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKaW5kZXggYzY1ZjFiMjJkNTcyLi5mZTc4
MTVlMzllNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNs
dWRlICJOYXZpZ2F0aW9uUmVxdWVzdGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC02OCwxMyAr
NjksODcgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVl
VG9FZmZlY3RpdmVQb2xpY3lTdHJpbmcoQ3Jvc3NPcmkKICAgICByZXR1cm4gInVuc2FmZS1ub25l
Il9zOwogfQogCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmln
aW4uaHRtbCNjaGVjay1icm93c2luZy1jb250ZXh0LWdyb3VwLXN3aXRjaC1jb29wLXZhbHVlCitz
dGF0aWMgYm9vbCBjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFs
dWUgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVE
b2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUgcmVz
cG9uc2VDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbikKK3sK
KyAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIGFjdGl2ZURvY3VtZW50Q09PUFZhbHVl
LCBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUFZhbHVlLCBhbmQg
cmVzcG9uc2VPcmlnaW4gaXMgdHJ1ZSwgcmV0dXJuIGZhbHNlLgorICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI21hdGNoaW5nLWNvb3AKKyAg
ICBpZiAoYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lW
YWx1ZTo6VW5zYWZlTm9uZSAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5l
clBvbGljeVZhbHVlOjpVbnNhZmVOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGFjdGl2ZURvY3VtZW50Q09PUFZhbHVlID09IHJlc3BvbnNlQ09PUFZhbHVlICYmIGFjdGl2ZURv
Y3VtZW50TmF2aWdhdGlvbk9yaWdpbi5pc1NhbWVPcmlnaW5BcyhyZXNwb25zZU9yaWdpbikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIElmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFy
ZSB0cnVlOgorICAgIC8vIC0gaXNJbml0aWFsQWJvdXRCbGFuaywKKyAgICAvLyAtIGFjdGl2ZURv
Y3VtZW50Q09PUFZhbHVlJ3MgdmFsdWUgaXMgInNhbWUtb3JpZ2luLWFsbG93LXBvcHVwcyIuCisg
ICAgLy8gLSByZXNwb25zZUNPT1BWYWx1ZSBpcyAidW5zYWZlLW5vbmUiLAorICAgIC8vIHRoZW4g
cmV0dXJuIGZhbHNlLgorICAgIGlmIChpc0luaXRpYWxBYm91dEJsYW5rICYmIGFjdGl2ZURvY3Vt
ZW50Q09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW5B
bGxvd1BvcHVwcyAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGlj
eVZhbHVlOjpVbnNhZmVOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3Jp
Z2luLmh0bWwjY2hlY2stYmNnLXN3aXRjaC1uYXZpZ2F0aW9uLXJlcG9ydC1vbmx5CitzdGF0aWMg
Ym9vbCBjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIGNvbnN0IENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5JiBhY3RpdmVEb2N1bWVudENPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5JiByZXNwb25zZUNPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdp
bikKK3sKKyAgICBpZiAoIWNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0QmxhbmssIGFjdGl2ZURvY3VtZW50Q09PUC5yZXBvcnRP
bmx5VmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QLnJl
cG9ydE9ubHlWYWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2goaXNJbml0aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9ydE9ubHlWYWx1
ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AudmFsdWUsIHJl
c3BvbnNlT3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoY2hlY2tJZkNP
T1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJbml0aWFsQWJvdXRC
bGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnZhbHVlLCBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25P
cmlnaW4sIHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5VmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBzdGQ6
OnR1cGxlPFJlZjxTZWN1cml0eU9yaWdpbj4sIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBjb21w
dXRlUmVzcG9uc2VPcmlnaW5BbmRDT09QKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIsIENv
bnRlbnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1ApCit7CisgICAgLy8gTm9uLWluaXRpYWwg
ZW1wdHkgZG9jdW1lbnRzIChhYm91dDpibGFuaykgc2hvdWxkIGluaGVyaXQgdGhlaXIgY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kgZnJvbSB0aGUgbmF2aWdhdGlvbidzIGluaXRpYXRvciB0b3Ag
bGV2ZWwgZG9jdW1lbnQsCisgICAgLy8gaWYgdGhlIGluaXRpYXRvciBhbmQgaXRzIHRvcCBsZXZl
bCBkb2N1bWVudCBhcmUgc2FtZS1vcmlnaW4sIG9yIGRlZmF1bHQgKHVuc2FmZS1ub25lKSBvdGhl
cndpc2UuCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy82OTEz
CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9t
T3duZXIocmVzcG9uc2UudXJsKCkpICYmIHJlcXVlc3RlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShyZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luLCByZXF1ZXN0ZXItPnNlY3VyaXR5
T3JpZ2luLT5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnRvcE9yaWdpbikgPyByZXF1ZXN0ZXIt
PmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IDogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgeyB9KTsK
KworICAgIC8vIElmIHRoZSBIVFRQIHJlc3BvbnNlIGNvbnRhaW5zIGEgQ1NQIGhlYWRlciwgaXQg
bWF5IHNldCBzYW5kYm94IGZsYWdzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgb3JpZ2luIHRvIGJl
Y29tZSB1bmlxdWUuCisgICAgYXV0byByZXNwb25zZU9yaWdpbiA9IHJlc3BvbnNlQ1NQICYmIHJl
c3BvbnNlQ1NQLT5zYW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSA/IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkp
OworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShyZXNwb25zZU9yaWdpbiksIG9i
dGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KHJlc3BvbnNlKSk7Cit9CisKKy8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2Nvb3AtZW5mb3JjZQor
c3RhdGljIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgZW5mb3JjZVJl
c3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3lFbmZvcmNlbWVudFJlc3VsdCYgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCwgY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luLCBjb25zdCBD
cm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBib29sIGlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50LCBjb25zdCBGdW5jdGlvbjx2b2lkKENPT1BEaXNwb3NpdGlvbik+
JiBzZW5kVmlvbGF0aW9uUmVwb3J0cykKK3sKKyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVu
Zm9yY2VtZW50UmVzdWx0IG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdCA9IHsKKyAgICAgICAgcmVz
cG9uc2VVUkwsCisgICAgICAgIHJlc3BvbnNlT3JpZ2luLAorICAgICAgICByZXNwb25zZUNPT1As
CisgICAgICAgIHRydWUgLyogaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UgKi8sCisg
ICAgICAgIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaCwKKyAgICAgICAgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5CisgICAgfTsKKworICAgIGlm
IChjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0Rp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC5jcm9zc09yaWdpbk9wZW5lclBvbGljeS52YWx1ZSwgY3VycmVudENvb3BFbmZvcmNlbWVudFJl
c3VsdC5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1AudmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkg
eworICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaCA9IHRydWU7CisgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRzKENPT1BEaXNw
b3NpdGlvbjo6RW5mb3JjZSk7CisgICAgfQorCisgICAgaWYgKGNoZWNrSWZFbmZvcmNpbmdSZXBv
cnRPbmx5Q09PUFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGlzRGlzcGxh
eWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmNy
b3NzT3JpZ2luT3BlbmVyUG9saWN5LCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmN1cnJl
bnRPcmlnaW4sIHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VPcmlnaW4pKSB7CisgICAgICAgIG5ld0NP
T1BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRHVlVG9S
ZXBvcnRPbmx5ID0gdHJ1ZTsKKyAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydHMoQ09PUERpc3Bv
c2l0aW9uOjpSZXBvcnRpbmcpOworICAgIH0KKworICAgIHJldHVybiBuZXdDT09QRW5mb3JjZW1l
bnRSZXN1bHQ7Cit9CisKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L29yaWdpbi5odG1sI29idGFpbi1jb29wCi1Dcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5D
cm9zc09yaWdpbk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK0Nyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeT4gY29lcDsKLSAgICBhdXRvIGVuc3VyZUNPRVAgPSBbJmNvZXAsICZyZXNwb25zZSwgJmNv
bnRleHRdKCkgLT4gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgeworICAgIGF1dG8gZW5zdXJl
Q09FUCA9IFsmY29lcCwgJnJlc3BvbnNlXSgpIC0+IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3km
IHsKICAgICAgICAgaWYgKCFjb2VwKQotICAgICAgICAgICAgY29lcCA9IG9idGFpbkNyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3kocmVzcG9uc2UsICZjb250ZXh0KTsKKyAgICAgICAgICAgIGNvZXAg
PSBvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3BvbnNlLCBudWxscHRyKTsKICAg
ICAgICAgcmV0dXJuICpjb2VwOwogICAgIH07CiAgICAgYXV0byBwYXJzZUNPT1AgPSBbJnJlc3Bv
bnNlLCAmZW5zdXJlQ09FUF0oSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZSwgYXV0byYgdmFsdWUs
IGF1dG8mIHJlcG9ydGluZ0VuZHBvaW50KSB7CkBAIC05NSw3ICsxNzAsNyBAQCBDcm9zc09yaWdp
bk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdpbk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZQogICAgIH07CiAKICAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBwb2xp
Y3k7Ci0gICAgaWYgKCFjb250ZXh0LnNldHRpbmdzVmFsdWVzKCkuY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3lFbmFibGVkIHx8ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKS0+
aXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkpCisgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHJlc3BvbnNlLnVybCgpKS0+aXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkpCiAgICAgICAg
IHJldHVybiBwb2xpY3k7CiAKICAgICBwYXJzZUNPT1AoSFRUUEhlYWRlck5hbWU6OkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LCBwb2xpY3kudmFsdWUsIHBvbGljeS5yZXBvcnRpbmdFbmRwb2ludCk7
CkBAIC0xNjAsNCArMjM1LDI4IEBAIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0
aW5nQXdheUZyb21DT09QUmVzcG9uc2UoRnJhbWUmIGZyYW1lLCBDcm9zc09yCiAgICAgfSk7CiB9
CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRo
ZS13ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42KQorc3RkOjpv
cHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBkb0Nyb3Nz
T3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0
ZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1AsIFNhbmRib3hGbGFncyBlZmZl
Y3RpdmVTYW5kYm94RmxhZ3MsIGJvb2wgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQs
IGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQmIGN1cnJlbnRD
b29wRW5mb3JjZW1lbnRSZXN1bHQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ09PUERpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09Q
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pPiYgc2VuZFZpb2xhdGlvblJl
cG9ydHMpCit7CisgICAgYXV0byBbcmVzcG9uc2VPcmlnaW4sIHJlc3BvbnNlQ09PUF0gPSBjb21w
dXRlUmVzcG9uc2VPcmlnaW5BbmRDT09QKHJlc3BvbnNlLCByZXF1ZXN0ZXIsIHJlc3BvbnNlQ1NQ
KTsKKworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dz
aW5nLXRoZS13ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42LjIp
CisgICAgLy8gSWYgc2FuZGJveEZsYWdzIGlzIG5vdCBlbXB0eSBhbmQgcmVzcG9uc2VDT09QJ3Mg
dmFsdWUgaXMgbm90ICJ1bnNhZmUtbm9uZSIsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGFuIGFwcHJv
cHJpYXRlIG5ldHdvcmsgZXJyb3IgYW5kIGJyZWFrLgorICAgIGlmIChyZXNwb25zZUNPT1AudmFs
dWUgIT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiBlZmZlY3Rp
dmVTYW5kYm94RmxhZ3MgIT0gU2FuZGJveE5vbmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCwgcmVzcG9uc2UudXJsKCksIHJlc3BvbnNlT3Jp
Z2luLCByZXNwb25zZUNPT1AsIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCBbJiwg
cmVzcG9uc2VPcmlnaW4gPSByZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QID0gcmVzcG9uc2VD
T09QXShDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pIHsKKyAgICAgICAgc2VuZFZpb2xhdGlv
blJlcG9ydHMoZGlzcG9zaXRpb24sIHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VPcmlnaW4pOworICAg
IH0pOworfQorCitDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IENyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ6OmZyb20oY29uc3QgVVJMJiBjdXJy
ZW50VVJMLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgY3VycmVudE9yaWdpbiwgY29uc3QgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kmIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpb25SZXF1ZXN0ZXI+IHJlcXVlc3RlciwgY29uc3QgVVJMJiBvcGVuZXJVUkwpCit7
CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCByZXN1bHQgeyBj
dXJyZW50VVJMLCBXVEZNb3ZlKGN1cnJlbnRPcmlnaW4pLCBjcm9zc09yaWdpbk9wZW5lclBvbGlj
eSB9OworICAgIHJlc3VsdC5pc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlvblNvdXJjZSA9IHJlcXVl
c3RlciAmJiByZXN1bHQuY3VycmVudE9yaWdpbi0+aXNTYW1lT3JpZ2luQXMocmVxdWVzdGVyLT5z
ZWN1cml0eU9yaWdpbik7CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2Vj
dXJpdHlPcmlnaW5Gcm9tT3duZXIoY3VycmVudFVSTCkgJiYgb3BlbmVyVVJMLmlzVmFsaWQoKSkK
KyAgICAgICAgcmVzdWx0LnVybCA9IG9wZW5lclVSTDsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbk9wZW5lclBvbGljeS5oCmluZGV4IDg3YTViMTMwY2RmNi4uZWZkNDNmNzUwYzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaApA
QCAtMzEsOSArMzEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3k7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAorc3RydWN0IE5hdmlnYXRpb25SZXF1ZXN0ZXI7CisKK3R5cGVkZWYg
aW50IFNhbmRib3hGbGFnczsKKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvb3JpZ2luLmh0bWwjY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3ktdmFsdWUKIGVudW0g
Y2xhc3MgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSA6IHVpbnQ4X3QgewogICAgIFVuc2Fm
ZU5vbmUsCkBAIC05OCwyMCArMTAzLDIzIEBAIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3k+IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5OjpkZWNvZGUoRGVjb2RlciYKIAogLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY29vcC1l
bmZvcmNlbWVudC1yZXN1bHQKIHN0cnVjdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2Vt
ZW50UmVzdWx0IHsKLSAgICBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggeyBm
YWxzZSB9OwotICAgIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaER1ZVRvUmVw
b3J0T25seSB7IGZhbHNlIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgZnJvbShjb25zdCBVUkwmIGN1cnJlbnRVUkws
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBjdXJyZW50T3JpZ2luLCBjb25zdCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4sIGNvbnN0IFVS
TCYgb3BlbmVyVVJMKTsKKwogICAgIFVSTCB1cmw7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBj
dXJyZW50T3JpZ2luOwogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5OwogICAgIGJvb2wgaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UgeyB0
cnVlIH07CisgICAgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoIHsgZmFsc2Ug
fTsKKyAgICBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9u
bHkgeyBmYWxzZSB9OwogfTsKIAogZW51bSBjbGFzcyBDT09QRGlzcG9zaXRpb24gOiBib29sIHsg
UmVwb3J0aW5nICwgRW5mb3JjZSB9OwogCi1Dcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5D
cm9zc09yaWdpbk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOworV0VCQ09SRV9FWFBPUlQgQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDcm9zc09yaWdpbk9wZW5lclBvbGljeUhlYWRl
cnMoUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Jik7Ci12
b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1l
JiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbiwgY29uc3QgVVJMJiBj
b29wVVJMLCBjb25zdCBVUkwmIHByZXZpb3VzUmVzcG9uc2VVUkwsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBjb29wT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcHJldmlvdXNSZXNwb25zZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwot
dm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25z
ZShGcmFtZSYsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBDT09QRGlzcG9zaXRpb24sIGNvbnN0
IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBuZXh0UmVzcG9uc2VVUkwsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBjb29wT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgbmV4dFJlc3BvbnNlT3Jp
Z2luLCBib29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5h
dmlnYXRpbmdUb0NPT1BSZXNwb25zZShGcmFtZSYsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBD
T09QRGlzcG9zaXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91c1Jl
c3BvbnNlVVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZFZpb2xh
dGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9z
c09yaWdpbk9wZW5lclBvbGljeSwgQ09PUERpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkws
IGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9y
aWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG5leHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NP
T1BSZXNwb25zZU5hdmlnYXRpb25Tb3VyY2UsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKK1dF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNl
bWVudFJlc3VsdD4gZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uUmVxdWVzdGVy
PiYsIENvbnRlbnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1AsIFNhbmRib3hGbGFncyBlZmZl
Y3RpdmVTYW5kYm94RmxhZ3MsIGJvb2wgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQs
IGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQmIGN1cnJlbnRD
b29wRW5mb3JjZW1lbnRSZXN1bHQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ09PUERpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09Q
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pPiYgc2VuZFZpb2xhdGlvblJl
cG9ydHMpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGYwOWUwZWRhYmVlMC4uZWEyNDA1NjdmZDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTY5LDYgKzY5LDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRl
ICJNaXhlZENvbnRlbnRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvblJlcXVlc3Rlci5o
IgogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZE1ldHJpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKQEAgLTcwMiw5
ICs3MDMsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmICFkb0Nyb3NzT3JpZ2luT3BlbmVy
SGFuZGxpbmdPZlJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBpZiAoIW5ld1JlcXVlc3QudXJsKCkuaG9zdCgpLmlzRW1wdHkoKSAmJiBTZWN1cml0eU9y
aWdpbjo6c2hvdWxkSWdub3JlSG9zdChuZXdSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBhdXRv
IHVybCA9IG5ld1JlcXVlc3QudXJsKCk7CiAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh7IH0p
OwpAQCAtNzQ0LDU1ICs3NDIsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIHBvbGlj
eUNoZWNrZXIuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLS8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5o
dG1sI2NoZWNrLWJyb3dzaW5nLWNvbnRleHQtZ3JvdXAtc3dpdGNoLWNvb3AtdmFsdWUKLXN0YXRp
YyBib29sIGNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
KGJvb2wgaXNJbml0aWFsQWJvdXRCbGFuaywgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSBh
Y3RpdmVEb2N1bWVudENPT1BWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURvY3Vt
ZW50TmF2aWdhdGlvbk9yaWdpbiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSByZXNwb25z
ZUNPT1BWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQotewotICAg
IC8vIElmIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGFj
dGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QVmFsdWUsIGFuZCByZXNw
b25zZU9yaWdpbiBpcyB0cnVlLCByZXR1cm4gZmFsc2UuCi0gICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjbWF0Y2hpbmctY29vcAotICAgIGlm
IChhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVl
OjpVbnNhZmVOb25lICYmIHJlc3BvbnNlQ09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5VmFsdWU6OlVuc2FmZU5vbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYWN0
aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gcmVzcG9uc2VDT09QVmFsdWUgJiYgYWN0aXZlRG9jdW1l
bnROYXZpZ2F0aW9uT3JpZ2luLmlzU2FtZU9yaWdpbkFzKHJlc3BvbnNlT3JpZ2luKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRy
dWU6Ci0gICAgLy8gLSBpc0luaXRpYWxBYm91dEJsYW5rLAotICAgIC8vIC0gYWN0aXZlRG9jdW1l
bnRDT09QVmFsdWUncyB2YWx1ZSBpcyAic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzIi4KLSAgICAv
LyAtIHJlc3BvbnNlQ09PUFZhbHVlIGlzICJ1bnNhZmUtbm9uZSIsCi0gICAgLy8gdGhlbiByZXR1
cm4gZmFsc2UuCi0gICAgaWYgKGlzSW5pdGlhbEFib3V0QmxhbmsgJiYgYWN0aXZlRG9jdW1lbnRD
T09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6U2FtZU9yaWdpbkFsbG93
UG9wdXBzICYmIHJlc3BvbnNlQ09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFs
dWU6OlVuc2FmZU5vbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4u
aHRtbCNjaGVjay1iY2ctc3dpdGNoLW5hdmlnYXRpb24tcmVwb3J0LW9ubHkKLXN0YXRpYyBib29s
IGNoZWNrSWZFbmZvcmNpbmdSZXBvcnRPbmx5Q09PUFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoKGJvb2wgaXNJbml0aWFsQWJvdXRCbGFuaywgY29uc3QgQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kmIGFjdGl2ZURvY3VtZW50Q09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFj
dGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kmIHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQot
ewotICAgIGlmICghY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2goaXNJbml0aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9ydE9ubHlW
YWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AucmVwb3J0
T25seVZhbHVlLCByZXNwb25zZU9yaWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChp
c0luaXRpYWxBYm91dEJsYW5rLCBhY3RpdmVEb2N1bWVudENPT1AucmVwb3J0T25seVZhbHVlLCBh
Y3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC52YWx1ZSwgcmVzcG9u
c2VPcmlnaW4pKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChjaGVja0lmQ09PUFZh
bHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxBYm91dEJsYW5r
LCBhY3RpdmVEb2N1bWVudENPT1AudmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdp
biwgcmVzcG9uc2VDT09QLnJlcG9ydE9ubHlWYWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIHN0ZDo6dHVw
bGU8UmVmPFNlY3VyaXR5T3JpZ2luPiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+IGNvbXB1dGVS
ZXNwb25zZU9yaWdpbkFuZENPT1AoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0
aW9uOjpSZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeSogcmVzcG9u
c2VDU1ApCi17Ci0gICAgLy8gTm9uLWluaXRpYWwgZW1wdHkgZG9jdW1lbnRzIChhYm91dDpibGFu
aykgc2hvdWxkIGluaGVyaXQgdGhlaXIgY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kgZnJvbSB0
aGUgbmF2aWdhdGlvbidzIGluaXRpYXRvciB0b3AgbGV2ZWwgZG9jdW1lbnQsCi0gICAgLy8gaWYg
dGhlIGluaXRpYXRvciBhbmQgaXRzIHRvcCBsZXZlbCBkb2N1bWVudCBhcmUgc2FtZS1vcmlnaW4s
IG9yIGRlZmF1bHQgKHVuc2FmZS1ub25lKSBvdGhlcndpc2UuCi0gICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy82OTEzCi0gICAgaWYgKFNlY3VyaXR5UG9saWN5Ojpz
aG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIocmVzcG9uc2UudXJsKCkpICYmIHJl
cXVlc3RlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShSZWYgeyByZXF1ZXN0ZXIt
PnNlY3VyaXR5T3JpZ2luKCkgfSwgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9y
aWdpbkFzKHJlcXVlc3Rlci0+dG9wT3JpZ2luKCkpID8gcmVxdWVzdGVyLT5jcm9zc09yaWdpbk9w
ZW5lclBvbGljeSgpIDogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgeyB9KTsKLQotICAgIC8vIElm
IHRoZSBIVFRQIHJlc3BvbnNlIGNvbnRhaW5zIGEgQ1NQIGhlYWRlciwgaXQgbWF5IHNldCBzYW5k
Ym94IGZsYWdzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgb3JpZ2luIHRvIGJlY29tZSB1bmlxdWUu
Ci0gICAgYXV0byByZXNwb25zZU9yaWdpbiA9IHJlc3BvbnNlQ1NQICYmIHJlc3BvbnNlQ1NQLT5z
YW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlx
dWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShyZXNwb25zZU9yaWdpbiksIG9idGFpbkNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5KHJlc3BvbnNlLCBkb2N1bWVudCkpOwotfQotCiAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjcHJvY2Vz
cy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEyLjUuNikKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmRv
Q3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CkBAIC04MDMsNzUgKzc1MiwyOSBAQCBib29sIERvY3VtZW50TG9hZGVy
Ojpkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9ucwogICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIFtyZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QXSA9
IGNvbXB1dGVSZXNwb25zZU9yaWdpbkFuZENPT1AocmVzcG9uc2UsICptX2ZyYW1lLT5kb2N1bWVu
dCgpLCBtX3RyaWdnZXJpbmdBY3Rpb24ucmVxdWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9s
aWN5LmdldCgpKTsKLQotICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAg
MTIuNS42LjIpCi0gICAgLy8gSWYgc2FuZGJveEZsYWdzIGlzIG5vdCBlbXB0eSBhbmQgcmVzcG9u
c2VDT09QJ3MgdmFsdWUgaXMgbm90ICJ1bnNhZmUtbm9uZSIsIHRoZW4gc2V0IHJlc3BvbnNlIHRv
IGFuIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJyb3IgYW5kIGJyZWFrLgotICAgIGlmIChyZXNwb25z
ZUNPT1AudmFsdWUgIT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAm
JiBmcmFtZUxvYWRlcigpLT5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSkg
ewotICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxl
ZEVycm9yKG1fcmVxdWVzdCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
bV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kocmVzcG9uc2UudXJsKCksIHJlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNP
T1ApOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjb29wLWVuZm9yY2UKLUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgRG9jdW1lbnRMb2FkZXI6OmVuZm9yY2VSZXNwb25zZUNy
b3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3VyaXR5T3Jp
Z2luJiByZXNwb25zZU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3Bv
bnNlQ09PUCkKLXsKLSAgICBBU1NFUlQobV9mcmFtZS0+aXNNYWluRnJhbWUoKSk7Ci0gICAgQVNT
RVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgp
LT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCgpKTsKLQotICAgIGlm
ICghbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gcmVxdWVz
dGVyID0gbV90cmlnZ2VyaW5nQWN0aW9uLnJlcXVlc3RlcigpOwotICAgICAgICBib29sIGN1cnJl
bnRDb250ZXh0SXNTb3VyY2UgPSByZXF1ZXN0ZXIgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkp
OwotICAgICAgICBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IHsKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAg
ICAgICAgZmFsc2UsCi0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwKLSAg
ICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAotICAg
ICAgICAgICAgY3VycmVudENvbnRleHRJc1NvdXJjZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYg
KFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIobV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJG
cmFtZSA9IG1fZnJhbWUtPmxvYWRlcigpLm9wZW5lcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGF1dG8gb3BlbmVyRG9jdW1lbnQgPSBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwgPSBvcGVuZXJE
b2N1bWVudC0+dXJsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IG5ld0NPT1BFbmZvcmNlbWVu
dFJlc3VsdCA9IHsKLSAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVk
c0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLAotICAgICAgICBtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9u
bHksCi0gICAgICAgIHJlc3BvbnNlVVJMLAotICAgICAgICByZXNwb25zZU9yaWdpbiwKLSAgICAg
ICAgcmVzcG9uc2VDT09QLAotICAgICAgICB0cnVlCi0gICAgfTsKKyAgICBVUkwgb3BlbmVyVVJM
OworICAgIGlmIChhdXRvIG9wZW5lckZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCkub3BlbmVyKCkp
CisgICAgICAgIG9wZW5lclVSTCA9IG9wZW5lckZyYW1lLT5kb2N1bWVudCgpID8gb3BlbmVyRnJh
bWUtPmRvY3VtZW50KCktPnVybCgpIDogVVJMKCk7CiAKLSAgICBpZiAoY2hlY2tJZkNPT1BWYWx1
ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goZnJhbWVMb2FkZXIoKS0+c3RhdGVN
YWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgbV9jdXJyZW50Q29v
cEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeS52YWx1ZSwgbV9jdXJy
ZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1AudmFs
dWUsIHJlc3BvbnNlT3JpZ2luKSkgewotICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQu
bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCA9IHRydWU7CisgICAgYXV0byBjdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVu
dFJlc3VsdDo6ZnJvbShtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3koKSwgbV90cmlnZ2VyaW5nQWN0aW9uLnJlcXVlc3RlcigpLCBvcGVuZXJVUkwp
OwogCisgICAgYXV0byBuZXdDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBXZWJDb3JlOjpkb0Nyb3Nz
T3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlLCBtX3RyaWdnZXJpbmdBY3Rp
b24ucmVxdWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpLCBmcmFtZUxvYWRl
cigpLT5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSwgZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5l
KCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdCwgWyZdKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJl
c3BvbnNlT3JpZ2luKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2YgYnJv
d3NpbmcgY29udGV4dCBncm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQgb2Yg
dHJlYXRpbmcgdGhlIHdob2xlIHByb2Nlc3MgYXMgYSBncm91cC4KICAgICAgICAgaWYgKFBhZ2U6
Om5vblV0aWxpdHlQYWdlQ291bnQoKSA+IDEpIHsKLSAgICAgICAgICAgIHNlbmRWaW9sYXRpb25S
ZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCptX2ZyYW1lLCByZXNwb25zZUNPT1As
IENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25zZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9yY2Vt
ZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1fcmVx
dWVzdC5odHRwVXNlckFnZW50KCkpOwotICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdo
ZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlv
bjo6RW5mb3JjZSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3BvbnNl
VVJMLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJlc3Bv
bnNlT3JpZ2luLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmlzQ3VycmVudENvbnRl
eHROYXZpZ2F0aW9uU291cmNlLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKKyAgICAgICAg
ICAgIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCptX2Zy
YW1lLCByZXNwb25zZUNPT1AsIGRpc3Bvc2l0aW9uLCByZXNwb25zZS51cmwoKSwgY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdC51cmwsIHJlc3BvbnNlT3JpZ2luLCBjdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0LmN1cnJlbnRPcmlnaW4sIG1fcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgbV9y
ZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CisgICAgICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0
V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSgqbV9mcmFtZSwgY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSwgZGlzcG9zaXRpb24sIGN1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQudXJsLCByZXNwb25zZS51cmwoKSwgY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdC5jdXJyZW50T3JpZ2luLCByZXNwb25zZU9yaWdpbiwgY3VycmVu
dENvb3BFbmZvcmNlbWVudFJlc3VsdC5pc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlvblNvdXJjZSwg
bV9yZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CiAgICAgICAgIH0KKyAgICB9KTsKKyAgICBpZiAo
IW5ld0Nvb3BFbmZvcmNlbWVudFJlc3VsdCkgeworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIG1fcmVzcG9uc2VDT09QID0gbmV3Q29vcEVuZm9yY2Vt
ZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeTsKIAotICAgIGlmIChjaGVja0lmRW5m
b3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aChmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5LCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4s
IHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VPcmlnaW4pKSB7Ci0gICAgICAgIG5ld0NPT1BFbmZvcmNl
bWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5
ID0gdHJ1ZTsKKyAgICBpZiAobmV3Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5zd2l0Y2hCcm93c2lu
Z0NvbnRleHRzR3JvdXAoKTsKIAotICAgICAgICAvLyBGSVhNRTogQWRkIHRoZSBjb25jZXB0IG9m
IGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFk
IG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFzIGEgZ3JvdXAuCi0gICAgICAgIGlmIChQ
YWdlOjpub25VdGlsaXR5UGFnZUNvdW50KCkgPiAxKSB7Ci0gICAgICAgICAgICBzZW5kVmlvbGF0
aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSgqbV9mcmFtZSwgcmVzcG9uc2VD
T09QLCBDT09QRGlzcG9zaXRpb246OlJlcG9ydGluZywgcmVzcG9uc2VVUkwsIG1fY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25zZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCks
IG1fcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJl
cG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIG1fY3VycmVu
dENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNw
b3NpdGlvbjo6UmVwb3J0aW5nLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPnVybCwg
cmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3VycmVudE9yaWdp
biwgcmVzcG9uc2VPcmlnaW4sIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+aXNDdXJy
ZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG1fcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdDsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRlcjo6dHJ5TG9hZGluZ1Jl
cXVlc3RGcm9tQXBwbGljYXRpb25DYWNoZSgpCkBAIC05NjgsNiArODcxLDggQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlUmUKICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2Vp
dmVIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNl
IH0sIG1fcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRQYXJzaW5nRXJyb3JzOjpObyk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5ID0gbnVsbHB0cjsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3lFbmFibGVkKCkpCisgICAgICAgIG1fcmVzcG9uc2VDT09QID0gb2J0YWluQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kocmVzcG9uc2UpOwogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNL
SU5HX1BSRVZFTlRJT04pCiAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVpcmsg
b25jZSBtaWNyb3NvZnQuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWduLgpA
QCAtMTAwMSwxNSArOTA2LDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICAgICByZXNwb25z
ZVJlY2VpdmVkKHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXN0
YXRpYyBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIHRvQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+JiBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0KQot
ewotICAgIGlmICghY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCB8fCAhY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCkKLSAgICAg
ICAgcmV0dXJuIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3Vw
OwotICAgIGlmIChjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5l
clBvbGljeS52YWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpTYW1lT3JpZ2lu
UGx1c0NPRVApCi0gICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uOjpOZXdJc29sYXRlZEdyb3VwOwotICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uOjpOZXdTaGFyZWRHcm91cDsKLX0KLQogdm9pZCBEb2N1bWVudExvYWRlcjo6
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChy
ZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSk7CkBAIC0xMTAzLDIwICs5OTksMTEgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgQ29tcGxldGkKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghZG9Dcm9zc09yaWdp
bk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChzdGQ6OmV4Y2hhbmdlKG1faXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xp
Y3lDaGVjaywgZmFsc2UpKSB7Ci0gICAgICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBv
bGljeUFjdGlvbjo6VXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gbWFpblJlc291cmNlTG9hZGVyID0gdGhpcy0+bWFpblJlc291cmNl
TG9hZGVyKCk7CiAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcikKICAgICAgICAgbWFpblJlc291
cmNlTG9hZGVyLT5tYXJrSW5Bc3luY1Jlc3BvbnNlUG9saWN5Q2hlY2soKTsKICAgICBhdXRvIHJl
cXVlc3RJZGVudGlmaWVyID0gUG9saWN5Q2hlY2tJZGVudGlmaWVyOjpjcmVhdGUoKTsKLSAgICBh
dXRvIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPSB0b0Jyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRGVjaXNpb24obV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0KTsKLSAg
ICBmcmFtZUxvYWRlcigpLT5jaGVja0NvbnRlbnRQb2xpY3kobV9yZXNwb25zZSwgcmVxdWVzdElk
ZW50aWZpZXIsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbWFpblJlc291cmNlTG9hZGVyID0gV1RGTW92ZSht
YWluUmVzb3VyY2VMb2FkZXIpLAorICAgIGZyYW1lTG9hZGVyKCktPmNoZWNrQ29udGVudFBvbGlj
eShtX3Jlc3BvbnNlLCByZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBtYWluUmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5SZXNvdXJjZUxv
YWRlciksCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIucmVsZWFzZSgpLCByZXF1ZXN0SWRlbnRpZmllcl0gKFBvbGljeUFjdGlvbiBwb2xpY3ksIFBv
bGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50aWZpZXIpIG11dGFibGUgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXNwb25zZUlkZW50aWZpZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRl
bnRpZmllcikpOwogICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwpA
QCAtMTIxMCw2ICsxMDk3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNv
bnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICAgICAgICAgIHN0b3BMb2FkaW5n
Rm9yUG9saWN5Q2hhbmdlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKwogICAg
ICAgICBicmVhazsKICAgICB9CiAKQEAgLTIxMDMsMTUgKzE5OTEsOSBAQCBib29sIERvY3VtZW50
TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gc2hvdWxkTG9h
ZEVtcHR5ID8gInRleHQvaHRtbCIgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5nZW5lcmF0ZWRN
SU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkpOwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fcmVx
dWVzdC51cmwoKSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7CiAKLSAgICBpZiAoIWZyYW1lTG9h
ZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkp
IHsKKyAgICBpZiAoIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGlu
Z09mUmVzcG9uc2UobV9yZXNwb25zZSk7CiAKLSAgICAgICAgLy8gRklYTUU6IE5vbi1pbml0aWFs
IGFib3V0OmJsYW5rIGxvYWRzIG1heSBjYXVzZSBhIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgc3dp
dGNoLiBIb3dldmVyLCBzdWNoIGxvYWQgaXMgc3luY2hyb25vdXMgYW5kIGRvZXNuJ3QKLSAgICAg
ICAgLy8gaW52b2x2ZSBhIHJlc3BvbnNlIHBvbGljeSBkZWNpc2lvbi4gQXMgYSByZXN1bHQsIHdl
IHNpbXVsYXRlIGEgYnJvd3NpbmcgY29udGV4dCBncm91cCBzd2l0Y2ggd2l0aG91dCBhY3R1YWxs
eSBzd2FwcGluZyBwcm9jZXNzLgotICAgICAgICBpZiAobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0ICYmIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+bmVlZHNCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaCkKLSAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPnN3aXRjaEJyb3dz
aW5nQ29udGV4dHNHcm91cCgpOwotICAgIH0KLQogICAgIGZpbmlzaGVkTG9hZGluZygpOwogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMjMzOSw3ICsyMjIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6Y2xlYXJNYWluUmVzb3VyY2UoKQogI2VuZGlmCiAKICAgICBtX21haW5SZXNvdXJjZSA9IG51
bGxwdHI7Ci0gICAgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrID0g
ZmFsc2U7CisgICAgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVk
ID0gZmFsc2U7CiAKICAgICB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA4ZWUxNGEyNGQ1
N2IuLjBiMzdhNGEyYWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTQyNSwxMCArNDI1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpIHsgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOyB9CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOyB9Ci0gICAg
c3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09y
aWdpbk9wZW5lclBvbGljeSkgOiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiYgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQ09PUDsgfQogCi0gICAgYm9vbCBpc0NvbnRpbnVpbmdM
b2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Ci0gICAgdm9pZCBzZXRJc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVy
UmVzcG9uc2VQb2xpY3lDaGVjaykgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclJlc3BvbnNlUG9s
aWN5Q2hlY2sgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Cisg
ICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVk
OyB9CisgICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFy
dGVkKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkgeyBt
X2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgPSBpc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAKIHByb3RlY3RlZDoKICAgICBX
RUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAtNDUxLDcgKzQ1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCgpOwogCiAgICAgYm9vbCBk
b0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IGVuZm9y
Y2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kmIHJlc3BvbnNlQ09PUCk7CiAKICAgICB2b2lkIGxvYWRNYWluUmVzb3VyY2UoUmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogCkBAIC01NjYsNyArNTY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Z290Rmlyc3RCeXRlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzTG9hZGluZ011bHRpcGFydENvbnRlbnQgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCB7IGZhbHNlIH07CiAKICAgICAvLyBGSVhNRTogRG9jdW1lbnQ6Om1fcHJvY2Vzc2luZ0xv
YWRFdmVudCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fd2FzT25sb2FkRGlzcGF0Y2hlZCBhcmUgcm91
Z2hseSB0aGUgc2FtZQogICAgIC8vIGFuZCBzaG91bGQgYmUgbWVyZ2VkLgpAQCAtNTkwLDcgKzU4
OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlc291cmNlUmVzcG9uc2U+IG1fcmVzcG9uc2Vz
OwogICAgIGJvb2wgbV9zdG9wUmVjb3JkaW5nUmVzcG9uc2VzIHsgZmFsc2UgfTsKIAotICAgIHN0
ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gbV9j
dXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3k+IG1fcmVzcG9uc2VDT09QOwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+LCBSZWZQdHI8U3Vic3RpdHV0ZVJlc291cmNlPj4gU3Vi
c3RpdHV0ZVJlc291cmNlTWFwOwogICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcCBtX3BlbmRpbmdT
dWJzdGl0dXRlUmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCA5YmVkZWM2MzZiMmIuLmY3ZDRlN2FmYjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCAwMjk0ZGM0MzQyMDQuLjIyNjk5YzljNTE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Niw3ICs5
Niw3IEBAIHByaXZhdGU6CiAgICAgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgTmV3RnJhbWVPcGVuZXJQb2xpY3kpIGZpbmFsOwogICAgIHZvaWQgZGlz
cGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBv
bGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9s
aWN5Q2hlY2soKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDM3ZTUxMTM3OTI0NS4uNGI5NTE1ZjM3MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNM
b2FkaW5nKGJvb2wgZGVmZXJzKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tD
b250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGVj
a0lkZW50aWZpZXIgaWRlbnRpZmllciwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lv
biBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBDb250ZW50UG9saWN5RGVjaXNp
b25GdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9s
aWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikK
IHsKICAgICBpZiAoIWFjdGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgLy8gTG9hZCB3
YXMgY2FuY2VsbGVkCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tD
b250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGUK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhlIHBvbGljeSBjaGVjayBpZGVudGlm
aWVyLgotICAgIGNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UocmVzcG9u
c2UsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSwgaWRlbnRpZmllciwgYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+ZG93bmxvYWRBdHRyaWJ1dGUoKSwgYnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hEZWNpc2lvbiwgV1RGTW92ZShmdW5jdGlvbikpOworICAgIGNsaWVudCgpLmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UocmVzcG9uc2UsIGFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnJlcXVlc3QoKSwgaWRlbnRpZmllciwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+ZG93bmxv
YWRBdHRyaWJ1dGUoKSwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVy
OjpjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJn
ZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIGNvbnN0IFJlZmVycmVyUG9saWN5JiByZWZlcnJl
clBvbGljeSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xp
Y3ksIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2
aWV3SW5mbyYgc3lzdGVtUHJldmlld0luZm8sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCkBAIC0xNDc2LDcgKzE0NzYsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogICAg
IFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9h
ZGVyKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7
CiAgICAgbG9hZGVyLT5zZXRBbGxvd3NXZWJBcmNoaXZlRm9yTWFpbkZyYW1lKHJlcXVlc3QuaXNS
ZXF1ZXN0RnJvbUNsaWVudE9yVXNlcklucHV0KCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzRGF0
YVVSTHNGb3JNYWluRnJhbWUocmVxdWVzdC5pc1JlcXVlc3RGcm9tQ2xpZW50T3JVc2VySW5wdXQo
KSk7Ci0gICAgbG9hZGVyLT5zZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNo
ZWNrKHJlcXVlc3Quc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkgPT0gU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24pOworICAgIGxv
YWRlci0+c2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZChyZXF1
ZXN0LnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCgpID09IFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKTsKICAgICBhZGRTYW1lU2l0
ZUluZm9Ub1JlcXVlc3RJZk5lZWRlZChsb2FkZXItPnJlcXVlc3QoKSk7CiAgICAgYXBwbHlTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2ZyYW1lLCBsb2Fk
ZXIsIHJlcXVlc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGU3NDc1
YTQyNDdlOS4uYWUzZjZkNjA2YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApA
QCAtMjIwLDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhi
b29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVj
aXNpb24sIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOworICAgIHZvaWQgY2hlY2tD
b250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAgICAgdm9pZCBkaWRFeHBs
aWNpdE9wZW4oKTsKIApAQCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9s
bG93aW5nIHNhbmRib3ggZmxhZ3Mgd2lsbCBiZSBmb3JjZWQsIHJlZ2FyZGxlc3Mgb2YgY2hhbmdl
cyB0bwogICAgIC8vIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiBhbnkgcGFyZW50IGZyYW1lcy4K
ICAgICB2b2lkIGZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykgeyBtX2ZvcmNl
ZFNhbmRib3hGbGFncyB8PSBmbGFnczsgfQotICAgIFNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5k
Ym94RmxhZ3MoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW5kYm94RmxhZ3MgZWZmZWN0
aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAKICAgICBib29sIGNoZWNrSWZGb3JtQWN0aW9uQWxs
b3dlZEJ5Q1NQKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNv
bnN0OwogCkBAIC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9hZHNTeW5jaHJv
bm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc1N5bmNocm9ub3VzbHk7IH0KIAogICAgIEZy
YW1lTG9hZGVyU3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSB7IHJldHVybiBtX3N0YXRlTWFj
aGluZTsgfQorICAgIGNvbnN0IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQogCiAgICAgLy8gRklYTUU6IHNob3Vs
ZCByZXR1cm4gUmVmUHRyLgogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBmaW5kRnJhbWVGb3JO
YXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVu
dCA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA0YTcwNmM4N2Y1OGMuLjBmNjRkMTM4MDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBO
ZXdGcmFtZU9wZW5lclBvbGljeSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3co
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBQb2xpY3lDaGVja0lkZW50
aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsUG9saWN5Q2hlY2soKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKaW5kZXggNWEwZmM0MWU5YzMyLi5mYzhjNWM5NzEyYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKQEAgLTM3LDIyICszNyw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEdsb2JhbEZyYW1lSWRlbnRpZmllciBjcmVh
dGVHbG9iYWxGcmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAg
IGlmIChkb2N1bWVudC5mcmFtZSgpKQotICAgICAgICByZXR1cm4geyBkb2N1bWVudC5mcmFtZSgp
LT5sb2FkZXIoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsg
fSkgfTsKLSAgICByZXR1cm4gR2xvYmFsRnJhbWVJZGVudGlmaWVyKCk7Ci19Ci0KLU5hdmlnYXRp
b25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
LSAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkgfSB9Ci0gICAgLCBtX29yaWdpbiB7
ICZkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpIH0KLSAgICAsIG1fdG9wT3JpZ2luIHsgJmRvY3Vt
ZW50LnRvcE9yaWdpbigpIH0KLSAgICAsIG1fY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgeyBkb2N1
bWVudC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpIH0KLSAgICAsIG1fZ2xvYmFsRnJhbWVJZGVu
dGlmaWVyKGNyZWF0ZUdsb2JhbEZyYW1lSWRlbnRpZmllcihkb2N1bWVudCkpCi17Ci19Ci0KIE5h
dmlnYXRpb25BY3Rpb246OlVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhOjpVSUV2ZW50V2l0aEtleVN0
YXRlRGF0YShjb25zdCBVSUV2ZW50V2l0aEtleVN0YXRlJiB1aUV2ZW50KQogICAgIDogaXNUcnVz
dGVkIHsgdWlFdmVudC5pc1RydXN0ZWQoKSB9CiAgICAgLCBzaGlmdEtleSB7IHVpRXZlbnQuc2hp
ZnRLZXkoKSB9CkBAIC0xMDMsNyArODcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW9uQWN0aW9uOjpNb3VzZUV2ZW50RGF0YT4gbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdQogfQog
CiBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBJbml0aWF0ZWRCeU1haW5G
cmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGUgdHlwZSwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBFdmVudCog
ZXZlbnQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQotICAgIDogbV9yZXF1
ZXN0ZXIgeyByZXF1ZXN0ZXIgfQorICAgIDogbV9yZXF1ZXN0ZXIgeyBOYXZpZ2F0aW9uUmVxdWVz
dGVyOjpmcm9tKHJlcXVlc3RlcikgfQogICAgICwgbV9yZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJj
ZVJlcXVlc3QgfQogICAgICwgbV90eXBlIHsgdHlwZSB9CiAgICAgLCBtX3Nob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgeyBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH0KQEAgLTEyOSw3
ICsxMTMsNyBAQCBzdGF0aWMgTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUoRnJhbWVMb2Fk
VHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1YgogfQogCiBOYXZpZ2F0aW9uQWN0aW9u
OjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBJbml0aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1h
aW5GcmFtZSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Np
b24sIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkK
LSAgICA6IG1fcmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KKyAgICA6IG1fcmVxdWVzdGVyIHsgTmF2
aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIpIH0KICAgICAsIG1fcmVzb3VyY2VSZXF1
ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IG5hdmlnYXRpb25UeXBlKGZy
YW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEhZXZlbnQpIH0KICAgICAsIG1fc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggMWU4ZmRmYTAzMzZj
Li4xNjNjYzdlODNjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNs
dWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgor
I2luY2x1ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCkBAIC02NCwyMyArNjUsNyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlv
bkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJh
dG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0gICAgY2xhc3MgUmVxdWVzdGVyIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwotCi0gICAgICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICAgICAgU2VjdXJpdHlP
cmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAg
ICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCB7IHJldHVybiAqbV90b3BPcmln
aW47IH0KLSAgICAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5OyB9Ci0gICAg
ICAgIGNvbnN0IEdsb2JhbEZyYW1lSWRlbnRpZmllciYgZ2xvYmFsRnJhbWVJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9nbG9iYWxGcmFtZUlkZW50aWZpZXI7IH0KLSAgICBwcml2YXRlOgot
ICAgICAgICBVUkwgbV91cmw7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmln
aW47Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAgICAg
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG1fY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7Ci0gICAg
ICAgIEdsb2JhbEZyYW1lSWRlbnRpZmllciBtX2dsb2JhbEZyYW1lSWRlbnRpZmllcjsKLSAgICB9
OwotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVyPiYgcmVxdWVzdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
b25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQog
CiAgICAgc3RydWN0IFVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsKICAgICAgICAgVUlFdmVudFdp
dGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYpOwpAQCAtMTA1LDcgKzkw
LDcgQEAgcHVibGljOgogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBjb3B5V2l0aFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7CiAK
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1
ZXN0ZXItPnVybCgpLmlzRW1wdHkoKSB8fCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9yZXF1ZXN0ZXIgfHwg
bV9yZXF1ZXN0ZXItPnVybC5pc0VtcHR5KCkgfHwgbV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuaXNF
bXB0eSgpOyB9CiAKICAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVl
c3QudXJsKCk7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CkBAIC0xNDcsNyArMTMyLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICAvLyBEbyBub3QgYWRkIGEgc3Ryb25nIHJlZmVyZW5jZSB0
byB0aGUgb3JpZ2luYXRpbmcgZG9jdW1lbnQgb3IgYSBzdWJvYmplY3QgdGhhdCBob2xkcyB0aGUK
ICAgICAvLyBvcmlnaW5hdGluZyBkb2N1bWVudC4gU2VlIGNvbW1lbnQgYWJvdmUgdGhlIGNsYXNz
IGZvciBtb3JlIGRldGFpbHMuCi0gICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVz
dGVyOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4gbV9yZXF1ZXN0ZXI7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIE5hdmlnYXRpb25U
eXBlIG1fdHlwZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uUmVxdWVzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
UmVxdWVzdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk3
NmU2ZTM5YTc5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uUmVxdWVzdGVyLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIuaCIKKworI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEdsb2Jh
bEZyYW1lSWRlbnRpZmllcj4gY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHBhZ2VJRCA9IGRvY3VtZW50LmZyYW1lKCkt
PmxvYWRlcigpLnBhZ2VJRCgpOworICAgIGF1dG8gZnJhbWVJRCA9IGRvY3VtZW50LmZyYW1lKCkt
PmxvYWRlcigpLmZyYW1lSUQoKTsKKyAgICBpZiAoIXBhZ2VJRCB8fCAhZnJhbWVJRCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBHbG9iYWxGcmFtZUlkZW50aWZp
ZXIgeyAqcGFnZUlELCAqZnJhbWVJRCB9OworfQorCitOYXZpZ2F0aW9uUmVxdWVzdGVyIE5hdmln
YXRpb25SZXF1ZXN0ZXI6OmZyb20oRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiB7
CisgICAgICAgIGRvY3VtZW50LnVybCgpLAorICAgICAgICBkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpLAorICAgICAgICBkb2N1bWVudC50b3BPcmlnaW4oKSwKKyAgICAgICAgZG9jdW1lbnQuY3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3koKSwKKyAgICAgICAgY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlm
aWVyKGRvY3VtZW50KQorICAgIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjNkYTUzMTdiNGE3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5oIgorI2luY2x1ZGUgIkdsb2JhbEZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9j
dW1lbnQ7CisKK3N0cnVjdCBOYXZpZ2F0aW9uUmVxdWVzdGVyIHsKKyAgICBzdGF0aWMgTmF2aWdh
dGlvblJlcXVlc3RlciBmcm9tKERvY3VtZW50Jik7CisKKyAgICBVUkwgdXJsOworICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW47CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiB0
b3BPcmlnaW47CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGdsb2JhbEZy
YW1lSWRlbnRpZmllcjsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW9uUmVxdWVzdGVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB1cmwgPDwgc2VjdXJp
dHlPcmlnaW4uZ2V0KCkgPDwgdG9wT3JpZ2luLmdldCgpIDw8IGNyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5IDw8IGdsb2JhbEZyYW1lSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK3N0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4gTmF2aWdhdGlvblJlcXVlc3Rl
cjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVy
bDsKKyAgICBkZWNvZGVyID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpk
ZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBj
cm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OworICAgIGlmICghY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8R2xvYmFs
RnJhbWVJZGVudGlmaWVyPj4gZ2xvYmFsRnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4g
Z2xvYmFsRnJhbWVJZGVudGlmaWVyOworICAgIGlmICghZ2xvYmFsRnJhbWVJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIE5hdmlnYXRpb25SZXF1
ZXN0ZXIgeyBXVEZNb3ZlKCp1cmwpLCBzZWN1cml0eU9yaWdpbi5yZWxlYXNlTm9uTnVsbCgpLCB0
b3BPcmlnaW4ucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSgqY3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kpLCBXVEZNb3ZlKCpnbG9iYWxGcmFtZUlkZW50aWZpZXIpIH07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdF
bmRwb2ludHNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9p
bnRzQ2FjaGUuY3BwCmluZGV4IGYxMWM2NTY2NWY2My4uNjVjZjhhMzI1OTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5jcHAKQEAgLTY3
LDExICs2NywxNSBAQCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6flJlcG9ydGluZ0VuZHBvaW50
c0NhY2hlKCkgPSBkZWZhdWx0OwogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3JlcG9ydGluZy8j
cHJvY2Vzcy1oZWFkZXIKIHZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50
c0Zyb21SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBh
dXRvIHJlcG9ydFRvSGVhZGVyVmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OlJlcG9ydFRvKTsKKyAgICByZXR1cm4gYWRkRW5kUG9pbnRzRnJvbVJlcG9ydFRv
SGVhZGVyKHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OlJlcG9ydFRvKSk7Cit9CisKK3ZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFk
ZEVuZFBvaW50c0Zyb21SZXBvcnRUb0hlYWRlcihjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBjb25z
dCBTdHJpbmcmIHJlcG9ydFRvSGVhZGVyVmFsdWUpCit7CiAgICAgaWYgKHJlcG9ydFRvSGVhZGVy
VmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNlY3VyaXR5T3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSk7CisgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2VVUkwpOwogICAg
IGlmIChzZWN1cml0eU9yaWdpbi0+aXNVbmlxdWUoKSB8fCAhc2VjdXJpdHlPcmlnaW4tPmlzUG90
ZW50aWFsbHlUcnVzdHdvcnRoeSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTk0LDEwICs5OCwx
MCBAQCB2b2lkIFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlOjphZGRFbmRQb2ludHNGcm9tUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcgogICAgIHdoaWxlIChkaWN0aW9uYXJ5U3RhcnQg
PCByZXBvcnRUb0hlYWRlclZhbHVlLmxlbmd0aCgpKSB7CiAgICAgICAgIGF1dG8gaW5kZXhPZk5l
eHRUb3BMZXZlbENvbW1hID0gZmluZE5leHRUb3BMZXZlbENvbW1hKGRpY3Rpb25hcnlTdGFydCk7
CiAgICAgICAgIGlmIChpbmRleE9mTmV4dFRvcExldmVsQ29tbWEgPT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmlnaW4tPmRhdGEo
KSwgcmVzcG9uc2UudXJsKCksIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5nKGRpY3Rpb25h
cnlTdGFydCkpOworICAgICAgICAgICAgYWRkRW5kcG9pbnRGcm9tRGljdGlvbmFyeShzZWN1cml0
eU9yaWdpbi0+ZGF0YSgpLCByZXNwb25zZVVSTCwgcmVwb3J0VG9IZWFkZXJWYWx1ZS5zdWJzdHJp
bmcoZGljdGlvbmFyeVN0YXJ0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICBhZGRFbmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIHJl
c3BvbnNlLnVybCgpLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmluZyhkaWN0aW9uYXJ5U3Rh
cnQsIGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSAtIGRpY3Rpb25hcnlTdGFydCkpOworICAgICAg
ICBhZGRFbmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIHJlc3Bv
bnNlVVJMLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmluZyhkaWN0aW9uYXJ5U3RhcnQsIGlu
ZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSAtIGRpY3Rpb25hcnlTdGFydCkpOwogICAgICAgICBkaWN0
aW9uYXJ5U3RhcnQgPSBpbmRleE9mTmV4dFRvcExldmVsQ29tbWEgKyAxOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmgKaW5kZXgg
NjMwMGYyZTFjZjM2Li4zOWM2NThlMDU2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBjcmVh
dGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUoKTsKIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkRW5kUG9pbnRzRnJvbVJlcG9ydFRvSGVhZGVyKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkRW5kUG9pbnRzRnJvbVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBVUkwgZW5kcG9pbnRVUkwoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBncm91cCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaApp
bmRleCBhYjEzNTNiY2MwODIuLjVkZTc5MmM0YWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaApAQCAtMjksNyArMjksNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIDogdWludDhfdCB7IE5vLCBZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biwgWWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uIH07CitlbnVtIGNsYXNzIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCA6IHVpbnQ4X3QgeyBObywgWWVzQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24sIFllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKQEAgLTQwLDcgKzQwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ+IHsKICAgICAgICAg
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLAogICAgICAgICBXZWJDb3JlOjpT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLAogICAgICAgICBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9uLAot
ICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVz
cG9uc2VQb2xpY3lEZWNpc2lvbgorICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZAogICAgID47CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IGEzMDFiNzg0NGNjOC4uZGY1OWRkMTJlMGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMjg1LDcgKzI4NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeShSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYm
KTsgLy8gT25seSB1c2VkIGJ5IFdlYktpdExlZ2FjeS4KIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdlJik+Jik7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIG5vblV0aWxpdHlQYWdlQ291bnQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgbm9uVXRpbGl0eVBhZ2VDb3VudCgpOwogCiAgICAgdW5z
aWduZWQgc3ViZnJhbWVDb3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmgKaW5kZXggMDc1Y2VmMmIyNTZjLi5hMGI1ZTdkNWIyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFN0cmluZyBnZW5lcmF0ZU9yaWdpbkhlYWRlcihSZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZEluaGVyaXRT
ZWN1cml0eU9yaWdpbkZyb21Pd25lcihjb25zdCBVUkwmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3QgVVJM
Jik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VVUkxTY2hlbWVBbGxvd2VkKGNvbnN0IFVSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDk3YmRkNGY4MjM3My4uOTc5ODAxMDc3ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjg0MywyOSArMjg0Myw2IEBA
IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0
YUNoYW5uZWxQcm94eSgpCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFy
ZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291
cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyPiByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIXJlc291cmNlTG9hZElkZW50aWZpZXIpIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihzdGQ6Om51bGxvcHQpOwotICAgIH0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oc291cmNlUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0K
LSAgICBhdXRvIHNlc3Npb24gPSBjb25uZWN0aW9uLT5uZXR3b3JrU2Vzc2lvbigpOwotICAgIGlm
ICghc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCk7Ci0KLSAgICBhdXRvIGxvYWRlciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VM
b2FkZXIoKnJlc291cmNlTG9hZElkZW50aWZpZXIpOwotICAgIGlmICghbG9hZGVyKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIGF1dG8gaWRl
bnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIHNlc3Npb24tPmFkZExvYWRlckF3
YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKGxvYWRlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihpZGVudGlmaWVyKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBlNzU4NWI4NmU2MGEuLjNlNGJhZTMwMDhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDI1LDcgKzQyNSw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQg
aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5KT4mJik7Ci0gICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IHJlc291cmNl
TG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNl
dDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRl
RGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5YWE5ZWFhOWYxMzEu
LmU4OWY4OTdjOTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTYsOCArMTk2LDYgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMK
ICNlbmRpZgogCi0gICAgUHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiByZXNvdXJjZUxvYWRJZGVudGlmaWVy
KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
PiBuZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcikgQXN5bmMKLQogICAgIEFkZFdlYlBhZ2VO
ZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkK
ICAgICBDb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChzaXplX3QgY291bnQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IGY0MWY1NTkwYmQ2Zi4uNzFiZTg5MTgxMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cApAQCAtMTE0LDcgKzExNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogCiAgICAgZW5jb2RlciA8PCBkb2N1
bWVudFVSTDsKLSAgICAKKworICAgIGVuY29kZXIgPDwgaXNDcm9zc09yaWdpbk9wZW5lclBvbGlj
eUVuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dDsKKyAgICBlbmNvZGVyIDw8IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKyAgICBlbmNvZGVyIDw8
IG9wZW5lclVSTDsKKyAgICBlbmNvZGVyIDw8IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
OworCisgICAgZW5jb2RlciA8PCBuYXZpZ2F0aW9uSUQ7CisgICAgZW5jb2RlciA8PCBuYXZpZ2F0
aW9uUmVxdWVzdGVyOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVuY29kZXIg
PDwgc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI7CkBAIC0yOTIsNiArMzAxLDQ5IEBAIHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmRvY3VtZW50
VVJMID0gKmRvY3VtZW50VVJMOwogCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5RW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGlzQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3lFbmFibGVkOworICAgIGlmICghaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LmlzQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3lFbmFibGVkID0gKmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVk
OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1
bWVudDsKKyAgICBkZWNvZGVyID4+IGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50Owor
ICAgIGlmICghaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50ID0gKmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworCisgICAgc3RkOjpvcHRp
b25hbDxTYW5kYm94RmxhZ3M+IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKyAgICBkZWNvZGVyID4+
IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKyAgICBpZiAoIWVmZmVjdGl2ZVNhbmRib3hGbGFncykK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQuZWZmZWN0aXZlU2FuZGJv
eEZsYWdzID0gKmVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJM
PiBvcGVuZXJVUkw7CisgICAgZGVjb2RlciA+PiBvcGVuZXJVUkw7CisgICAgaWYgKCFvcGVuZXJV
UkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0Lm9wZW5lclVSTCA9
ICpvcGVuZXJVUkw7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
PiBzb3VyY2VDcm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZUNy
b3NzT3JpZ2luT3BlbmVyUG9saWN5OworICAgIGlmICghc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LnNvdXJjZUNy
b3NzT3JpZ2luT3BlbmVyUG9saWN5ID0gV1RGTW92ZSgqc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kpOworCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmF2aWdhdGlvbklEOworICAg
IGRlY29kZXIgPj4gbmF2aWdhdGlvbklEOworICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJlc3VsdC5uYXZpZ2F0aW9uSUQgPSAqbmF2aWdh
dGlvbklEOworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1
ZXN0ZXI+PiBuYXZpZ2F0aW9uUmVxdWVzdGVyOworICAgIGRlY29kZXIgPj4gbmF2aWdhdGlvblJl
cXVlc3RlcjsKKyAgICBpZiAoIW5hdmlnYXRpb25SZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXN1bHQubmF2aWdhdGlvblJlcXVlc3RlciA9IFdURk1vdmUo
Km5hdmlnYXRpb25SZXF1ZXN0ZXIpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAg
ICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggNGNiODVjYmEyMDZiLi4zZjgwNGQxNzUxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
YXZpZ2F0aW9uUmVxdWVzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCkBAIC02Nyw2ICs2OCwxNCBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBh
cmVudEZyYW1lSUQ7CiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJs
ZWQgeyB0cnVlIH07CiAgICAgVVJMIGRvY3VtZW50VVJMOworCisgICAgYm9vbCBpc0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBpc0Rpc3BsYXlpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6U2FuZGJveEZsYWdz
IGVmZmVjdGl2ZVNhbmRib3hGbGFncyB7IFdlYkNvcmU6OlNhbmRib3hOb25lIH07CisgICAgVVJM
IG9wZW5lclVSTDsKKyAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSBzb3VyY2VD
cm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpOYXZpZ2F0aW9uUmVxdWVzdGVyPiBuYXZpZ2F0
aW9uUmVxdWVzdGVyOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJD
b3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcnNNb2RlOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzZhZjIzYTg4NzU2Li5j
ZTJmZTZlODQ5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUlu
Zm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAg
LTY1Miw2ICs2NTMsNDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVy
cnVwdFdvcmtlckxvYWRGb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWMKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dz
aW5nLXRoZS13ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42KQor
Ym9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09m
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgLy8gQ09P
UCBvbmx5IGFwcGxpZXMgdG8gdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzLgorICAgIGlmICgh
aXNNYWluRnJhbWVMb2FkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX3Bh
cmFtZXRlcnMuaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gY29u
dGVudFNlY3VyaXR5UG9saWN5OworICAgIGlmICghcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50U2VjdXJpdHlQb2xpY3kpLmlzTnVsbCgpKSB7CisgICAgICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyByZXNwb25zZS51cmwoKSB9LCBudWxscHRyKTsKKyAgICAgICAgY29udGVudFNlY3Vy
aXR5UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgeyByZXNwb25zZSB9LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CisgICAgfQor
CisgICAgaWYgKCFtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQpIHsKKyAgICAgICAgYXV0
byBzb3VyY2VPcmlnaW4gPSBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luID8gUmVmIHsgKm1fcGFy
YW1ldGVycy5zb3VyY2VPcmlnaW4gfSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKTsK
KyAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdDo6ZnJvbShtX3BhcmFtZXRlcnMuZG9jdW1lbnRVUkws
IFdURk1vdmUoc291cmNlT3JpZ2luKSwgbV9wYXJhbWV0ZXJzLnNvdXJjZUNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5LCBtX3BhcmFtZXRlcnMubmF2aWdhdGlvblJlcXVlc3RlciwgbV9wYXJhbWV0ZXJz
Lm9wZW5lclVSTCk7CisgICAgfQorCisgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0
ID0gV2ViQ29yZTo6ZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25z
ZSwgbV9wYXJhbWV0ZXJzLm5hdmlnYXRpb25SZXF1ZXN0ZXIsIGNvbnRlbnRTZWN1cml0eVBvbGlj
eS5nZXQoKSwgbV9wYXJhbWV0ZXJzLmVmZmVjdGl2ZVNhbmRib3hGbGFncywgbV9wYXJhbWV0ZXJz
LmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCAqbV9jdXJyZW50Q29vcEVuZm9yY2Vt
ZW50UmVzdWx0LCBbJl0oQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcm9zc09y
aWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcmVz
cG9uc2VPcmlnaW4pIHsKKyAgICAgICAgYXV0byYgcmVzcG9uc2VSZXBvcnRpbmdFbmRwb2ludCA9
IGRpc3Bvc2l0aW9uID09IENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSA/IHJlc3BvbnNlQ09PUC5y
ZXBvcnRpbmdFbmRwb2ludCA6IHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9p
bnQ7CisgICAgICAgIGlmICghcmVzcG9uc2VSZXBvcnRpbmdFbmRwb2ludC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kVmlvbGF0aW9uUmVwb3J0V2hl
bk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCByZXNw
b25zZUNPT1AsIGRpc3Bvc2l0aW9uLCByZXNwb25zZS51cmwoKSwgbV9jdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0LT51cmwsIHJlc3BvbnNlT3JpZ2luLmRhdGEoKSwgbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLT5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdCgp
Lmh0dHBSZWZlcnJlcigpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwVXNlckFnZW50KCksIHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVwb3J0VG8pIH0sIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQpOworICAgICAgICBhdXRvJiBzb3VyY2VSZXBvcnRpbmdFbmRwb2ludCA9
IGRpc3Bvc2l0aW9uID09IENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSA/IG1fY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kucmVwb3J0aW5nRW5kcG9p
bnQgOiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5LnJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludDsKKyAgICAgICAgaWYgKCFzb3VyY2VSZXBv
cnRpbmdFbmRwb2ludC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25z
ZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBkaXNwb3NpdGlvbiwgbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3BvbnNlLnVybCgpLCBtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4tPmRhdGEoKSwgcmVzcG9uc2VPcmlnaW4uZGF0YSgp
LCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmlzQ3VycmVudENvbnRleHROYXZpZ2F0
aW9uU291cmNlLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwVXNlckFnZW50KCkgfSwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCk7CisgICAgfSk7CisgICAgcmV0dXJuICEhbV9jdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0OworfQorCitzdGF0aWMgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNp
c2lvbiB0b0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24oY29uc3Qgc3RkOjpvcHRp
b25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiYgY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdCkKK3sKKyAgICBpZiAoIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRS
ZXN1bHQgfHwgIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gpCisgICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uOjpTdGF5SW5Hcm91cDsKKyAgICBpZiAoY3VycmVudENvb3BFbmZvcmNlbWVudFJl
c3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kudmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3lWYWx1ZTo6U2FtZU9yaWdpblBsdXNDT0VQKQorICAgICAgICByZXR1cm4gQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cDsKKyAgICByZXR1cm4g
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3U2hhcmVkR3JvdXA7Cit9CisK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVS
ZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklO
RyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9y
VmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5k
YXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CkBAIC03NDAsNiAr
NzgyLDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgfQogCisgICAgaWYgKCFkb0Ny
b3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKG1fcmVzcG9uc2UpKSB7CisgICAgICAg
IExPQURFUl9SRUxFQVNFX0xPR19FUlJPUigiZGlkUmVjZWl2ZVJlc3BvbnNlOiBJbnRlcnJ1cHRp
bmcgbG9hZCBkdWUgdG8gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdXJs
ID0gbV9yZXNwb25zZS51cmwoKV0geworICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1f
bmV0d29ya0xvYWQpCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbExvYWRp
bmcoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIk5h
dmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsIFJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgIH0K
KwogICAgIGF1dG8gcmVzcG9uc2UgPSBzYW5pdGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShSZXNvdXJj
ZVJlc3BvbnNlIHsgbV9yZXNwb25zZSB9LCBSZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25U
eXBlOjpDcm9zc09yaWdpblNhZmUpOwogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpIHsKICAgICAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IFVzaW5nIHJlc3BvbnNl
IGZvciBzeW5jaHJvbm91cyBsb2FkIik7CkBAIC03NjEsNyArODEyLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb24KICAgICAvLyBhIG1haW4gcmVzb3VyY2UgYmVjYXVzZSB0aGUgZW1iZWRkaW5n
IGNsaWVudCBtdXN0IGRlY2lkZSB3aGV0aGVyIHRvIGFsbG93IHRoZSBsb2FkLgogICAgIGJvb2wg
d2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IGlzTWFpblJlc291cmNlKCk7
CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IFNlbmRpbmcgV2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJUEMgKHdpbGxXYWl0Rm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2U9JWQpIiwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVSZXNwb25zZSB7IHJlc3BvbnNlLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIH0pOworICAgIHNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3Np
bmdDb250ZXh0R3JvdXAocmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50
KQogICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3Vy
Y2VMb2FkSW5mbywgcmVzcG9uc2UpLCAwKTsKQEAgLTc4MCw2ICs4MzEsMjIgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNl
UG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4dEdyb3VwKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKQoreworICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lv
biA9IHRvQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbihtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQpOworICAgIGlmIChicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKSB7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVz
cG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGxvYWRlciA9IG1fY29ubmVj
dGlvbi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb3JlSWRlbnRpZmllcigpKTsKKyAgICBB
U1NFUlQobG9hZGVyID09IHRoaXMpOworICAgIGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7CisgICAgbV9jb25u
ZWN0aW9uLT5uZXR3b3JrU2Vzc2lvbigpLT5hZGRMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2Zlcihsb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgUmVnaXN0cmFibGVEb21haW4gcmVz
cG9uc2VEb21haW4geyByZXNwb25zZS51cmwoKSB9OworICAgIG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpUcmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZp
Z2F0aW9uKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgbV9wYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgcmVzcG9uc2VEb21haW4s
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDApOworfQor
CiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
aWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCkBAIC05NDMsNiArMTAxMCwxMSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3Nz
T3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpKSB7CisgICAg
ICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZWRpcmVjdFJlcXVlc3QudXJsKCksICJSZWRpcmVjdGlvbiB3YXMgYmxvY2tlZCBi
eSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChtX25ldHdv
cmtMb2FkQ2hlY2tlcikgewogICAgICAgICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmVu
YWJsZUNvbnRlbnRFeHRlbnNpb25zQ2hlY2soKTsKQEAgLTEyNDksNiArMTMyMSwxMSBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3Nz
T3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlKSkgeworICAgICAgICBMT0FE
RVJfUkVMRUFTRV9MT0dfRVJST1IoImRpZFJldHJpZXZlQ2FjaGVFbnRyeTogSW50ZXJydXB0aW5n
IGxvYWQgZHVlIHRvIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Iik7CisgICAgICAgIGRpZEZh
aWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBy
ZXNwb25zZS51cmwoKSwgIk5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9w
ZW5lci1Qb2xpY3kiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7Cisg
ICAgfQorCiAgICAgcmVzcG9uc2UgPSBzYW5pdGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShXVEZNb3Zl
KHJlc3BvbnNlKSwgUmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmln
aW5TYWZlKTsKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25v
dXNMb2FkRGF0YS0+cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKQEAgLTEyNTksNyArMTMz
Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnko
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAKICAgICBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJf
UkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2FjaGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2U9JWQpIiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
OwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9u
c2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7
CisgICAgc2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRl
eHRHcm91cChyZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
OwogCiAgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAg
ICAgICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYyMmI0
Y2MzMDc0Yy4uMWRkOTllMTllNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25SZXF1ZXN0
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CkBAIC0xNDYsNiArMTQ3LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Kik7CiAjZW5kaWYKIAorICAgIGJvb2wgZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBzZW5kRGlk
UmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4dEdyb3VwKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlKTsKKwogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKTsKIAogcHJpdmF0
ZToKQEAgLTI1Nyw2ICsyNjEsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIG1fcmVzb3VyY2VMb2FkSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX3JlZGlyZWN0UmVzcG9uc2U7CiAgICAgVVJMIG1fZmlyc3RSZXNwb25zZVVSTDsgLy8gRmly
c3QgVVJMIGluIHJlc3BvbnNlJ3MgVVJMIGxpc3QgKGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cu
b3JnLyNjb25jZXB0LXJlc3BvbnNlLXVybC1saXN0KS4KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGQ0NTU5MzUyNTNmNy4uNTdi
OGMxNmI1ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC0xNjAsOCArMTYwLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpZiAoIW1fbG9hZGVyLmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVz
cG9uc2UocmVzcG9uc2UpKSB7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9y
RG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiTmF2aWdhdGlvbiB3YXMg
YmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIp
OwotICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSB9KTsKKyAgICBtX2xvYWRlci5zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJ
bk5ld0Jyb3dzaW5nQ29udGV4dEdyb3VwKHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKQogICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzMzRi
ODFjNmQ1ZGMuLjNmZGVkYThiZmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0zMjcsNiArMzI3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zv
cndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2ZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TUROU1JlZ2lzdGVySWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQREZQbHVn
aW5JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyJywKQEAgLTY5
Myw2ICs2OTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNv
cmU6OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbic6IFsn
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Q09FUERp
c3Bvc2l0aW9uJzogWyc8V2ViQ29yZS9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmg+J10sCisg
ICAgICAgICdXZWJDb3JlOjpDT09QRGlzcG9zaXRpb24nOiBbJzxXZWJDb3JlL0Nyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCc6IFsnPFdlYkNvcmUvQXBwSGlnaGxpZ2h0Lmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlJzogWyc8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJzogWyc8V2ViQ29yZS9D
b2xvclNwYWNlLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNjVhNjE5ZDdhOGEuLjM1MTljYTU3
ODFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC00MzYsNiArNDM2LDEyIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkTmVnb3RpYXRlTW9kZXJuVExTKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjCiAgICAgICAgIHBhZ2UtPmRpZE5lZ290aWF0ZU1vZGVyblRMUyh1cmwpOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZXNwb25zZURvbWFpbiwgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQoreworICAgIGlmIChhdXRvKiBwYWdl
ID0gcGFnZUlEID8gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCkgOiBudWxscHRyKQor
ICAgICAgICBwYWdlLT50cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgcmVz
cG9uc2VEb21haW4sIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFBy
b2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyhsYXVuY2hlciwgY29ubmVjdGlvbklkZW50aWZpZXIpOwpAQCAtNDc2LDE3ICs0
ODIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IHJlc291cmNlTG9hZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JX
ZWJQcm9jZXNzVHJhbnNmZXI6IHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VMb2FkSWRlbnRpZmllcjogJSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllci50b1VJbnQ2NCgpLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyID8gcmVzb3VyY2VMb2Fk
SWRlbnRpZmllci0+dG9VSW50NjQoKSA6IDApOwotICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRp
ZmllcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZp
ZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDYwZmIzMmU4
MTBlLi4zMjA0OTI3MTBlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMTQsOCArMjE0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9y
U3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAotICAgIHZv
aWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYpOwotCiAgICAgUHJvY2Vzc1Ro
cm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICB2
b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIApAQCAtMzIyLDYgKzMyMCw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOwogCisgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JO
YXZpZ2F0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisKICAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWlu
dDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBxdW90YSk+JiYpOwogCiAgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURh
dGFTdG9yZUZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IGQ2NzQ5MjVjNTgxZC4uNWZkOTNjMDczOGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC03Myw2ICs3Myw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc291cmNlTG9hZERpZFJlY2VpdmVS
ZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0
cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBSZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdp
dGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHN0
cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikK
IAorICAgIFRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlc3BvbnNlRG9tYWluLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSkKKwogI2lmIFVTRShTT1VQKQogICAgIERpZEV4Y2VlZE1lbW9yeUxpbWl0KCkKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmlu
ZGV4IGIwOTE5YjhjYjRhNS4uMGQzZTdkMmY0YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMzMsMTIgKzMzMywxMiBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmMoRnJhbWVJZGVudGlmaWVyCiAgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJh
bWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwg
b3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBs
aXN0ZW5lcklEKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIGJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0
KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS5k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRl
LCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRh
KTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRp
ZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBk
b3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGxpc3RlbmVySUQs
IHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGE1ZGVjZmYy
ZjdlOS4uZGM3MThjMjAxN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3Jp
Z2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRv
d25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBXZWJDb3Jl
OjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJM
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVXNl
ckRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVh
N2RiMDRlODIyZS4uYTkxYTFkNmU5MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTM2NDYsNyArMzY0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250
aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBz
CiAgICAgfQogCiAgICAgYm9vbCBpc1NlcnZlclNpZGVSZWRpcmVjdCA9IHNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uICYmIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGly
ZWN0KCk7Ci0gICAgYm9vbCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0ID0gc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uOworICAgIGJvb2wgc2hvdWxkQ2xvc2VQcmV2
aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZDsK
ICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+
KCp0aGlzLCBXVEZNb3ZlKG5ld1Byb2Nlc3MpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpLCBuYXZp
Z2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpc1NlcnZlclNpZGVSZWRpcmVjdCwgbmF2aWdhdGlvbi5j
dXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBzaG91bGRDbG9z
ZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgIGF1
dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBu
YXZpZ2F0aW9uID0gUmVmIHsgbmF2aWdhdGlvbiB9LCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24tPnRhcmdldEl0ZW0oKSkgewpAQCAtNTYzMSwx
MiArNTYzMSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAog
ICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsCi0gICAgYm9vbCB3YXNBbGxvd2VkQnlJ
bmplY3RlZEJ1bmRsZSwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBib29sIHdhc0FsbG93
ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRl
bnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBl
LCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBs
aXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
bV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU2NDksNyArNTY0
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNl
ID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5T
aG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKIAotICAgIFJlZiBsaXN0ZW5lciA9IGZy
YW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb24sIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBsaXN0ZW5l
cklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKKyAgICBSZWYgbGlzdGVuZXIg
PSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgd2ViUGFnZUlELCBmcmFtZUlELCBpZGVudGlmaWVyLCBsaXN0ZW5lcklE
LCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKICAgICAgICAgcHJvY2VzcywgbmF2
aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRl
UG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dh
cm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0
IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBv
ZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CkBAIC01NjU4LDI2ICs1NjU4LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRl
cjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHBy
b2Nlc3NdIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewogICAgICAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1l
SUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uLCBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1Nh
bmRib3hFeHRlbnNpb25zKHByb2Nlc3MpKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgYXV0byB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2Vzczo6Tm87Ci0gICAgICAgIGlmIChwb2xpY3lBY3Rpb24gPT0gUG9saWN5QWN0
aW9uOjpVc2UgJiYgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiAhPSBCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpTdGF5SW5Hcm91cCAmJiBuYXZpZ2F0aW9uKSB7
Ci0gICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQ6IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5LCBuZXdQcm9jZXNzSXNDcm9zc09yaWdpbklzb2xhdGVk
PSVkIiwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwKTsKLSAgICAgICAgICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZpZ2F0aW9uOwotICAgICAgICAgICAg
aWYgKGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cCkKLSAgICAgICAgICAgICAgICBw
cm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdX
ZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKCksIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJt
ZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkKTsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlc3BvbnNlRG9tYWluIHsgbmF2aWdh
dGlvblJlc3BvbnNlLT5yZXNwb25zZSgpLnVybCgpIH07Ci0gICAgICAgICAgICAgICAgcHJvY2Vz
c0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4pOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9j
ZXNzKCkucHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIocHJvY2Vzcy0+Y29yZVByb2Nl
c3NJZGVudGlmaWVyKCksIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25S
ZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnJlbGVh
c2VOb25OdWxsKCldKGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdURk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRp
b24pLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24sIG51bGxwdHIsIGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7Ci0KLSAgICAgICAgICAg
ICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0
aW9uLmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUo
c2VuZGVyKSwgeyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgp
LCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSwg
eyB9LCB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1v
dmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpLCB7IH0sIFdpbGxDb250aW51
ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdS
ZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pOwogCiAgICAg
aWYgKHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlKSB7CkBAIC01NjkxLDYgKzU2NzMsMjMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJl
c3BvbnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24odWludDY0X3Qg
bmF2aWdhdGlvbklELCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIGJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c3BvbnNlRG9tYWluLCBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCit7CisgICAgQVNTRVJUKGJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gIT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbjo6U3RheUluR3JvdXApOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmln
YXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZp
Z2F0aW9uSUQpIDogbnVsbHB0cjsKKyAgICBpZiAoIW5hdmlnYXRpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJ0cmln
Z2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uOiBQcm9jZXNzLXN3YXBw
aW5nIGR1ZSB0byBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSwgbmV3UHJvY2Vzc0lzQ3Jvc3NP
cmlnaW5Jc29sYXRlZD0lZCIsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0g
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cCk7Cisg
ICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2Vzc0Zvck5hdmlnYXRpb247CisgICAgaWYg
KGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cCkKKyAgICAgICAgcHJvY2Vzc0Zvck5h
dmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygm
d2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jv
c3NPcmlnaW5Nb2RlOjpJc29sYXRlZCk7CisgICAgZWxzZQorICAgICAgICBwcm9jZXNzRm9yTmF2
aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVE
b21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7CisKKyAgICBj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uLnJlbGVhc2VOb25OdWxsKCksIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGJlMTAxMDVmMTYxMy4uNjM3ZmEwMDEzNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjg1LDYgKzY4NSw4IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpDb2xvciB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9y
OyB9CiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAK
KyAgICB2b2lkIHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24o
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiwgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKTsKKwogICAgIC8vIEF0IHRoaXMgdGltZSwgbV9wYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IgY2FuIGJlIHNldCB2aWEgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
RGlkQ2hhbmdlKCkgd2hpY2ggaXMgYSBtZXNzYWdlCiAgICAgLy8gZnJvbSB0aGUgVUlQcm9jZXNz
LCBvciBieSBkaWRDb21taXRMYXllclRyZWUoKS4gV2hlbiBQTEFURk9STShNQUMpIGFkb3B0cyBV
SSBzaWRlIGNvbXBvc2l0aW5nLCB3ZSBzaG91bGQgZ2V0IHJpZCBvZgogICAgIC8vIHRoZSBtZXNz
YWdlIGVudGlyZWx5LgpAQCAtMTc0Niw3ICsxNzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
TmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwg
dWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxs
b3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
PiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9p
ZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKICAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0g
c3RkOjpudWxsb3B0KTsKQEAgLTIwNjQsNyArMjA2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAotICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24s
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
KTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5n
Q2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAzMmUyZTRhNWM0NDkuLjk4Yjc0ZjFiYTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA3LDcgKzEwNyw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2Vz
Ci0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25s
b2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdh
c0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEs
IHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24g
UG9saWN5RGVjaXNpb24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBT
dHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDBkMTgyOWIzOThjMy4uYWQzNWUyYmYxMWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkRvY3VtZW50
TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMzk4LDggKzM5OSwyNCBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0
SFRUUFJlc3BvbnNlQWNjZXNzID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CiAKICAg
ICBsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24gPSByZXNvdXJjZUxvYWRlci5m
cmFtZSgpICYmIHJlc291cmNlTG9hZGVyLmZyYW1lKCktPmlzTWFpbkZyYW1lKCkgJiYgcmVzb3Vy
Y2VMb2FkZXIub3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsK
KyAgICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uICYmIGRvY3VtZW50
KQorICAgICAgICBsb2FkUGFyYW1ldGVycy5zb3VyY2VDcm9zc09yaWdpbk9wZW5lclBvbGljeSA9
IGRvY3VtZW50LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpOwogCiAgICAgbG9hZFBhcmFtZXRl
cnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUgPSByZXNvdXJjZUxvYWRlci5m
cmFtZSgpICYmIHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5tb2RlID09IEZldGNoT3B0aW9uczo6
TW9kZTo6TmF2aWdhdGU7CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2
aWdhdGlvbkZvckFueUZyYW1lKSB7CisgICAgICAgIGlmIChhdXRvIGRvY3VtZW50TG9hZGVyID0g
cmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKSkgeworICAgICAgICAgICAgbG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklEID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqZG9j
dW1lbnRMb2FkZXIpLm5hdmlnYXRpb25JRCgpOworICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvblJlcXVlc3RlciA9IGRvY3VtZW50TG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCku
cmVxdWVzdGVyKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgbG9hZFBhcmFtZXRlcnMuaXNDcm9z
c09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+c2V0dGlu
Z3MoKS5jcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQoKTsKKyAgICBsb2FkUGFyYW1ldGVy
cy5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCA9IGZyYW1lICYmIGZyYW1lLT5sb2Fk
ZXIoKS5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpOwor
ICAgIGlmIChmcmFtZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuZWZmZWN0aXZlU2FuZGJveEZs
YWdzID0gZnJhbWUtPmxvYWRlcigpLmVmZmVjdGl2ZVNhbmRib3hGbGFncygpOworICAgIGlmIChh
dXRvIG9wZW5lckZyYW1lID0gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkub3BlbmVyKCkgOiBudWxs
cHRyKSB7CisgICAgICAgIGlmIChhdXRvIG9wZW5lckRvY3VtZW50ID0gb3BlbmVyRnJhbWUtPmRv
Y3VtZW50KCkpCisgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5vcGVuZXJVUkwgPSBvcGVuZXJE
b2N1bWVudC0+dXJsKCk7CisgICAgfQogCiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
Q3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeSA9ICFsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDU4ZjBjNDRm
YWMwOS4uZmVjNjgwYTA2NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTUzMCw3ICs1MzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNs
aWVudCgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUs
IHVzZXJEYXRhKTsKICAgICBSZWZQdHIgcHJvdmlzaW9uYWxMb2FkZXIgPSBzdGF0aWNfY2FzdDxX
ZWJEb2N1bWVudExvYWRlcio+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCkpOwogCi0gICAgaWYgKCFwcm92aXNpb25hbExvYWRlciB8fCBw
cm92aXNpb25hbExvYWRlci0+aXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVj
aygpKQorICAgIGlmICghcHJvdmlzaW9uYWxMb2FkZXIgfHwgcHJvdmlzaW9uYWxMb2FkZXItPmlz
Q29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIGF1dG8mIHVybCA9IHByb3Zpc2lvbmFsTG9hZGVyLT51cmwoKTsKQEAg
LTgxNyw3ICs4MTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
KQogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0
ZSwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7
CiAgICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2Up
IHsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIFdLQnVu
ZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGlj
eUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHdlYlBhZ2UsIG1fZnJhbWUucHRyKCks
IHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSk7CiAgICAgLy8gSWYgYSBicm93c2luZyBjb250
ZXh0IHN3aXRjaCBpcyByZXF1ZXN0ZWQsIHdlIHN0aWxsIG5lZWQgdG8gc2VuZCB0aGUgSVBDIHRv
IHRoZSBVSVByb2Nlc3MgaW4gb3JkZXIgdG8gcHJvY2Vzcy1zd2FwIGlmIG5lY2Vzc2FyeSwgZXZl
biB0aG91Z2ggdGhlCiAgICAgLy8gaW5qZWN0ZWQgYnVuZGxlIGhhcyBhbHJlYWR5IGhhbmRsZWQg
dGhlIHBvbGljeSBkZWNpc2lvbi4KLSAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGlj
eUFjdGlvblVzZSAmJiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKSB7CisgICAgaWYgKHBv
bGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKICAgICAgICAgV0VCRlJBTUVM
T0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2U6IGNvbnRpbnVpbmcgYmVjYXVzZSBpbmplY3RlZCBidW5kbGUgc2F5cyBzbyIpOwog
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybjsKQEAgLTg0OSwxNCArODQ5LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAg
ICAgYXV0byogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgYXV0byogcG9s
aWN5RG9jdW1lbnRMb2FkZXIgPSBjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgYXV0byBuYXZpZ2F0aW9uSUQg
PSBwb2xpY3lEb2N1bWVudExvYWRlciA/IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4o
KnBvbGljeURvY3VtZW50TG9hZGVyKS5uYXZpZ2F0aW9uSUQoKSA6IDA7Ci0gICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyOwotICAgIGlmIChhdXRvIG1haW5SZXNvdXJjZUxvYWRlciA9IHBvbGljeURvY3Vt
ZW50TG9hZGVyID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpIDog
bnVsbHB0cikKLSAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBtYWluUmVzb3Vy
Y2VMb2FkZXItPmlkZW50aWZpZXIoKTsKIAogICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUgPSBwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlOwogICAgIGF1dG8g
cHJvdGVjdG9yID0gbV9mcmFtZS5jb3B5UmVmKCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlv
biksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7Ci0gICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRl
LCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpKSB7CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwg
bV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1
ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKICAg
ICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmll
ciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAg
ICAgfQpAQCAtOTU2LDkgKzk1Myw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgdWlu
dDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIocmVxdWVzdElk
ZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlv
bjo6WWVzKTsKIAogICAgIEFTU0VSVChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpKTsKLSAg
ICBhdXRvIHJlcXVlc3RlciA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkudmFsdWUoKTsK
KyAgICBhdXRvJiByZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpLnZhbHVl
KCk7CiAKLSAgICBhdXRvKiByZXF1ZXN0aW5nRnJhbWUgPSByZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJ
ZGVudGlmaWVyKCkuZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKHJl
cXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIoKS5mcmFtZUlEKSA6IG51bGxwdHI7CisgICAg
YXV0byogcmVxdWVzdGluZ0ZyYW1lID0gcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllciAm
JiByZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVyLT5mcmFtZUlEID8gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllci0+ZnJh
bWVJRCkgOiBudWxscHRyOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ0ZyYW1lSUQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7CiAgICAgaWYgKHJlcXVlc3RpbmdGcmFtZSkgewpA
QCAtOTY5LDE1ICs5NjYsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKIAogICAgIEZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhIHsKICAgICAgICAgbmF2aWdhdGlvbkFj
dGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgpID09IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMs
Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3Rlci51cmwoKSB9LAotICAgICAgICBy
ZXF1ZXN0ZXIuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksCisgICAgICAgIFJlc291cmNlUmVxdWVz
dCB7IHJlcXVlc3Rlci51cmwgfSwKKyAgICAgICAgcmVxdWVzdGVyLnNlY3VyaXR5T3JpZ2luLT5k
YXRhKCksCiAgICAgICAgIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUlEKSwKICAgICAgICAgV1RG
TW92ZShwYXJlbnRGcmFtZUlEKSwKICAgICB9OwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKLSAgICBpZiAoYXV0byYgcGFnZUlE
ID0gcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLnBhZ2VJRCkgewotICAgICAgICBp
ZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlE
KSkKKyAgICBpZiAocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllciAmJiByZXF1ZXN0ZXIu
Z2xvYmFsRnJhbWVJZGVudGlmaWVyLT5wYWdlSUQpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5nbG9iYWxGcmFt
ZUlkZW50aWZpZXItPnBhZ2VJRCkpCiAgICAgICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCA9IHdl
YlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsKICAgICB9CiAKQEAgLTk5NSw4ICs5OTIs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnRy
ZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiA9IG5hdmlnYXRpb25BY3Rpb24udHJlYXRBc1NhbWVP
cmlnaW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuaGFzT3BlbmVkRnJh
bWVzID0gbmF2aWdhdGlvbkFjdGlvbi5oYXNPcGVuZWRGcmFtZXMoKTsKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5vcGVuZWRCeURPTVdpdGhPcGVuZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLm9wZW5l
ZEJ5RE9NV2l0aE9wZW5lcigpOwotICAgIGlmIChhdXRvJiByZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9u
QWN0aW9uLnJlcXVlc3RlcigpKQotICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5yZXF1ZXN0
ZXJPcmlnaW4gPSByZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOworICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLnJlcXVlc3Rlck9yaWdpbiA9IHJlcXVlc3Rlci5zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnRhcmdldEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zb3VyY2VCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyID0gbmF2aWdhdGlvbkFjdGlvbi5zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9u
QWN0aW9uLmxvY2tIaXN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGE2
OTg1YTc4MDQ0YS4uNDBmODZiZGZhY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNo
Q3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgV2ViQ29yZTo6TmV3
RnJhbWVPcGVuZXJQb2xpY3kpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7
CiAgICAgCi0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6
OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAg
dm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkODNhODk1NDdmZmYuLjQzMTQxODA0MzI2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE2
Miw2ICsxNjIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGFjdHNSZXF1ZXN0RGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Dcm9z
c09yaWdpbk9wZW5lclBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGF0YWJhc2VNYW5hZ2VyLmg+CkBAIC00MzQ4LDYgKzQzNDksMjkgQEAgdm9pZCBXZWJQYWdlOjpz
ZW5kQ09FUENPUlBWaW9sYXRpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2kKICAgICAgICAgV2ViQ29yZTo6c2VuZENPRVBDT1JQVmlvbGF0aW9uKCpmcmFtZS0+
Y29yZUZyYW1lKCksIGVtYmVkZGVyT3JpZ2luLCBlbmRwb2ludCwgZGlzcG9zaXRpb24sIGRlc3Rp
bmF0aW9uLCBibG9ja2VkVVJMKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZW5kVmlvbGF0aW9uUmVw
b3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGNvb3AsIENPT1BEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgY29uc3QgVVJMJiBjb29wVVJMLCBjb25zdCBVUkwmIHByZXZpb3VzUmVzcG9uc2VV
UkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiByZXBvcnRUb0hlYWRlclZh
bHVlKQoreworICAgIGlmICghcmVwb3J0VG9IZWFkZXJWYWx1ZS5pc051bGwoKSkKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUoKS5hZGRFbmRQ
b2ludHNGcm9tUmVwb3J0VG9IZWFkZXIoY29vcFVSTCwgcmVwb3J0VG9IZWFkZXJWYWx1ZSk7CisK
KyAgICAvLyBGSVhNRTogQWRkIHRoZSBjb25jZXB0IG9mIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAg
bGlrZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBw
cm9jZXNzIGFzIGEgZ3JvdXAuCisgICAgaWYgKFBhZ2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKSA8
PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsgZnJhbWUtPmNvcmVGcmFtZSgpKQorICAg
ICAgICBXZWJDb3JlOjpzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNw
b25zZSgqZnJhbWUtPmNvcmVGcmFtZSgpLCBjb29wLCBkaXNwb3NpdGlvbiwgY29vcFVSTCwgcHJl
dmlvdXNSZXNwb25zZVVSTCwgY29vcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBwcmV2aW91c1Jl
c3BvbnNlT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIHJlZmVycmVyLCB1c2VyQWdlbnQpOworfQor
Cit2b2lkIFdlYlBhZ2U6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9t
Q09PUFJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeSYgY29vcCwgQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBVUkwm
IGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJMLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbmV4dFJlc3BvbnNl
T3JpZ2luLCBib29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQpCit7CisgICAgLy8gRklYTUU6IEFkZCB0aGUgY29uY2VwdCBvZiBicm93c2lu
ZyBjb250ZXh0IGdyb3VwIGxpa2UgaW4gdGhlIHNwZWNpZmljYXRpb24gaW5zdGVhZCBvZiB0cmVh
dGluZyB0aGUgd2hvbGUgcHJvY2VzcyBhcyBhIGdyb3VwLgorICAgIGlmIChQYWdlOjpub25VdGls
aXR5UGFnZUNvdW50KCkgPD0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7IGZyYW1lLT5j
b3JlRnJhbWUoKSkKKyAgICAgICAgV2ViQ29yZTo6c2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZp
Z2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKmZyYW1lLT5jb3JlRnJhbWUoKSwgY29vcCwgZGlz
cG9zaXRpb24sIGNvb3BVUkwsIG5leHRSZXNwb25zZVVSTCwgY29vcE9yaWdpbi5zZWN1cml0eU9y
aWdpbigpLCBuZXh0UmVzcG9uc2VPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgaXNDT09QUmVzcG9u
c2VOYXZpZ2F0aW9uU291cmNlLCB1c2VyQWdlbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OmVucXVl
dWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYgZXZlbnRJbml0KQogewogICAgIGF1
dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOWJjNDEwNzc4
Njk5Li4xMjZmNDA2NzU4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTQ0MSw2ICs0NDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kQ1NQVmlv
bGF0aW9uUmVwb3J0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgVVJMJiByZXBvcnRV
UkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBzZW5kQ09FUFBvbGljeUlu
aGVyaXRlbmNlVmlvbGF0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBlbWJlZGRlck9yaWdpbiwgY29uc3QgU3RyaW5nJiBlbmRw
b2ludCwgV2ViQ29yZTo6Q09FUERpc3Bvc2l0aW9uLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFVSTCYgYmxvY2tlZFVSTCk7CiAgICAgdm9pZCBzZW5kQ09FUENPUlBWaW9sYXRpb24oV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGVt
YmVkZGVyT3JpZ2luLCBjb25zdCBTdHJpbmcmIGVuZHBvaW50LCBXZWJDb3JlOjpDT0VQRGlzcG9z
aXRpb24sIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb24sIGNvbnN0IFVSTCYgYmxv
Y2tlZFVSTCk7CisgICAgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NP
T1BSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5JiwgV2ViQ29yZTo6Q09PUERpc3Bvc2l0aW9uLCBjb25zdCBVUkwm
IGNvb3BVUkwsIGNvbnN0IFVSTCYgcHJldmlvdXNSZXNwb25zZVVSTCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBjb29wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHJlcG9ydFRvSGVhZGVyVmFs
dWUpOworICAgIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21D
T09QUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDcm9z
c09yaWdpbk9wZW5lclBvbGljeSYsIFdlYkNvcmU6OkNPT1BEaXNwb3NpdGlvbiwgY29uc3QgVVJM
JiBjb29wVVJMLCBjb25zdCBVUkwmIG5leHRSZXNwb25zZVVSTCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBjb29wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG5leHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25T
b3VyY2UsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKICAgICB2b2lkIGVucXVldWVTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCYmKTsKIAogICAgIC8vIC0tIENhbGxl
ZCBieSB0aGUgRHJhd2luZ0FyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBkMjRmN2FmZjA4OTIuLjhhZmM0ZWE1
ZTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFVSTCByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
cmVwb3J0RGF0YSkKICAgICBTZW5kQ09FUFBvbGljeUluaGVyaXRlbmNlVmlvbGF0aW9uKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGVtYmVkZGVyT3JpZ2luLCBTdHJpbmcgZW5kcG9pbnQsIGVudW06Ym9vbCBXZWJDb3Jl
OjpDT0VQRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFN0cmluZyB0eXBlLCBVUkwgYmxvY2tlZFVS
TCkKICAgICBTZW5kQ09FUENPUlBWaW9sYXRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZW1iZWRkZXJPcmlnaW4s
IFN0cmluZyBlbmRwb2ludCwgZW51bTpib29sIFdlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb24g
ZGVzdGluYXRpb24sIFVSTCBibG9ja2VkVVJMKQorICAgIFNlbmRWaW9sYXRpb25SZXBvcnRXaGVu
TmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY29vcCwgZW51bTpib29s
IFdlYkNvcmU6OkNPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgVVJMIGNvb3BVUkwsIFVSTCBw
cmV2aW91c1Jlc3BvbnNlVVJMLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGNv
b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgcHJldmlvdXNSZXNw
b25zZU9yaWdpbiwgU3RyaW5nIHJlZmVycmVyLCBTdHJpbmcgdXNlckFnZW50LCBTdHJpbmcgcmVw
b3J0VG9IZWFkZXJWYWx1ZSkKKyAgICBTZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdB
d2F5RnJvbUNPT1BSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNvb3AsIGVudW06Ym9vbCBXZWJD
b3JlOjpDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFVSTCBjb29wVVJMLCBVUkwgbmV4dFJl
c3BvbnNlVVJMLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGNvb3BPcmlnaW4s
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbmV4dFJlc3BvbnNlT3JpZ2luLCBi
b29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgU3RyaW5nIHVzZXJBZ2VudCkKICAg
ICBFbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5p
dCBldmVudEluaXQpCiAKICAgICBUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkoKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTNmNWY5YzlmMGZmLi5hMjU5OGYzMmZiNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJiwgV2ViQ29yZTo6TmV3RnJhbWVPcGVuZXJQb2xpY3kpIGZpbmFsOwogICAgIHZv
aWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBm
aW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1l
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9u
TW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNzFhNzE1YjM3ZmE1Li4zNTZjOTNmMzFl
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04NTUsNyArODU1LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKICAgICBbW3dlYlZpZXcgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXdTaG93OndlYlZpZXddOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVu
Y3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1ODg5OTJkNGFhZmUu
LmZiMjU4M2ZlOTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNTE5LDcg
KzUxOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAg
ICAgIHVpLT53ZWJWaWV3U2hvdyh3ZWJWaWV3KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9u
KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAx
ZTMwMzFmOWI1MDIuLjA5NWIyNTM1YTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRp
b25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25z
dCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0
ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsK
</data>
<flag name="commit-queue"
          id="462929"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439356</attachid>
            <date>2021-09-27 08:24:36 -0700</date>
            <delta_ts>2021-09-27 09:45:41 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>move_COOP_to_NetworkProcess_wip.patch</filename>
            <type>text/plain</type>
            <size>145051</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDg3OTE2Yzk2ODNlMS4uMTc2ZTMxNDVhNzc4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
cm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IE5hdmlnYXRpb24gd2FzIGJs
b2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kKK0NPTlNPTEUgTUVTU0FHRTogTmF2
aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeQogCiBQQVNT
IDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1v
cmlnaW4iPiBTYW5kYm94ZWQgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgcG9wdXAgc2hvdWxk
IHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJyb3IKIFBBU1MgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1w
b3B1cHMgYWxsb3ctc2NyaXB0cyI+IFNhbmRib3hlZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSBwb3B1cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBlcnJvcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdp
bi1vcGVuZXItcG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9w
ZW5lci1wb2xpY3kvY29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NzkxNmM5
NjgzZTEuLjE3NmUzMTQ1YTc3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3At
c2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3At
c2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw1IEBACitDT05TT0xFIE1FU1NB
R0U6IE5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kK
K0NPTlNPTEUgTUVTU0FHRTogTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeQogCiBQQVNTIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93
LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iPiBTYW5kYm94ZWQgQ3Jvc3MtT3JpZ2luLU9wZW5l
ci1Qb2xpY3kgcG9wdXAgc2hvdWxkIHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJyb3IKIFBBU1MgPGlm
cmFtZSBzYW5kYm94PSJhbGxvdy1wb3B1cHMgYWxsb3ctc2NyaXB0cyI+IFNhbmRib3hlZCBDcm9z
cy1PcmlnaW4tT3BlbmVyLVBvbGljeSBwb3B1cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBl
cnJvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9jb29wLWNvZXAu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL2Nvb3AtY29lcC5weQppbmRleCAzM2M0
YWMyMmIyMjIuLjIwZjA1ZTA2MjE4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jl
c291cmNlcy9jb29wLWNvZXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9j
b29wLWNvZXAucHkKQEAgLTEwLDYgKzEwLDcgQEAgZGVmIG1haW4ocmVxdWVzdCwgcmVzcG9uc2Up
OgogICAgIGNvZXAgPSByZXF1ZXN0RGF0YS5maXJzdChiImNvZXAiKQogICAgIGNvZXBSZXBvcnRP
bmx5ID0gcmVxdWVzdERhdGEuZmlyc3QoYiJjb2VwLXJlcG9ydC1vbmx5IiwgTm9uZSkKICAgICBy
ZWRpcmVjdCA9IHJlcXVlc3REYXRhLmZpcnN0KGIicmVkaXJlY3QiLCBOb25lKQorICAgIHJlc3Bv
bnNlLmhlYWRlcnMuc2V0KGIiWC1TZWNyZXQiLCAibXktc2VjcmV0IikKICAgICBpZiBjb29wICE9
IGIiIjoKICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDcm9zcy1PcmlnaW4tT3BlbmVy
LVBvbGljeSIsIGNvb3ApCiAgICAgaWYgY29vcFJlcG9ydE9ubHkgaXMgbm90IE5vbmU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBlYzA1MDE0MmE1ZmMuLjhmMzk0Y2UyZGYzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC04MzEsNiArODMxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKICAgICBsb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5oCiAgICAgbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorICAgIGxv
YWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmgKICAgICBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaAogICAgIGxvYWRlci9QaW5nTG9hZGVyLmgKICAgICBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDQzMjBhZGMyODllMC4uZTM2YWQ0N2ZhYmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMTU2MCw2ICsxNTYwLDcgQEAgbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNw
cAogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCiBsb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorbG9hZGVyL05hdmlnYXRpb25S
ZXF1ZXN0ZXIuY3BwCiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKIGxvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKIGxvYWRlci9QaW5nTG9hZGVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQx
ODdmMTMzMzQzMy4uNjEzMzU1MDUyMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzIzLDYgKzEzMjMsNyBAQAogCQk0Njgz
NDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2ODhFRTNDMjZERDI2MTAwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODhFRTNBMjZERDI2
MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJv
YWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjlENzdCODI3
MDE2MjUxMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8q
IE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NkFBQUEzRDI1RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QUFBQTNBMjVEMzYzMTQwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovOyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDYzLDgg
Kzg0NjQsMTAgQEAKIAkJNDY5Q0NDRkEyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5u
ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnJvYWRjYXN0Q2hhbm5lbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNh
c3RDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0NDRkQyNjlEMDIwMzAwNkUwMzE0IC8qIEJyb2FkY2Fz
dENoYW5uZWwuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEJyb2FkY2FzdENoYW5uZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uUmVxdWVz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QUFBQTNBMjVEMzYzMTQwMEJB
RjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkFBQUEzQzI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkFDRDgxMTI3MDE2NTZBMDBF
RjhDRUQgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhB
QTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFnZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCODU5M0Ey
NjE2NzIwQzAwMTlFREM2IC8qIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNzc4OSw2ICsyNzc5Miw4IEBACiAJCQkJOTNDQ0YwNUYwQUY2Q0E3NjAwMDE4
RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICovLAogCQkJCTkzQ0NGMDI2MEFGNkM1MjkwMDAx
OEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi8sCiAJCQkJOUJBODI3NzgxRjA2MTU2NTAwRjcx
RTc1IC8qIE5hdmlnYXRpb25EaXNhYmxlci5oICovLAorCQkJCTQ2QUNEODExMjcwMTY1NkEwMEVG
OENFRCAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcCAqLywKKwkJCQk0NjlENzdCNjI3MDE2MjUw
MDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovLAogCQkJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLywKIAkJCQk5NzlGNDNEMjEw
NzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oICovLAogCQkJCTkzRTIyN0RE
MEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgKi8sCkBA
IC0zMjI4NSw2ICszMjI5MCw3IEBACiAJCQkJOTNBODA2MTUxRTAzQjUxQzAwOEExRjI2IC8qIERv
dWJsZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDE3NjJFNDE3NjY4NkVBMDBEODM2QTgg
LyogRG93blNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTg3NjBFMEIyQTEyMDEwMEEx
NkVDRSAvKiBEcmFnQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5RDc3QjgyNzAxNjI1
MTAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
Q0E1OTYzMEIyN0MxRjIwMEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0NBNTk1RDBCMjdCRDlFMDBGQTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QjZFNjlGMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGVhMGEwODAyYzU3Zi4uYzQxOGQ1OTBkMTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTYW1lT3JpZ2luQXNUb3BEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHNlY3VyaXR5
T3JpZ2luKCkuaXNTYW1lT3JpZ2luQXModG9wT3JpZ2luKCkpOyB9CiAgICAgYm9vbCBzaG91bGRG
b3JjZU5vT3BlbmVyQmFzZWRPbkNPT1AoKSBjb25zdDsKIAotICAgIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiBjcm9zc09yaWdpbk9wZW5lclBvbGljeSgpIGNvbnN0IGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjcm9zc09yaWdp
bk9wZW5lclBvbGljeSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3koY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmKTsKIAogICAgIHZvaWQgd2ls
bExvYWRTY3JpcHRFbGVtZW50KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKaW5kZXggYzY1ZjFiMjJkNTcyLi5jMjYx
OGI1ZDExYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5LmNwcApAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCIK
ICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRU
UEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJOYXZp
Z2F0aW9uUmVxdWVzdGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBpbmdMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC02OCwxMyArNzAsODcgQEAg
c3RhdGljIEFTQ0lJTGl0ZXJhbCBjcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlVG9FZmZlY3Rp
dmVQb2xpY3lTdHJpbmcoQ3Jvc3NPcmkKICAgICByZXR1cm4gInVuc2FmZS1ub25lIl9zOwogfQog
CisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNj
aGVjay1icm93c2luZy1jb250ZXh0LWdyb3VwLXN3aXRjaC1jb29wLXZhbHVlCitzdGF0aWMgYm9v
bCBjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChib29s
IGlzSW5pdGlhbEFib3V0QmxhbmssIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUgYWN0aXZl
RG9jdW1lbnRDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVEb2N1bWVudE5h
dmlnYXRpb25PcmlnaW4sIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUgcmVzcG9uc2VDT09Q
VmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbikKK3sKKyAgICAvLyBJ
ZiB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIGFjdGl2ZURvY3VtZW50Q09PUFZhbHVlLCBhY3RpdmVE
b2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUFZhbHVlLCBhbmQgcmVzcG9uc2VP
cmlnaW4gaXMgdHJ1ZSwgcmV0dXJuIGZhbHNlLgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI21hdGNoaW5nLWNvb3AKKyAgICBpZiAoYWN0
aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5z
YWZlTm9uZSAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZh
bHVlOjpVbnNhZmVOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFjdGl2ZURv
Y3VtZW50Q09PUFZhbHVlID09IHJlc3BvbnNlQ09PUFZhbHVlICYmIGFjdGl2ZURvY3VtZW50TmF2
aWdhdGlvbk9yaWdpbi5pc1NhbWVPcmlnaW5BcyhyZXNwb25zZU9yaWdpbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIElmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgor
ICAgIC8vIC0gaXNJbml0aWFsQWJvdXRCbGFuaywKKyAgICAvLyAtIGFjdGl2ZURvY3VtZW50Q09P
UFZhbHVlJ3MgdmFsdWUgaXMgInNhbWUtb3JpZ2luLWFsbG93LXBvcHVwcyIuCisgICAgLy8gLSBy
ZXNwb25zZUNPT1BWYWx1ZSBpcyAidW5zYWZlLW5vbmUiLAorICAgIC8vIHRoZW4gcmV0dXJuIGZh
bHNlLgorICAgIGlmIChpc0luaXRpYWxBYm91dEJsYW5rICYmIGFjdGl2ZURvY3VtZW50Q09PUFZh
bHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW5BbGxvd1BvcHVw
cyAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpV
bnNhZmVOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwj
Y2hlY2stYmNnLXN3aXRjaC1uYXZpZ2F0aW9uLXJlcG9ydC1vbmx5CitzdGF0aWMgYm9vbCBjaGVj
a0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5JiBhY3RpdmVEb2N1bWVudENPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBhY3RpdmVE
b2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBy
ZXNwb25zZUNPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbikKK3sKKyAg
ICBpZiAoIWNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
KGlzSW5pdGlhbEFib3V0QmxhbmssIGFjdGl2ZURvY3VtZW50Q09PUC5yZXBvcnRPbmx5VmFsdWUs
IGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QLnJlcG9ydE9ubHlW
YWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
Y2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJbml0
aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9ydE9ubHlWYWx1ZSwgYWN0aXZl
RG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AudmFsdWUsIHJlc3BvbnNlT3Jp
Z2luKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNS
ZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJbml0aWFsQWJvdXRCbGFuaywgYWN0
aXZlRG9jdW1lbnRDT09QLnZhbHVlLCBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJl
c3BvbnNlQ09PUC5yZXBvcnRPbmx5VmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBzdGQ6OnR1cGxlPFJl
ZjxTZWN1cml0eU9yaWdpbj4sIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBjb21wdXRlUmVzcG9u
c2VPcmlnaW5BbmRDT09QKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIsIENvbnRlbnRTZWN1
cml0eVBvbGljeSogcmVzcG9uc2VDU1ApCit7CisgICAgLy8gTm9uLWluaXRpYWwgZW1wdHkgZG9j
dW1lbnRzIChhYm91dDpibGFuaykgc2hvdWxkIGluaGVyaXQgdGhlaXIgY3Jvc3Mtb3JpZ2luLW9w
ZW5lci1wb2xpY3kgZnJvbSB0aGUgbmF2aWdhdGlvbidzIGluaXRpYXRvciB0b3AgbGV2ZWwgZG9j
dW1lbnQsCisgICAgLy8gaWYgdGhlIGluaXRpYXRvciBhbmQgaXRzIHRvcCBsZXZlbCBkb2N1bWVu
dCBhcmUgc2FtZS1vcmlnaW4sIG9yIGRlZmF1bHQgKHVuc2FmZS1ub25lKSBvdGhlcndpc2UuCisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy82OTEzCisgICAgaWYg
KFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIocmVz
cG9uc2UudXJsKCkpICYmIHJlcXVlc3RlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBs
ZShyZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luLCByZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luLT5p
c1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnRvcE9yaWdpbikgPyByZXF1ZXN0ZXItPmNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5IDogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgeyB9KTsKKworICAgIC8v
IElmIHRoZSBIVFRQIHJlc3BvbnNlIGNvbnRhaW5zIGEgQ1NQIGhlYWRlciwgaXQgbWF5IHNldCBz
YW5kYm94IGZsYWdzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgb3JpZ2luIHRvIGJlY29tZSB1bmlx
dWUuCisgICAgYXV0byByZXNwb25zZU9yaWdpbiA9IHJlc3BvbnNlQ1NQICYmIHJlc3BvbnNlQ1NQ
LT5zYW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpOworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShyZXNwb25zZU9yaWdpbiksIG9idGFpbkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5KHJlc3BvbnNlKSk7Cit9CisKKy8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2Nvb3AtZW5mb3JjZQorc3RhdGljIENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgZW5mb3JjZVJlc3BvbnNlQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNl
bWVudFJlc3VsdCYgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCwgY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luLCBjb25zdCBDcm9zc09yaWdp
bk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBib29sIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0
eURvY3VtZW50LCBjb25zdCBGdW5jdGlvbjx2b2lkKENPT1BEaXNwb3NpdGlvbik+JiBzZW5kVmlv
bGF0aW9uUmVwb3J0cykKK3sKKyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50
UmVzdWx0IG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdCA9IHsKKyAgICAgICAgcmVzcG9uc2VVUkws
CisgICAgICAgIHJlc3BvbnNlT3JpZ2luLAorICAgICAgICByZXNwb25zZUNPT1AsCisgICAgICAg
IHRydWUgLyogaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UgKi8sCisgICAgICAgIGN1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCwKKyAgICAgICAgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5CisgICAgfTsKKworICAgIGlmIChjaGVja0lm
Q09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0Rpc3BsYXlpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5jcm9zc09y
aWdpbk9wZW5lclBvbGljeS52YWx1ZSwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5jdXJy
ZW50T3JpZ2luLCByZXNwb25zZUNPT1AudmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkgeworICAgICAg
ICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCA9IHRydWU7CisgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRzKENPT1BEaXNwb3NpdGlvbjo6
RW5mb3JjZSk7CisgICAgfQorCisgICAgaWYgKGNoZWNrSWZFbmZvcmNpbmdSZXBvcnRPbmx5Q09P
UFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGlzRGlzcGxheWluZ0luaXRp
YWxFbXB0eURvY3VtZW50LCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5LCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmN1cnJlbnRPcmlnaW4s
IHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VPcmlnaW4pKSB7CisgICAgICAgIG5ld0NPT1BFbmZvcmNl
bWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5
ID0gdHJ1ZTsKKyAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydHMoQ09PUERpc3Bvc2l0aW9uOjpS
ZXBvcnRpbmcpOworICAgIH0KKworICAgIHJldHVybiBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQ7
Cit9CisKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5o
dG1sI29idGFpbi1jb29wCi1Dcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdp
bk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG9i
dGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeT4gY29l
cDsKLSAgICBhdXRvIGVuc3VyZUNPRVAgPSBbJmNvZXAsICZyZXNwb25zZSwgJmNvbnRleHRdKCkg
LT4gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgeworICAgIGF1dG8gZW5zdXJlQ09FUCA9IFsm
Y29lcCwgJnJlc3BvbnNlXSgpIC0+IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIHsKICAgICAg
ICAgaWYgKCFjb2VwKQotICAgICAgICAgICAgY29lcCA9IG9idGFpbkNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kocmVzcG9uc2UsICZjb250ZXh0KTsKKyAgICAgICAgICAgIGNvZXAgPSBvYnRhaW5D
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgcmV0
dXJuICpjb2VwOwogICAgIH07CiAgICAgYXV0byBwYXJzZUNPT1AgPSBbJnJlc3BvbnNlLCAmZW5z
dXJlQ09FUF0oSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZSwgYXV0byYgdmFsdWUsIGF1dG8mIHJl
cG9ydGluZ0VuZHBvaW50KSB7CkBAIC05NSw3ICsxNzEsNyBAQCBDcm9zc09yaWdpbk9wZW5lclBv
bGljeSBvYnRhaW5Dcm9zc09yaWdpbk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZQogICAgIH07CiAKICAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBwb2xpY3k7Ci0gICAg
aWYgKCFjb250ZXh0LnNldHRpbmdzVmFsdWVzKCkuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFi
bGVkIHx8ICFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKS0+aXNQb3RlbnRp
YWxseVRydXN0d29ydGh5KCkpCisgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3Bv
bnNlLnVybCgpKS0+aXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkpCiAgICAgICAgIHJldHVybiBw
b2xpY3k7CiAKICAgICBwYXJzZUNPT1AoSFRUUEhlYWRlck5hbWU6OkNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5LCBwb2xpY3kudmFsdWUsIHBvbGljeS5yZXBvcnRpbmdFbmRwb2ludCk7CkBAIC0xNjAs
NCArMjM2LDI4IEBAIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZy
b21DT09QUmVzcG9uc2UoRnJhbWUmIGZyYW1lLCBDcm9zc09yCiAgICAgfSk7CiB9CiAKKy8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRt
bCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42KQorc3RkOjpvcHRpb25hbDxD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBkb0Nyb3NzT3JpZ2luT3Bl
bmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIsIENvbnRl
bnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1AsIFNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5k
Ym94RmxhZ3MsIGJvb2wgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQsIGNvbnN0IENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQmIGN1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pPiYgc2VuZFZpb2xhdGlvblJlcG9ydHMpCit7
CisgICAgYXV0byBbcmVzcG9uc2VPcmlnaW4sIHJlc3BvbnNlQ09PUF0gPSBjb21wdXRlUmVzcG9u
c2VPcmlnaW5BbmRDT09QKHJlc3BvbnNlLCByZXF1ZXN0ZXIsIHJlc3BvbnNlQ1NQKTsKKworICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13
ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42LjIpCisgICAgLy8g
SWYgc2FuZGJveEZsYWdzIGlzIG5vdCBlbXB0eSBhbmQgcmVzcG9uc2VDT09QJ3MgdmFsdWUgaXMg
bm90ICJ1bnNhZmUtbm9uZSIsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGFuIGFwcHJvcHJpYXRlIG5l
dHdvcmsgZXJyb3IgYW5kIGJyZWFrLgorICAgIGlmIChyZXNwb25zZUNPT1AudmFsdWUgIT0gQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiBlZmZlY3RpdmVTYW5kYm94
RmxhZ3MgIT0gU2FuZGJveE5vbmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdCwgcmVzcG9uc2UudXJsKCksIHJlc3BvbnNlT3JpZ2luLCByZXNw
b25zZUNPT1AsIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCBbJiwgcmVzcG9uc2VP
cmlnaW4gPSByZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QID0gcmVzcG9uc2VDT09QXShDT09Q
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24pIHsKKyAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydHMo
ZGlzcG9zaXRpb24sIHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VPcmlnaW4pOworICAgIH0pOworfQor
CitDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IENyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ6OmZyb20oY29uc3QgVVJMJiBjdXJyZW50VVJMLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgY3VycmVudE9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kmIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
b25SZXF1ZXN0ZXI+IHJlcXVlc3RlciwgY29uc3QgVVJMJiBvcGVuZXJVUkwpCit7CisgICAgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCByZXN1bHQgeyBjdXJyZW50VVJM
LCBXVEZNb3ZlKGN1cnJlbnRPcmlnaW4pLCBjcm9zc09yaWdpbk9wZW5lclBvbGljeSB9OworICAg
IHJlc3VsdC5pc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlvblNvdXJjZSA9IHJlcXVlc3RlciAmJiBy
ZXN1bHQuY3VycmVudE9yaWdpbi0+aXNTYW1lT3JpZ2luQXMocmVxdWVzdGVyLT5zZWN1cml0eU9y
aWdpbik7CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmln
aW5Gcm9tT3duZXIoY3VycmVudFVSTCkgJiYgb3BlbmVyVVJMLmlzVmFsaWQoKSkKKyAgICAgICAg
cmVzdWx0LnVybCA9IG9wZW5lclVSTDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5oCmluZGV4IDg3YTViMTMwY2RmNi4uZWZkNDNmNzUwYzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaApAQCAtMzEsOSAr
MzEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAorc3RydWN0IE5hdmlnYXRpb25SZXF1ZXN0ZXI7CisKK3R5cGVkZWYgaW50IFNhbmRi
b3hGbGFnczsKKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3Jp
Z2luLmh0bWwjY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3ktdmFsdWUKIGVudW0gY2xhc3MgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSA6IHVpbnQ4X3QgewogICAgIFVuc2FmZU5vbmUsCkBA
IC05OCwyMCArMTAzLDIzIEBAIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5OjpkZWNvZGUoRGVjb2RlciYKIAogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY29vcC1lbmZvcmNlbWVu
dC1yZXN1bHQKIHN0cnVjdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
IHsKLSAgICBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggeyBmYWxzZSB9Owot
ICAgIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaER1ZVRvUmVwb3J0T25seSB7
IGZhbHNlIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5RW5mb3JjZW1lbnRSZXN1bHQgZnJvbShjb25zdCBVUkwmIGN1cnJlbnRVUkwsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiBjdXJyZW50T3JpZ2luLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGlj
eSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4sIGNvbnN0IFVSTCYgb3BlbmVy
VVJMKTsKKwogICAgIFVSTCB1cmw7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBjdXJyZW50T3Jp
Z2luOwogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
OwogICAgIGJvb2wgaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UgeyB0cnVlIH07Cisg
ICAgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoIHsgZmFsc2UgfTsKKyAgICBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHkgeyBmYWxz
ZSB9OwogfTsKIAogZW51bSBjbGFzcyBDT09QRGlzcG9zaXRpb24gOiBib29sIHsgUmVwb3J0aW5n
ICwgRW5mb3JjZSB9OwogCi1Dcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdp
bk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOworV0VCQ09SRV9FWFBPUlQgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0
YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRDcm9zc09yaWdpbk9wZW5lclBvbGljeUhlYWRlcnMoUmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Jik7Ci12b2lkIHNlbmRW
aW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1lJiwgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbiwgY29uc3QgVVJMJiBjb29wVVJMLCBj
b25zdCBVUkwmIHByZXZpb3VzUmVzcG9uc2VVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjb29w
T3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcHJldmlvdXNSZXNwb25zZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwotdm9pZCBzZW5k
VmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZShGcmFtZSYs
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBDT09QRGlzcG9zaXRpb24sIGNvbnN0IFVSTCYgY29v
cFVSTCwgY29uc3QgVVJMJiBuZXh0UmVzcG9uc2VVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBj
b29wT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgbmV4dFJlc3BvbnNlT3JpZ2luLCBib29s
IGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdU
b0NPT1BSZXNwb25zZShGcmFtZSYsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBDT09QRGlzcG9z
aXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91c1Jlc3BvbnNlVVJM
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9y
dFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeSwgQ09PUERpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVS
TCYgbmV4dFJlc3BvbnNlVVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG5leHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25z
ZU5hdmlnYXRpb25Tb3VyY2UsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3Vs
dD4gZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uUmVxdWVzdGVyPiYsIENvbnRl
bnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1AsIFNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5k
Ym94RmxhZ3MsIGJvb2wgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQsIGNvbnN0IENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQmIGN1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pPiYgc2VuZFZpb2xhdGlvblJlcG9ydHMpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IGYwOWUwZWRhYmVlMC4uZWEyNDA1NjdmZDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNaXhlZENv
bnRlbnRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvblJlcXVlc3Rlci5oIgogI2luY2x1
ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3Mu
aCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKQEAgLTcwMiw5ICs3MDMsNiBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmICFkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdP
ZlJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAo
IW5ld1JlcXVlc3QudXJsKCkuaG9zdCgpLmlzRW1wdHkoKSAmJiBTZWN1cml0eU9yaWdpbjo6c2hv
dWxkSWdub3JlSG9zdChuZXdSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBhdXRvIHVybCA9IG5l
d1JlcXVlc3QudXJsKCk7CiAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh7IH0pOwpAQCAtNzQ0
LDU1ICs3NDIsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIHBvbGljeUNoZWNrZXIu
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9u
c2UsIFdURk1vdmUobmF2aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLS8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2NoZWNr
LWJyb3dzaW5nLWNvbnRleHQtZ3JvdXAtc3dpdGNoLWNvb3AtdmFsdWUKLXN0YXRpYyBib29sIGNo
ZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGJvb2wgaXNJ
bml0aWFsQWJvdXRCbGFuaywgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSBhY3RpdmVEb2N1
bWVudENPT1BWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURvY3VtZW50TmF2aWdh
dGlvbk9yaWdpbiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSByZXNwb25zZUNPT1BWYWx1
ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQotewotICAgIC8vIElmIHRo
ZSByZXN1bHQgb2YgbWF0Y2hpbmcgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGFjdGl2ZURvY3Vt
ZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QVmFsdWUsIGFuZCByZXNwb25zZU9yaWdp
biBpcyB0cnVlLCByZXR1cm4gZmFsc2UuCi0gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjbWF0Y2hpbmctY29vcAotICAgIGlmIChhY3RpdmVE
b2N1bWVudENPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVO
b25lICYmIHJlc3BvbnNlQ09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6
OlVuc2FmZU5vbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYWN0aXZlRG9jdW1l
bnRDT09QVmFsdWUgPT0gcmVzcG9uc2VDT09QVmFsdWUgJiYgYWN0aXZlRG9jdW1lbnROYXZpZ2F0
aW9uT3JpZ2luLmlzU2FtZU9yaWdpbkFzKHJlc3BvbnNlT3JpZ2luKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6Ci0gICAg
Ly8gLSBpc0luaXRpYWxBYm91dEJsYW5rLAotICAgIC8vIC0gYWN0aXZlRG9jdW1lbnRDT09QVmFs
dWUncyB2YWx1ZSBpcyAic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzIi4KLSAgICAvLyAtIHJlc3Bv
bnNlQ09PUFZhbHVlIGlzICJ1bnNhZmUtbm9uZSIsCi0gICAgLy8gdGhlbiByZXR1cm4gZmFsc2Uu
Ci0gICAgaWYgKGlzSW5pdGlhbEFib3V0QmxhbmsgJiYgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUg
PT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6U2FtZU9yaWdpbkFsbG93UG9wdXBzICYm
IHJlc3BvbnNlQ09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2Fm
ZU5vbmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0v
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjaGVj
ay1iY2ctc3dpdGNoLW5hdmlnYXRpb24tcmVwb3J0LW9ubHkKLXN0YXRpYyBib29sIGNoZWNrSWZF
bmZvcmNpbmdSZXBvcnRPbmx5Q09PUFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoKGJvb2wgaXNJbml0aWFsQWJvdXRCbGFuaywgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kmIGFjdGl2ZURvY3VtZW50Q09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURvY3Vt
ZW50TmF2aWdhdGlvbk9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3Bv
bnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQotewotICAgIGlm
ICghY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJ
bml0aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9ydE9ubHlWYWx1ZSwgYWN0
aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AucmVwb3J0T25seVZhbHVl
LCByZXNwb25zZU9yaWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjaGVj
a0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxB
Ym91dEJsYW5rLCBhY3RpdmVEb2N1bWVudENPT1AucmVwb3J0T25seVZhbHVlLCBhY3RpdmVEb2N1
bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC52YWx1ZSwgcmVzcG9uc2VPcmlnaW4p
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChjaGVja0lmQ09PUFZhbHVlc1JlcXVp
cmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxBYm91dEJsYW5rLCBhY3RpdmVE
b2N1bWVudENPT1AudmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9u
c2VDT09QLnJlcG9ydE9ubHlWYWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIHN0ZDo6dHVwbGU8UmVmPFNl
Y3VyaXR5T3JpZ2luPiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+IGNvbXB1dGVSZXNwb25zZU9y
aWdpbkFuZENPT1AoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpSZXF1
ZXN0ZXI+JiByZXF1ZXN0ZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1ApCi17
Ci0gICAgLy8gTm9uLWluaXRpYWwgZW1wdHkgZG9jdW1lbnRzIChhYm91dDpibGFuaykgc2hvdWxk
IGluaGVyaXQgdGhlaXIgY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kgZnJvbSB0aGUgbmF2aWdh
dGlvbidzIGluaXRpYXRvciB0b3AgbGV2ZWwgZG9jdW1lbnQsCi0gICAgLy8gaWYgdGhlIGluaXRp
YXRvciBhbmQgaXRzIHRvcCBsZXZlbCBkb2N1bWVudCBhcmUgc2FtZS1vcmlnaW4sIG9yIGRlZmF1
bHQgKHVuc2FmZS1ub25lKSBvdGhlcndpc2UuCi0gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3do
YXR3Zy9odG1sL2lzc3Vlcy82OTEzCi0gICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhl
cml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIocmVzcG9uc2UudXJsKCkpICYmIHJlcXVlc3RlcikK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShSZWYgeyByZXF1ZXN0ZXItPnNlY3VyaXR5
T3JpZ2luKCkgfSwgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKHJl
cXVlc3Rlci0+dG9wT3JpZ2luKCkpID8gcmVxdWVzdGVyLT5jcm9zc09yaWdpbk9wZW5lclBvbGlj
eSgpIDogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgeyB9KTsKLQotICAgIC8vIElmIHRoZSBIVFRQ
IHJlc3BvbnNlIGNvbnRhaW5zIGEgQ1NQIGhlYWRlciwgaXQgbWF5IHNldCBzYW5kYm94IGZsYWdz
LCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgb3JpZ2luIHRvIGJlY29tZSB1bmlxdWUuCi0gICAgYXV0
byByZXNwb25zZU9yaWdpbiA9IHJlc3BvbnNlQ1NQICYmIHJlc3BvbnNlQ1NQLT5zYW5kYm94Rmxh
Z3MoKSAhPSBTYW5kYm94Tm9uZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoV1RGTW92ZShyZXNwb25zZU9yaWdpbiksIG9idGFpbkNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5KHJlc3BvbnNlLCBkb2N1bWVudCkpOwotfQotCiAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjcHJvY2Vzcy1hLW5hdmln
YXRlLWZldGNoIChTdGVwIDEyLjUuNikKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmRvQ3Jvc3NPcmln
aW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CkBAIC04MDMsNzUgKzc1MiwyOSBAQCBib29sIERvY3VtZW50TG9hZGVyOjpkb0Nyb3Nz
T3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAg
IGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKS5jcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBhdXRvIFtyZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QXSA9IGNvbXB1dGVS
ZXNwb25zZU9yaWdpbkFuZENPT1AocmVzcG9uc2UsICptX2ZyYW1lLT5kb2N1bWVudCgpLCBtX3Ry
aWdnZXJpbmdBY3Rpb24ucmVxdWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgp
KTsKLQotICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dz
aW5nLXRoZS13ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42LjIp
Ci0gICAgLy8gSWYgc2FuZGJveEZsYWdzIGlzIG5vdCBlbXB0eSBhbmQgcmVzcG9uc2VDT09QJ3Mg
dmFsdWUgaXMgbm90ICJ1bnNhZmUtbm9uZSIsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGFuIGFwcHJv
cHJpYXRlIG5ldHdvcmsgZXJyb3IgYW5kIGJyZWFrLgotICAgIGlmIChyZXNwb25zZUNPT1AudmFs
dWUgIT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiBmcmFtZUxv
YWRlcigpLT5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSkgewotICAgICAg
ICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1f
cmVxdWVzdCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9jdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kocmVzcG9uc2UudXJsKCksIHJlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1ApOwotICAg
IHJldHVybiB0cnVlOwotfQotCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9vcmlnaW4uaHRtbCNjb29wLWVuZm9yY2UKLUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5m
b3JjZW1lbnRSZXN1bHQgRG9jdW1lbnRMb2FkZXI6OmVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3VyaXR5T3JpZ2luJiByZXNw
b25zZU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCkK
LXsKLSAgICBBU1NFUlQobV9mcmFtZS0+aXNNYWluRnJhbWUoKSk7Ci0gICAgQVNTRVJUKG1fZnJh
bWUtPmRvY3VtZW50KCkpOwotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5n
cygpLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCgpKTsKLQotICAgIGlmICghbV9jdXJy
ZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gcmVxdWVzdGVyID0gbV90
cmlnZ2VyaW5nQWN0aW9uLnJlcXVlc3RlcigpOwotICAgICAgICBib29sIGN1cnJlbnRDb250ZXh0
SXNTb3VyY2UgPSByZXF1ZXN0ZXIgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAg
ICBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBDcm9zc09yaWdpbk9wZW5lclBvbGlj
eUVuZm9yY2VtZW50UmVzdWx0IHsKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgZmFs
c2UsCi0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwKLSAgICAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAotICAgICAgICAgICAg
Y3VycmVudENvbnRleHRJc1NvdXJjZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKFNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJGcmFtZSA9IG1f
ZnJhbWUtPmxvYWRlcigpLm9wZW5lcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gb3Bl
bmVyRG9jdW1lbnQgPSBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwgPSBvcGVuZXJEb2N1bWVudC0+
dXJsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDcm9zc09yaWdp
bk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdCA9
IHsKLSAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoLAotICAgICAgICBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHksCi0gICAg
ICAgIHJlc3BvbnNlVVJMLAotICAgICAgICByZXNwb25zZU9yaWdpbiwKLSAgICAgICAgcmVzcG9u
c2VDT09QLAotICAgICAgICB0cnVlCi0gICAgfTsKKyAgICBVUkwgb3BlbmVyVVJMOworICAgIGlm
IChhdXRvIG9wZW5lckZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCkub3BlbmVyKCkpCisgICAgICAg
IG9wZW5lclVSTCA9IG9wZW5lckZyYW1lLT5kb2N1bWVudCgpID8gb3BlbmVyRnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpIDogVVJMKCk7CiAKLSAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJl
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCku
aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgbV9jdXJyZW50Q29vcEVuZm9yY2Vt
ZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeS52YWx1ZSwgbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1AudmFsdWUsIHJlc3Bv
bnNlT3JpZ2luKSkgewotICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCA9IHRydWU7CisgICAgYXV0byBjdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdDo6
ZnJvbShtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3koKSwgbV90cmlnZ2VyaW5nQWN0aW9uLnJlcXVlc3RlcigpLCBvcGVuZXJVUkwpOwogCisgICAg
YXV0byBuZXdDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBXZWJDb3JlOjpkb0Nyb3NzT3JpZ2luT3Bl
bmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlLCBtX3RyaWdnZXJpbmdBY3Rpb24ucmVxdWVz
dGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpLCBmcmFtZUxvYWRlcigpLT5lZmZl
Y3RpdmVTYW5kYm94RmxhZ3MoKSwgZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuaXNEaXNw
bGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dCwgWyZdKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3Jp
Z2luKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2YgYnJvd3NpbmcgY29u
dGV4dCBncm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQgb2YgdHJlYXRpbmcg
dGhlIHdob2xlIHByb2Nlc3MgYXMgYSBncm91cC4KICAgICAgICAgaWYgKFBhZ2U6Om5vblV0aWxp
dHlQYWdlQ291bnQoKSA+IDEpIHsKLSAgICAgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVu
TmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCptX2ZyYW1lLCByZXNwb25zZUNPT1AsIENPT1BEaXNw
b3NpdGlvbjo6RW5mb3JjZSwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJl
c3VsdC0+dXJsLCByZXNwb25zZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0
LT5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1fcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOwotICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0
aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbjo6RW5mb3Jj
ZSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3BvbnNlVVJMLCBtX2N1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJlc3BvbnNlT3JpZ2lu
LCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmlzQ3VycmVudENvbnRleHROYXZpZ2F0
aW9uU291cmNlLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKKyAgICAgICAgICAgIHNlbmRW
aW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCptX2ZyYW1lLCByZXNw
b25zZUNPT1AsIGRpc3Bvc2l0aW9uLCByZXNwb25zZS51cmwoKSwgY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdC51cmwsIHJlc3BvbnNlT3JpZ2luLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0LmN1cnJlbnRPcmlnaW4sIG1fcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgbV9yZXF1ZXN0Lmh0
dHBVc2VyQWdlbnQoKSk7CisgICAgICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmln
YXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSgqbV9mcmFtZSwgY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSwgZGlzcG9zaXRpb24sIGN1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQudXJsLCByZXNwb25zZS51cmwoKSwgY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdC5jdXJyZW50T3JpZ2luLCByZXNwb25zZU9yaWdpbiwgY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdC5pc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlvblNvdXJjZSwgbV9yZXF1ZXN0
Lmh0dHBVc2VyQWdlbnQoKSk7CiAgICAgICAgIH0KKyAgICB9KTsKKyAgICBpZiAoIW5ld0Nvb3BF
bmZvcmNlbWVudFJlc3VsdCkgeworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1l
TG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQorICAgIG1fcmVzcG9uc2VDT09QID0gbmV3Q29vcEVuZm9yY2VtZW50UmVzdWx0
LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeTsKIAotICAgIGlmIChjaGVja0lmRW5mb3JjaW5nUmVw
b3J0T25seUNPT1BXb3VsZFJlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChmcmFtZUxv
YWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgp
LCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJlc3BvbnNl
Q09PUCwgcmVzcG9uc2VPcmlnaW4pKSB7Ci0gICAgICAgIG5ld0NPT1BFbmZvcmNlbWVudFJlc3Vs
dC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5ID0gdHJ1ZTsK
KyAgICBpZiAobmV3Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5zd2l0Y2hCcm93c2luZ0NvbnRleHRz
R3JvdXAoKTsKIAotICAgICAgICAvLyBGSVhNRTogQWRkIHRoZSBjb25jZXB0IG9mIGJyb3dzaW5n
IGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRyZWF0
aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFzIGEgZ3JvdXAuCi0gICAgICAgIGlmIChQYWdlOjpub25V
dGlsaXR5UGFnZUNvdW50KCkgPiAxKSB7Ci0gICAgICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0
V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSgqbV9mcmFtZSwgcmVzcG9uc2VDT09QLCBDT09Q
RGlzcG9zaXRpb246OlJlcG9ydGluZywgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdC0+dXJsLCByZXNwb25zZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1fcmVxdWVz
dC5odHRwVXNlckFnZW50KCkpOwotICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5O
YXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbjo6
UmVwb3J0aW5nLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPnVybCwgcmVzcG9uc2VV
UkwsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3VycmVudE9yaWdpbiwgcmVzcG9u
c2VPcmlnaW4sIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+aXNDdXJyZW50Q29udGV4
dE5hdmlnYXRpb25Tb3VyY2UsIG1fcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdDsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRlcjo6dHJ5TG9hZGluZ1JlcXVlc3RGcm9t
QXBwbGljYXRpb25DYWNoZSgpCkBAIC05NjgsNiArODcxLDggQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291
cmNlUmUKICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJz
KENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH0sIG1fcmVx
dWVzdC5odHRwUmVmZXJyZXIoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5n
RXJyb3JzOjpObyk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5
ID0gbnVsbHB0cjsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpICYmIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFi
bGVkKCkpCisgICAgICAgIG1fcmVzcG9uc2VDT09QID0gb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kocmVzcG9uc2UpOwogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZF
TlRJT04pCiAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBtaWNy
b3NvZnQuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWduLgpAQCAtMTAwMSwx
NSArOTA2LDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICAgICByZXNwb25zZVJlY2VpdmVk
KHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXN0YXRpYyBCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIHRvQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2hEZWNpc2lvbihjb25zdCBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5m
b3JjZW1lbnRSZXN1bHQ+JiBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0KQotewotICAgIGlm
ICghY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCB8fCAhY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdC0+bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCkKLSAgICAgICAgcmV0dXJu
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwOwotICAgIGlm
IChjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeS52
YWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpTYW1lT3JpZ2luUGx1c0NPRVAp
Ci0gICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJ
c29sYXRlZEdyb3VwOwotICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uOjpOZXdTaGFyZWRHcm91cDsKLX0KLQogdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZS5j
ZXJ0aWZpY2F0ZUluZm8oKSk7CkBAIC0xMTAzLDIwICs5OTksMTEgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Q29tcGxldGkKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghZG9Dcm9zc09yaWdpbk9wZW5lckhh
bmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChz
dGQ6OmV4Y2hhbmdlKG1faXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjaywg
ZmFsc2UpKSB7Ci0gICAgICAgIGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlv
bjo6VXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gbWFpblJlc291cmNlTG9hZGVyID0gdGhpcy0+bWFpblJlc291cmNlTG9hZGVyKCk7
CiAgICAgaWYgKG1haW5SZXNvdXJjZUxvYWRlcikKICAgICAgICAgbWFpblJlc291cmNlTG9hZGVy
LT5tYXJrSW5Bc3luY1Jlc3BvbnNlUG9saWN5Q2hlY2soKTsKICAgICBhdXRvIHJlcXVlc3RJZGVu
dGlmaWVyID0gUG9saWN5Q2hlY2tJZGVudGlmaWVyOjpjcmVhdGUoKTsKLSAgICBhdXRvIGJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPSB0b0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24obV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0KTsKLSAgICBmcmFtZUxv
YWRlcigpLT5jaGVja0NvbnRlbnRQb2xpY3kobV9yZXNwb25zZSwgcmVxdWVzdElkZW50aWZpZXIs
IGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgbWFpblJlc291cmNlTG9hZGVyID0gV1RGTW92ZShtYWluUmVzb3Vy
Y2VMb2FkZXIpLAorICAgIGZyYW1lTG9hZGVyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3Bv
bnNlLCByZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBtYWluUmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKG1haW5SZXNvdXJjZUxvYWRlciksCiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFz
ZSgpLCByZXF1ZXN0SWRlbnRpZmllcl0gKFBvbGljeUFjdGlvbiBwb2xpY3ksIFBvbGljeUNoZWNr
SWRlbnRpZmllciByZXNwb25zZUlkZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXNwb25zZUlkZW50aWZpZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikp
OwogICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwpAQCAtMTIxMCw2
ICsxMDk3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xp
Y3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICAgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5
Q2hhbmdlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTIxMDMsMTUgKzE5OTEsOSBAQCBib29sIERvY3VtZW50TG9hZGVyOjpt
YXliZUxvYWRFbXB0eSgpCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gc2hvdWxkTG9hZEVtcHR5ID8g
InRleHQvaHRtbCIgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5nZW5lcmF0ZWRNSU1FVHlwZUZv
clVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwo
KSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7CiAKLSAgICBpZiAoIWZyYW1lTG9hZGVyKCktPnN0
YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpIHsKKyAgICBp
ZiAoIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0
eURvY3VtZW50KCkpCiAgICAgICAgIGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9u
c2UobV9yZXNwb25zZSk7CiAKLSAgICAgICAgLy8gRklYTUU6IE5vbi1pbml0aWFsIGFib3V0OmJs
YW5rIGxvYWRzIG1heSBjYXVzZSBhIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgc3dpdGNoLiBIb3dl
dmVyLCBzdWNoIGxvYWQgaXMgc3luY2hyb25vdXMgYW5kIGRvZXNuJ3QKLSAgICAgICAgLy8gaW52
b2x2ZSBhIHJlc3BvbnNlIHBvbGljeSBkZWNpc2lvbi4gQXMgYSByZXN1bHQsIHdlIHNpbXVsYXRl
IGEgYnJvd3NpbmcgY29udGV4dCBncm91cCBzd2l0Y2ggd2l0aG91dCBhY3R1YWxseSBzd2FwcGlu
ZyBwcm9jZXNzLgotICAgICAgICBpZiAobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ICYm
IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+bmVlZHNCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaCkKLSAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPnN3aXRjaEJyb3dzaW5nQ29udGV4
dHNHcm91cCgpOwotICAgIH0KLQogICAgIGZpbmlzaGVkTG9hZGluZygpOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMjMzOSw3ICsyMjIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJN
YWluUmVzb3VyY2UoKQogI2VuZGlmCiAKICAgICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7Ci0g
ICAgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrID0gZmFsc2U7Cisg
ICAgbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkID0gZmFsc2U7
CiAKICAgICB1bnJlZ2lzdGVyVGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA4ZWUxNGEyNGQ1N2IuLjBiMzdh
NGEyYWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTQyNSwx
MCArNDI1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpIHsgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOyB9CiAK
ICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOyB9Ci0gICAgc3RkOjpvcHRp
b25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5l
clBvbGljeSkgOiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5PiYgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlQ09PUDsgfQogCi0gICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJS
ZXNwb25zZVBvbGljeUNoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0
ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Ci0gICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0
ZXJSZXNwb25zZVBvbGljeUNoZWNrKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQ
b2xpY3lDaGVjaykgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclJlc3BvbnNlUG9saWN5Q2hlY2sg
PSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9CisgICAgYm9vbCBp
c0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CisgICAg
dm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKGJvb2wg
aXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkgeyBtX2lzQ29udGlu
dWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0
ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VY
UE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpOwpAQCAtNDUxLDcgKzQ1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lz
dGVyVGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCgpOwogCiAgICAgYm9vbCBkb0Nyb3NzT3Jp
Z2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IGVuZm9yY2VSZXNwb25z
ZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3VyaXR5
T3JpZ2luJiByZXNwb25zZU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJl
c3BvbnNlQ09PUCk7CiAKICAgICB2b2lkIGxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0
JiYpOwogCkBAIC01NjYsNyArNTY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZ290Rmlyc3RC
eXRlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzTG9hZGluZ011bHRpcGFydENvbnRlbnQgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCB7IGZh
bHNlIH07CiAKICAgICAvLyBGSVhNRTogRG9jdW1lbnQ6Om1fcHJvY2Vzc2luZ0xvYWRFdmVudCBh
bmQgRG9jdW1lbnRMb2FkZXI6Om1fd2FzT25sb2FkRGlzcGF0Y2hlZCBhcmUgcm91Z2hseSB0aGUg
c2FtZQogICAgIC8vIGFuZCBzaG91bGQgYmUgbWVyZ2VkLgpAQCAtNTkwLDcgKzU4OSw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlc291cmNlUmVzcG9uc2U+IG1fcmVzcG9uc2VzOwogICAgIGJv
b2wgbV9zdG9wUmVjb3JkaW5nUmVzcG9uc2VzIHsgZmFsc2UgfTsKIAotICAgIHN0ZDo6b3B0aW9u
YWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gbV9jdXJyZW50Q29v
cEVuZm9yY2VtZW50UmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3k+IG1fcmVzcG9uc2VDT09QOwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+LCBSZWZQdHI8U3Vic3RpdHV0ZVJlc291cmNlPj4gU3Vic3RpdHV0ZVJl
c291cmNlTWFwOwogICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcCBtX3BlbmRpbmdTdWJzdGl0dXRl
UmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5YmVk
ZWM2MzZiMmIuLmY3ZDRlN2FmYjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoU2hvdygpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBv
bGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYm
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCAwMjk0ZGM0MzQyMDQuLjIyNjk5YzljNTE4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Niw3ICs5Niw3IEBAIHBy
aXZhdGU6CiAgICAgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgTmV3RnJhbWVPcGVuZXJQb2xpY3kpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93
KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNr
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNp
c2lvbiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIs
IEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2so
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM3ZTUxMTM3
OTI0NS4uNGI5NTE1ZjM3MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJv
b2wgZGVmZXJzKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9s
aWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlv
biYmIGZ1bmN0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9saWN5KGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBp
ZiAoIWFjdGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgLy8gTG9hZCB3YXMgY2FuY2Vs
bGVkCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb250ZW50UG9s
aWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQb2xpY3lDaGUKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhlIHBvbGljeSBjaGVjayBpZGVudGlmaWVyLgotICAg
IGNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UocmVzcG9uc2UsIGFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSwgaWRlbnRpZmllciwgYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+ZG93bmxvYWRBdHRyaWJ1dGUoKSwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbiwgV1RGTW92ZShmdW5jdGlvbikpOworICAgIGNsaWVudCgpLmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UocmVzcG9uc2UsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVl
c3QoKSwgaWRlbnRpZmllciwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+ZG93bmxvYWRBdHRyaWJ1
dGUoKSwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VM
b2NhdGlvbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50
KiB0cmlnZ2VyaW5nRXZlbnQsIGNvbnN0IFJlZmVycmVyUG9saWN5JiByZWZlcnJlclBvbGljeSwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0
IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYg
c3lzdGVtUHJldmlld0luZm8sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+
JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCkBAIC0xNDc2LDcgKzE0NzYsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogICAgIFJlZjxEb2N1
bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Quc3Vic3RpdHV0ZURhdGEoKSk7CiAgICAgbG9h
ZGVyLT5zZXRBbGxvd3NXZWJBcmNoaXZlRm9yTWFpbkZyYW1lKHJlcXVlc3QuaXNSZXF1ZXN0RnJv
bUNsaWVudE9yVXNlcklucHV0KCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzRGF0YVVSTHNGb3JN
YWluRnJhbWUocmVxdWVzdC5pc1JlcXVlc3RGcm9tQ2xpZW50T3JVc2VySW5wdXQoKSk7Ci0gICAg
bG9hZGVyLT5zZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKHJlcXVl
c3Quc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24pOworICAgIGxvYWRlci0+c2V0
SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZChyZXF1ZXN0LnNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCgpID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKTsKICAgICBhZGRTYW1lU2l0ZUluZm9Ub1Jl
cXVlc3RJZk5lZWRlZChsb2FkZXItPnJlcXVlc3QoKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIHJlcXVl
c3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGU3NDc1YTQyNDdlOS4u
YWUzZjZkNjA2YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMjIwLDcg
KzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAot
ICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIENv
bnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOworICAgIHZvaWQgY2hlY2tDb250ZW50UG9s
aWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIENvbnRl
bnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW4o
KTsKIApAQCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIHNh
bmRib3ggZmxhZ3Mgd2lsbCBiZSBmb3JjZWQsIHJlZ2FyZGxlc3Mgb2YgY2hhbmdlcyB0bwogICAg
IC8vIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiBhbnkgcGFyZW50IGZyYW1lcy4KICAgICB2b2lk
IGZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykgeyBtX2ZvcmNlZFNhbmRib3hG
bGFncyB8PSBmbGFnczsgfQotICAgIFNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5kYm94RmxhZ3Mo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2FuZGJv
eEZsYWdzKCkgY29uc3Q7CiAKICAgICBib29sIGNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQ
KGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0OwogCkBA
IC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9hZHNTeW5jaHJvbm91c2x5KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2Fkc1N5bmNocm9ub3VzbHk7IH0KIAogICAgIEZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSB7IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQor
ICAgIGNvbnN0IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQogCiAgICAgLy8gRklYTUU6IHNob3VsZCByZXR1cm4g
UmVmUHRyLgogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9u
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0YTcw
NmM4N2Y1OGMuLjBmNjRkMTM4MDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9w
ZW5lclBvbGljeSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1T
dGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9s
aWN5Q2hlY2soKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5j
cHAKaW5kZXggNWEwZmM0MWU5YzMyLi5mYzhjNWM5NzEyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKQEAgLTM3LDIyICszNyw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIEdsb2JhbEZyYW1lSWRlbnRpZmllciBjcmVhdGVHbG9iYWxG
cmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIGlmIChkb2N1
bWVudC5mcmFtZSgpKQotICAgICAgICByZXR1cm4geyBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgp
LT5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSkgfTsKLSAg
ICByZXR1cm4gR2xvYmFsRnJhbWVJZGVudGlmaWVyKCk7Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246
OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1f
dXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkgfSB9Ci0gICAgLCBtX29yaWdpbiB7ICZkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpIH0KLSAgICAsIG1fdG9wT3JpZ2luIHsgJmRvY3VtZW50LnRvcE9y
aWdpbigpIH0KLSAgICAsIG1fY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgeyBkb2N1bWVudC5jcm9z
c09yaWdpbk9wZW5lclBvbGljeSgpIH0KLSAgICAsIG1fZ2xvYmFsRnJhbWVJZGVudGlmaWVyKGNy
ZWF0ZUdsb2JhbEZyYW1lSWRlbnRpZmllcihkb2N1bWVudCkpCi17Ci19Ci0KIE5hdmlnYXRpb25B
Y3Rpb246OlVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YShj
b25zdCBVSUV2ZW50V2l0aEtleVN0YXRlJiB1aUV2ZW50KQogICAgIDogaXNUcnVzdGVkIHsgdWlF
dmVudC5pc1RydXN0ZWQoKSB9CiAgICAgLCBzaGlmdEtleSB7IHVpRXZlbnQuc2hpZnRLZXkoKSB9
CkBAIC0xMDMsNyArODcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9u
OjpNb3VzZUV2ZW50RGF0YT4gbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdQogfQogCiBOYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBJbml0aWF0ZWRCeU1haW5GcmFtZSBpbml0
aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGUgdHlwZSwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBFdmVudCogZXZlbnQsIGNv
bnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQotICAgIDogbV9yZXF1ZXN0ZXIgeyBy
ZXF1ZXN0ZXIgfQorICAgIDogbV9yZXF1ZXN0ZXIgeyBOYXZpZ2F0aW9uUmVxdWVzdGVyOjpmcm9t
KHJlcXVlc3RlcikgfQogICAgICwgbV9yZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJjZVJlcXVlc3Qg
fQogICAgICwgbV90eXBlIHsgdHlwZSB9CiAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgeyBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH0KQEAgLTEyOSw3ICsxMTMsNyBA
QCBzdGF0aWMgTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUoRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1YgogfQogCiBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBJbml0aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwg
RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50
KiBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKLSAgICA6IG1f
cmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KKyAgICA6IG1fcmVxdWVzdGVyIHsgTmF2aWdhdGlvblJl
cXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIpIH0KICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVz
b3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5
cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEhZXZlbnQpIH0KICAgICAsIG1fc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSB7IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggMWU4ZmRmYTAzMzZjLi4xNjNjYzdl
ODNjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJHbG9i
YWxGcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUg
Ik5hdmlnYXRpb25SZXF1ZXN0ZXIuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCkBAIC02NCwyMyArNjUsNyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihO
YXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZp
Z2F0aW9uQWN0aW9uJiYpOwogCi0gICAgY2xhc3MgUmVxdWVzdGVyIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwotCi0gICAgICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICAgICAgU2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCB7IHJldHVybiAqbV90b3BPcmlnaW47IH0KLSAg
ICAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5OyB9Ci0gICAgICAgIGNvbnN0
IEdsb2JhbEZyYW1lSWRlbnRpZmllciYgZ2xvYmFsRnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9nbG9iYWxGcmFtZUlkZW50aWZpZXI7IH0KLSAgICBwcml2YXRlOgotICAgICAgICBV
UkwgbV91cmw7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47Ci0gICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47Ci0gICAgICAgIENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5IG1fY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7Ci0gICAgICAgIEdsb2Jh
bEZyYW1lSWRlbnRpZmllciBtX2dsb2JhbEZyYW1lSWRlbnRpZmllcjsKLSAgICB9OwotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVyPiYgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0ZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0
ZXI+JiByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQogCiAgICAgc3Ry
dWN0IFVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsKICAgICAgICAgVUlFdmVudFdpdGhLZXlTdGF0
ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYpOwpAQCAtMTA1LDcgKzkwLDcgQEAgcHVi
bGljOgogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBjb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7CiAKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0ZXItPnVy
bCgpLmlzRW1wdHkoKSB8fCBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5pc0VtcHR5KCk7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0
ZXItPnVybC5pc0VtcHR5KCkgfHwgbV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuaXNFbXB0eSgpOyB9
CiAKICAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCk7
IH0KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CkBAIC0xNDcsNyArMTMyLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICAvLyBEbyBub3QgYWRkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb3Jp
Z2luYXRpbmcgZG9jdW1lbnQgb3IgYSBzdWJvYmplY3QgdGhhdCBob2xkcyB0aGUKICAgICAvLyBv
cmlnaW5hdGluZyBkb2N1bWVudC4gU2VlIGNvbW1lbnQgYWJvdmUgdGhlIGNsYXNzIGZvciBtb3Jl
IGRldGFpbHMuCi0gICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOworICAg
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4gbV9yZXF1ZXN0ZXI7CiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIE5hdmlnYXRpb25UeXBlIG1fdHlw
ZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
UmVxdWVzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk3NmU2ZTM5YTc5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVx
dWVzdGVyLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIuaCIKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEdsb2JhbEZyYW1lSWRl
bnRpZmllcj4gY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBhdXRvIHBhZ2VJRCA9IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigp
LnBhZ2VJRCgpOworICAgIGF1dG8gZnJhbWVJRCA9IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigp
LmZyYW1lSUQoKTsKKyAgICBpZiAoIXBhZ2VJRCB8fCAhZnJhbWVJRCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyAqcGFn
ZUlELCAqZnJhbWVJRCB9OworfQorCitOYXZpZ2F0aW9uUmVxdWVzdGVyIE5hdmlnYXRpb25SZXF1
ZXN0ZXI6OmZyb20oRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiB7CisgICAgICAg
IGRvY3VtZW50LnVybCgpLAorICAgICAgICBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLAorICAg
ICAgICBkb2N1bWVudC50b3BPcmlnaW4oKSwKKyAgICAgICAgZG9jdW1lbnQuY3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3koKSwKKyAgICAgICAgY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGRvY3Vt
ZW50KQorICAgIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMjNkYTUzMTdiNGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuaApAQCAtMCwwICsxLDg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDcm9zc09yaWdpbk9wZW5lclBvbGlj
eS5oIgorI2luY2x1ZGUgIkdsb2JhbEZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CisK
K3N0cnVjdCBOYXZpZ2F0aW9uUmVxdWVzdGVyIHsKKyAgICBzdGF0aWMgTmF2aWdhdGlvblJlcXVl
c3RlciBmcm9tKERvY3VtZW50Jik7CisKKyAgICBVUkwgdXJsOworICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW47CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW47
CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7Cisg
ICAgc3RkOjpvcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IGdsb2JhbEZyYW1lSWRlbnRp
ZmllcjsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW9uUmVxdWVzdGVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB1cmwgPDwgc2VjdXJpdHlPcmlnaW4u
Z2V0KCkgPDwgdG9wT3JpZ2luLmdldCgpIDw8IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IDw8IGds
b2JhbEZyYW1lSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4gTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxVUkw+IHVybDsKKyAgICBk
ZWNvZGVyID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKGRl
Y29kZXIpOworICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBhdXRvIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoZGVj
b2Rlcik7CisgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBjcm9zc09yaWdp
bk9wZW5lclBvbGljeTsKKyAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5Owor
ICAgIGlmICghY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVu
dGlmaWVyPj4gZ2xvYmFsRnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gZ2xvYmFsRnJh
bWVJZGVudGlmaWVyOworICAgIGlmICghZ2xvYmFsRnJhbWVJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIE5hdmlnYXRpb25SZXF1ZXN0ZXIgeyBX
VEZNb3ZlKCp1cmwpLCBzZWN1cml0eU9yaWdpbi5yZWxlYXNlTm9uTnVsbCgpLCB0b3BPcmlnaW4u
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSgqY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpLCBXVEZN
b3ZlKCpnbG9iYWxGcmFtZUlkZW50aWZpZXIpIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHND
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUu
Y3BwCmluZGV4IGYxMWM2NTY2NWY2My4uNjVjZjhhMzI1OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5jcHAKQEAgLTY3LDExICs2Nywx
NSBAQCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6flJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKCkg
PSBkZWZhdWx0OwogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3JlcG9ydGluZy8jcHJvY2Vzcy1o
ZWFkZXIKIHZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBhdXRvIHJlcG9y
dFRvSGVhZGVyVmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OlJlcG9ydFRvKTsKKyAgICByZXR1cm4gYWRkRW5kUG9pbnRzRnJvbVJlcG9ydFRvSGVhZGVyKHJl
c3BvbnNlLnVybCgpLCByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJl
cG9ydFRvKSk7Cit9CisKK3ZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50
c0Zyb21SZXBvcnRUb0hlYWRlcihjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBjb25zdCBTdHJpbmcm
IHJlcG9ydFRvSGVhZGVyVmFsdWUpCit7CiAgICAgaWYgKHJlcG9ydFRvSGVhZGVyVmFsdWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSk7CisgICAgYXV0byBzZWN1cml0eU9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2VVUkwpOwogICAgIGlmIChzZWN1
cml0eU9yaWdpbi0+aXNVbmlxdWUoKSB8fCAhc2VjdXJpdHlPcmlnaW4tPmlzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTk0LDEwICs5OCwxMCBAQCB2b2lk
IFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlOjphZGRFbmRQb2ludHNGcm9tUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcgogICAgIHdoaWxlIChkaWN0aW9uYXJ5U3RhcnQgPCByZXBvcnRU
b0hlYWRlclZhbHVlLmxlbmd0aCgpKSB7CiAgICAgICAgIGF1dG8gaW5kZXhPZk5leHRUb3BMZXZl
bENvbW1hID0gZmluZE5leHRUb3BMZXZlbENvbW1hKGRpY3Rpb25hcnlTdGFydCk7CiAgICAgICAg
IGlmIChpbmRleE9mTmV4dFRvcExldmVsQ29tbWEgPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAg
IGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcmVzcG9u
c2UudXJsKCksIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5nKGRpY3Rpb25hcnlTdGFydCkp
OworICAgICAgICAgICAgYWRkRW5kcG9pbnRGcm9tRGljdGlvbmFyeShzZWN1cml0eU9yaWdpbi0+
ZGF0YSgpLCByZXNwb25zZVVSTCwgcmVwb3J0VG9IZWFkZXJWYWx1ZS5zdWJzdHJpbmcoZGljdGlv
bmFyeVN0YXJ0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBhZGRF
bmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIHJlc3BvbnNlLnVy
bCgpLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmluZyhkaWN0aW9uYXJ5U3RhcnQsIGluZGV4
T2ZOZXh0VG9wTGV2ZWxDb21tYSAtIGRpY3Rpb25hcnlTdGFydCkpOworICAgICAgICBhZGRFbmRw
b2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIHJlc3BvbnNlVVJMLCBy
ZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmluZyhkaWN0aW9uYXJ5U3RhcnQsIGluZGV4T2ZOZXh0
VG9wTGV2ZWxDb21tYSAtIGRpY3Rpb25hcnlTdGFydCkpOwogICAgICAgICBkaWN0aW9uYXJ5U3Rh
cnQgPSBpbmRleE9mTmV4dFRvcExldmVsQ29tbWEgKyAxOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmgKaW5kZXggNjMwMGYyZTFj
ZjM2Li4zOWM2NThlMDU2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBv
cnRpbmdFbmRwb2ludHNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRp
bmdFbmRwb2ludHNDYWNoZS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBjcmVhdGUoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUoKTsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkRW5kUG9pbnRzRnJvbVJlcG9ydFRvSGVhZGVyKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkRW5kUG9pbnRzRnJvbVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBVUkwgZW5kcG9pbnRVUkwoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBncm91cCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaAppbmRleCBhYjEz
NTNiY2MwODIuLjVkZTc5MmM0YWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IDogdWludDhfdCB7IE5vLCBZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwgWWVzQWZ0
ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uIH07CitlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCA6IHVpbnQ4X3QgeyBObywgWWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24sIFllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKQEAgLTQwLDcgKzQwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ+IHsKICAgICAgICAgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLAogICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6Ok5vLAogICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9uLAotICAgICAgICBX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbgorICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Olllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZAogICAgID47CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IGEzMDFiNzg0NGNjOC4uZGY1OWRkMTJlMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjg1
LDcgKzI4NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeShSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmKTsgLy8gT25s
eSB1c2VkIGJ5IFdlYktpdExlZ2FjeS4KIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdlJik+Jik7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIG5vblV0aWxpdHlQYWdlQ291bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdW5zaWduZWQgbm9uVXRpbGl0eVBhZ2VDb3VudCgpOwogCiAgICAgdW5zaWduZWQgc3Vi
ZnJhbWVDb3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5k
ZXggMDc1Y2VmMmIyNTZjLi5hMGI1ZTdkNWIyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyBn
ZW5lcmF0ZU9yaWdpbkhlYWRlcihSZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZEluaGVyaXRTZWN1cml0eU9y
aWdpbkZyb21Pd25lcihjb25zdCBVUkwmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3QgVVJMJik7CiAKICAg
ICBzdGF0aWMgYm9vbCBpc0Jhc2VVUkxTY2hlbWVBbGxvd2VkKGNvbnN0IFVSTCYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDk3
YmRkNGY4MjM3My4uOTc5ODAxMDc3ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjg0MywyOSArMjg0Myw2IEBAIFJUQ0RhdGFD
aGFubmVsUmVtb3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQ
cm94eSgpCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZUxvYWRGb3JX
ZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vz
c0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBpZiAoIXJlc291cmNlTG9hZElkZW50aWZpZXIpIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQpOwotICAgIH0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oc291cmNlUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVjdGlvbikKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRv
IHNlc3Npb24gPSBjb25uZWN0aW9uLT5uZXR3b3JrU2Vzc2lvbigpOwotICAgIGlmICghc2Vzc2lv
bikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAg
ICBhdXRvIGxvYWRlciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoKnJl
c291cmNlTG9hZElkZW50aWZpZXIpOwotICAgIGlmICghbG9hZGVyKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIGF1dG8gaWRlbnRpZmllciA9
IGxvYWRlci0+aWRlbnRpZmllcigpOwotICAgIHNlc3Npb24tPmFkZExvYWRlckF3YWl0aW5nV2Vi
UHJvY2Vzc1RyYW5zZmVyKGxvYWRlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihpZGVudGlmaWVyKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2ViUGFn
ZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAgICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlNzU4NWI4
NmU2MGEuLjNlNGJhZTMwMDhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtNDI1LDcgKzQyNSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBk
aWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAg
IHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJik7Ci0gICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IHJlc291cmNlTG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcj4pPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4m
Jik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5YWE5ZWFhOWYxMzEuLmU4OWY4OTdj
OTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTYsOCArMTk2LDYgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICNlbmRpZgog
Ci0gICAgUHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBuZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcikgQXN5bmMKLQogICAgIEFkZFdlYlBhZ2VOZXR3b3JrUGFy
YW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMpCiAgICAgUmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBDb3Vu
dE5vbkRlZmF1bHRTZXNzaW9uU2V0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzaXpl
X3QgY291bnQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGY0MWY1NTkw
YmQ2Zi4uNzFiZTg5MTgxMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE0
LDcgKzExNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogCiAgICAgZW5jb2RlciA8PCBkb2N1bWVudFVSTDsK
LSAgICAKKworICAgIGVuY29kZXIgPDwgaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQ7
CisgICAgZW5jb2RlciA8PCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudDsKKyAgICBl
bmNvZGVyIDw8IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKyAgICBlbmNvZGVyIDw8IG9wZW5lclVS
TDsKKyAgICBlbmNvZGVyIDw8IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OworCisgICAg
ZW5jb2RlciA8PCBuYXZpZ2F0aW9uSUQ7CisgICAgZW5jb2RlciA8PCBuYXZpZ2F0aW9uUmVxdWVz
dGVyOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVuY29kZXIgPDwgc2Vydmlj
ZVdvcmtlcnNNb2RlOwogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI7CkBAIC0yOTIsNiArMzAxLDQ5IEBAIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRv
Y3VtZW50VVJMOwogCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0Nyb3NzT3JpZ2luT3BlbmVy
UG9saWN5RW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lF
bmFibGVkOworICAgIGlmICghaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LmlzQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3lFbmFibGVkID0gKmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkOworCisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudDsKKyAg
ICBkZWNvZGVyID4+IGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworICAgIGlmICgh
aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmVzdWx0LmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gKmlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworCisgICAgc3RkOjpvcHRpb25hbDxTYW5k
Ym94RmxhZ3M+IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKyAgICBkZWNvZGVyID4+IGVmZmVjdGl2
ZVNhbmRib3hGbGFnczsKKyAgICBpZiAoIWVmZmVjdGl2ZVNhbmRib3hGbGFncykKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQuZWZmZWN0aXZlU2FuZGJveEZsYWdzID0g
KmVmZmVjdGl2ZVNhbmRib3hGbGFnczsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBvcGVuZXJV
Ukw7CisgICAgZGVjb2RlciA+PiBvcGVuZXJVUkw7CisgICAgaWYgKCFvcGVuZXJVUkwpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0Lm9wZW5lclVSTCA9ICpvcGVuZXJV
Ukw7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBzb3VyY2VD
cm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZUNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5OworICAgIGlmICghc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LnNvdXJjZUNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5ID0gV1RGTW92ZSgqc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpOwor
CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmF2aWdhdGlvbklEOworICAgIGRlY29kZXIg
Pj4gbmF2aWdhdGlvbklEOworICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJlc3VsdC5uYXZpZ2F0aW9uSUQgPSAqbmF2aWdhdGlvbklEOwor
CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+PiBu
YXZpZ2F0aW9uUmVxdWVzdGVyOworICAgIGRlY29kZXIgPj4gbmF2aWdhdGlvblJlcXVlc3RlcjsK
KyAgICBpZiAoIW5hdmlnYXRpb25SZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXN1bHQubmF2aWdhdGlvblJlcXVlc3RlciA9IFdURk1vdmUoKm5hdmlnYXRp
b25SZXF1ZXN0ZXIpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgZGVjb2Rl
ciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggNGNi
ODVjYmEyMDZiLi4zZjgwNGQxNzUxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXZpZ2F0aW9u
UmVxdWVzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCkBAIC02Nyw2ICs2OCwxNCBAQCBwdWJsaWM6
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1l
SUQ7CiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVl
IH07CiAgICAgVVJMIGRvY3VtZW50VVJMOworCisgICAgYm9vbCBpc0Nyb3NzT3JpZ2luT3BlbmVy
UG9saWN5RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1w
dHlEb2N1bWVudCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6U2FuZGJveEZsYWdzIGVmZmVjdGl2
ZVNhbmRib3hGbGFncyB7IFdlYkNvcmU6OlNhbmRib3hOb25lIH07CisgICAgVVJMIG9wZW5lclVS
TDsKKyAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSBzb3VyY2VDcm9zc09yaWdp
bk9wZW5lclBvbGljeTsKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpOYXZpZ2F0aW9uUmVxdWVzdGVyPiBuYXZpZ2F0aW9uUmVxdWVz
dGVyOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2
aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtl
cnNNb2RlOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzZhZjIzYTg4NzU2Li5jZTJmZTZlODQ5
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTY1Miw2ICs2
NTMsNDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdFdvcmtl
ckxvYWRGb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
Ky8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13
ZWIuaHRtbCNwcm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42KQorYm9vbCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgLy8gQ09PUCBvbmx5IGFw
cGxpZXMgdG8gdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzLgorICAgIGlmICghaXNNYWluRnJh
bWVMb2FkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX3BhcmFtZXRlcnMu
aXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gY29udGVudFNlY3Vy
aXR5UG9saWN5OworICAgIGlmICghcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpDb250ZW50U2VjdXJpdHlQb2xpY3kpLmlzTnVsbCgpKSB7CisgICAgICAgIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBy
ZXNwb25zZS51cmwoKSB9LCBudWxscHRyKTsKKyAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5
LT5kaWRSZWNlaXZlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMg
eyByZXNwb25zZSB9LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CisgICAgfQorCisgICAgaWYg
KCFtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQpIHsKKyAgICAgICAgYXV0byBzb3VyY2VP
cmlnaW4gPSBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luID8gUmVmIHsgKm1fcGFyYW1ldGVycy5z
b3VyY2VPcmlnaW4gfSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKTsKKyAgICAgICAg
bV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lF
bmZvcmNlbWVudFJlc3VsdDo6ZnJvbShtX3BhcmFtZXRlcnMuZG9jdW1lbnRVUkwsIFdURk1vdmUo
c291cmNlT3JpZ2luKSwgbV9wYXJhbWV0ZXJzLnNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LCBtX3BhcmFtZXRlcnMubmF2aWdhdGlvblJlcXVlc3RlciwgbV9wYXJhbWV0ZXJzLm9wZW5lclVS
TCk7CisgICAgfQorCisgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gV2ViQ29y
ZTo6ZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSwgbV9wYXJh
bWV0ZXJzLm5hdmlnYXRpb25SZXF1ZXN0ZXIsIGNvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKSwg
bV9wYXJhbWV0ZXJzLmVmZmVjdGl2ZVNhbmRib3hGbGFncywgbV9wYXJhbWV0ZXJzLmlzRGlzcGxh
eWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCAqbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0
LCBbJl0oQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5l
clBvbGljeSYgcmVzcG9uc2VDT09QLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmln
aW4pIHsKKyAgICAgICAgYXV0byYgcmVzcG9uc2VSZXBvcnRpbmdFbmRwb2ludCA9IGRpc3Bvc2l0
aW9uID09IENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSA/IHJlc3BvbnNlQ09PUC5yZXBvcnRpbmdF
bmRwb2ludCA6IHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQ7CisgICAg
ICAgIGlmICghcmVzcG9uc2VSZXBvcnRpbmdFbmRwb2ludC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRp
bmdUb0NPT1BSZXNwb25zZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCByZXNwb25zZUNPT1As
IGRpc3Bvc2l0aW9uLCByZXNwb25zZS51cmwoKSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0LT51cmwsIHJlc3BvbnNlT3JpZ2luLmRhdGEoKSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0LT5jdXJyZW50T3JpZ2luLT5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZl
cnJlcigpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwVXNlckFnZW50KCksIHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVwb3J0VG8pIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOworICAgICAgICBhdXRvJiBzb3VyY2VSZXBvcnRpbmdFbmRwb2ludCA9IGRpc3Bvc2l0
aW9uID09IENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSA/IG1fY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kucmVwb3J0aW5nRW5kcG9pbnQgOiBtX2N1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LnJlcG9y
dE9ubHlSZXBvcnRpbmdFbmRwb2ludDsKKyAgICAgICAgaWYgKCFzb3VyY2VSZXBvcnRpbmdFbmRw
b2ludC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5k
VmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LCBkaXNwb3NpdGlvbiwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0LT51cmwsIHJlc3BvbnNlLnVybCgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQtPmN1cnJlbnRPcmlnaW4tPmRhdGEoKSwgcmVzcG9uc2VPcmlnaW4uZGF0YSgpLCBtX2N1cnJl
bnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmlzQ3VycmVudENvbnRleHROYXZpZ2F0aW9uU291cmNl
LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwVXNlckFnZW50KCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCk7CisgICAgfSk7CisgICAgcmV0dXJuICEhbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0OworfQorCitzdGF0aWMgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiB0b0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxDcm9z
c09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiYgY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdCkKK3sKKyAgICBpZiAoIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgfHwg
IWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2gpCisgICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
OjpTdGF5SW5Hcm91cDsKKyAgICBpZiAoY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kudmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1
ZTo6U2FtZU9yaWdpblBsdXNDT0VQKQorICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cDsKKyAgICByZXR1cm4gQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3U2hhcmVkR3JvdXA7Cit9CisKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTog
KGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBl
Y3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlv
bj0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJl
Y2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbiwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CkBAIC03NDAsNiArNzgyLDE1IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3NzT3JpZ2lu
T3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKG1fcmVzcG9uc2UpKSB7CisgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPR19FUlJPUigiZGlkUmVjZWl2ZVJlc3BvbnNlOiBJbnRlcnJ1cHRpbmcgbG9hZCBk
dWUgdG8gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdXJsID0gbV9yZXNw
b25zZS51cmwoKV0geworICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbmV0d29ya0xv
YWQpCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbExvYWRpbmcoUmVzb3Vy
Y2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIk5hdmlnYXRpb24g
d2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgIH0KKwogICAgIGF1
dG8gcmVzcG9uc2UgPSBzYW5pdGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShSZXNvdXJjZVJlc3BvbnNl
IHsgbV9yZXNwb25zZSB9LCBSZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlOjpDcm9z
c09yaWdpblNhZmUpOwogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpIHsKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IFVzaW5nIHJlc3BvbnNlIGZvciBzeW5j
aHJvbm91cyBsb2FkIik7CkBAIC03NjEsNyArODEyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNw
b24KICAgICAvLyBhIG1haW4gcmVzb3VyY2UgYmVjYXVzZSB0aGUgZW1iZWRkaW5nIGNsaWVudCBt
dXN0IGRlY2lkZSB3aGV0aGVyIHRvIGFsbG93IHRoZSBsb2FkLgogICAgIGJvb2wgd2lsbFdhaXRG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IGlzTWFpblJlc291cmNlKCk7CiAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IFNlbmRpbmcgV2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJUEMgKHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2U9JWQpIiwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25z
ZSB7IHJlc3BvbnNlLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIH0pOwor
ICAgIHNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0
R3JvdXAocmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOwog
CiAgICAgaWYgKG1fcGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQogICAgICAg
ICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5m
bywgcmVzcG9uc2UpLCAwKTsKQEAgLTc4MCw2ICs4MzEsMjIgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRS
ZXNwb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFs
bHlJbk5ld0Jyb3dzaW5nQ29udGV4dEdyb3VwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KQoreworICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9IHRvQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbihtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRS
ZXN1bHQpOworICAgIGlmIChicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKSB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBy
ZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGxvYWRlciA9IG1fY29ubmVjdGlvbi0+dGFr
ZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb3JlSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQobG9h
ZGVyID09IHRoaXMpOworICAgIGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7CisgICAgbV9jb25uZWN0aW9uLT5u
ZXR3b3JrU2Vzc2lvbigpLT5hZGRMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlcihsb2Fk
ZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgUmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21h
aW4geyByZXNwb25zZS51cmwoKSB9OworICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpUcmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKG1f
cGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgbV9wYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgYnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgcmVzcG9uc2VEb21haW4sIGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDApOworfQorCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251
bUJ5dGVzUmVjZWl2ZWQpCkBAIC05NDMsNiArMTAxMCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3NzT3JpZ2luT3Bl
bmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpKSB7CisgICAgICAgIGRpZEZh
aWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBy
ZWRpcmVjdFJlcXVlc3QudXJsKCksICJSZWRpcmVjdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hl
Y2tlcikgewogICAgICAgICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmVuYWJsZUNvbnRl
bnRFeHRlbnNpb25zQ2hlY2soKTsKQEAgLTEyNDksNiArMTMyMSwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OgogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3NzT3JpZ2luT3Bl
bmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlKSkgeworICAgICAgICBMT0FERVJfUkVMRUFT
RV9MT0dfRVJST1IoImRpZFJldHJpZXZlQ2FjaGVFbnRyeTogSW50ZXJydXB0aW5nIGxvYWQgZHVl
IHRvIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Iik7CisgICAgICAgIGRpZEZhaWxMb2FkaW5n
KFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51
cmwoKSwgIk5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xp
Y3kiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgfQorCiAg
ICAgcmVzcG9uc2UgPSBzYW5pdGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShXVEZNb3ZlKHJlc3BvbnNl
KSwgUmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsK
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0
YS0+cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKQEAgLTEyNTksNyArMTMzNiw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJfUkVMRUFTRV9M
T0coImRpZFJldHJpZXZlQ2FjaGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIElQQyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2U9JWQpIiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNw
b25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgc2Vu
ZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChy
ZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogCiAgICAg
aWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIG1f
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYyMmI0Y2MzMDc0Yy4u
MWRkOTllMTllNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNl
Y3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25SZXF1ZXN0ZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50Lmg+CkBAIC0xNDYsNiArMTQ3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKik7CiAjZW5k
aWYKIAorICAgIGJvb2wgZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBzZW5kRGlkUmVjZWl2ZVJl
c3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4dEdyb3VwKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKTsKKwogICAgIGJvb2wgaXNBcHBJbml0aWF0ZWQoKTsKIAogcHJpdmF0ZToKQEAgLTI1
Nyw2ICsyNjEsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IG1fcmVzb3VyY2VMb2FkSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGly
ZWN0UmVzcG9uc2U7CiAgICAgVVJMIG1fZmlyc3RSZXNwb25zZVVSTDsgLy8gRmlyc3QgVVJMIGlu
IHJlc3BvbnNlJ3MgVVJMIGxpc3QgKGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25j
ZXB0LXJlc3BvbnNlLXVybC1saXN0KS4KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGQ0NTU5MzUyNTNmNy4uNTdiOGMxNmI1ODU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0xNjAsOCAr
MTYwLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBpZiAoIW1fbG9hZGVyLmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UocmVz
cG9uc2UpKSB7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBi
eSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHJlc3BvbnNlLnNl
dFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwotICAgIHNl
bmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25z
ZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsK
KyAgICBtX2xvYWRlci5zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dz
aW5nQ29udGV4dEdyb3VwKHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSk7CiAgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KQogICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzMzRiODFjNmQ1ZGMu
LjNmZGVkYThiZmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0zMjcsNiArMzI3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6TUROU1JlZ2lzdGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQREZQbHVnaW5JZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyJywKQEAgLTY5Myw2ICs2OTQs
NyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OkF1dG9w
bGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbic6IFsnPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Q09FUERpc3Bvc2l0aW9u
JzogWyc8V2ViQ29yZS9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmg+J10sCisgICAgICAgICdX
ZWJDb3JlOjpDT09QRGlzcG9zaXRpb24nOiBbJzxXZWJDb3JlL0Nyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCc6
IFsnPFdlYkNvcmUvQXBwSGlnaGxpZ2h0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpET01QYXN0
ZUFjY2Vzc1Jlc3BvbnNlJzogWyc8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJzogWyc8V2ViQ29yZS9Db2xvclNwYWNl
Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNjVhNjE5ZDdhOGEuLmQyYzQ5MDhjNTdjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC00MzYsNiArNDM2LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkTmVnb3RpYXRlTW9kZXJuVExTKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBj
CiAgICAgICAgIHBhZ2UtPmRpZE5lZ290aWF0ZU1vZGVyblRMUyh1cmwpOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5h
dmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURv
bWFpbiwgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoRm9yTmF2aWdhdGlvbjogcGFnZUlEPSUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQ9
JSIgUFJJdTY0ICIsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb249JXUsIGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQsIHRoaXMs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsICh1bnNpZ25lZClicm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWUudG9VSW50NjQoKSk7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBwYWdlSUQgPyBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKSA6IG51bGxwdHIpCisgICAgICAgIHBhZ2Ut
PnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24obmF2aWdhdGlv
bklELCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCByZXNwb25zZURvbWFpbiwg
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKK30KKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiBsYXVuY2hlciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKQogewogICAgIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxh
dW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CkBAIC00NzYsMTcgKzQ4Myw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclBy
b2Nlc3NlcyhXZWJDb3JlOjpQCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5n
LCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2Zlcjogc291cmNlUHJvY2Vzc0lkZW50aWZpZXI6ICUiIFBSSXU2NCAiLCByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyOiAlIiBQUkl1NjQsIHRoaXMsIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLnRvVUlu
dDY0KCksIHJlc291cmNlTG9hZElkZW50aWZpZXIgPyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLT50
b1VJbnQ2NCgpIDogMCk7Ci0gICAgaWYgKCFyZXNvdXJjZUxvYWRJZGVudGlmaWVyKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVwYXJlTG9h
ZEZvcldlYlByb2Nlc3NUcmFuc2Zlcihzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0NjBmYjMyZTgxMGUuLjMyMDQ5Mjcx
MGU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIxNCw4ICsyMTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0
ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQ
cm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRS
ZXBseSYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBwcmVwYXJlTG9h
ZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQ
cm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXI+KT4mJik7Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJv
dHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbigpOwogCkBAIC0zMjIsNiArMzIwLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAg
ICB2b2lkIHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZXNwb25zZURvbWFpbiwgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKwogICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJl
cXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1
b3RhKT4mJik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNl
c3Npb25JRChQQUw6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggZDY3NDkyNWM1ODFkLi41ZmQ5M2MwNzM4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTczLDYgKzczLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogICAgIFJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogCisgICAgVHJpZ2dl
ckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgZW51
bTp1aW50OF90IFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVzcG9uc2VEb21haW4sIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIg
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQorCiAjaWYgVVNF
KFNPVVApCiAgICAgRGlkRXhjZWVkTWVtb3J5TGltaXQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggYjA5MTliOGNi
NGE1Li4wZDNlN2QyZjRiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMzMywxMiArMzMzLDEyIEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhGcmFtZUlk
ZW50aWZpZXIKICAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3Zl
KGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RC
b2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwog
fQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hEZWNpc2lvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wg
d2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2
aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFn
ZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0
aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmli
dXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwog
fQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Qo
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25V
UkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggYTVkZWNmZjJmN2U5Li5kYzcxOGMy
MDE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIq
KT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1l
SW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAg
IHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWE3ZGIwNGU4MjJlLi45
NDIyYjFiMjU0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMzY0Niw3ICszNjQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICB9CiAKICAg
ICBib29sIGlzU2VydmVyU2lkZVJlZGlyZWN0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
ID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24gJiYgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKTsKLSAgICBi
b29sIHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQgPSBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3Bv
bnNlUG9saWN5RGVjaXNpb247CisgICAgYm9vbCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVy
Q29tbWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOwogICAgIG1fcHJvdmlz
aW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIFdURk1v
dmUobmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVuZGVkUGFnZSksIG5hdmlnYXRpb24ubmF2aWdh
dGlvbklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0LCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0
KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHNob3VsZENsb3NlUHJldmlvdXNQYWdl
QWZ0ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgYXV0byBjb250aW51YXRp
b24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5hdmlnYXRpb24gPSBS
ZWYgeyBuYXZpZ2F0aW9uIH0sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBv
bGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBp
dGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7CkBAIC01NjMxLDEyICs1NjMxLDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwKLSAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
LSAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0
cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVz
ZXJEYXRhKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlm
aWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRv
d25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbGlzdGVuZXJJRCwg
dXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBh
Z2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTY0OSw3ICs1NjQ5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9u
ID0gbmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlv
bklEKSA6IG51bGxwdHI7CiAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmln
YXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFt
ZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwg
ZG93bmxvYWRBdHRyaWJ1dGUpOwogCi0gICAgUmVmIGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9s
aWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdl
YlBhZ2VJRCwgZnJhbWVJRCwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRp
b24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAorICAgIFJlZiBsaXN0ZW5lciA9IGZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24g
PSBXVEZNb3ZlKG5hdmlnYXRpb24pLAogICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9u
c2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vi
c2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VS
VChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQ6Ok5vKTsKQEAgLTU2NTgsMjYgKzU2NTgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LAogICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRl
bnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2Vzc10gKGNvbnN0
IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJ
RCwgcG9saWN5RGVjaXNpb24sIGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lv
bnMocHJvY2VzcykpLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKLQotICAgICAgICBhdXRvIHdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
OjpObzsKLSAgICAgICAgaWYgKHBvbGljeUFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBi
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uICE9IEJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwICYmIG5hdmlnYXRpb24pIHsKLSAgICAgICAgICAg
IFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZDogUHJvY2Vzcy1zd2FwcGluZyBkdWUgdG8gQ3Jvc3MtT3JpZ2luLU9w
ZW5lci1Qb2xpY3ksIG5ld1Byb2Nlc3NJc0Nyb3NzT3JpZ2luSXNvbGF0ZWQ9JWQiLCBicm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb246Ok5ld0lzb2xhdGVkR3JvdXApOwotICAgICAgICAgICAgUmVmUHRyPFdlYlByb2Nl
c3NQcm94eT4gcHJvY2Vzc0Zvck5hdmlnYXRpb247Ci0gICAgICAgICAgICBpZiAoYnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwKQotICAgICAgICAgICAgICAgIHByb2Nlc3NGb3JOYXZp
Z2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3MoJndl
YnNpdGVEYXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIENyb3Nz
T3JpZ2luTW9kZTo6SXNvbGF0ZWQpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgUmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4geyBuYXZpZ2F0aW9uUmVzcG9uc2Ut
PnJlc3BvbnNlKCkudXJsKCkgfTsKLSAgICAgICAgICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlv
biA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
d2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVwYXJl
TG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcihwcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KSwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RG
TW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uID0gcHJvY2Vzc0Zvck5hdmlnYXRpb24ucmVsZWFzZU5vbk51bGwoKV0o
YXV0byBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2
aWdhdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
c0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKLQotICAgICAgICAgICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb24uZ2V0KCksIG51
bGxwdHIsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpLCB7IH0s
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Olllcyk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdU
Rk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpLCB7IH0sIHdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3MpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9u
UmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2Vzczo6Tm8pOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNo
b3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObyk7CiAKICAgICBpZiAod2FzQWxsb3dl
ZEJ5SW5qZWN0ZWRCdW5kbGUpIHsKQEAgLTU2OTEsNiArNTY3MywyMyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLAogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4s
IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSkKK3sKKyAgICBBU1NFUlQoYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiAhPSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpTdGF5
SW5Hcm91cCk7CisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmln
YXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBu
dWxscHRyOworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJ0
cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uOiBQcm9jZXNzLXN3
YXBwaW5nIGR1ZSB0byBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSwgbmV3UHJvY2Vzc0lzQ3Jv
c3NPcmlnaW5Jc29sYXRlZD0lZCwgbmF2aWdhdGlvbj0lcCIsIGJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3
SXNvbGF0ZWRHcm91cCwgbmF2aWdhdGlvbi5nZXQoKSk7CisgICAgaWYgKCFuYXZpZ2F0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9y
TmF2aWdhdGlvbjsKKyAgICBpZiAoYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9
PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwKQor
ICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5j
cmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKCksIFdlYlByb2Nlc3NQcm94eTo6
SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkKTsKKyAgICBlbHNlCisg
ICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3Bv
bnNlRG9tYWluKTsKKworICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdh
dGlvbiwgbnVsbHB0ciwgcHJvY2Vzc0Zvck5hdmlnYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkLCBudWxscHRyLCBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94
eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYmUxMDEwNWYxNjEzLi42MzdmYTAwMTM1NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02ODUsNiArNjg1LDgg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX3VuZGVybGF5Q29sb3I7IH0KICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKTsKIAorICAgIHZvaWQgdHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRm9yTmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OkJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHJlc3BvbnNlRG9tYWluLCBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworCiAgICAgLy8gQXQgdGhpcyB0
aW1lLCBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBjYW4gYmUgc2V0IHZpYSBwYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKSB3aGljaCBpcyBhIG1lc3NhZ2UKICAgICAv
LyBmcm9tIHRoZSBVSVByb2Nlc3MsIG9yIGJ5IGRpZENvbW1pdExheWVyVHJlZSgpLiBXaGVuIFBM
QVRGT1JNKE1BQykgYWRvcHRzIFVJIHNpZGUgY29tcG9zaXRpbmcsIHdlIHNob3VsZCBnZXQgcmlk
IG9mCiAgICAgLy8gdGhlIG1lc3NhZ2UgZW50aXJlbHkuCkBAIC0xNzQ2LDcgKzE3NDgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgV2ViQ29yZTo6QnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBi
b29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFy
YW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlv
biYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwogICAgIHZv
aWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6Om51bGxvcHQpOwpAQCAtMjA2NCw3ICsyMDY2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwg
Ym9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOworICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5
SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDMyZTJlNGE1YzQ0OS4uOThiNzRmMWJhMDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0xMDcsNyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAg
ICAgIyBQb2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBm
cmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
KyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxv
YWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICBEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChzdHJ1Y3QgV2Vi
S2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikgU3luY2hyb25vdXMKICAgICBEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpO
YXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMGQxODI5YjM5OGMz
Li5hZDM1ZTJiZjExZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNp
bmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBA
IC0zOTgsOCArMzk5LDI0IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZy
b21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgbG9hZFBhcmFt
ZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3JtU2Vj
dXJpdHlDaGVja3MoKTsKIAogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlv
biA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgJiYgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+aXNN
YWluRnJhbWUoKSAmJiByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubW9kZSA9PSBGZXRjaE9wdGlv
bnM6Ok1vZGU6Ok5hdmlnYXRlOworICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24gJiYgZG9jdW1lbnQpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNvdXJjZUNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5ID0gZG9jdW1lbnQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KCk7
CiAKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFt
ZSA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLm1v
ZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsKKyAgICBpZiAobG9hZFBhcmFtZXRl
cnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpIHsKKyAgICAgICAgaWYgKGF1
dG8gZG9jdW1lbnRMb2FkZXIgPSByZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpKSB7Cisg
ICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJE
b2N1bWVudExvYWRlciY+KCpkb2N1bWVudExvYWRlcikubmF2aWdhdGlvbklEKCk7CisgICAgICAg
ICAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uUmVxdWVzdGVyID0gZG9jdW1lbnRMb2FkZXIt
PnRyaWdnZXJpbmdBY3Rpb24oKS5yZXF1ZXN0ZXIoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBs
b2FkUGFyYW1ldGVycy5pc0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCA9IGRvY3VtZW50
ICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCgp
OworICAgIGxvYWRQYXJhbWV0ZXJzLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0g
ZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRp
YWxFbXB0eURvY3VtZW50KCk7CisgICAgaWYgKGZyYW1lKQorICAgICAgICBsb2FkUGFyYW1ldGVy
cy5lZmZlY3RpdmVTYW5kYm94RmxhZ3MgPSBmcmFtZS0+bG9hZGVyKCkuZWZmZWN0aXZlU2FuZGJv
eEZsYWdzKCk7CisgICAgaWYgKGF1dG8gb3BlbmVyRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5sb2Fk
ZXIoKS5vcGVuZXIoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKGF1dG8gb3BlbmVyRG9jdW1l
bnQgPSBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJz
Lm9wZW5lclVSTCA9IG9wZW5lckRvY3VtZW50LT51cmwoKTsKKyAgICB9CiAKICAgICBsb2FkUGFy
YW1ldGVycy5zaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5ID0gIWxvYWRQYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggNThmMGM0NGZhYzA5Li5mZWM2ODBhMDY1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSgqd2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogICAgIFJlZlB0ciBwcm92aXNpb25hbExv
YWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4obV9mcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBpZiAoIXBy
b3Zpc2lvbmFsTG9hZGVyIHx8IHByb3Zpc2lvbmFsTG9hZGVyLT5pc0NvbnRpbnVpbmdMb2FkQWZ0
ZXJSZXNwb25zZVBvbGljeUNoZWNrKCkpCisgICAgaWYgKCFwcm92aXNpb25hbExvYWRlciB8fCBw
cm92aXNpb25hbExvYWRlci0+aXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0byYgdXJsID0gcHJvdmlzaW9u
YWxMb2FkZXItPnVybCgpOwpAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAgd2ViUGFnZS0+c2hvdygpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
IGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIEZyYW1lUG9saWN5RnVuY3Rpb24m
JiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwogICAgIGlmICghd2ViUGFnZSkgewpAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uod2Vi
UGFnZSwgbV9mcmFtZS5wdHIoKSwgcmVzcG9uc2UsIHJlcXVlc3QsIHVzZXJEYXRhKTsKICAgICAv
LyBJZiBhIGJyb3dzaW5nIGNvbnRleHQgc3dpdGNoIGlzIHJlcXVlc3RlZCwgd2Ugc3RpbGwgbmVl
ZCB0byBzZW5kIHRoZSBJUEMgdG8gdGhlIFVJUHJvY2VzcyBpbiBvcmRlciB0byBwcm9jZXNzLXN3
YXAgaWYgbmVjZXNzYXJ5LCBldmVuIHRob3VnaCB0aGUKICAgICAvLyBpbmplY3RlZCBidW5kbGUg
aGFzIGFscmVhZHkgaGFuZGxlZCB0aGUgcG9saWN5IGRlY2lzaW9uLgotICAgIGlmIChwb2xpY3kg
PT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlICYmIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUlu
R3JvdXApIHsKKyAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkg
ewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogY29udGludWluZyBiZWNhdXNlIGluamVjdGVk
IGJ1bmRsZSBzYXlzIHNvIik7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBp
ZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODQ5LDE0ICs4NDksMTEgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnMKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJh
bWUoKTsKICAgICBhdXRvKiBwb2xpY3lEb2N1bWVudExvYWRlciA9IGNvcmVGcmFtZSA/IGNvcmVG
cmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpIDogbnVsbHB0cjsKICAg
ICBhdXRvIG5hdmlnYXRpb25JRCA9IHBvbGljeURvY3VtZW50TG9hZGVyID8gc3RhdGljX2Nhc3Q8
V2ViRG9jdW1lbnRMb2FkZXImPigqcG9saWN5RG9jdW1lbnRMb2FkZXIpLm5hdmlnYXRpb25JRCgp
IDogMDsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
cj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXI7Ci0gICAgaWYgKGF1dG8gbWFpblJlc291cmNl
TG9hZGVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBwb2xpY3lEb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlTG9hZGVyKCkgOiBudWxscHRyKQotICAgICAgICBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciA9IG1haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpOwogCiAgICAgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb25Vc2U7CiAgICAgYXV0byBwcm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1
aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlm
aWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5v
KTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlk
ZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25z
ZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBicm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
bGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKKyAgICBpZiAoIXdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
bV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRp
b25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1
dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xP
RyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVj
YXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlIGZhaWxlZCIpOwogICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5
RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CkBAIC05NTYsOSArOTUzLDkgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IE5hdmlnYXQKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xp
Y3lMaXN0ZW5lcihyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1l
OjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpZZXMpOwogCiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rp
b24ucmVxdWVzdGVyKCkpOwotICAgIGF1dG8gcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5y
ZXF1ZXN0ZXIoKS52YWx1ZSgpOworICAgIGF1dG8mIHJlcXVlc3RlciA9IG5hdmlnYXRpb25BY3Rp
b24ucmVxdWVzdGVyKCkudmFsdWUoKTsKIAotICAgIGF1dG8qIHJlcXVlc3RpbmdGcmFtZSA9IHJl
cXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIoKS5mcmFtZUlEID8gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLmZyYW1l
SUQpIDogbnVsbHB0cjsKKyAgICBhdXRvKiByZXF1ZXN0aW5nRnJhbWUgPSByZXF1ZXN0ZXIuZ2xv
YmFsRnJhbWVJZGVudGlmaWVyICYmIHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXItPmZy
YW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZ2xvYmFs
RnJhbWVJZGVudGlmaWVyLT5mcmFtZUlEKSA6IG51bGxwdHI7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nRnJhbWVJRDsKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKICAgICBpZiAo
cmVxdWVzdGluZ0ZyYW1lKSB7CkBAIC05NjksMTUgKzk2NiwxNSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdAogCiAgICAgRnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEgewog
ICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlllcywKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdGVy
LnVybCgpIH0sCi0gICAgICAgIHJlcXVlc3Rlci5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwKKyAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdGVyLnVybCB9LAorICAgICAgICByZXF1ZXN0
ZXIuc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwKICAgICAgICAgV1RGTW92ZShvcmlnaW5hdGluZ0Zy
YW1lSUQpLAogICAgICAgICBXVEZNb3ZlKHBhcmVudEZyYW1lSUQpLAogICAgIH07CiAKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlEOwot
ICAgIGlmIChhdXRvJiBwYWdlSUQgPSByZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVyKCku
cGFnZUlEKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpKQorICAgIGlmIChyZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVu
dGlmaWVyICYmIHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXItPnBhZ2VJRCkgeworICAg
ICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
cmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllci0+cGFnZUlEKSkKICAgICAgICAgICAgIG9y
aWdpbmF0aW5nUGFnZUlEID0gd2ViUGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwogICAg
IH0KIApAQCAtOTk1LDggKzk5Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEudHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uID0gbmF2aWdhdGlv
bkFjdGlvbi50cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24oKTsKICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5oYXNPcGVuZWRGcmFtZXMgPSBuYXZpZ2F0aW9uQWN0aW9uLmhhc09wZW5lZEZyYW1l
cygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm9wZW5lZEJ5RE9NV2l0aE9wZW5lciA9IG5h
dmlnYXRpb25BY3Rpb24ub3BlbmVkQnlET01XaXRoT3BlbmVyKCk7Ci0gICAgaWYgKGF1dG8mIHJl
cXVlc3RlciA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVyKCkpCi0gICAgICAgIG5hdmlnYXRp
b25BY3Rpb25EYXRhLnJlcXVlc3Rlck9yaWdpbiA9IHJlcXVlc3Rlci0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCk7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEucmVxdWVzdGVyT3JpZ2luID0gcmVx
dWVzdGVyLnNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
dGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciA9IG5hdmlnYXRpb25BY3Rpb24udGFyZ2V0
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnNv
dXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnNvdXJjZUJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5sb2Nr
SGlzdG9yeSA9IG5hdmlnYXRpb25BY3Rpb24ubG9ja0hpc3RvcnkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggYTY5ODVhNzgwNDRhLi40MGY4NmJkZmFjZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mLCBXZWJDb3JlOjpOZXdGcmFtZU9wZW5lclBvbGljeSkgZmluYWw7CiAgICAgdm9pZCBk
aXNwYXRjaFNob3coKSBmaW5hbDsKICAgICAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBm
aW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUs
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ4M2E4OTU0
N2ZmZi4uNDMxNDE4MDQzMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMTYyLDYgKzE2Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db250
YWN0c1JlcXVlc3REYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YVRyYW5zZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KQEAgLTQzNDgsNiArNDM0OSwy
OSBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDT0VQQ09SUFZpb2xhdGlvbihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaQogICAgICAgICBXZWJDb3JlOjpzZW5kQ09FUENP
UlBWaW9sYXRpb24oKmZyYW1lLT5jb3JlRnJhbWUoKSwgZW1iZWRkZXJPcmlnaW4sIGVuZHBvaW50
LCBkaXNwb3NpdGlvbiwgZGVzdGluYXRpb24sIGJsb2NrZWRVUkwpOwogfQogCit2b2lkIFdlYlBh
Z2U6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgY29vcCwg
Q09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVS
TCYgcHJldmlvdXNSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBjb29wT3Jp
Z2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJp
bmcmIHJlcG9ydFRvSGVhZGVyVmFsdWUpCit7CisgICAgaWYgKCFyZXBvcnRUb0hlYWRlclZhbHVl
LmlzTnVsbCgpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZXBvcnRpbmdFbmRw
b2ludHNDYWNoZSgpLmFkZEVuZFBvaW50c0Zyb21SZXBvcnRUb0hlYWRlcihjb29wVVJMLCByZXBv
cnRUb0hlYWRlclZhbHVlKTsKKworICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2YgYnJv
d3NpbmcgY29udGV4dCBncm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQgb2Yg
dHJlYXRpbmcgdGhlIHdob2xlIHByb2Nlc3MgYXMgYSBncm91cC4KKyAgICBpZiAoUGFnZTo6bm9u
VXRpbGl0eVBhZ2VDb3VudCgpIDw9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOyBmcmFt
ZS0+Y29yZUZyYW1lKCkpCisgICAgICAgIFdlYkNvcmU6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVu
TmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCpmcmFtZS0+Y29yZUZyYW1lKCksIGNvb3AsIGRpc3Bv
c2l0aW9uLCBjb29wVVJMLCBwcmV2aW91c1Jlc3BvbnNlVVJMLCBjb29wT3JpZ2luLnNlY3VyaXR5
T3JpZ2luKCksIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgcmVmZXJy
ZXIsIHVzZXJBZ2VudCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2VuZFZpb2xhdGlvblJlcG9ydFdo
ZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjb29wLCBDT09QRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBuZXh0UmVzcG9uc2VVUkws
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBuZXh0UmVzcG9uc2VPcmlnaW4sIGJvb2wgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9u
U291cmNlLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHRo
ZSBjb25jZXB0IG9mIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0aGUgc3BlY2lmaWNh
dGlvbiBpbnN0ZWFkIG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFzIGEgZ3JvdXAuCisg
ICAgaWYgKFBhZ2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKSA8PSAxKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKTsgZnJhbWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBXZWJDb3JlOjpzZW5kVmlv
bGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSgqZnJhbWUtPmNv
cmVGcmFtZSgpLCBjb29wLCBkaXNwb3NpdGlvbiwgY29vcFVSTCwgbmV4dFJlc3BvbnNlVVJMLCBj
b29wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIG5leHRSZXNwb25zZU9yaWdpbi5zZWN1cml0eU9y
aWdpbigpLCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3VyY2UsIHVzZXJBZ2VudCk7Cit9CisK
IHZvaWQgV2ViUGFnZTo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OkluaXQmJiBl
dmVudEluaXQpCiB7CiAgICAgYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCA5YmM0MTA3Nzg2OTkuLjEyNmY0MDY3NTgxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQxLDYgKzQ0MSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKICAgICB2
b2lkIHNlbmRDT0VQUG9saWN5SW5oZXJpdGVuY2VWaW9sYXRpb24oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGVtYmVkZGVyT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGVuZHBvaW50LCBXZWJDb3JlOjpDT0VQRGlzcG9zaXRpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMKTsKICAgICB2b2lkIHNlbmRDT0VQ
Q09SUFZpb2xhdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZW1iZWRkZXJPcmlnaW4sIGNvbnN0IFN0cmluZyYgZW5kcG9pbnQs
IFdlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbiwgY29uc3QgVVJMJiBibG9ja2VkVVJMKTsKKyAgICB2b2lkIHNlbmRWaW9sYXRpb25SZXBv
cnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmLCBXZWJDb3JlOjpDT09QRGlz
cG9zaXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91c1Jlc3BvbnNl
VVJMLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgcHJldmlvdXNSZXNwb25zZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgcmVwb3J0VG9IZWFkZXJWYWx1ZSk7CisgICAgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hl
bk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiwgV2ViQ29yZTo6Q09PUERp
c3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJM
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgbmV4dFJlc3BvbnNlT3JpZ2luLCBib29sIGlzQ09P
UFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwogICAg
IHZvaWQgZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYp
OwogCiAgICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGQy
NGY3YWZmMDg5Mi4uOGFmYzRlYTVlM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2VuZENTUFZpb2xhdGlvblJl
cG9ydChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgVVJMIHJlcG9ydFVSTCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQogICAgIFNlbmRDT0VQUG9saWN5SW5oZXJp
dGVuY2VWaW9sYXRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZW1iZWRkZXJPcmlnaW4sIFN0cmluZyBlbmRwb2lu
dCwgZW51bTpib29sIFdlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgU3RyaW5n
IHR5cGUsIFVSTCBibG9ja2VkVVJMKQogICAgIFNlbmRDT0VQQ09SUFZpb2xhdGlvbihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBlbWJlZGRlck9yaWdpbiwgU3RyaW5nIGVuZHBvaW50LCBlbnVtOmJvb2wgV2ViQ29yZTo6
Q09FUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgVVJMIGJsb2NrZWRVUkwpCisgICAgU2Vu
ZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBv
bGljeSBjb29wLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9u
LCBVUkwgY29vcFVSTCwgVVJMIHByZXZpb3VzUmVzcG9uc2VVUkwsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgY29vcE9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBTdHJpbmcgcmVmZXJyZXIsIFN0cmluZyB1
c2VyQWdlbnQsIFN0cmluZyByZXBvcnRUb0hlYWRlclZhbHVlKQorICAgIFNlbmRWaW9sYXRpb25S
ZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kg
Y29vcCwgZW51bTpib29sIFdlYkNvcmU6OkNPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgVVJM
IGNvb3BVUkwsIFVSTCBuZXh0UmVzcG9uc2VVUkwsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgY29vcE9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBu
ZXh0UmVzcG9uc2VPcmlnaW4sIGJvb2wgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9uU291cmNlLCBT
dHJpbmcgdXNlckFnZW50KQogICAgIEVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50OjpJbml0IGV2ZW50SW5pdCkKIAogICAgIFRlc3RQcm9jZXNzSW5jb21p
bmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpIC0+IChib29sIGhhbmRsZWQp
IFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlM2Y1ZjljOWYwZmYu
LmEyNTk4ZjMyZmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMjcsNyArMTI3
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNv
bnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBXZWJDb3JlOjpOZXdGcmFtZU9wZW5lclBv
bGljeSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKIAotICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFs
OworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2Vi
Q29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVjaygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3MWE3
MTViMzdmYTUuLjM1NmM5M2YzMWU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAg
LTg1NSw3ICs4NTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3co
KQogICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld1Nob3c6d2ViVmll
d107CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
JiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDU4ODk5MmQ0YWFmZS4uZmIyNTgzZmU5NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hTaG93KCkKICAgICAgICAgdWktPndlYlZpZXdTaG93KHdlYlZpZXcpOwogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXco
KTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IDFlMzAzMWY5YjUwMi4uMDk1YjI1MzVhNjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlYWNo
TGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6
TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYzYzMzE2Nzg1ODUwLi44MWI3OThiMzhk
M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMjUsNiArMjUsNyBAQAog
CiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUuaCIKQEAgLTE0MSw2ICsxNDIsMTIgQEAgLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9u
IGRpZFMKICAgICBkb25lID0gdHJ1ZTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKiBfTnVsbGFibGUgY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05T
VVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZS5zZXJ2ZXJUcnVzdF0pOworfQorCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246KG51bGxfdW5zcGVjaWZpZWQgV0tOYXZp
Z2F0aW9uICopbmF2aWdhdGlvbgogewogICAgIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkID0gdHJ1
ZTsKQEAgLTI1MCwxNSArMjU3LDEyIEBAIEBpbnRlcmZhY2UgUFNPTlNjaGVtZSA6IE5TT2JqZWN0
IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKICAgICBjb25zdCBjaGFyKiBfYnl0ZXM7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gX3JlZGlyZWN0czsKICAgICBIYXNoTWFwPFN0cmluZywgUmV0
YWluUHRyPE5TRGF0YT4+IF9kYXRhTWFwcGluZ3M7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gX2Nvb3BWYWx1ZXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX2NvZXBWYWx1ZXM7
CiAgICAgSGFzaFNldDxpZCA8V0tVUkxTY2hlbWVUYXNrPj4gX3J1bm5pbmdUYXNrczsKICAgICBi
b29sIF9zaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk7CiB9CiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0ZXM7CiAtICh2b2lkKWFkZFJlZGlyZWN0RnJvbVVS
TFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VVUkxTdHJpbmcgdG9VUkxTdHJpbmc6KE5TU3RyaW5n
ICopZGVzdGluYXRpb25VUkxTdHJpbmc7CiAtICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5n
OihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGE7Ci0tICh2b2lk
KWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNv
bnN0IGNoYXIqKWRhdGEgd2l0aENPT1BWYWx1ZTooY29uc3QgY2hhciopY29vcFZhbHVlIHdpdGhD
T0VQVmFsdWU6KGNvbnN0IGNoYXIqKWNvZXBWYWx1ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFBTT05TY2hlbWUKQEAgLTI4MCwxNSArMjg0LDYgQEAgLSAodm9pZClhZGRNYXBwaW5nRnJvbVVS
TFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCiAg
ICAgX2RhdGFNYXBwaW5ncy5zZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0Nv
cHk6KHZvaWQqKWRhdGEgbGVuZ3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsKIH0K
IAotLSAodm9pZClhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcg
dG9EYXRhOihjb25zdCBjaGFyKilkYXRhIHdpdGhDT09QVmFsdWU6KGNvbnN0IGNoYXIqKWNvb3BW
YWx1ZSB3aXRoQ09FUFZhbHVlOihjb25zdCBjaGFyKiljb2VwVmFsdWUKLXsKLSAgICBbc2VsZiBh
ZGRNYXBwaW5nRnJvbVVSTFN0cmluZzp1cmxTdHJpbmcgdG9EYXRhOmRhdGFdOwotICAgIGlmIChj
b29wVmFsdWUpCi0gICAgICAgIF9jb29wVmFsdWVzLmFkZCh1cmxTdHJpbmcsIGNvb3BWYWx1ZSk7
Ci0gICAgaWYgKGNvZXBWYWx1ZSkKLSAgICAgICAgX2NvZXBWYWx1ZXMuYWRkKHVybFN0cmluZywg
Y29lcFZhbHVlKTsKLX0KLQogLSAodm9pZClzZXRTaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk6
KEJPT0wpdmFsdWUKIHsKICAgICBfc2hvdWxkUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0gdmFsdWU7
CkBAIC0zMjMsMTYgKzMxOCwxMCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgICAgICBb
KGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2RpZFBlcmZvcm1SZWRpcmVjdGlvbjpy
ZWRpcmVjdFJlc3BvbnNlLmdldCgpIG5ld1JlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiAgICAgfQog
Ci0gICAgZG9Bc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KFtzZWxmLCBmaW5hbFVSTCA9IHJldGFp
blB0cihmaW5hbFVSTCldKGlkIDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICBkb0FzeW5j
aHJvbm91c2x5SWZOZWNlc3NhcnkoW2ZpbmFsVVJMID0gcmV0YWluUHRyKGZpbmFsVVJMKV0oaWQg
PFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBo
ZWFkZXJEaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAgICAg
ICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAInRleHQvaHRtbCIgZm9yS2V5OkAiQ29u
dGVudC1UeXBlIl07CiAgICAgICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDpAIjEiIGZv
cktleTpAIkNvbnRlbnQtTGVuZ3RoIl07Ci0gICAgICAgIGF1dG8gY29vcFZhbHVlID0gX2Nvb3BW
YWx1ZXMuZ2V0KFtmaW5hbFVSTCBhYnNvbHV0ZVN0cmluZ10pOwotICAgICAgICBpZiAoIWNvb3BW
YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBbaGVhZGVyRGljdGlvbmFyeSBzZXRPYmplY3Q6
KE5TU3RyaW5nICopY29vcFZhbHVlIGZvcktleTpAIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
Il07Ci0gICAgICAgIGF1dG8gY29lcFZhbHVlID0gX2NvZXBWYWx1ZXMuZ2V0KFtmaW5hbFVSTCBh
YnNvbHV0ZVN0cmluZ10pOwotICAgICAgICBpZiAoIWNvZXBWYWx1ZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBbaGVhZGVyRGljdGlvbmFyeSBzZXRPYmplY3Q6KE5TU3RyaW5nICopY29lcFZhbHVl
IGZvcktleTpAIkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kiXTsKIAogICAgICAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDpmaW5hbFVSTC5nZXQoKSBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBo
ZWFkZXJGaWVsZHM6aGVhZGVyRGljdGlvbmFyeV0pOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwpAQCAtNzE4Miw3ICs3MTcxLDcgQEAgVEVTVChXZWJQ
cm9jZXNzQ2FjaGUsIENsZWFyV2hlbkVudGVyaW5nQ2FjaGUpCiBzdGF0aWMgY29uc3QgY2hhciog
d2luZG93T3BlbkNyb3NzT3JpZ2luQ09PUFRlc3RCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogPHNj
cmlwdD4KIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICB3ID0gd2luZG93Lm9wZW4o
InBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVwLmh0bWwiLCAiZm9vIik7CisgICAgdyA9IHdpbmRv
dy5vcGVuKCJodHRwczovL2xvY2FsaG9zdDo4MTgxL3BvcHVwLmh0bWwiLCAiZm9vIik7CiB9CiA8
L3NjcmlwdD4KIClQU09OUkVTT1VSQ0UiOwpAQCAtNzE5OSw2ICs3MTg4LDQyIEBAIGVudW0gY2xh
c3MgSXNTYW1lT3JpZ2luIDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgRG9TZXJ2ZXJT
aWRlUmVkaXJlY3QgOiBib29sIHsgTm8sIFllcyB9Owogc3RhdGljIHZvaWQgcnVuQ09PUFByb2Nl
c3NTd2FwVGVzdChjb25zdCBjaGFyKiBzb3VyY2VDT09QLCBjb25zdCBjaGFyKiBzb3VyY2VDT0VQ
LCBjb25zdCBjaGFyKiBkZXN0aW5hdGlvbkNPT1AsIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uQ09F
UCwgSXNTYW1lT3JpZ2luIGlzU2FtZU9yaWdpbiwgRG9TZXJ2ZXJTaWRlUmVkaXJlY3QgZG9TZXJ2
ZXJTaWRlUmVkaXJlY3QsIEV4cGVjdFN3YXAgZXhwZWN0U3dhcCkKIHsKKyAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHNvdXJj
ZUhlYWRlcnM7CisgICAgc291cmNlSGVhZGVycy5hZGQoIkNvbnRlbnQtVHlwZSJfcywgInRleHQv
aHRtbCJfcyk7CisgICAgaWYgKHNvdXJjZUNPT1ApCisgICAgICAgIHNvdXJjZUhlYWRlcnMuYWRk
KCJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgU3RyaW5nKHNvdXJjZUNPT1ApKTsKKyAg
ICBpZiAoc291cmNlQ09FUCkKKyAgICAgICAgc291cmNlSGVhZGVycy5hZGQoIkNyb3NzLU9yaWdp
bi1FbWJlZGRlci1Qb2xpY3kiX3MsIFN0cmluZyhzb3VyY2VDT0VQKSk7CisgICAgSFRUUFJlc3Bv
bnNlIHNvdXJjZVJlc3BvbnNlKFdURk1vdmUoc291cmNlSGVhZGVycyksIGlzU2FtZU9yaWdpbiA9
PSBJc1NhbWVPcmlnaW46OlllcyA/IHdpbmRvd09wZW5TYW1lT3JpZ2luQ09PUFRlc3RCeXRlcyA6
IHdpbmRvd09wZW5Dcm9zc09yaWdpbkNPT1BUZXN0Qnl0ZXMpOworCisgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gZGVzdGluYXRpb25IZWFkZXJzOworICAgIGRlc3RpbmF0aW9uSGVhZGVycy5h
ZGQoIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyk7CisgICAgaWYgKGRlc3RpbmF0aW9u
Q09PUCkKKyAgICAgICAgZGVzdGluYXRpb25IZWFkZXJzLmFkZCgiQ3Jvc3MtT3JpZ2luLU9wZW5l
ci1Qb2xpY3kiX3MsIFN0cmluZyhkZXN0aW5hdGlvbkNPT1ApKTsKKyAgICBpZiAoZGVzdGluYXRp
b25DT0VQKQorICAgICAgICBkZXN0aW5hdGlvbkhlYWRlcnMuYWRkKCJDcm9zcy1PcmlnaW4tRW1i
ZWRkZXItUG9saWN5Il9zLCBTdHJpbmcoZGVzdGluYXRpb25DT0VQKSk7CisgICAgSFRUUFJlc3Bv
bnNlIGRlc3RpbmF0aW9uUmVzcG9uc2UoV1RGTW92ZShkZXN0aW5hdGlvbkhlYWRlcnMpLCAicG9w
dXAiX3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEhUVFBTZXJ2ZXI+IHNlcnZlcjsKKyAgICBp
ZiAoZG9TZXJ2ZXJTaWRlUmVkaXJlY3QgPT0gRG9TZXJ2ZXJTaWRlUmVkaXJlY3Q6Olllcykgewor
ICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZWRpcmVjdEhlYWRlcnM7CisgICAgICAg
IHJlZGlyZWN0SGVhZGVycy5hZGQoImxvY2F0aW9uIl9zLCBpc1NhbWVPcmlnaW4gPT0gSXNTYW1l
T3JpZ2luOjpZZXMgPyAiaHR0cHM6Ly8xMjcuMC4wLjE6ODE4MS9wb3B1cC1hZnRlci1yZWRpcmVj
dGlvbi5odG1sIl9zIDogImh0dHBzOi8vbG9jYWxob3N0OjgxODEvcG9wdXAtYWZ0ZXItcmVkaXJl
Y3Rpb24uaHRtbCJfcyk7CisgICAgICAgIEhUVFBSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKDMw
MSwgV1RGTW92ZShyZWRpcmVjdEhlYWRlcnMpKTsKKworICAgICAgICBzZXJ2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhUVFBTZXJ2ZXI+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3Ry
aW5nLCBIVFRQUmVzcG9uc2U+PiB7CisgICAgICAgICAgICB7ICIvbWFpbi5odG1sIiwgV1RGTW92
ZShzb3VyY2VSZXNwb25zZSkgfSwKKyAgICAgICAgICAgIHsgIi9wb3B1cC5odG1sIiwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSB9LAorICAgICAgICAgICAgeyAiL3BvcHVwLWFmdGVyLXJlZGly
ZWN0aW9uLmh0bWwiLCBXVEZNb3ZlKGRlc3RpbmF0aW9uUmVzcG9uc2UpIH0KKyAgICAgICAgfSwg
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA4MTgxKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUVFBTZXJ2ZXI+
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiB7
CisgICAgICAgICAgICB7ICIvbWFpbi5odG1sIiwgV1RGTW92ZShzb3VyY2VSZXNwb25zZSkgfSwK
KyAgICAgICAgICAgIHsgIi9wb3B1cC5odG1sIiwgV1RGTW92ZShkZXN0aW5hdGlvblJlc3BvbnNl
KSB9CisgICAgICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVs
bHB0ciwgODE4MSk7CisgICAgfQorCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9
IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGJvb2wgc291cmNlU2hvdWxkQmVD
cm9zc09yaWdpbklzb2xhdGVkID0gc291cmNlQ09PUCAmJiAhc3RyY21wKHNvdXJjZUNPT1AsICJz
YW1lLW9yaWdpbiIpICYmIHNvdXJjZUNPRVAgJiYgIXN0cmNtcChzb3VyY2VDT0VQLCAicmVxdWly
ZS1jb3JwIik7CkBAIC03MjE1LDI0ICs3MjQwLDYgQEAgc3RhdGljIHZvaWQgcnVuQ09PUFByb2Nl
c3NTd2FwVGVzdChjb25zdCBjaGFyKiBzb3VyY2VDT09QLCBjb25zdCBjaGFyKiBzb3VyY2VDT0UK
ICAgICAgICAgICAgIFtbd2ViVmlld0NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFi
bGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOmZlYXR1cmVdOwogICAgIH0KIAotICAgIGF1
dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0XSk7Ci0gICAgaWYg
KGlzU2FtZU9yaWdpbiA9PSBJc1NhbWVPcmlnaW46OlllcykgewotICAgICAgICBbaGFuZGxlciBh
ZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwi
IHRvRGF0YTp3aW5kb3dPcGVuU2FtZU9yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpz
b3VyY2VDT09QIHdpdGhDT0VQVmFsdWU6c291cmNlQ09FUF07Ci0gICAgICAgIGlmIChkb1NlcnZl
clNpZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7Ci0gICAgICAgICAg
ICBbaGFuZGxlciBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5v
cmcvcG9wdXAuaHRtbCIgdG9VUkxTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAt
YWZ0ZXItcmVkaXJlY3QuaHRtbCJdOwotICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zy
b21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAtYWZ0ZXItcmVkaXJlY3Qu
aHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENP
RVBWYWx1ZTpkZXN0aW5hdGlvbkNPRVBdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFto
YW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3Bv
cHVwLmh0bWwiIHRvRGF0YToicG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09QIHdp
dGhDT0VQVmFsdWU6ZGVzdGluYXRpb25DT0VQXTsKLSAgICB9IGVsc2UgewotICAgICAgICBbaGFu
ZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWlu
Lmh0bWwiIHRvRGF0YTp3aW5kb3dPcGVuQ3Jvc3NPcmlnaW5DT09QVGVzdEJ5dGVzIHdpdGhDT09Q
VmFsdWU6c291cmNlQ09PUCB3aXRoQ09FUFZhbHVlOnNvdXJjZUNPRVBdOwotICAgICAgICBpZiAo
ZG9TZXJ2ZXJTaWRlUmVkaXJlY3QgPT0gRG9TZXJ2ZXJTaWRlUmVkaXJlY3Q6OlllcykgewotICAg
ICAgICAgICAgW2hhbmRsZXIgYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5h
cHBsZS5jb20vcG9wdXAuaHRtbCIgdG9VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9w
b3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIl07Ci0gICAgICAgICAgICBbaGFuZGxlciBhZGRNYXBw
aW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVwLWFmdGVyLXJlZGly
ZWN0Lmh0bWwiIHRvRGF0YToicG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09QIHdp
dGhDT0VQVmFsdWU6ZGVzdGluYXRpb25DT0VQXTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29t
L3BvcHVwLmh0bWwiIHRvRGF0YToicG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09Q
IHdpdGhDT0VQVmFsdWU6ZGVzdGluYXRpb25DT0VQXTsKLSAgICB9Ci0gICAgW3dlYlZpZXdDb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6
QCJQU09OIl07Ci0KICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAKQEAg
LTcyNDgsNyArNzI1NSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkNPT1BQcm9jZXNzU3dhcFRlc3QoY29u
c3QgY2hhciogc291cmNlQ09PUCwgY29uc3QgY2hhciogc291cmNlQ09FCiAgICAgZmFpbGVkID0g
ZmFsc2U7CiAgICAgc2VydmVyUmVkaXJlY3RlZCA9IGZhbHNlOwogICAgIG51bWJlck9mRGVjaWRl
UG9saWN5Q2FsbHMgPSAwOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtp
dC5vcmcvbWFpbi5odG1sIl1dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovLzEyNy4w
LjAuMTo4MTgxL21haW4uaHRtbCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439365</attachid>
            <date>2021-09-27 09:45:44 -0700</date>
            <delta_ts>2021-09-28 07:58:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230812-20210927094543.patch</filename>
            <type>text/plain</type>
            <size>162068</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEzYzkyZDEwOWEzMmQ1
OTIyYTEzNTI5MGJlNGM2NDJhMGU3YTUxZC4uNWUyZGNjNzVhNzBmYWFiODQ3NTNmZDhhODhlODA5
ZjFlZWQyZGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTA5LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgxMgorICAgICAgICA8cmRh
cjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXZpb3VzLCBDT09QIGhhbmRsaW5nIHdhcyBmdWxseSBpbXBsZW1lbnRlZCBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLiBUaGlzIG1lYW50IHRoYXQgYQorICAgICAgICBXZWJQcm9j
ZXNzIGZvciBvcmlnaW4gQSBjb3VsZCBnZXQgYSBuZXR3b3JrIHJlc3BvbnNlIHdpdGggQ09PUCBo
ZWFkZXIgZnJvbSBvcmlnaW4gQiwgZGVjaWRlCisgICAgICAgIHRoYXQgY3Jvc3Mtb3JpZ2luIGlz
b2xhdGlvbiBpcyBuZWVkZWQgYW5kIGFzayB0aGUgVUlQcm9jZXNzIHRvIHByb2Nlc3Mtc3dhcC4g
VGhpcyB3YXMgbm90IGEKKyAgICAgICAgZ29vZCBkZXNpZ24gZ2l2ZW4gdGhhdCB0aGUgV2ViQ29u
dGVudCBwcm9jZXNzIGlzIG5vdCBhIHRydXN0ZWQgcHJvY2Vzcy4gV2Ugc2hvdWxkIG5vdCB0cnVz
dAorICAgICAgICB0aGUgV2ViUHJvY2VzcyBmb3Igb3JpZ2luIEEgdG8gbWFrZSB0aGUgc3dhcCBv
biBiZWhhdmlvciBvZiBvcmlnaW4gQi4gQWxzbywgdGhlIG5ldHdvcmsKKyAgICAgICAgcmVzcG9u
c2UgZnJvbSBvcmlnaW4gQiBtYXkgY29udGFpbiBzZW5zaXRpdmUgaGVhZGVycyB0aGF0IHdlIGRv
bid0IHdhbnQgb3JpZ2luIEEncyBXZWJQcm9jZXNzCisgICAgICAgIHRvIHNlZS4KKworICAgICAg
ICBUbyBhZGRyZXNzIHRoZXNlIGlzc3VlcywgSSBoYXZlIG1vdmVkIENPT1AgaGFuZGxpbmcgZnJv
bSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHRvIHRoZQorICAgICAgICBOZXR3b3JrUHJvY2Vzcy4g
QXMgc29vbiBhcyB0aGUgTmV0d29ya1Byb2Nlc3MgZ2V0cyB0aGUgbmV0d29yayByZXNwb25zZSwg
aXQgbWFrZXMgdGhlIGRlY2lzaW9uCisgICAgICAgIHdoZXRoZXIgb3Igbm90IGNyb3NzLW9yaWdp
biBpc29sYXRpb24gaXMgbmVlZGVkLiBJZiBpc29sYXRpb24gaXMgbmVlZGVkLCB0aGUgbmV0d29y
ayBwcm9jZXNzCisgICAgICAgIGFza3MgdGhlIFVJUHJvY2VzcyBkaXJlY3RseSB0byBjb250aW51
ZSB0aGUgbG9hZCBpbiBhIG5ldyBXZWJQcm9jZXNzIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUKKyAg
ICAgICAgbmV0d29yayByZXNwb25zZSB0byB0aGUgY3VycmVudGx5IGFzc29jaWF0ZWQgV2ViUHJv
Y2Vzcy4gV2hlbiB0aGUgbmV3IFdlYlByb2Nlc3MgcmVzdW1lcyB0aGUKKyAgICAgICAgbG9hZCwg
dGhlIG5ldHdvcmsgcHJvY2VzcyBzZW5kcyBpdCB0aGUgbmV0d29yayByZXNwb25zZSBpdCBhbHJl
YWR5IGhhcy4KKworICAgICAgICBJIG1vdmVkIG1vc3Qgb2YgdGhlIENPT1Agc3BlY2lmaWNhdGlv
biBpbXBsZW1lbnRhdGlvbiBmcm9tIERvY3VtZW50TG9hZGVyLmNwcC9oIHRvCisgICAgICAgIENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcC9oIHNvIHRoYXQgd2UgY2FuIGxldmVyYWdlIGl0IGZy
b20gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBpbgorICAgICAgICB0aGUgbmV0d29yayBwcm9j
ZXNzLiBXZSBzdGlsbCBoYXZlIHRvIGRvICpzb21lKiBDT09QIGhhbmRsaW5nIGF0IERvY3VtZW50
TG9hZGVyIGxldmVsCisgICAgICAgIGN1cnJlbnRseSBmb3Igbm9uLWluaXRpYWwgbmF2aWdhdGlv
bnMgdG8gYWJvdXQ6YmxhbmsgZ2l2ZW4gdGhhdCB0aG9zZSBjYW4gdHJpZ2dlciBhIGJyb3dzaW5n
CisgICAgICAgIGNvbnRleHQgZ3JvdXAgc3dpdGNoIGJ1dCBjdXJyZW50bHkgZG8gbm90IGludm9s
dmVkIHRoZSBuZXR3b3JrIHByb2Nlc3MuIEkgYWxzbyBoYWQgdG8gYWRkCisgICAgICAgIG1vcmUg
aW5mb3JtYXRpb24gdG8gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgc28gdGhhdCB3ZSBh
cmUgYWJsZSB0byBtYWtlIGFwcHJvcHJpYXRlCisgICAgICAgIENPT1AgZGVjaXNpb25zIGluIHRo
ZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgQ09PUCB0ZXN0cyB0aGF0IGFyZSBzdGlsbCBwYXNzaW5nLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tJZkVuZm9yY2luZ1JlcG9ydE9ubHlDT09QV291bGRS
ZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZVJlc3BvbnNlT3JpZ2luQW5kQ09PUCk6CisgICAgICAgIChXZWJDb3JlOjplbmZvcmNlUmVz
cG9uc2VDcm9zc09yaWdpbk9wZW5lclBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpvYnRhaW5D
cm9zc09yaWdpbk9wZW5lclBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpzZW5kVmlvbGF0aW9u
UmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1
bHQ6OmZyb20pOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k6OnJlcG9ydGluZ0VuZHBv
aW50Rm9yRGlzcG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3k6Omhhc1JlcG9ydGluZ0VuZHBvaW50IGNvbnN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZG9D
cm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjcm9zc09yaWdpbk9wZW5l
clBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNDb250
aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCk6CisgICAgICAgIE1vdmUgbW9zdCBvZiB0aGUgQ09PUCBsb2dpYyBmcm9t
IERvY3VtZW50TG9hZGVyLmNwcCB0byBDcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAsIHNvIHRo
YXQKKyAgICAgICAgaXQgY2FuIGJlIHJldXNlZCBieSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgaW4g
dGhlIG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKKyAgICAgICAgKiBsb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
OjpOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6cmVxdWVzdGVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OmlzRW1wdHkgY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcDogQWRkZWQuCisgICAgICAgICog
bG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuaDogQWRkZWQuCisgICAgICAgIEV4dHJhY3RlZCBO
YXZpZ2F0aW9uQWN0aW9uOjpSZXF1ZXN0ZXIgdG8gaXRzIG93biBoZWFkZXIgYW5kIHJlbmFtZSBp
dCB0byBOYXZpZ2F0aW9uUmVxdWVzdGVyLAorICAgICAgICBzbyB0aGF0IGl0cyBpbXBsZW1lbnRh
dGlvbiBjYW4gYmUgc2hhcmVkIGJldHdlZW4gTmF2aWdhdGlvbkFjdGlvbiwgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMKKyAgICAgICAgYW5kIENPT1AuCisKKyAgICAgICAgKiBsb2FkZXIv
UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwb3J0aW5n
RW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6YWRkRW5kUG9pbnRzRnJvbVJlcG9ydFRvSGVh
ZGVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisKIDIwMjEtMDktMjQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0lGQ10gTGluZTo6UnVuIG9ubHkgbmVlZHMgYSBoYW5kZnVsIG9mIHN0
eWxlIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDRmZjQxYWY2ZDdlM2E4ZGMxYjVhNjlmYzE2MTUz
ZDRkZTVkYmRmNy4uNGM0MDM0MmIxODllOTQzYjBhODIyZjZlMDdhYTA3ZjUxNmNhMjMzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0wOS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgaGFu
ZGxpbmcgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA4MTIKKyAgICAgICAgPHJkYXI6Ly84MzUwNDg0Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
Q09PUCBoYW5kbGluZyBpbiB0aGUgTmV0d29ya1Byb2Nlc3MsIGluc2lkZSB0aGUgTmV0d29ya1Jl
c291cmNlTG9hZGVyIGNsYXNzLgorICAgICAgICBUaGlzIHdhcyBsb2dpYyB0aGF0IHdhcyBjdXJy
ZW50bHkgaW1wbGVtZW50ZWQgYXQgRG9jdW1lbnRMb2FkZXItbGV2ZWwsIGluIHRoZSBXZWJQcm9j
ZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGlu
Z09mUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0Ojp0b0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2Fy
ZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9y
TmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRm9yTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRp
bmdUb0NPT1BSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRWaW9sYXRp
b25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA5LTI0ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZGlyZWN0b3J5IHJ1bGUgZnJvbSBz
YW5kYm94ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiMTk1NDYyZmYyYjUxMzBj
MzBkMWUzMDhlYzU5ODUwNTRjMjM0ODU1Li42N2UwZGI4ZThlZjg1ODJmODhmNDQ1NDEzYWM3YmJh
MDA5YmY5MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjEtMDktMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IGhhbmRsaW5nIHRvIHRoZSBOZXR3b3JrUHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
ODEyCisgICAgICAgIDxyZGFyOi8vODM1MDQ4NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UpOgorCiAyMDIxLTA5LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgbW9yZSBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIHRv
IFdlYkNvcmU6OmxpbmtlZE9uT3JBZnRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMjU2NjNmYTc1NWVmZWMyOWM0ZDdmZDkzN2QzZWE2MzRjZjYxY2UyYi4uYmEzMTVmYzJiOTE0
ZDI0NDg5YTY1Mzc0ZThjN2Y2OTE0MzAxZDM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5kbGlu
ZyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjEtMDktMTcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgT2JqZWN0SWRl
bnRpZmllciBmb3IgUmVzb3VyY2VMb2FkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGVjMDUwMTQy
YTVmYzY2MTNkNzczNWY2NWY5NDlmNzgxZDhjZTBmYzYuLjhmMzk0Y2UyZGYzYmFhZGViODM3Zjgx
MGEzZThhMGY3NTQxOTE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtODMxLDYgKzgzMSw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBsb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5oCiAgICAgbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAogICAgIGxv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKyAgICBsb2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5o
CiAgICAgbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKICAgICBsb2FkZXIvUGlu
Z0xvYWRlci5oCiAgICAgbG9hZGVyL1BvbGljeUNoZWNrZXIuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0
MzIwYWRjMjg5ZTA5YjRhYTVhNjJjN2M5MmUwYWExNGUxOGUyZmVhLi5lMzZhZDQ3ZmFiYzE3OTZh
MzllYzg4MWJhZjUxZjBjZDc5YzU3MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTU2MCw2ICsxNTYw
LDcgQEAgbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcAogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwCiBsb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKIGxvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmNwcAorbG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuY3BwCiBsb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
IGxvYWRlci9QaW5nTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQxODdmMTMzMzQzMzQyNzU3YTJjYmExNTU1NTM4
OWQ1NTg1NDY1OTIuLjBlYTM3Y2E0NDdkNzkwN2FhNTI5NTczZDE0YzFkMTViNDA5NTI5ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzMjMsNiArMTMyMyw3IEBACiAJCTQ2ODM0NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4OEVFM0MyNkREMjYxMDAwMkFG
NUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
OUNDQ0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlDQ0NGQzI2OUQwMjAyMDA2RTAz
MTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0MkZBNiAvKiBOYXZpZ2F0aW9u
UmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjlENzdCNjI3MDE2MjUwMDAxNDJGQTYgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QUFBQTNEMjVE
MzYzMjAwMEJBRjQyRiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8q
IEF1ZGlvRmlsZVJlYWRlckNvY29hLmggKi87IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0
QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdl
dEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAw
RkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg0NjMsOCArODQ2NCwxMCBAQAogCQk0NjlDQ0NGQTI2OUQw
MjAyMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
cm9hZGNhc3RDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5Q0ND
RkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnJvYWRjYXN0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NG
RDI2OUQwMjAzMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQnJvYWRjYXN0
Q2hhbm5lbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OUQ3N0I2MjcwMTYy
NTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5hdmlnYXRpb25SZXF1ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZBQUFBM0EyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmlsZVJlYWRlckNvY29h
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRmlsZVJlYWRlckNvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QUFBQTNDMjVEMzYzMTQwMEJBRjQy
RiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QUNEODExMjcwMTY1NkEwMEVGOENFRCAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25SZXF1
ZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RG
MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkI4NTkzQTI2MTY3MjBDMDAxOUVEQzYgLyogU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnVmZmVyU291cmNlUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Nzg5LDYgKzI3NzkyLDgg
QEAKIAkJCQk5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAg
Ki8sCiAJCQkJOTNDQ0YwMjYwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCAq
LywKIAkJCQk5QkE4Mjc3ODFGMDYxNTY1MDBGNzFFNzUgLyogTmF2aWdhdGlvbkRpc2FibGVyLmgg
Ki8sCisJCQkJNDZBQ0Q4MTEyNzAxNjU2QTAwRUY4Q0VEIC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIu
Y3BwICovLAorCQkJCTQ2OUQ3N0I2MjcwMTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVz
dGVyLmggKi8sCiAJCQkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwICovLAogCQkJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9u
U2NoZWR1bGVyLmggKi8sCiAJCQkJOTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8qIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmNwcCAqLywKQEAgLTM0MjE3LDYgKzM0MjIyLDcgQEAKIAkJCQk4
M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmln
YXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OUQ3N0I4MjcwMTYyNTEwMDE0MkZB
NiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzlGNDNENDEw
NzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTlDNkU1QTYwRDc0NjQ1ODAwNjQ0MkU5IC8qIE5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyNzE5QzcwRUVFQzE2ODAwRjYxMjEzIC8qIE5hdmlnYXRvckJhc2UuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBlYTBhMDgwMmM1N2ZjNjljNTEzZDhmNDYy
NGQ5ZjVmYTFiNjJmODc0Li5jNDE4ZDU5MGQxOTQxMjAwYjZjNjZkZjY2YTRhN2U5ZTE3NTA1YTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTYW1lT3JpZ2luQXNUb3BEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHNlY3VyaXR5
T3JpZ2luKCkuaXNTYW1lT3JpZ2luQXModG9wT3JpZ2luKCkpOyB9CiAgICAgYm9vbCBzaG91bGRG
b3JjZU5vT3BlbmVyQmFzZWRPbkNPT1AoKSBjb25zdDsKIAotICAgIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiBjcm9zc09yaWdpbk9wZW5lclBvbGljeSgpIGNvbnN0IGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjcm9zc09yaWdp
bk9wZW5lclBvbGljeSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3koY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmKTsKIAogICAgIHZvaWQgd2ls
bExvYWRTY3JpcHRFbGVtZW50KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAKaW5kZXggYzY1ZjFiMjJkNTcyOGY1MmU4
NDBlNTAyZTRlNzAxZGU5ZWQxMTA5YS4uMTc2MjdlNWYxOGI1YWYyYTQwY2MxYWI5NjUzYWM0ZTMw
YThiNzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kuY3BwCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDcm9zc09yaWdpbk9wZW5lclBvbGljeS5oIgogCisjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgog
I2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVFRQ
SGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIk5hdmln
YXRpb25SZXF1ZXN0ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRl
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTY4LDEzICs3MCw4NyBAQCBz
dGF0aWMgQVNDSUlMaXRlcmFsIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWVUb0VmZmVjdGl2
ZVBvbGljeVN0cmluZyhDcm9zc09yaQogICAgIHJldHVybiAidW5zYWZlLW5vbmUiX3M7CiB9CiAK
Ky8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2No
ZWNrLWJyb3dzaW5nLWNvbnRleHQtZ3JvdXAtc3dpdGNoLWNvb3AtdmFsdWUKK3N0YXRpYyBib29s
IGNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGJvb2wg
aXNJbml0aWFsQWJvdXRCbGFuaywgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSBhY3RpdmVE
b2N1bWVudENPT1BWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURvY3VtZW50TmF2
aWdhdGlvbk9yaWdpbiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSByZXNwb25zZUNPT1BW
YWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQoreworICAgIC8vIElm
IHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGFjdGl2ZURv
Y3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QVmFsdWUsIGFuZCByZXNwb25zZU9y
aWdpbiBpcyB0cnVlLCByZXR1cm4gZmFsc2UuCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjbWF0Y2hpbmctY29vcAorICAgIGlmIChhY3Rp
dmVEb2N1bWVudENPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNh
ZmVOb25lICYmIHJlc3BvbnNlQ09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFs
dWU6OlVuc2FmZU5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYWN0aXZlRG9j
dW1lbnRDT09QVmFsdWUgPT0gcmVzcG9uc2VDT09QVmFsdWUgJiYgYWN0aXZlRG9jdW1lbnROYXZp
Z2F0aW9uT3JpZ2luLmlzU2FtZU9yaWdpbkFzKHJlc3BvbnNlT3JpZ2luKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6Cisg
ICAgLy8gLSBpc0luaXRpYWxBYm91dEJsYW5rLAorICAgIC8vIC0gYWN0aXZlRG9jdW1lbnRDT09Q
VmFsdWUncyB2YWx1ZSBpcyAic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXBzIi4KKyAgICAvLyAtIHJl
c3BvbnNlQ09PUFZhbHVlIGlzICJ1bnNhZmUtbm9uZSIsCisgICAgLy8gdGhlbiByZXR1cm4gZmFs
c2UuCisgICAgaWYgKGlzSW5pdGlhbEFib3V0QmxhbmsgJiYgYWN0aXZlRG9jdW1lbnRDT09QVmFs
dWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6U2FtZU9yaWdpbkFsbG93UG9wdXBz
ICYmIHJlc3BvbnNlQ09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVu
c2FmZU5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNj
aGVjay1iY2ctc3dpdGNoLW5hdmlnYXRpb24tcmVwb3J0LW9ubHkKK3N0YXRpYyBib29sIGNoZWNr
SWZFbmZvcmNpbmdSZXBvcnRPbmx5Q09PUFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoKGJvb2wgaXNJbml0aWFsQWJvdXRCbGFuaywgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kmIGFjdGl2ZURvY3VtZW50Q09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURv
Y3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJl
c3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQoreworICAg
IGlmICghY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2go
aXNJbml0aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9ydE9ubHlWYWx1ZSwg
YWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AucmVwb3J0T25seVZh
bHVlLCByZXNwb25zZU9yaWdpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChj
aGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRp
YWxBYm91dEJsYW5rLCBhY3RpdmVEb2N1bWVudENPT1AucmVwb3J0T25seVZhbHVlLCBhY3RpdmVE
b2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC52YWx1ZSwgcmVzcG9uc2VPcmln
aW4pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChjaGVja0lmQ09PUFZhbHVlc1Jl
cXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxBYm91dEJsYW5rLCBhY3Rp
dmVEb2N1bWVudENPT1AudmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVz
cG9uc2VDT09QLnJlcG9ydE9ubHlWYWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHN0ZDo6dHVwbGU8UmVm
PFNlY3VyaXR5T3JpZ2luPiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+IGNvbXB1dGVSZXNwb25z
ZU9yaWdpbkFuZENPT1AoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4mIHJlcXVlc3RlciwgQ29udGVudFNlY3Vy
aXR5UG9saWN5KiByZXNwb25zZUNTUCkKK3sKKyAgICAvLyBOb24taW5pdGlhbCBlbXB0eSBkb2N1
bWVudHMgKGFib3V0OmJsYW5rKSBzaG91bGQgaW5oZXJpdCB0aGVpciBjcm9zcy1vcmlnaW4tb3Bl
bmVyLXBvbGljeSBmcm9tIHRoZSBuYXZpZ2F0aW9uJ3MgaW5pdGlhdG9yIHRvcCBsZXZlbCBkb2N1
bWVudCwKKyAgICAvLyBpZiB0aGUgaW5pdGlhdG9yIGFuZCBpdHMgdG9wIGxldmVsIGRvY3VtZW50
IGFyZSBzYW1lLW9yaWdpbiwgb3IgZGVmYXVsdCAodW5zYWZlLW5vbmUpIG90aGVyd2lzZS4KKyAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzY5MTMKKyAgICBpZiAo
U2VjdXJpdHlQb2xpY3k6OnNob3VsZEluaGVyaXRTZWN1cml0eU9yaWdpbkZyb21Pd25lcihyZXNw
b25zZS51cmwoKSkgJiYgcmVxdWVzdGVyKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxl
KHJlcXVlc3Rlci0+c2VjdXJpdHlPcmlnaW4sIHJlcXVlc3Rlci0+c2VjdXJpdHlPcmlnaW4tPmlz
U2FtZU9yaWdpbkFzKHJlcXVlc3Rlci0+dG9wT3JpZ2luKSA/IHJlcXVlc3Rlci0+Y3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kgOiBDcm9zc09yaWdpbk9wZW5lclBvbGljeSB7IH0pOworCisgICAgLy8g
SWYgdGhlIEhUVFAgcmVzcG9uc2UgY29udGFpbnMgYSBDU1AgaGVhZGVyLCBpdCBtYXkgc2V0IHNh
bmRib3ggZmxhZ3MsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBvcmlnaW4gdG8gYmVjb21lIHVuaXF1
ZS4KKyAgICBhdXRvIHJlc3BvbnNlT3JpZ2luID0gcmVzcG9uc2VDU1AgJiYgcmVzcG9uc2VDU1At
PnNhbmRib3hGbGFncygpICE9IFNhbmRib3hOb25lID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVu
aXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSk7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKHJlc3BvbnNlT3JpZ2luKSwgb2J0YWluQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3kocmVzcG9uc2UpKTsKK30KKworLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY29vcC1lbmZvcmNlCitzdGF0aWMgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCBlbmZvcmNlUmVzcG9uc2VDcm9z
c09yaWdpbk9wZW5lclBvbGljeShjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2Vt
ZW50UmVzdWx0JiBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4sIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiByZXNwb25zZUNPT1AsIGJvb2wgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ09PUERpc3Bvc2l0aW9uKT4mIHNlbmRWaW9s
YXRpb25SZXBvcnRzKQoreworICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRS
ZXN1bHQgbmV3Q09PUEVuZm9yY2VtZW50UmVzdWx0ID0geworICAgICAgICByZXNwb25zZVVSTCwK
KyAgICAgICAgcmVzcG9uc2VPcmlnaW4sCisgICAgICAgIHJlc3BvbnNlQ09PUCwKKyAgICAgICAg
dHJ1ZSAvKiBpc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlvblNvdXJjZSAqLywKKyAgICAgICAgY3Vy
cmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
LAorICAgICAgICBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0Lm5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHkKKyAgICB9OworCisgICAgaWYgKGNoZWNrSWZD
T09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50LCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LnZhbHVlLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmN1cnJl
bnRPcmlnaW4sIHJlc3BvbnNlQ09PUC52YWx1ZSwgcmVzcG9uc2VPcmlnaW4pKSB7CisgICAgICAg
IG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
ID0gdHJ1ZTsKKyAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydHMoQ09PUERpc3Bvc2l0aW9uOjpF
bmZvcmNlKTsKKyAgICB9CisKKyAgICBpZiAoY2hlY2tJZkVuZm9yY2luZ1JlcG9ydE9ubHlDT09Q
V291bGRSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNEaXNwbGF5aW5nSW5pdGlh
bEVtcHR5RG9jdW1lbnQsIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3ksIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3VycmVudE9yaWdpbiwg
cmVzcG9uc2VDT09QLCByZXNwb25zZU9yaWdpbikpIHsKKyAgICAgICAgbmV3Q09PUEVuZm9yY2Vt
ZW50UmVzdWx0Lm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHkg
PSB0cnVlOworICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0cyhDT09QRGlzcG9zaXRpb246OlJl
cG9ydGluZyk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdDsK
K30KKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0
bWwjb2J0YWluLWNvb3AKLUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0
YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5PiBjb2Vw
OwotICAgIGF1dG8gZW5zdXJlQ09FUCA9IFsmY29lcCwgJnJlc3BvbnNlLCAmY29udGV4dF0oKSAt
PiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiB7CisgICAgYXV0byBlbnN1cmVDT0VQID0gWyZj
b2VwLCAmcmVzcG9uc2VdKCkgLT4gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYgewogICAgICAg
ICBpZiAoIWNvZXApCi0gICAgICAgICAgICBjb2VwID0gb2J0YWluQ3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeShyZXNwb25zZSwgJmNvbnRleHQpOworICAgICAgICAgICAgY29lcCA9IG9idGFpbkNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocmVzcG9uc2UsIG51bGxwdHIpOwogICAgICAgICByZXR1
cm4gKmNvZXA7CiAgICAgfTsKICAgICBhdXRvIHBhcnNlQ09PUCA9IFsmcmVzcG9uc2UsICZlbnN1
cmVDT0VQXShIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lLCBhdXRvJiB2YWx1ZSwgYXV0byYgcmVw
b3J0aW5nRW5kcG9pbnQpIHsKQEAgLTk1LDcgKzE3MSw3IEBAIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlCiAgICAgfTsKIAogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHBvbGljeTsKLSAgICBp
ZiAoIWNvbnRleHQuc2V0dGluZ3NWYWx1ZXMoKS5jcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJs
ZWQgfHwgIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpLT5pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkoKSkKKyAgICBpZiAoIVNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9u
c2UudXJsKCkpLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSkKICAgICAgICAgcmV0dXJuIHBv
bGljeTsKIAogICAgIHBhcnNlQ09PUChIVFRQSGVhZGVyTmFtZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3ksIHBvbGljeS52YWx1ZSwgcG9saWN5LnJlcG9ydGluZ0VuZHBvaW50KTsKQEAgLTEzMiw3
ICsyMDgsNyBAQCB2b2lkIGFkZENyb3NzT3JpZ2luT3BlbmVyUG9saWN5SGVhZGVycyhSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgQ3Jvc3NPcgogLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY29vcC12aW9sYXRpb24tbmF2aWdhdGlv
bi10bwogdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25z
ZShGcmFtZSYgZnJhbWUsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNvb3AsIENPT1BEaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgVVJMJiBjb29wVVJMLCBjb25zdCBVUkwmIHByZXZpb3Vz
UmVzcG9uc2VVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBjb29wT3JpZ2luLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgcHJldmlvdXNSZXNwb25zZU9yaWdpbiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgYXV0byYgZW5kcG9pbnQgPSBkaXNw
b3NpdGlvbiA9PSBDT09QRGlzcG9zaXRpb246OlJlcG9ydGluZyA/IGNvb3AucmVwb3J0T25seVJl
cG9ydGluZ0VuZHBvaW50IDogY29vcC5yZXBvcnRpbmdFbmRwb2ludDsKKyAgICBhdXRvJiBlbmRw
b2ludCA9IGNvb3AucmVwb3J0aW5nRW5kcG9pbnRGb3JEaXNwb3NpdGlvbihkaXNwb3NpdGlvbik7
CiAgICAgaWYgKGVuZHBvaW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgs
NyArMjI0LDcgQEAgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BS
ZXNwb25zZShGcmFtZSYgZnJhbWUsIENyb3NzT3JpZ2luT3AKIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2Nvb3AtdmlvbGF0aW9uLW5hdmlnYXRp
b24tZnJvbQogdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNP
T1BSZXNwb25zZShGcmFtZSYgZnJhbWUsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNvb3AsIENP
T1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgVVJMJiBjb29wVVJMLCBjb25zdCBVUkwm
IG5leHRSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBuZXh0UmVzcG9uc2VPcmlnaW4sIGJvb2wgaXNDT09QUmVzcG9uc2VO
YXZpZ2F0aW9uU291cmNlLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBhdXRvJiBl
bmRwb2ludCA9IGRpc3Bvc2l0aW9uID09IENPT1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nID8gY29v
cC5yZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQgOiBjb29wLnJlcG9ydGluZ0VuZHBvaW50Owor
ICAgIGF1dG8mIGVuZHBvaW50ID0gY29vcC5yZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bvc2l0aW9u
KGRpc3Bvc2l0aW9uKTsKICAgICBpZiAoZW5kcG9pbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTE2MCw0ICsyMzYsMjggQEAgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5h
dmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZShGcmFtZSYgZnJhbWUsIENyb3NzT3IKICAgICB9
KTsKIH0KIAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3Np
bmctdGhlLXdlYi5odG1sI3Byb2Nlc3MtYS1uYXZpZ2F0ZS1mZXRjaCAoU3RlcCAxMi41LjYpCitz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IGRv
Q3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4mIHJl
cXVlc3RlciwgQ29udGVudFNlY3VyaXR5UG9saWN5KiByZXNwb25zZUNTUCwgU2FuZGJveEZsYWdz
IGVmZmVjdGl2ZVNhbmRib3hGbGFncywgYm9vbCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCYgY3Vy
cmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCwgY29uc3QgRnVuY3Rpb248dm9pZChDT09QRGlzcG9z
aXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiByZXNwb25z
ZUNPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbik+JiBzZW5kVmlvbGF0
aW9uUmVwb3J0cykKK3sKKyAgICBhdXRvIFtyZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QXSA9
IGNvbXB1dGVSZXNwb25zZU9yaWdpbkFuZENPT1AocmVzcG9uc2UsIHJlcXVlc3RlciwgcmVzcG9u
c2VDU1ApOworCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
YnJvd3NpbmctdGhlLXdlYi5odG1sI3Byb2Nlc3MtYS1uYXZpZ2F0ZS1mZXRjaCAoU3RlcCAxMi41
LjYuMikKKyAgICAvLyBJZiBzYW5kYm94RmxhZ3MgaXMgbm90IGVtcHR5IGFuZCByZXNwb25zZUNP
T1AncyB2YWx1ZSBpcyBub3QgInVuc2FmZS1ub25lIiwgdGhlbiBzZXQgcmVzcG9uc2UgdG8gYW4g
YXBwcm9wcmlhdGUgbmV0d29yayBlcnJvciBhbmQgYnJlYWsuCisgICAgaWYgKHJlc3BvbnNlQ09P
UC52YWx1ZSAhPSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lICYmIGVm
ZmVjdGl2ZVNhbmRib3hGbGFncyAhPSBTYW5kYm94Tm9uZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBlbmZvcmNlUmVzcG9uc2VDcm9zc09yaWdpbk9wZW5lclBv
bGljeShjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LCByZXNwb25zZS51cmwoKSwgcmVzcG9u
c2VPcmlnaW4sIHJlc3BvbnNlQ09PUCwgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQs
IFsmLCByZXNwb25zZU9yaWdpbiA9IHJlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1AgPSByZXNw
b25zZUNPT1BdKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikgeworICAgICAgICBzZW5kVmlv
bGF0aW9uUmVwb3J0cyhkaXNwb3NpdGlvbiwgcmVzcG9uc2VDT09QLCByZXNwb25zZU9yaWdpbik7
CisgICAgfSk7Cit9CisKK0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQg
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdDo6ZnJvbShjb25zdCBVUkwm
IGN1cnJlbnRVUkwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBjdXJyZW50T3JpZ2luLCBjb25zdCBD
cm9zc09yaWdpbk9wZW5lclBvbGljeSYgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4gcmVxdWVzdGVyLCBjb25zdCBVUkwmIG9wZW5lclVS
TCkKK3sKKyAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IHJlc3Vs
dCB7IGN1cnJlbnRVUkwsIFdURk1vdmUoY3VycmVudE9yaWdpbiksIGNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IH07CisgICAgcmVzdWx0LmlzQ3VycmVudENvbnRleHROYXZpZ2F0aW9uU291cmNlID0g
cmVxdWVzdGVyICYmIHJlc3VsdC5jdXJyZW50T3JpZ2luLT5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0
ZXItPnNlY3VyaXR5T3JpZ2luKTsKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEluaGVy
aXRTZWN1cml0eU9yaWdpbkZyb21Pd25lcihjdXJyZW50VVJMKSAmJiBvcGVuZXJVUkwuaXNWYWxp
ZCgpKQorICAgICAgICByZXN1bHQudXJsID0gb3BlbmVyVVJMOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmgKaW5kZXggODdhNWIxMzBjZGY2NTIxYjllMTdkOThk
MzRiN2QxYmJlMTUwYTU0Mi4uOTQ2NDc0YjU4NTgxOTNiMGIzMDZjOTJlMWY1YjJlOGJjMWZhYzli
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LmgKQEAgLTMxLDkgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29u
dGVudFNlY3VyaXR5UG9saWN5OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKK3N0cnVjdCBOYXZpZ2F0aW9uUmVxdWVzdGVyOworCit0eXBl
ZGVmIGludCBTYW5kYm94RmxhZ3M7CisKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL29yaWdpbi5odG1sI2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5LXZhbHVlCiBl
bnVtIGNsYXNzIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUgOiB1aW50OF90IHsKICAgICBV
bnNhZmVOb25lLApAQCAtNDIsNiArNDcsOCBAQCBlbnVtIGNsYXNzIENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5VmFsdWUgOiB1aW50OF90IHsKICAgICBTYW1lT3JpZ2luQWxsb3dQb3B1cHMKIH07CiAK
K2VudW0gY2xhc3MgQ09PUERpc3Bvc2l0aW9uIDogYm9vbCB7IFJlcG9ydGluZyAsIEVuZm9yY2Ug
fTsKKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0
bWwjY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kKIHN0cnVjdCBDcm9zc09yaWdpbk9wZW5lclBv
bGljeSB7CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSB2YWx1ZSB7IENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUgfTsKQEAgLTQ5LDExICs1NiwyNCBAQCBz
dHJ1Y3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgewogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5VmFsdWUgcmVwb3J0T25seVZhbHVlIHsgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6
VW5zYWZlTm9uZSB9OwogICAgIFN0cmluZyByZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQ7CiAK
KyAgICBjb25zdCBTdHJpbmcmIHJlcG9ydGluZ0VuZHBvaW50Rm9yRGlzcG9zaXRpb24oQ09PUERp
c3Bvc2l0aW9uKSBjb25zdDsKKyAgICBib29sIGhhc1JlcG9ydGluZ0VuZHBvaW50KENPT1BEaXNw
b3NpdGlvbikgY29uc3Q7CisKICAgICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBpc29sYXRlZENv
cHkoKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCitp
bmxpbmUgY29uc3QgU3RyaW5nJiBDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6cmVwb3J0aW5nRW5k
cG9pbnRGb3JEaXNwb3NpdGlvbihDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pIGNvbnN0Cit7
CisgICAgcmV0dXJuIGRpc3Bvc2l0aW9uID09IENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSA/IHJl
cG9ydGluZ0VuZHBvaW50IDogcmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50OworfQorCitpbmxp
bmUgYm9vbCBDcm9zc09yaWdpbk9wZW5lclBvbGljeTo6aGFzUmVwb3J0aW5nRW5kcG9pbnQoQ09P
UERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKSBjb25zdAoreworICAgIHJldHVybiAhcmVwb3J0aW5n
RW5kcG9pbnRGb3JEaXNwb3NpdGlvbihkaXNwb3NpdGlvbikuaXNFbXB0eSgpOworfQorCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBhLCBjb25z
dCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgYikKIHsKICAgICByZXR1cm4gYS52YWx1ZSA9PSBi
LnZhbHVlICYmIGEucmVwb3J0aW5nRW5kcG9pbnQgPT0gYi5yZXBvcnRpbmdFbmRwb2ludCAmJiBh
LnJlcG9ydE9ubHlWYWx1ZSA9PSBiLnJlcG9ydE9ubHlWYWx1ZSAmJiBhLnJlcG9ydE9ubHlSZXBv
cnRpbmdFbmRwb2ludCA9PSBiLnJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludDsKQEAgLTk4LDIw
ICsxMTgsMjEgQEAgc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3k6OmRlY29kZShEZWNvZGVyJgogCiAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjb29wLWVuZm9yY2VtZW50LXJlc3Vs
dAogc3RydWN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgewotICAg
IGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5IHsgZmFsc2Ug
fTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZv
cmNlbWVudFJlc3VsdCBmcm9tKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIGN1cnJlbnRPcmlnaW4sIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Jiwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW9uUmVxdWVzdGVyPiwgY29uc3QgVVJMJiBvcGVuZXJVUkwpOwor
CiAgICAgVVJMIHVybDsKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IGN1cnJlbnRPcmlnaW47CiAg
ICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CiAgICAg
Ym9vbCBpc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlvblNvdXJjZSB7IHRydWUgfTsKKyAgICBib29s
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggeyBmYWxzZSB9OworICAgIGJvb2wgbmVl
ZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaER1ZVRvUmVwb3J0T25seSB7IGZhbHNlIH07CiB9
OwogCi1lbnVtIGNsYXNzIENPT1BEaXNwb3NpdGlvbiA6IGJvb2wgeyBSZXBvcnRpbmcgLCBFbmZv
cmNlIH07Ci0KLUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik7CitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdpbk9wZW5lclBv
bGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5SGVhZGVycyhSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kmKTsKLXZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZp
Z2F0aW5nVG9DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSwgQ09P
UERpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgcHJldmlvdXNSZXNw
b25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci12b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2
aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlKEZyYW1lJiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3ksIENPT1BEaXNwb3NpdGlvbiwgY29uc3QgVVJMJiBjb29wVVJMLCBjb25zdCBVUkwmIG5leHRS
ZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBuZXh0UmVzcG9uc2VPcmlnaW4sIGJvb2wgaXNDT09QUmVzcG9uc2VOYXZpZ2F0
aW9uU291cmNlLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1lJiwg
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbiwgY29uc3QgVVJMJiBjb29w
VVJMLCBjb25zdCBVUkwmIHByZXZpb3VzUmVzcG9uc2VVUkwsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBjb29wT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcHJldmlvdXNSZXNwb25zZU9yaWdp
biwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJv
bUNPT1BSZXNwb25zZShGcmFtZSYsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBDT09QRGlzcG9z
aXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBuZXh0UmVzcG9uc2VVUkwsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBjb29wT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgbmV4
dFJlc3BvbnNlT3JpZ2luLCBib29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxDcm9z
c09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBkb0Nyb3NzT3JpZ2luT3BlbmVy
SGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiwgQ29udGVudFNlY3VyaXR5UG9saWN5KiByZXNw
b25zZUNTUCwgU2FuZGJveEZsYWdzIGVmZmVjdGl2ZVNhbmRib3hGbGFncywgYm9vbCBpc0Rpc3Bs
YXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lF
bmZvcmNlbWVudFJlc3VsdCYgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCwgY29uc3QgRnVu
Y3Rpb248dm9pZChDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiByZXNwb25zZUNPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25z
ZU9yaWdpbik+JiBzZW5kVmlvbGF0aW9uUmVwb3J0cyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZjA5ZTBl
ZGFiZWUwY2UwYWQ4M2QxMjI3Y2RlNDU3NjFkNWRiZmNhNC4uZTU1NWRlOWEzNjBiMmYyYzgyNWI3
MmZiY2Q2MGQ1NmJiZDFiZTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTWl4ZWRDb250ZW50Q2hlY2tlci5oIgorI2luY2x1
ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCkBAIC03MDIsOSArNzAzLDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAmJiAhZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZWRpcmVjdFJlc3Bv
bnNlKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFuZXdSZXF1ZXN0LnVybCgpLmhvc3Qo
KS5pc0VtcHR5KCkgJiYgU2VjdXJpdHlPcmlnaW46OnNob3VsZElnbm9yZUhvc3QobmV3UmVxdWVz
dC51cmwoKSkpIHsKICAgICAgICAgYXV0byB1cmwgPSBuZXdSZXF1ZXN0LnVybCgpOwogICAgICAg
ICB1cmwuc2V0SG9zdEFuZFBvcnQoeyB9KTsKQEAgLTc0NCwxMzQgKzc0MiwzNSBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dCwgY29uc3QgUmVzb3VyYwogICAgIHBvbGljeUNoZWNrZXIuY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdhdGlv
blBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLS8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2NoZWNrLWJyb3dzaW5nLWNvbnRleHQtZ3Jv
dXAtc3dpdGNoLWNvb3AtdmFsdWUKLXN0YXRpYyBib29sIGNoZWNrSWZDT09QVmFsdWVzUmVxdWly
ZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGJvb2wgaXNJbml0aWFsQWJvdXRCbGFuaywgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3lWYWx1ZSByZXNwb25zZUNPT1BWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIHJlc3BvbnNlT3JpZ2luKQotewotICAgIC8vIElmIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcg
YWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwg
cmVzcG9uc2VDT09QVmFsdWUsIGFuZCByZXNwb25zZU9yaWdpbiBpcyB0cnVlLCByZXR1cm4gZmFs
c2UuCi0gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2lu
Lmh0bWwjbWF0Y2hpbmctY29vcAotICAgIGlmIChhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSA9PSBD
cm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lICYmIHJlc3BvbnNlQ09PUFZh
bHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gcmVzcG9u
c2VDT09QVmFsdWUgJiYgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLmlzU2FtZU9yaWdp
bkFzKHJlc3BvbnNlT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSWYg
YWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6Ci0gICAgLy8gLSBpc0luaXRpYWxBYm91dEJs
YW5rLAotICAgIC8vIC0gYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUncyB2YWx1ZSBpcyAic2FtZS1v
cmlnaW4tYWxsb3ctcG9wdXBzIi4KLSAgICAvLyAtIHJlc3BvbnNlQ09PUFZhbHVlIGlzICJ1bnNh
ZmUtbm9uZSIsCi0gICAgLy8gdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgaWYgKGlzSW5pdGlhbEFi
b3V0QmxhbmsgJiYgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3lWYWx1ZTo6U2FtZU9yaWdpbkFsbG93UG9wdXBzICYmIHJlc3BvbnNlQ09PUFZhbHVlID09
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjaGVjay1iY2ctc3dpdGNoLW5hdmlnYXRp
b24tcmVwb3J0LW9ubHkKLXN0YXRpYyBib29sIGNoZWNrSWZFbmZvcmNpbmdSZXBvcnRPbmx5Q09P
UFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGJvb2wgaXNJbml0aWFsQWJv
dXRCbGFuaywgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGFjdGl2ZURvY3VtZW50Q09P
UCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwg
Y29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKQotewotICAgIGlmICghY2hlY2tJZkNPT1BWYWx1ZXNS
ZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJbml0aWFsQWJvdXRCbGFuaywgYWN0
aXZlRG9jdW1lbnRDT09QLnJlcG9ydE9ubHlWYWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9u
T3JpZ2luLCByZXNwb25zZUNPT1AucmVwb3J0T25seVZhbHVlLCByZXNwb25zZU9yaWdpbikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxBYm91dEJsYW5rLCBhY3RpdmVEb2N1
bWVudENPT1AucmVwb3J0T25seVZhbHVlLCBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4s
IHJlc3BvbnNlQ09PUC52YWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGlmIChjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaChpc0luaXRpYWxBYm91dEJsYW5rLCBhY3RpdmVEb2N1bWVudENPT1AudmFsdWUsIGFj
dGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QLnJlcG9ydE9ubHlWYWx1
ZSwgcmVzcG9uc2VPcmlnaW4pKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotc3RhdGljIHN0ZDo6dHVwbGU8UmVmPFNlY3VyaXR5T3JpZ2luPiwgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3k+IGNvbXB1dGVSZXNwb25zZU9yaWdpbkFuZENPT1AoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpSZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIsIENv
bnRlbnRTZWN1cml0eVBvbGljeSogcmVzcG9uc2VDU1ApCi17Ci0gICAgLy8gTm9uLWluaXRpYWwg
ZW1wdHkgZG9jdW1lbnRzIChhYm91dDpibGFuaykgc2hvdWxkIGluaGVyaXQgdGhlaXIgY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kgZnJvbSB0aGUgbmF2aWdhdGlvbidzIGluaXRpYXRvciB0b3Ag
bGV2ZWwgZG9jdW1lbnQsCi0gICAgLy8gaWYgdGhlIGluaXRpYXRvciBhbmQgaXRzIHRvcCBsZXZl
bCBkb2N1bWVudCBhcmUgc2FtZS1vcmlnaW4sIG9yIGRlZmF1bHQgKHVuc2FmZS1ub25lKSBvdGhl
cndpc2UuCi0gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy82OTEz
Ci0gICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9t
T3duZXIocmVzcG9uc2UudXJsKCkpICYmIHJlcXVlc3RlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShSZWYgeyByZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkgfSwgcmVxdWVzdGVy
LT5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKHJlcXVlc3Rlci0+dG9wT3JpZ2luKCkp
ID8gcmVxdWVzdGVyLT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpIDogQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kgeyB9KTsKLQotICAgIC8vIElmIHRoZSBIVFRQIHJlc3BvbnNlIGNvbnRhaW5zIGEg
Q1NQIGhlYWRlciwgaXQgbWF5IHNldCBzYW5kYm94IGZsYWdzLCB3aGljaCB3b3VsZCBjYXVzZSB0
aGUgb3JpZ2luIHRvIGJlY29tZSB1bmlxdWUuCi0gICAgYXV0byByZXNwb25zZU9yaWdpbiA9IHJl
c3BvbnNlQ1NQICYmIHJlc3BvbnNlQ1NQLT5zYW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSA/
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
cmVzcG9uc2UudXJsKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShyZXNw
b25zZU9yaWdpbiksIG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KHJlc3BvbnNlLCBkb2N1
bWVudCkpOwotfQotCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9i
cm93c2luZy10aGUtd2ViLmh0bWwjcHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEyLjUu
NikKLWJvb2wgRG9jdW1lbnRMb2FkZXI6OmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGQ6Om9wdGlvbmFsPENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IERvY3VtZW50TG9hZGVyOjpk
b0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogICAgIC8vIENPT1Agb25seSBhcHBsaWVzIHRvIHRvcC1sZXZlbCBi
cm93c2luZyBjb250ZXh0cy4KICAgICBpZiAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygp
LmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIGF1dG8gW3Jlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1BdID0gY29tcHV0ZVJlc3Bv
bnNlT3JpZ2luQW5kQ09PUChyZXNwb25zZSwgKm1fZnJhbWUtPmRvY3VtZW50KCksIG1fdHJpZ2dl
cmluZ0FjdGlvbi5yZXF1ZXN0ZXIoKSwgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCkpOwot
Ci0gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3Npbmct
dGhlLXdlYi5odG1sI3Byb2Nlc3MtYS1uYXZpZ2F0ZS1mZXRjaCAoU3RlcCAxMi41LjYuMikKLSAg
ICAvLyBJZiBzYW5kYm94RmxhZ3MgaXMgbm90IGVtcHR5IGFuZCByZXNwb25zZUNPT1AncyB2YWx1
ZSBpcyBub3QgInVuc2FmZS1ub25lIiwgdGhlbiBzZXQgcmVzcG9uc2UgdG8gYW4gYXBwcm9wcmlh
dGUgbmV0d29yayBlcnJvciBhbmQgYnJlYWsuCi0gICAgaWYgKHJlc3BvbnNlQ09PUC52YWx1ZSAh
PSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lICYmIGZyYW1lTG9hZGVy
KCktPmVmZmVjdGl2ZVNhbmRib3hGbGFncygpICE9IFNhbmRib3hOb25lKSB7Ci0gICAgICAgIGNh
bmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1
ZXN0KSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQgPSBlbmZvcmNlUmVzcG9uc2VDcm9zc09yaWdpbk9wZW5lclBvbGlj
eShyZXNwb25zZS51cmwoKSwgcmVzcG9uc2VPcmlnaW4sIHJlc3BvbnNlQ09PUCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLS8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L29yaWdpbi5odG1sI2Nvb3AtZW5mb3JjZQotQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNl
bWVudFJlc3VsdCBEb2N1bWVudExvYWRlcjo6ZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3koY29uc3QgVVJMJiByZXNwb25zZVVSTCwgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNl
T3JpZ2luLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QKQotewot
ICAgIEFTU0VSVChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKTsKLSAgICBBU1NFUlQobV9mcmFtZS0+
ZG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCku
Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkKCkpOwotCi0gICAgaWYgKCFtX2N1cnJlbnRD
b29wRW5mb3JjZW1lbnRSZXN1bHQpIHsKLSAgICAgICAgYXV0byByZXF1ZXN0ZXIgPSBtX3RyaWdn
ZXJpbmdBY3Rpb24ucmVxdWVzdGVyKCk7Ci0gICAgICAgIGJvb2wgY3VycmVudENvbnRleHRJc1Nv
dXJjZSA9IHJlcXVlc3RlciAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LmlzU2FtZU9yaWdpbkFzKHJlcXVlc3Rlci0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgIG1f
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCA9IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5m
b3JjZW1lbnRSZXN1bHQgewotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICBmYWxzZSwK
LSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLAotICAgICAgICAgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwKLSAgICAgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KCksCi0gICAgICAgICAgICBjdXJy
ZW50Q29udGV4dElzU291cmNlLAotICAgICAgICB9OwotICAgICAgICBpZiAoU2VjdXJpdHlQb2xp
Y3k6OnNob3VsZEluaGVyaXRTZWN1cml0eU9yaWdpbkZyb21Pd25lcihtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIG9wZW5lckZyYW1lID0gbV9mcmFt
ZS0+bG9hZGVyKCkub3BlbmVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJE
b2N1bWVudCA9IG9wZW5lckZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPnVybCA9IG9wZW5lckRvY3VtZW50LT51cmwo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQg
bmV3Q09PUEVuZm9yY2VtZW50UmVzdWx0ID0gewotICAgICAgICBtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsCi0gICAgICAgIG1f
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaER1ZVRvUmVwb3J0T25seSwKLSAgICAgICAgcmVzcG9uc2VVUkwsCi0gICAgICAgIHJlc3Bv
bnNlT3JpZ2luLAotICAgICAgICByZXNwb25zZUNPT1AsCi0gICAgICAgIHRydWUKLSAgICB9Owor
ICAgIFVSTCBvcGVuZXJVUkw7CisgICAgaWYgKGF1dG8gb3BlbmVyRnJhbWUgPSBtX2ZyYW1lLT5s
b2FkZXIoKS5vcGVuZXIoKSkKKyAgICAgICAgb3BlbmVyVVJMID0gb3BlbmVyRnJhbWUtPmRvY3Vt
ZW50KCkgPyBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkgOiBVUkwoKTsKIAotICAgIGlm
IChjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChmcmFt
ZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5LnZhbHVlLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4s
IHJlc3BvbnNlQ09PUC52YWx1ZSwgcmVzcG9uc2VPcmlnaW4pKSB7Ci0gICAgICAgIG5ld0NPT1BF
bmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoID0gdHJ1ZTsK
KyAgICBhdXRvIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBDcm9zc09yaWdpbk9wZW5l
clBvbGljeUVuZm9yY2VtZW50UmVzdWx0Ojpmcm9tKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpLCBtX3RyaWdnZXJpbmdBY3Rpb24ucmVxdWVz
dGVyKCksIG9wZW5lclVSTCk7CiAKKyAgICBhdXRvIG5ld0Nvb3BFbmZvcmNlbWVudFJlc3VsdCA9
IFdlYkNvcmU6OmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UocmVzcG9uc2Us
IG1fdHJpZ2dlcmluZ0FjdGlvbi5yZXF1ZXN0ZXIoKSwgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ku
Z2V0KCksIGZyYW1lTG9hZGVyKCktPmVmZmVjdGl2ZVNhbmRib3hGbGFncygpLCBmcmFtZUxvYWRl
cigpLT5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpLCBj
dXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LCBbJl0oQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCB0
aGUgY29uY2VwdCBvZiBicm93c2luZyBjb250ZXh0IGdyb3VwIGxpa2UgaW4gdGhlIHNwZWNpZmlj
YXRpb24gaW5zdGVhZCBvZiB0cmVhdGluZyB0aGUgd2hvbGUgcHJvY2VzcyBhcyBhIGdyb3VwLgog
ICAgICAgICBpZiAoUGFnZTo6bm9uVXRpbGl0eVBhZ2VDb3VudCgpID4gMSkgewotICAgICAgICAg
ICAgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoKm1fZnJh
bWUsIHJlc3BvbnNlQ09PUCwgQ09PUERpc3Bvc2l0aW9uOjpFbmZvcmNlLCByZXNwb25zZVVSTCwg
bV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3BvbnNlT3JpZ2luLCBtX2N1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIG1fcmVxdWVzdC5odHRw
UmVmZXJyZXIoKSwgbV9yZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7Ci0gICAgICAgICAgICBzZW5k
VmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSgqbV9mcmFt
ZSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGlj
eSwgQ09PUERpc3Bvc2l0aW9uOjpFbmZvcmNlLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQtPnVybCwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Vy
cmVudE9yaWdpbiwgcmVzcG9uc2VPcmlnaW4sIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC0+aXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG1fcmVxdWVzdC5odHRwVXNlckFn
ZW50KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNoZWNrSWZFbmZvcmNpbmdSZXBv
cnRPbmx5Q09PUFdvdWxkUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGZyYW1lTG9h
ZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCks
IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ks
IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3VycmVudE9yaWdpbiwgcmVzcG9uc2VD
T09QLCByZXNwb25zZU9yaWdpbikpIHsKLSAgICAgICAgbmV3Q09PUEVuZm9yY2VtZW50UmVzdWx0
Lm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHkgPSB0cnVlOwot
Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2YgYnJvd3NpbmcgY29udGV4dCBn
cm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQgb2YgdHJlYXRpbmcgdGhlIHdo
b2xlIHByb2Nlc3MgYXMgYSBncm91cC4KLSAgICAgICAgaWYgKFBhZ2U6Om5vblV0aWxpdHlQYWdl
Q291bnQoKSA+IDEpIHsKLSAgICAgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdh
dGluZ1RvQ09PUFJlc3BvbnNlKCptX2ZyYW1lLCByZXNwb25zZUNPT1AsIENPT1BEaXNwb3NpdGlv
bjo6UmVwb3J0aW5nLCByZXNwb25zZVVSTCwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0
LT51cmwsIHJlc3BvbnNlT3JpZ2luLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1
cnJlbnRPcmlnaW4sIG1fcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgbV9yZXF1ZXN0Lmh0dHBVc2Vy
QWdlbnQoKSk7Ci0gICAgICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdB
d2F5RnJvbUNPT1BSZXNwb25zZSgqbV9mcmFtZSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSwgQ09PUERpc3Bvc2l0aW9uOjpSZXBvcnRpbmcs
IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25zZVVSTCwgbV9jdXJy
ZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCByZXNwb25zZU9yaWdpbiwg
bV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5pc0N1cnJlbnRDb250ZXh0TmF2aWdhdGlv
blNvdXJjZSwgbV9yZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CisgICAgICAgICAgICBzZW5kVmlv
bGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSgqbV9mcmFtZSwgcmVzcG9u
c2VDT09QLCBkaXNwb3NpdGlvbiwgcmVzcG9uc2UudXJsKCksIGN1cnJlbnRDb29wRW5mb3JjZW1l
bnRSZXN1bHQudXJsLCByZXNwb25zZU9yaWdpbiwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1fcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOworICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0
aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRS
ZXN1bHQuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIGRpc3Bvc2l0aW9uLCBjdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LnVybCwgcmVzcG9uc2UudXJsKCksIGN1cnJlbnRDb29wRW5mb3JjZW1l
bnRSZXN1bHQuY3VycmVudE9yaWdpbiwgcmVzcG9uc2VPcmlnaW4sIGN1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQuaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG1fcmVxdWVzdC5o
dHRwVXNlckFnZW50KCkpOwogICAgICAgICB9CisgICAgfSk7CisgICAgaWYgKCFuZXdDb29wRW5m
b3JjZW1lbnRSZXN1bHQpIHsKKyAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxv
YWRlcigpLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3Q09PUEVuZm9yY2VtZW50UmVzdWx0Owor
ICAgIHJldHVybiBuZXdDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CiB9CiAKIGJvb2wgRG9jdW1lbnRM
b2FkZXI6OnRyeUxvYWRpbmdSZXF1ZXN0RnJvbUFwcGxpY2F0aW9uQ2FjaGUoKQpAQCAtOTY4LDYg
Kzg2Nyw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgeyByZXNwb25zZSB9LCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0gZWxzZQogICAg
ICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IG51bGxwdHI7CisgICAgaWYgKG1fZnJhbWUg
JiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygp
LmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCgpKQorICAgICAgICBtX3Jlc3BvbnNlQ09P
UCA9IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KHJlc3BvbnNlKTsKIAogI2lmIEVOQUJM
RShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogICAgIC8vIEZJWE1FKDIxODc3OSk6
IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgbWljcm9zb2Z0LmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9n
aW4gZmxvdyByZWRlc2lnbi4KQEAgLTEwMDEsMTUgKzkwMiw2IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlCiAgICAgcmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi1zdGF0aWMgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lv
biB0b0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24oY29uc3Qgc3RkOjpvcHRpb25h
bDxDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiYgY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdCkKLXsKLSAgICBpZiAoIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQgfHwgIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2gpCi0gICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uOjpTdGF5SW5Hcm91cDsKLSAgICBpZiAoY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kudmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3lWYWx1ZTo6U2FtZU9yaWdpblBsdXNDT0VQKQotICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cDsKLSAgICByZXR1cm4gQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3U2hhcmVkR3JvdXA7Ci19Ci0KIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpOwpAQCAtMTEwMywy
MCArOTk1LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpCiAgICAgfQogI2VuZGlmCiAKLSAg
ICBpZiAoIWRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UocmVzcG9uc2UpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RkOjpleGNoYW5nZShtX2lzQ29udGludWluZ0xv
YWRBZnRlclJlc3BvbnNlUG9saWN5Q2hlY2ssIGZhbHNlKSkgewotICAgICAgICBjb250aW51ZUFm
dGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb246OlVzZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1haW5SZXNvdXJjZUxvYWRlciA9
IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRlcigpOwogICAgIGlmIChtYWluUmVzb3VyY2VMb2FkZXIp
CiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRlci0+bWFya0luQXN5bmNSZXNwb25zZVBvbGljeUNo
ZWNrKCk7CiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGljeUNoZWNrSWRlbnRpZmll
cjo6Y3JlYXRlKCk7Ci0gICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
ID0gdG9Ccm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uKG1fY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdCk7Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tDb250ZW50UG9saWN5KG1f
cmVzcG9uc2UsIHJlcXVlc3RJZGVudGlmaWVyLCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG1haW5SZXNvdXJj
ZUxvYWRlciA9IFdURk1vdmUobWFpblJlc291cmNlTG9hZGVyKSwKKyAgICBmcmFtZUxvYWRlcigp
LT5jaGVja0NvbnRlbnRQb2xpY3kobV9yZXNwb25zZSwgcmVxdWVzdElkZW50aWZpZXIsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbWFpblJlc291cmNlTG9hZGVyID0gV1RG
TW92ZShtYWluUmVzb3VyY2VMb2FkZXIpLAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSwgcmVxdWVzdElkZW50aWZpZXJdIChQb2xp
Y3lBY3Rpb24gcG9saWN5LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgcmVzcG9uc2VJZGVudGlmaWVy
KSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzcG9uc2VJZGVudGlmaWVyLmlz
VmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIpKTsKICAgICAgICAgY29udGludWVBZnRlckNvbnRl
bnRQb2xpY3kocG9saWN5KTsKQEAgLTIxMDQsMTIgKzE5ODcsMTEgQEAgYm9vbCBEb2N1bWVudExv
YWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
KG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7CiAKICAgICBpZiAoIWZy
YW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KCkpIHsKLSAgICAgICAgZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZSht
X3Jlc3BvbnNlKTsKLQotICAgICAgICAvLyBGSVhNRTogTm9uLWluaXRpYWwgYWJvdXQ6Ymxhbmsg
bG9hZHMgbWF5IGNhdXNlIGEgYnJvd3NpbmcgY29udGV4dCBncm91cCBzd2l0Y2guIEhvd2V2ZXIs
IHN1Y2ggbG9hZCBpcyBzeW5jaHJvbm91cyBhbmQgZG9lc24ndAotICAgICAgICAvLyBpbnZvbHZl
IGEgcmVzcG9uc2UgcG9saWN5IGRlY2lzaW9uLiBBcyBhIHJlc3VsdCwgd2Ugc2ltdWxhdGUgYSBi
cm93c2luZyBjb250ZXh0IGdyb3VwIHN3aXRjaCB3aXRob3V0IGFjdHVhbGx5IHN3YXBwaW5nIHBy
b2Nlc3MuCi0gICAgICAgIGlmIChtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgJiYgbV9j
dXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoKQotICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+c3dpdGNoQnJvd3NpbmdDb250ZXh0c0dy
b3VwKCk7CisgICAgICAgIGlmIChhdXRvIGNvb3BFbmZvcmNlbWVudFJlc3VsdCA9IGRvQ3Jvc3NP
cmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UobV9yZXNwb25zZSkpIHsKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VDT09QID0gY29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5l
clBvbGljeTsKKyAgICAgICAgICAgIGlmIChjb29wRW5mb3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gpCisgICAgICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+
c3dpdGNoQnJvd3NpbmdDb250ZXh0c0dyb3VwKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBm
aW5pc2hlZExvYWRpbmcoKTsKQEAgLTIzMzksNyArMjIyMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICNlbmRpZgogCiAgICAgbV9tYWluUmVzb3VyY2UgPSBu
dWxscHRyOwotICAgIG1faXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjayA9
IGZhbHNlOworICAgIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZCA9IGZhbHNlOwogCiAgICAgdW5yZWdpc3RlclRlbXBvcmFyeVNlcnZpY2VXb3JrZXJDbGllbnQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggOGVlMTRhMjRk
NTdiMzRjYzdjYmVhNGNkYzc3MzEwMjcyNmQyZTVkNi4uOWZjNDEzN2E2OTAwZTI0YTFhODJjZWM3
Y2M3NTc5M2QzNDdlOTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTQyNSwxMCArNDI1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpIHsgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOyB9CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOyB9Ci0gICAg
c3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3koKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09y
aWdpbk9wZW5lclBvbGljeSkgOiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiYgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQ09PUDsgfQogCi0gICAgYm9vbCBpc0NvbnRpbnVpbmdM
b2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Ci0gICAgdm9pZCBzZXRJc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVy
UmVzcG9uc2VQb2xpY3lDaGVjaykgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclJlc3BvbnNlUG9s
aWN5Q2hlY2sgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Cisg
ICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVk
OyB9CisgICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFy
dGVkKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkgeyBt
X2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgPSBpc0NvbnRpbnVp
bmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAKIHByb3RlY3RlZDoKICAgICBX
RUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAtNDUwLDggKzQ1MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICB2b2lkIHVucmVnaXN0ZXJUZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50KCk7CiAKLSAg
ICBib29sIGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1
bHQgZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luLCBjb25zdCBDcm9zc09yaWdp
bk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5k
bGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBsb2Fk
TWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmKTsKIApAQCAtNTY2LDcgKzU2NSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2dvdEZpcnN0Qnl0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
Q2xpZW50UmVkaXJlY3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRpbmdNdWx0aXBhcnRD
b250ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9u
c2VQb2xpY3lDaGVjayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQ29udGludWluZ0xvYWRBZnRl
clByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgeyBmYWxzZSB9OwogCiAgICAgLy8gRklYTUU6IERvY3Vt
ZW50OjptX3Byb2Nlc3NpbmdMb2FkRXZlbnQgYW5kIERvY3VtZW50TG9hZGVyOjptX3dhc09ubG9h
ZERpc3BhdGNoZWQgYXJlIHJvdWdobHkgdGhlIHNhbWUKICAgICAvLyBhbmQgc2hvdWxkIGJlIG1l
cmdlZC4KQEAgLTU5MCw3ICs1ODksNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZVJl
c3BvbnNlPiBtX3Jlc3BvbnNlczsKICAgICBib29sIG1fc3RvcFJlY29yZGluZ1Jlc3BvbnNlcyB7
IGZhbHNlIH07CiAKLSAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5m
b3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBtX3Jlc3BvbnNlQ09PUDsKICAgICAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFJlc291cmNlTG9hZGVyPiwgUmVmUHRyPFN1YnN0
aXR1dGVSZXNvdXJjZT4+IFN1YnN0aXR1dGVSZXNvdXJjZU1hcDsKICAgICBTdWJzdGl0dXRlUmVz
b3VyY2VNYXAgbV9wZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggOWJlZGVjNjM2YjJiNGZlNjE4NGE0MTlhOWFiNjUzMzQ1
YzE1YmQ3My4uZjdkNGU3YWZiODc2NDZhZWU2NjJkNTdlZmY4MjgzY2Q3YjdjNzc1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7CiB9CiAKLXZvaWQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwMjk0ZGM0MzQyMDRiNmY5YmZm
MjkyNjFhMDc3OWI2OGEwNGZlYmQ1Li4yMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4
NWJmYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBGcmFtZSogZGlzcGF0Y2hDcmVh
dGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGljeSkgZmlu
YWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKIAotICAgIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmlu
ZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2Rl
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggMzdlNTExMzc5MjQ1ZjlmNThkNDE4MDk0ODMxNDY3MTViNGY2MGJk
OC4uNGI5NTE1ZjM3MGZiMjJjMjU5ZTI5NzY3ZDk2OGM0OTIzNmU5NzQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICB9CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIEJyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgQ29u
dGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgRnJhbWVMb2FkZXI6
OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFhY3RpdmVEb2N1bWVudExvYWRlcigpKSB7CiAg
ICAgICAgIC8vIExvYWQgd2FzIGNhbmNlbGxlZApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUG9saWN5Q2hlCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFZhbGlkYXRlIHRoZSBwb2xp
Y3kgY2hlY2sgaWRlbnRpZmllci4KLSAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlk
ZW50aWZpZXIsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2FkQXR0cmlidXRlKCksIGJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdURk1vdmUoZnVuY3Rpb24pKTsKKyAg
ICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJlc3BvbnNlLCBhY3Rp
dmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlkZW50aWZpZXIsIGFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPmRvd25sb2FkQXR0cmlidXRlKCksIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBjb25zdCBSZWZlcnJl
clBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBv
bGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwg
Y29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZvLCBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KQpAQCAt
MTQ3Niw3ICsxNDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0
JiYgcmVxdWVzdCkKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LT5j
cmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LnN1
YnN0aXR1dGVEYXRhKCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzV2ViQXJjaGl2ZUZvck1haW5G
cmFtZShyZXF1ZXN0LmlzUmVxdWVzdEZyb21DbGllbnRPclVzZXJJbnB1dCgpKTsKICAgICBsb2Fk
ZXItPnNldEFsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lKHJlcXVlc3QuaXNSZXF1ZXN0RnJvbUNs
aWVudE9yVXNlcklucHV0KCkpOwotICAgIGxvYWRlci0+c2V0SXNDb250aW51aW5nTG9hZEFmdGVy
UmVzcG9uc2VQb2xpY3lDaGVjayhyZXF1ZXN0LnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCgp
ID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURl
Y2lzaW9uKTsKKyAgICBsb2FkZXItPnNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQocmVxdWVzdC5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQoKSA9PSBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7
CiAgICAgYWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVkZWQobG9hZGVyLT5yZXF1ZXN0KCkp
OwogICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2Fk
ZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAppbmRleCBlNzQ3NWE0MjQ3ZTk5ZTZjNGI4NzgxYTk0MzIxNzViZWZiMmY0YjQ1Li5hZTNm
NmQ2MDZhOTFiOTA5OWRjOTA0YjlkNWM2ODIzMjg2MjE0YjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaApAQCAtMjIwLDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRGVjaXNpb24sIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwor
ICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAg
ICAgdm9pZCBkaWRFeHBsaWNpdE9wZW4oKTsKIApAQCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBUaGUgZm9sbG93aW5nIHNhbmRib3ggZmxhZ3Mgd2lsbCBiZSBmb3JjZWQsIHJlZ2Fy
ZGxlc3Mgb2YgY2hhbmdlcyB0bwogICAgIC8vIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBvZiBhbnkg
cGFyZW50IGZyYW1lcy4KICAgICB2b2lkIGZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBm
bGFncykgeyBtX2ZvcmNlZFNhbmRib3hGbGFncyB8PSBmbGFnczsgfQotICAgIFNhbmRib3hGbGFn
cyBlZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW5k
Ym94RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAKICAgICBib29sIGNoZWNr
SWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UpIGNvbnN0OwogCkBAIC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIGJv
b2wgbG9hZHNTeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc1N5bmNocm9ub3Vz
bHk7IH0KIAogICAgIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSB7IHJl
dHVybiBtX3N0YXRlTWFjaGluZTsgfQorICAgIGNvbnN0IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
JiBzdGF0ZU1hY2hpbmUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQogCiAgICAg
Ly8gRklYTUU6IHNob3VsZCByZXR1cm4gUmVmUHRyLgogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1l
KiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIERvY3VtZW50
KiBhY3RpdmVEb2N1bWVudCA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCA0YTcwNmM4N2Y1OGM4YjA4MjRlOGNlYjM2M2M2MTQ3YzI3Y2Rj
MzUyLi4wZjY0ZDEzODAyOTllNDc5ZGQwNDFkMWEzYTc3YWE0NjI1Nzk5ZWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTkxLDcgKzE5MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoU2hvdygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFBv
bGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2Rl
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA1YTBmYzQxZTljMzI5YTFiMzAzNDNmNDc4
ZjI5NWYyNmM2ZTZiNDExLi5mYzhjNWM5NzEyYTgwNTk5N2Y2ZjNiOTJlNjY2YjhjYmFkZTlmM2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC0zNywy
MiArMzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBHbG9iYWxGcmFtZUlk
ZW50aWZpZXIgY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKLXsKLSAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHsgZG9j
dW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIg
eyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1l
SWRlbnRpZmllciB7IH0pIH07Ci0gICAgcmV0dXJuIEdsb2JhbEZyYW1lSWRlbnRpZmllcigpOwot
fQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpSZXF1ZXN0ZXI6OlJlcXVlc3Rlcihjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpCi0gICAgOiBtX3VybCB7IFVSTCB7IGRvY3VtZW50LnVybCgpIH0gfQotICAg
ICwgbV9vcmlnaW4geyAmZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9Ci0gICAgLCBtX3RvcE9y
aWdpbiB7ICZkb2N1bWVudC50b3BPcmlnaW4oKSB9Ci0gICAgLCBtX2Nyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IHsgZG9jdW1lbnQuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSB9Ci0gICAgLCBtX2ds
b2JhbEZyYW1lSWRlbnRpZmllcihjcmVhdGVHbG9iYWxGcmFtZUlkZW50aWZpZXIoZG9jdW1lbnQp
KQotewotfQotCiBOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YTo6VUlF
dmVudFdpdGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYgdWlFdmVudCkK
ICAgICA6IGlzVHJ1c3RlZCB7IHVpRXZlbnQuaXNUcnVzdGVkKCkgfQogICAgICwgc2hpZnRLZXkg
eyB1aUV2ZW50LnNoaWZ0S2V5KCkgfQpAQCAtMTAzLDcgKzg3LDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+IG1vdXNlRXZlbnREYXRhRm9y
Rmlyc3RNb3UKIH0KIAogTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVu
dCYgcmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5p
dGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIE5hdmlnYXRpb25UeXBlIHR5
cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgRXZlbnQqIGV2ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkK
LSAgICA6IG1fcmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KKyAgICA6IG1fcmVxdWVzdGVyIHsgTmF2
aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIpIH0KICAgICAsIG1fcmVzb3VyY2VSZXF1
ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IHR5cGUgfQogICAgICwgbV9z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSB9CkBAIC0xMjksNyArMTEzLDcgQEAgc3RhdGljIE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25U
eXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWIKIH0KIAogTmF2
aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYgcmVxdWVzdGVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5pdGlhdGVkQnlNYWluRnJhbWUg
aW5pdGlhdGVkQnlNYWluRnJhbWUsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBp
c0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUpCi0gICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3RlciB9CisgICAgOiBtX3Jl
cXVlc3RlciB7IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmZyb20ocmVxdWVzdGVyKSB9CiAgICAgLCBt
X3Jlc291cmNlUmVxdWVzdCB7IHJlc291cmNlUmVxdWVzdCB9CiAgICAgLCBtX3R5cGUgeyBuYXZp
Z2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCAhIWV2ZW50KSB9CiAg
ICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4
IDFlOGZkZmEwMzM2YzdlM2ZjZGI4ZTIzZWZmY2NhODk0MGEzNDNiZDkuLjE2M2NjN2U4M2NiZDU1
OTlmZWE3NTM3MGQ3OTM0Y2MwOWFkZjEzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlw
ZXMuaCIKICNpbmNsdWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJMYXlv
dXRQb2ludC5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIuaCIKICNpbmNsdWRlICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02NCwyMyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25B
Y3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0gICAgY2xhc3MgUmVxdWVz
dGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwot
Ci0gICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICAg
ICAgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3Jp
Z2luOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCB7IHJldHVy
biAqbV90b3BPcmlnaW47IH0KLSAgICAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5OyB9Ci0gICAgICAgIGNvbnN0IEdsb2JhbEZyYW1lSWRlbnRpZmllciYgZ2xvYmFsRnJhbWVJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGcmFtZUlkZW50aWZpZXI7IH0KLSAg
ICBwcml2YXRlOgotICAgICAgICBVUkwgbV91cmw7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gbV9vcmlnaW47Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmln
aW47Ci0gICAgICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG1fY3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3k7Ci0gICAgICAgIEdsb2JhbEZyYW1lSWRlbnRpZmllciBtX2dsb2JhbEZyYW1lSWRlbnRp
ZmllcjsKLSAgICB9OwotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVyPiYgcmVxdWVz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVlc3RlcjsgfQogCiAgICAgc3RydWN0IFVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsKICAgICAg
ICAgVUlFdmVudFdpdGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYpOwpA
QCAtMTA1LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBjb3B5V2l0
aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSkgY29uc3Q7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9yZXF1ZXN0
ZXIgfHwgbV9yZXF1ZXN0ZXItPnVybCgpLmlzRW1wdHkoKSB8fCBtX3Jlc291cmNlUmVxdWVzdC51
cmwoKS5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9y
ZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0ZXItPnVybC5pc0VtcHR5KCkgfHwgbV9yZXNvdXJjZVJlcXVl
c3QudXJsKCkuaXNFbXB0eSgpOyB9CiAKICAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVJlcXVlc3QudXJsKCk7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CkBAIC0xNDcs
NyArMTMyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBEbyBub3QgYWRkIGEgc3Ryb25n
IHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYXRpbmcgZG9jdW1lbnQgb3IgYSBzdWJvYmplY3QgdGhh
dCBob2xkcyB0aGUKICAgICAvLyBvcmlnaW5hdGluZyBkb2N1bWVudC4gU2VlIGNvbW1lbnQgYWJv
dmUgdGhlIGNsYXNzIGZvciBtb3JlIGRldGFpbHMuCi0gICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0
ZXI+IG1fcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4g
bV9yZXF1ZXN0ZXI7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAg
IE5hdmlnYXRpb25UeXBlIG1fdHlwZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzZlNmUzOWE3OWY3MTVmZTVl
ZDAyODcxZGRmZWI1N2ExY2EzMzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvblJlcXVlc3Rlci5o
IgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHN0ZDo6b3B0
aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBjcmVhdGVHbG9iYWxGcmFtZUlkZW50aWZpZXIo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGFnZUlEID0gZG9jdW1l
bnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCk7CisgICAgYXV0byBmcmFtZUlEID0gZG9jdW1l
bnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpOworICAgIGlmICghcGFnZUlEIHx8ICFmcmFt
ZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIEdsb2JhbEZy
YW1lSWRlbnRpZmllciB7ICpwYWdlSUQsICpmcmFtZUlEIH07Cit9CisKK05hdmlnYXRpb25SZXF1
ZXN0ZXIgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCit7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgZG9jdW1lbnQudXJsKCksCisgICAgICAgIGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCksCisgICAgICAgIGRvY3VtZW50LnRvcE9yaWdpbigpLAorICAgICAgICBk
b2N1bWVudC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAorICAgICAgICBjcmVhdGVHbG9iYWxG
cmFtZUlkZW50aWZpZXIoZG9jdW1lbnQpCisgICAgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjNkYTUzMTdiNGE3ZDRlZjk5MjUzNzY3ZWRiZmJmNzc4ODc1N2YwNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmgKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuaCIKKyNpbmNsdWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERvY3VtZW50OworCitzdHJ1Y3QgTmF2aWdhdGlvblJlcXVlc3RlciB7CisgICAgc3Rh
dGljIE5hdmlnYXRpb25SZXF1ZXN0ZXIgZnJvbShEb2N1bWVudCYpOworCisgICAgVVJMIHVybDsK
KyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOworICAgIFJlZjxTZWN1cml0
eU9yaWdpbj4gdG9wT3JpZ2luOworICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVy
PiBnbG9iYWxGcmFtZUlkZW50aWZpZXI7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE5hdmlnYXRpb25SZXF1ZXN0
ZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdXJs
IDw8IHNlY3VyaXR5T3JpZ2luLmdldCgpIDw8IHRvcE9yaWdpbi5nZXQoKSA8PCBjcm9zc09yaWdp
bk9wZW5lclBvbGljeSA8PCBnbG9iYWxGcmFtZUlkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+IE5hdmlnYXRp
b25SZXF1ZXN0ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8VVJMPiB1cmw7CisgICAgZGVjb2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB0b3BPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5l
clBvbGljeT4gY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CisgICAgZGVjb2RlciA+PiBjcm9zc09y
aWdpbk9wZW5lclBvbGljeTsKKyAgICBpZiAoIWNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlv
bmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4+IGdsb2JhbEZyYW1lSWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IGdsb2JhbEZyYW1lSWRlbnRpZmllcjsKKyAgICBpZiAoIWdsb2JhbEZyYW1lSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBOYXZp
Z2F0aW9uUmVxdWVzdGVyIHsgV1RGTW92ZSgqdXJsKSwgc2VjdXJpdHlPcmlnaW4ucmVsZWFzZU5v
bk51bGwoKSwgdG9wT3JpZ2luLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoKmNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5KSwgV1RGTW92ZSgqZ2xvYmFsRnJhbWVJZGVudGlmaWVyKSB9OworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1JlcG9y
dGluZ0VuZHBvaW50c0NhY2hlLmNwcAppbmRleCBmMTFjNjU2NjVmNjNjNDBiZjdkMDQ0OGU3ZDQ5
ZGU0NGI0NzVjNmJkLi42NWNmOGEzMjU5NTQ5YTU4Y2NkNjRiNWZkNTM5MTUxYTVkMTNjNTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHNDYWNoZS5j
cHAKQEAgLTY3LDExICs2NywxNSBAQCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6flJlcG9ydGlu
Z0VuZHBvaW50c0NhY2hlKCkgPSBkZWZhdWx0OwogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3Jl
cG9ydGluZy8jcHJvY2Vzcy1oZWFkZXIKIHZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFk
ZEVuZFBvaW50c0Zyb21SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKLSAgICBhdXRvIHJlcG9ydFRvSGVhZGVyVmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OlJlcG9ydFRvKTsKKyAgICByZXR1cm4gYWRkRW5kUG9pbnRzRnJv
bVJlcG9ydFRvSGVhZGVyKHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5odHRwSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJlcG9ydFRvKSk7Cit9CisKK3ZvaWQgUmVwb3J0aW5nRW5kcG9pbnRz
Q2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXBvcnRUb0hlYWRlcihjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCBjb25zdCBTdHJpbmcmIHJlcG9ydFRvSGVhZGVyVmFsdWUpCit7CiAgICAgaWYgKHJlcG9y
dFRvSGVhZGVyVmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSk7Cisg
ICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2VV
UkwpOwogICAgIGlmIChzZWN1cml0eU9yaWdpbi0+aXNVbmlxdWUoKSB8fCAhc2VjdXJpdHlPcmln
aW4tPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTk0
LDEwICs5OCwxMCBAQCB2b2lkIFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlOjphZGRFbmRQb2ludHNG
cm9tUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcgogICAgIHdoaWxlIChkaWN0aW9u
YXJ5U3RhcnQgPCByZXBvcnRUb0hlYWRlclZhbHVlLmxlbmd0aCgpKSB7CiAgICAgICAgIGF1dG8g
aW5kZXhPZk5leHRUb3BMZXZlbENvbW1hID0gZmluZE5leHRUb3BMZXZlbENvbW1hKGRpY3Rpb25h
cnlTdGFydCk7CiAgICAgICAgIGlmIChpbmRleE9mTmV4dFRvcExldmVsQ29tbWEgPT0gbm90Rm91
bmQpIHsKLSAgICAgICAgICAgIGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmln
aW4tPmRhdGEoKSwgcmVzcG9uc2UudXJsKCksIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5n
KGRpY3Rpb25hcnlTdGFydCkpOworICAgICAgICAgICAgYWRkRW5kcG9pbnRGcm9tRGljdGlvbmFy
eShzZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCByZXNwb25zZVVSTCwgcmVwb3J0VG9IZWFkZXJWYWx1
ZS5zdWJzdHJpbmcoZGljdGlvbmFyeVN0YXJ0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgICAgICBhZGRFbmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5T3JpZ2luLT5k
YXRhKCksIHJlc3BvbnNlLnVybCgpLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmluZyhkaWN0
aW9uYXJ5U3RhcnQsIGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSAtIGRpY3Rpb25hcnlTdGFydCkp
OworICAgICAgICBhZGRFbmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5T3JpZ2luLT5kYXRh
KCksIHJlc3BvbnNlVVJMLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmluZyhkaWN0aW9uYXJ5
U3RhcnQsIGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSAtIGRpY3Rpb25hcnlTdGFydCkpOwogICAg
ICAgICBkaWN0aW9uYXJ5U3RhcnQgPSBpbmRleE9mTmV4dFRvcExldmVsQ29tbWEgKyAxOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2lu
dHNDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hl
LmgKaW5kZXggNjMwMGYyZTFjZjM2NTU5OGRlN2IyMjI1OTM4YWZlNjllNTNiYTRmMi4uMzljNjU4
ZTA1NmMyNjA1MzA5YjUwMGMzMTJlZTU0Yzc1ZWE2YjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmVwb3J0aW5nRW5kcG9pbnRzQ2Fj
aGU+IGNyZWF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBvcnRpbmdFbmRwb2ludHNDYWNo
ZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRFbmRQb2ludHNGcm9tUmVwb3J0VG9I
ZWFkZXIoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhZGRFbmRQb2ludHNG
cm9tUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFVSTCBlbmRwb2ludFVS
TChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIGdyb3VwKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZC5oCmluZGV4IGFiMTM1M2JjYzA4MmU0MWJhNTg5YzljMjljMjEwODUzYTM5OTUyODUuLjVk
ZTc5MmM0YWIzYWRhNTQ5MmE0YmJmYWJlZTJjNmJmNDBjM2JlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgKQEAgLTI5LDcg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCA6IHVpbnQ4X3QgeyBObywgWWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24sIFllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbiB9OworZW51bSBjbGFzcyBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiB1aW50OF90IHsgTm8sIFllc0FmdGVyTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uLCBZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC00MCw3ICs0MCw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkPiB7CiAg
ICAgICAgIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwKICAgICAgICAgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywKICAgICAgICAgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiwKLSAgICAgICAgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNB
ZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24KKyAgICAgICAgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQKICAgICA+Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCBhMzAxYjc4NDRjYzg1NWZlN2Q5OWY0ZDczNmZjZDg1Zjk2
NjkwMDA2Li5kZjU5ZGQxMmUwZjdhNDlhYjc1YWQ3MjgzNmQ4MDc0MWUwOGZhYjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtMjg1LDcgKzI4NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeShSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5PiYmKTsgLy8gT25seSB1c2VkIGJ5IFdlYktpdExlZ2FjeS4KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdl
Jik+Jik7Ci0gICAgc3RhdGljIHVuc2lnbmVkIG5vblV0aWxpdHlQYWdlQ291bnQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgbm9uVXRpbGl0eVBhZ2VDb3VudCgpOwogCiAg
ICAgdW5zaWduZWQgc3ViZnJhbWVDb3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDk3YmRkNGY4MjM3MzZjM2I2
N2I0NWYzMzgwNjdjMDI2ZTA2Y2MzZWEuLjk3OTgwMTA3N2UwMmJhN2I4M2QwMjY3NzIxMDY3YTIz
YzcwMWI4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0yODQzLDI5ICsyODQzLDYgQEAgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5KCkKIH0KICNlbmRp
ZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zl
cihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IHJlc291cmNlTG9h
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlm
ICghcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0gICAg
fQotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9j
ZXNzSWRlbnRpZmllcik7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIGF1dG8gc2Vzc2lvbiA9IGNvbm5l
Y3Rpb24tPm5ldHdvcmtTZXNzaW9uKCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIGF1dG8gbG9hZGVyID0g
Y29ubmVjdGlvbi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcigqcmVzb3VyY2VMb2FkSWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFsb2FkZXIpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQpOwotCi0gICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlm
aWVyKCk7Ci0gICAgc2Vzc2lvbi0+YWRkTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIo
bG9hZGVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZp
ZXIpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRl
cnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGU3NTg1Yjg2ZTYwYTdhMDQ1ZDg1NDg1
MTE4NjVhOTkyM2ZiYTJkMjMuLjNlNGJhZTMwMDhiYjBmNzAxYjFjODc1YTgzNDg1OGM0ZjQyZjlj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTQyNSw3ICs0MjUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3
b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0
YWNobWVudD4mJiwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOwotICAgIHZv
aWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyPiByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggOWFhOWVhYTlmMTMxYjAxZjY2OWI1Mzg4NTAwMjI2ZTQzNTJhMWQw
YS4uZTg5Zjg5N2M5NWFlOWJhOTM2YzYxMDA2OTMwNDNmZTRkMDQzNjIwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xOTYsOCArMTk2LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCi0gICAgUHJlcGFyZUxvYWRG
b3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJv
Y2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyPiByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBuZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllcikgQXN5bmMKLQogICAgIEFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdl
YktpdDo6V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlV2Vi
UGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBDb3VudE5vbkRlZmF1bHRTZXNzaW9u
U2V0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzaXplX3QgY291bnQpIEFzeW5jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGY0MWY1NTkwYmQ2ZmZmNzc2ODNjMGM4MjFi
MDVjNjZjYWU1NGExMTQuLjcxYmU4OTE4MTA1MmQ0M2NmZWU0NmU4ZDZmZDlkODI3YzlhNGZkODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMTQsNyArMTE0LDE2IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQ7CiAKICAgICBlbmNvZGVyIDw8IGRvY3VtZW50VVJMOwotICAgIAorCisgICAgZW5jb2Rl
ciA8PCBpc0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworICAgIGVuY29kZXIgPDwgZWZmZWN0aXZl
U2FuZGJveEZsYWdzOworICAgIGVuY29kZXIgPDwgb3BlbmVyVVJMOworICAgIGVuY29kZXIgPDwg
c291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CisKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRp
b25JRDsKKyAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25SZXF1ZXN0ZXI7CisKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAg
ZW5jb2RlciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKQEAgLTI5Miw2
ICszMDEsNDkgQEAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4g
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY28KICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXN1bHQuZG9jdW1lbnRVUkwgPSAqZG9jdW1lbnRVUkw7CiAKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkOworICAg
IGRlY29kZXIgPj4gaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQ7CisgICAgaWYgKCFp
c0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXN1bHQuaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQgPSAqaXND
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworICAgIGRlY29kZXIgPj4gaXNEaXNw
bGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQ7CisgICAgaWYgKCFpc0Rpc3BsYXlpbmdJbml0aWFs
RW1wdHlEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQu
aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQgPSAqaXNEaXNwbGF5aW5nSW5pdGlhbEVt
cHR5RG9jdW1lbnQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hGbGFncz4gZWZmZWN0aXZl
U2FuZGJveEZsYWdzOworICAgIGRlY29kZXIgPj4gZWZmZWN0aXZlU2FuZGJveEZsYWdzOworICAg
IGlmICghZWZmZWN0aXZlU2FuZGJveEZsYWdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJlc3VsdC5lZmZlY3RpdmVTYW5kYm94RmxhZ3MgPSAqZWZmZWN0aXZlU2FuZGJveEZs
YWdzOworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+IG9wZW5lclVSTDsKKyAgICBkZWNvZGVyID4+
IG9wZW5lclVSTDsKKyAgICBpZiAoIW9wZW5lclVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXN1bHQub3BlbmVyVVJMID0gKm9wZW5lclVSTDsKKworICAgIHN0ZDo6b3B0
aW9uYWw8Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k+IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5OworICAgIGRlY29kZXIgPj4gc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CisgICAg
aWYgKCFzb3VyY2VDcm9zc09yaWdpbk9wZW5lclBvbGljeSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICByZXN1bHQuc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgPSBXVEZN
b3ZlKCpzb3VyY2VDcm9zc09yaWdpbk9wZW5lclBvbGljeSk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBuYXZpZ2F0aW9uSUQ7CisgICAgZGVjb2RlciA+PiBuYXZpZ2F0aW9uSUQ7Cisg
ICAgaWYgKCFuYXZpZ2F0aW9uSUQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmVzdWx0Lm5hdmlnYXRpb25JRCA9ICpuYXZpZ2F0aW9uSUQ7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4+IG5hdmlnYXRpb25SZXF1ZXN0ZXI7
CisgICAgZGVjb2RlciA+PiBuYXZpZ2F0aW9uUmVxdWVzdGVyOworICAgIGlmICghbmF2aWdhdGlv
blJlcXVlc3RlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJlc3VsdC5u
YXZpZ2F0aW9uUmVxdWVzdGVyID0gV1RGTW92ZSgqbmF2aWdhdGlvblJlcXVlc3Rlcik7CisKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
c01vZGU+IHNlcnZpY2VXb3JrZXJzTW9kZTsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJz
TW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA0Y2I4NWNiYTIwNmI4MDI4N2Q0MmI1
YmU1NmJjYzhlOTMyNjEyNTUxLi4zZjgwNGQxNzUxYWUwODNhNDc0NWNjNjE0NTUyMjI3ZDVlZjM1
NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0
aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF2aWdhdGlvblJlcXVlc3Rlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KIApAQCAtNjcsNiArNjgsMTQgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOwogICAgIGJvb2wgY3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFVSTCBkb2N1bWVu
dFVSTDsKKworICAgIGJvb2wgaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQgeyBmYWxzZSB9
OworICAgIFdlYkNvcmU6OlNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5kYm94RmxhZ3MgeyBXZWJD
b3JlOjpTYW5kYm94Tm9uZSB9OworICAgIFVSTCBvcGVuZXJVUkw7CisgICAgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kgc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CisgICAg
dWludDY0X3QgbmF2aWdhdGlvbklEIHsgMCB9OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
TmF2aWdhdGlvblJlcXVlc3Rlcj4gbmF2aWdhdGlvblJlcXVlc3RlcjsKICAgICAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlIHNlcnZp
Y2VXb3JrZXJzTW9kZSB7IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDM2YWYyM2E4ODc1NmQyNGJkYTlmZGE1YjY4OWUwNTQyMGRiYzFiNGYuLjdi
ZGE5YTU0ZTRlOWIyNWVkOWZjNDM2ZGY3Y2I2MGRkYzMxZjI5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTY1Miw2ICs2NTMsNDUgQEAgYm9vbCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdFdvcmtlckxvYWRGb3JDcm9zc09yaWdpbkVt
YmVkZGVyUG9saWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNwcm9jZXNzLWEtbmF2
aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42KQorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRv
Q3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCit7CisgICAgLy8gQ09PUCBvbmx5IGFwcGxpZXMgdG8gdG9wLWxldmVsIGJy
b3dzaW5nIGNvbnRleHRzLgorICAgIGlmICghaXNNYWluRnJhbWVMb2FkKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKCFtX3BhcmFtZXRlcnMuaXNDcm9zc09yaWdpbk9wZW5lclBv
bGljeUVuYWJsZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnRTZWN1cml0eVBvbGljeT4gY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIGlmICgh
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3kpLmlzTnVsbCgpKSB7CisgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1ha2VV
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyByZXNwb25zZS51cmwoKSB9LCBudWxs
cHRyKTsKKyAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycyhD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgeyByZXNwb25zZSB9LCBvcmlnaW5h
bFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQ
YXJzaW5nRXJyb3JzOjpObyk7CisgICAgfQorCisgICAgaWYgKCFtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQpIHsKKyAgICAgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBtX3BhcmFtZXRlcnMu
c291cmNlT3JpZ2luID8gUmVmIHsgKm1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4gfSA6IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKTsKKyAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2Vt
ZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdDo6ZnJv
bShtX3BhcmFtZXRlcnMuZG9jdW1lbnRVUkwsIFdURk1vdmUoc291cmNlT3JpZ2luKSwgbV9wYXJh
bWV0ZXJzLnNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBtX3BhcmFtZXRlcnMubmF2aWdh
dGlvblJlcXVlc3RlciwgbV9wYXJhbWV0ZXJzLm9wZW5lclVSTCk7CisgICAgfQorCisgICAgbV9j
dXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gV2ViQ29yZTo6ZG9Dcm9zc09yaWdpbk9wZW5l
ckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLm5hdmlnYXRpb25SZXF1
ZXN0ZXIsIGNvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKSwgbV9wYXJhbWV0ZXJzLmVmZmVjdGl2
ZVNhbmRib3hGbGFncywgbV9wYXJhbWV0ZXJzLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50LCAqbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LCBbJl0oQ09PUERpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09Q
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pIHsKKyAgICAgICAgaWYgKHJl
c3BvbnNlQ09PUC5oYXNSZXBvcnRpbmdFbmRwb2ludChkaXNwb3NpdGlvbikpCisgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRp
bmdUb0NPT1BSZXNwb25zZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCByZXNwb25zZUNPT1As
IGRpc3Bvc2l0aW9uLCByZXNwb25zZS51cmwoKSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0LT51cmwsIHJlc3BvbnNlT3JpZ2luLmRhdGEoKSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0LT5jdXJyZW50T3JpZ2luLT5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZl
cnJlcigpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwVXNlckFnZW50KCksIHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVwb3J0VG8pIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOworICAgICAgICBpZiAobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9z
c09yaWdpbk9wZW5lclBvbGljeS5oYXNSZXBvcnRpbmdFbmRwb2ludChkaXNwb3NpdGlvbikpCisg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kVmlvbGF0aW9uUmVwb3J0V2hl
bk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LCBkaXNwb3NpdGlvbiwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3Bv
bnNlLnVybCgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4t
PmRhdGEoKSwgcmVzcG9uc2VPcmlnaW4uZGF0YSgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRS
ZXN1bHQtPmlzQ3VycmVudENvbnRleHROYXZpZ2F0aW9uU291cmNlLCBvcmlnaW5hbFJlcXVlc3Qo
KS5odHRwVXNlckFnZW50KCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgfSk7Cisg
ICAgcmV0dXJuICEhbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0OworfQorCitzdGF0aWMg
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiB0b0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGlj
eUVuZm9yY2VtZW50UmVzdWx0PiYgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCkKK3sKKyAg
ICBpZiAoIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgfHwgIWN1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gpCisgICAgICAgIHJl
dHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpTdGF5SW5Hcm91cDsKKyAg
ICBpZiAoY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kudmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6U2FtZU9yaWdpblBsdXND
T0VQKQorICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6
TmV3SXNvbGF0ZWRHcm91cDsKKyAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbjo6TmV3U2hhcmVkR3JvdXA7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2Us
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBM
T0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVk
LCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9
JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRhdGlvbj0lZCwgaGFzTmV0d29ya0xv
YWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2
ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgISFtX25l
dHdvcmtMb2FkQ2hlY2tlcik7CkBAIC03NDAsNiArNzgwLDE1IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVk
UmVzcG9uCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJl
c3BvbnNlKG1fcmVzcG9uc2UpKSB7CisgICAgICAgIExPQURFUl9SRUxFQVNFX0xPR19FUlJPUigi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiBJbnRlcnJ1cHRpbmcgbG9hZCBkdWUgdG8gQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdXJsID0gbV9yZXNwb25zZS51cmwoKV0geworICAg
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbmV0d29ya0xvYWQpCisgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIk5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jv
c3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0Nv
bnRyb2wgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgIH0KKwogICAgIGF1dG8gcmVzcG9uc2UgPSBzYW5p
dGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShSZXNvdXJjZVJlc3BvbnNlIHsgbV9yZXNwb25zZSB9LCBS
ZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlOjpDcm9zc09yaWdpblNhZmUpOwogICAg
IGlmIChpc1N5bmNocm9ub3VzKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzcG9uc2U6IFVzaW5nIHJlc3BvbnNlIGZvciBzeW5jaHJvbm91cyBsb2FkIik7CkBA
IC03NjEsNyArODEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAvLyBhIG1haW4g
cmVzb3VyY2UgYmVjYXVzZSB0aGUgZW1iZWRkaW5nIGNsaWVudCBtdXN0IGRlY2lkZSB3aGV0aGVy
IHRvIGFsbG93IHRoZSBsb2FkLgogICAgIGJvb2wgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSA9IGlzTWFpblJlc291cmNlKCk7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVS
ZXNwb25zZSBJUEMgKHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U9JWQpIiwg
d2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCB3aWxs
V2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIH0pOworICAgIHNlbmREaWRSZWNlaXZl
UmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXAocmVzcG9uc2UsIHdp
bGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOwogCiAgICAgaWYgKG1fcGFyYW1l
dGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQogICAgICAgICBtX2Nvbm5lY3Rpb24tPm5l
dHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fcGFy
YW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5mbywgcmVzcG9uc2UpLCAwKTsK
QEAgLTc4MCw2ICs4MjksMjIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29u
dGV4dEdyb3VwKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQoreworICAgIGF1dG8gYnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9IHRvQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbihtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQpOworICAgIGlmIChi
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGxvYWRlciA9IG1fY29ubmVjdGlvbi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxv
YWRlcihjb3JlSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQobG9hZGVyID09IHRoaXMpOworICAg
IGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gbG9h
ZGVyLT5pZGVudGlmaWVyKCk7CisgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrU2Vzc2lvbigpLT5h
ZGRMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlcihsb2FkZXIucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgUmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4geyByZXNwb25zZS51cmwo
KSB9OworICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUcmlnZ2VyQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKG1fcGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCwgbV9wYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgcmVzcG9uc2VEb21haW4sIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSksIDApOworfQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCkBA
IC05NDMsNiArMTAwOCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3Bv
bnNlKHJlZGlyZWN0UmVzcG9uc2UpKSB7CisgICAgICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNl
RXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZWRpcmVjdFJlcXVlc3QudXJs
KCksICJSZWRpcmVjdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBp
ZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogICAgICAg
ICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmVuYWJsZUNvbnRlbnRFeHRlbnNpb25zQ2hlY2so
KTsKQEAgLTEyNDksNiArMTMxOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgICAg
ICB9CiAgICAgfQogCisgICAgaWYgKCFkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3Bv
bnNlKHJlc3BvbnNlKSkgeworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoImRpZFJl
dHJpZXZlQ2FjaGVFbnRyeTogSW50ZXJydXB0aW5nIGxvYWQgZHVlIHRvIENyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5Iik7CisgICAgICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIk5hdmlnYXRpb24g
d2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgfQorCiAgICAgcmVzcG9uc2UgPSBzYW5p
dGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShXVEZNb3ZlKHJlc3BvbnNlKSwgUmVzb3VyY2VSZXNwb25z
ZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsKICAgICBpZiAoaXNTeW5jaHJv
bm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+cmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKTsKQEAgLTEyNTksNyArMTMzNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0g
aXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2Fj
aGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQ
QyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQpIiwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgc2VuZERpZFJlY2VpdmVSZXNwb25z
ZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChyZXNwb25zZSwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogCiAgICAgaWYgKG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYyMmI0Y2MzMDc0Y2JkNjgxNTJjZjQ5NTM2YzBmMGU4
YjNhMDRjZjAuLjc4ZWY0YjVlOTkxMGM0MTBjMDlmODc2OGRiMzY5NTkyYTlkODljMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMTQ2LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJE
aWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayopOwogI2VuZGlmCiAKKyAgICBib29s
IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgc2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlh
bGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CisKICAg
ICBib29sIGlzQXBwSW5pdGlhdGVkKCk7CiAKIHByaXZhdGU6CkBAIC0yNTcsNiArMjYwLDcgQEAg
cHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX3Jlc291cmNlTG9h
ZElEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwog
ICAgIFVSTCBtX2ZpcnN0UmVzcG9uc2VVUkw7IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVS
TCBsaXN0IChodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11
cmwtbGlzdCkuCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBv
bGljeUVuZm9yY2VtZW50UmVzdWx0PiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcAppbmRleCBkNDU1OTM1MjUzZjc5ZjVjMDQzMWRiYWVlZjkyOTMzNjA3MDRlYTI2
Li41N2I4YzE2YjU4NTdhMmE4NGM1NTRhMTU3NjY1YmU5YzhkNGY4NmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0xNjAsOCArMTYwLDEzIEBAIHZvaWQg
U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgYm9vCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoIW1fbG9hZGVy
LmRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UocmVzcG9uc2UpKSB7CisgICAg
ICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHJlc3BvbnNlLnVybCgpLCAiTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwotICAgIHNlbmRUb0NsaWVudChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKKyAgICBtX2xvYWRlci5z
ZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4dEdyb3Vw
KHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAg
aWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAgICAgICBtX2xv
YWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzMzRiODFjNmQ1ZGM4NTEzOTZlMjE0OTgwOTMy
ZjJjNjg5MjI5MDA3Li4zZmRlZGE4YmZjOTQ5YWJhMWQwOWFlMWVjMWU5NmY3OTU4ZDA1YjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMyNyw2ICszMjcs
NyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAg
ICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFSZWNvcmRl
cklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlBERlBsdWdpbklkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXInLApAQCAtNjkzLDYgKzY5NCw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzJzog
Wyc8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVz
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpDT0VQRGlzcG9zaXRpb24nOiBbJzxXZWJDb3JlL0Ny
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkNPT1BEaXNw
b3NpdGlvbic6IFsnPFdlYkNvcmUvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0JzogWyc8V2ViQ29yZS9BcHBI
aWdobGlnaHQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2Un
OiBbJzxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UnOiBbJzxXZWJDb3JlL0NvbG9yU3BhY2UuaD4nXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDM2NWE2MTlkN2E4YWU4MWE2MDMzYjA2NzExNDdlMDFhY2NkZDQxN2YuLmQyYzQ5
MDhjNTdjYWNhMWYyN2Y1ZDVjY2I2OWM0YTZiYWIwMTczOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NDM2LDYgKzQzNiwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZE5lZ290aWF0ZU1v
ZGVyblRMUyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgYwogICAgICAgICBwYWdlLT5k
aWROZWdvdGlhdGVNb2Rlcm5UTFModXJsKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIEJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lv
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmln
YXRpb246IHBhZ2VJRD0lIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEPSUiIFBSSXU2NCAiLCBicm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uPSV1LCBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0LCB0aGlzLCBwYWdlSUQudG9VSW50NjQo
KSwgbmF2aWdhdGlvbklELCAodW5zaWduZWQpYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNp
c2lvbiwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLnRvVUlu
dDY0KCkpOworICAgIGlmIChhdXRvKiBwYWdlID0gcGFnZUlEID8gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKHBhZ2VJRCkgOiBudWxscHRyKQorICAgICAgICBwYWdlLT50cmlnZ2VyQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCwgYnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgcmVzcG9uc2VEb21haW4sIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhsYXVuY2hlciwgY29ubmVjdGlv
bklkZW50aWZpZXIpOwpAQCAtNDc2LDE3ICs0ODMsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6
UAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldl
YlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNz
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXI+IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gTmV0d29ya1By
b2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXI6IHNvdXJjZVByb2Nl
c3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcjogJSIgUFJJ
dTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCByZXNvdXJjZUxv
YWRJZGVudGlmaWVyID8gcmVzb3VyY2VMb2FkSWRlbnRpZmllci0+dG9VSW50NjQoKSA6IDApOwot
ICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJh
bnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNDYwZmIzMmU4MTBlMmZmYjJjNDliODU4OTc5MjYzNmI3YmVhMGQ4
YS4uMzIwNDkyNzEwZTU2YzkzNDNiOWE0ZGY5ZTNiODYxYWVhZjU2MWMwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTIxNCw4ICsyMTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5n
U3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQcm9jZXNzSW5jb21pbmdTeW5j
TWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXI+KT4mJik7Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJl
dHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwog
CkBAIC0zMjIsNiArMzIwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHRyaWdnZXJCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiwg
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lKTsKKwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEs
IHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CiAKICAgICBX
ZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Np
b25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDY3NDkyNWM1ODFkYmQ5
ZjBhNzY5YTY3MDAzNmQ5YzZkZWYzNDA3MS4uNWZkOTNjMDczOGJiMTc0NjI3N2U4Y2ZmODRkNmUy
MWU1YWE2YWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzMsNiArNzMs
OCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAg
UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKKyAgICBUcmlnZ2VyQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiwg
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCisKICNpZiBVU0UoU09VUCkKICAgICBEaWRFeGNl
ZWRNZW1vcnlMaW1pdCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCBiMDkxOWI4Y2I0YTVhNDMzMmVmODgyZGI1YTQ0
YTJjMzQwOTI0YmVhLi4wZDNlN2QyZjRiZTJhOTk2Y2ZkOTgxODk4ZTY2NmY2ODRhMzc5NGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CkBAIC0zMzMsMTIgKzMzMywxMiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyCiAgICAgbV9wYWdl
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlm
aWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3Zl
KG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVz
dCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKIH0KIAotdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVk
QnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8p
LCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlN
RVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVx
dWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5oCmluZGV4IGE1ZGVjZmYyZjdlOTIxM2Q3ZDNiZWRhMGRiYzM2ZDZkOTk1NGMzZDMu
LmRjNzE4YzIwMTdiOTVhY2UyYTU3MmI0OTBjZjRiNjg5YjlhMmU0NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTI1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmlu
YWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5
SW5qZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNp
b24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVk
QnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNWE3ZGIwNGU4MjJlNTI2MTFiOWUyMmEzMjJhYWVlNGU4OTJi
N2Q3Ny4uZDAxMjc5NjdiZjQwYzhlZWFlMWRkMWQ1MDRkNjU2YTA2YjExNDc5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjQ2LDcgKzM2NDYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIH0KIAogICAgIGJvb2wgaXNTZXJ2ZXJTaWRlUmVk
aXJlY3QgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAmJiBuYXZpZ2F0aW9u
LmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpOwotICAgIGJvb2wgc2hvdWxkQ2xvc2VQcmV2aW91
c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbjsKKyAg
ICBib29sIHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQgPSBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7CiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVl
PFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgV1RGTW92ZShuZXdQcm9jZXNzKSwgV1RGTW92
ZShzdXNwZW5kZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXNTZXJ2ZXJTaWRl
UmVkaXJlY3QsIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCwgd2Vic2l0ZVBv
bGljaWVzLmdldCgpKTsKICAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgbmF2aWdhdGlvbiA9IFJlZiB7IG5hdmlnYXRpb24gfSwgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLT50YXJn
ZXRJdGVtKCkpIHsKQEAgLTU2MzEsMTIgKzU2MzEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWUKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLAot
ICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIEJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCisgICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBX
VEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJl
cXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBm
cmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVz
cG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
IGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dl
ZEJ5SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50
KCkpOwogCkBAIC01NjQ5LDcgKzU2NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAg
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25h
dmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBh
dXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCBy
ZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAK
LSAgICBSZWYgbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2ViUGFnZUlELCBmcmFtZUlELCBicm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlv
biksCisgICAgUmVmIGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdlYlBhZ2VJRCwgZnJhbWVJRCwg
aWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiks
CiAgICAgICAgIHByb2Nlc3MsIG5hdmlnYXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2Fy
bmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxw
dHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGlj
aWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwpAQCAtNTY1OCwy
NiArNTY1OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIGF1dG8gc2VuZGVy
ID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBm
cmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24p
IHsKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiwgY3Jl
YXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKSksIHdlYlBhZ2VJ
RCk7CiAgICAgICAgIH0pOwotCi0gICAgICAgIGF1dG8gd2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vOwotICAgICAgICBpZiAocG9s
aWN5QWN0aW9uID09IFBvbGljeUFjdGlvbjo6VXNlICYmIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24gIT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUlu
R3JvdXAgJiYgbmF2aWdhdGlvbikgewotICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkOiBQcm9j
ZXNzLXN3YXBwaW5nIGR1ZSB0byBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSwgbmV3UHJvY2Vz
c0lzQ3Jvc3NPcmlnaW5Jc29sYXRlZD0lZCIsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVj
aXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRH
cm91cCk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yTmF2
aWdhdGlvbjsKLSAgICAgICAgICAgIGlmIChicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246Ok5ld0lzb2xhdGVkR3Jv
dXApCi0gICAgICAgICAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQ
cm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCk7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBy
ZXNwb25zZURvbWFpbiB7IG5hdmlnYXRpb25SZXNwb25zZS0+cmVzcG9uc2UoKS51cmwoKSB9Owot
ICAgICAgICAgICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRo
aXMsIHJlc3BvbnNlRG9tYWluKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYnNpdGVE
YXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5z
ZmVyKHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBu
YXZpZ2F0aW9uLCBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25z
ZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBwcm9j
ZXNzRm9yTmF2aWdhdGlvbi5yZWxlYXNlTm9uTnVsbCgpXShhdXRvIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBXVEZN
b3ZlKHByb2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6
Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURl
Y2lzaW9uLCBudWxscHRyLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWUpOwotCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0
aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2Vzczo6WWVzKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9u
c2UpLCBXVEZNb3ZlKHNlbmRlciksIHsgfSwgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzcyk7
CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2Vu
ZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxk
RXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5vKTsKIAogICAgIGlmICh3YXNBbGxvd2VkQnlJ
bmplY3RlZEJ1bmRsZSkgewpAQCAtNTY5MSw2ICs1NjczLDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUo
bGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0cmlnZ2VyQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiwgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKQoreworICAgIEFTU0VSVChicm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uICE9IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdy
b3VwKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlv
bklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxw
dHI7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInRyaWdn
ZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb246IFByb2Nlc3Mtc3dhcHBp
bmcgZHVlIHRvIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5LCBuZXdQcm9jZXNzSXNDcm9zc09y
aWdpbklzb2xhdGVkPSVkLCBuYXZpZ2F0aW9uPSVwIiwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29s
YXRlZEdyb3VwLCBuYXZpZ2F0aW9uLmdldCgpKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZp
Z2F0aW9uOworICAgIGlmIChicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246Ok5ld0lzb2xhdGVkR3JvdXApCisgICAg
ICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1By
ZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQpOworICAgIGVsc2UKKyAgICAg
ICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VE
b21haW4pOworCisgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9u
LCBudWxscHRyLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZ
ZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIG51bGxwdHIsIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojp1
bmFibGVUb0ltcGxlbWVudFBvbGljeShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiZTEwMTA1ZjE2MTNiY2M0OWU3NzI1ZTgxODU1MWUz
YjVlNDBjZWYzLi42MzdmYTAwMTM1NTc4YzMxMTNiMGM2M2Q5NWVlMmEwOWMxNTVkZWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjg1LDYgKzY4NSw4IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV91bmRlcmxheUNvbG9yOyB9CiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJik7CiAKKyAgICB2b2lkIHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aEZvck5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNw
b25zZURvbWFpbiwgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKwogICAgIC8vIEF0IHRoaXMgdGltZSwg
bV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgY2FuIGJlIHNldCB2aWEgcGFnZUV4dGVuZGVk
QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkgd2hpY2ggaXMgYSBtZXNzYWdlCiAgICAgLy8gZnJv
bSB0aGUgVUlQcm9jZXNzLCBvciBieSBkaWRDb21taXRMYXllclRyZWUoKS4gV2hlbiBQTEFURk9S
TShNQUMpIGFkb3B0cyBVSSBzaWRlIGNvbXBvc2l0aW5nLCB3ZSBzaG91bGQgZ2V0IHJpZCBvZgog
ICAgIC8vIHRoZSBtZXNzYWdlIGVudGlyZWx5LgpAQCAtMTc0Niw3ICsxNzQ4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0
YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKICAgICB2b2lkIGxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKQEAgLTIwNjQsNyArMjA2Niw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wg
d2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGJl
Z2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAzMmUyZTRhNWM0NDllOTE4NzU2MDRmYWIwMjc4ZGI1ODA4ZjA4
MThlLi45OGI3NGYxYmEwM2YwOGY4Y2YxYWNkMDBmZTEzNjY3NmY0ODI1NTFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDcs
NyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBQ
b2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRy
aWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6
b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICBEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9v
bCBpc01haW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChzdHJ1Y3QgV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikgU3luY2hyb25vdXMKICAgICBEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMGQxODI5YjM5OGMzNjA1MWI4
NGUyMTVkYjNkMTZlYTM0Nzc5MTk2NS4uYWQzNWUyYmYxMWViMTkyZDk4MDZkNjE3ZGYzMzIzMmUz
YjA3ZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3QuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTM5OCw4
ICszOTksMjQgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBsb2FkUGFyYW1ldGVycy5z
aG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNo
ZWNrcygpOwogCiAgICAgbG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uID0gcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSAmJiByZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5pc01haW5GcmFt
ZSgpICYmIHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6TmF2aWdhdGU7CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlv
biAmJiBkb2N1bWVudCkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuc291cmNlQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kgPSBkb2N1bWVudC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKTsKIAogICAg
IGxvYWRQYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lID0gcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSAmJiByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubW9kZSA9PSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOworICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01h
aW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSkgeworICAgICAgICBpZiAoYXV0byBkb2N1
bWVudExvYWRlciA9IHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAg
ICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50
TG9hZGVyJj4oKmRvY3VtZW50TG9hZGVyKS5uYXZpZ2F0aW9uSUQoKTsKKyAgICAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25SZXF1ZXN0ZXIgPSBkb2N1bWVudExvYWRlci0+dHJpZ2dl
cmluZ0FjdGlvbigpLnJlcXVlc3RlcigpOworICAgICAgICB9CisgICAgfQorICAgIGxvYWRQYXJh
bWV0ZXJzLmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkID0gZG9jdW1lbnQgJiYgZG9j
dW1lbnQtPnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkKCk7CisgICAg
bG9hZFBhcmFtZXRlcnMuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQgPSBmcmFtZSAm
JiBmcmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQoKTsKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmVmZmVj
dGl2ZVNhbmRib3hGbGFncyA9IGZyYW1lLT5sb2FkZXIoKS5lZmZlY3RpdmVTYW5kYm94RmxhZ3Mo
KTsKKyAgICBpZiAoYXV0byBvcGVuZXJGcmFtZSA9IGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLm9w
ZW5lcigpIDogbnVsbHB0cikgeworICAgICAgICBpZiAoYXV0byBvcGVuZXJEb2N1bWVudCA9IG9w
ZW5lckZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMub3BlbmVy
VVJMID0gb3BlbmVyRG9jdW1lbnQtPnVybCgpOworICAgIH0KIAogICAgIGxvYWRQYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3kgPSAhbG9hZFBhcmFtZXRlcnMu
aXNNYWluRnJhbWVOYXZpZ2F0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA1OGYwYzQ0ZmFjMDlmMGViYzJkZDIxOTUwMzM2NGQ2NmNlOGE1MDMzLi5mZWM2ODBhMDY1
NTg2MDljYjQ0MTA5Y2RhZTMzOGU1MTRlYTUwODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZUxvYWRlckNsaWVudCgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKndlYlBh
Z2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKICAgICBSZWZQdHIgcHJvdmlzaW9uYWxMb2FkZXIgPSBz
dGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpOwogCi0gICAgaWYgKCFwcm92aXNpb25h
bExvYWRlciB8fCBwcm92aXNpb25hbExvYWRlci0+aXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9u
c2VQb2xpY3lDaGVjaygpKQorICAgIGlmICghcHJvdmlzaW9uYWxMb2FkZXIgfHwgcHJvdmlzaW9u
YWxMb2FkZXItPmlzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGF1dG8mIHVybCA9IHByb3Zpc2lvbmFsTG9hZGVy
LT51cmwoKTsKQEAgLTgxNyw3ICs4MTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFNob3coKQogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rp
b24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCiB7CiAgICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBp
ZiAoIXdlYlBhZ2UpIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
cwogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHdlYlBhZ2UsIG1f
ZnJhbWUucHRyKCksIHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSk7CiAgICAgLy8gSWYgYSBi
cm93c2luZyBjb250ZXh0IHN3aXRjaCBpcyByZXF1ZXN0ZWQsIHdlIHN0aWxsIG5lZWQgdG8gc2Vu
ZCB0aGUgSVBDIHRvIHRoZSBVSVByb2Nlc3MgaW4gb3JkZXIgdG8gcHJvY2Vzcy1zd2FwIGlmIG5l
Y2Vzc2FyeSwgZXZlbiB0aG91Z2ggdGhlCiAgICAgLy8gaW5qZWN0ZWQgYnVuZGxlIGhhcyBhbHJl
YWR5IGhhbmRsZWQgdGhlIHBvbGljeSBkZWNpc2lvbi4KLSAgICBpZiAocG9saWN5ID09IFdLQnVu
ZGxlUGFnZVBvbGljeUFjdGlvblVzZSAmJiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKSB7
CisgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKICAgICAg
ICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2U6IGNvbnRpbnVpbmcgYmVjYXVzZSBpbmplY3RlZCBidW5kbGUg
c2F5cyBzbyIpOwogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSwgaWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybjsKQEAgLTg0OSwxNCArODQ5LDExIEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zCiAgICAgYXV0byogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAg
ICAgYXV0byogcG9saWN5RG9jdW1lbnRMb2FkZXIgPSBjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmxv
YWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgYXV0byBu
YXZpZ2F0aW9uSUQgPSBwb2xpY3lEb2N1bWVudExvYWRlciA/IHN0YXRpY19jYXN0PFdlYkRvY3Vt
ZW50TG9hZGVyJj4oKnBvbGljeURvY3VtZW50TG9hZGVyKS5uYXZpZ2F0aW9uSUQoKSA6IDA7Ci0g
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyOwotICAgIGlmIChhdXRvIG1haW5SZXNvdXJjZUxvYWRlciA9
IHBvbGljeURvY3VtZW50TG9hZGVyID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZUxvYWRlcigpIDogbnVsbHB0cikKLSAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIg
PSBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKTsKIAogICAgIGJvb2wgd2FzQWxsb3dl
ZEJ5SW5qZWN0ZWRCdW5kbGUgPSBwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
OwogICAgIGF1dG8gcHJvdGVjdG9yID0gbV9mcmFtZS5jb3B5UmVmKCk7CiAgICAgdWludDY0X3Qg
bGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RG
TW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7Ci0gICAg
aWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVy
LCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25s
b2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVy
SUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKSB7CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUt
PmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJl
c3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNB
bGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSkpIHsKICAgICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29y
aywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1c2UgV2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
IHsgaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9
LCB7IH0gfSk7CiAgICAgfQpAQCAtOTU2LDkgKzk1Myw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXIocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2
aWdhdGlvbkFjdGlvbjo6WWVzKTsKIAogICAgIEFTU0VSVChuYXZpZ2F0aW9uQWN0aW9uLnJlcXVl
c3RlcigpKTsKLSAgICBhdXRvIHJlcXVlc3RlciA9IG5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdGVy
KCkudmFsdWUoKTsKKyAgICBhdXRvJiByZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVl
c3RlcigpLnZhbHVlKCk7CiAKLSAgICBhdXRvKiByZXF1ZXN0aW5nRnJhbWUgPSByZXF1ZXN0ZXIu
Z2xvYmFsRnJhbWVJZGVudGlmaWVyKCkuZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIoKS5mcmFtZUlEKSA6IG51
bGxwdHI7CisgICAgYXV0byogcmVxdWVzdGluZ0ZyYW1lID0gcmVxdWVzdGVyLmdsb2JhbEZyYW1l
SWRlbnRpZmllciAmJiByZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVyLT5mcmFtZUlEID8g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRl
bnRpZmllci0+ZnJhbWVJRCkgOiBudWxscHRyOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBvcmlnaW5hdGluZ0ZyYW1lSUQ7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7CiAgICAgaWYgKHJlcXVlc3Rp
bmdGcmFtZSkgewpAQCAtOTY5LDE1ICs5NjYsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQK
IAogICAgIEZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhIHsKICAgICAgICAg
bmF2aWdhdGlvbkFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgpID09IEluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpZZXMsCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3Rlci51cmwoKSB9
LAotICAgICAgICByZXF1ZXN0ZXIuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCksCisgICAgICAgIFJl
c291cmNlUmVxdWVzdCB7IHJlcXVlc3Rlci51cmwgfSwKKyAgICAgICAgcmVxdWVzdGVyLnNlY3Vy
aXR5T3JpZ2luLT5kYXRhKCksCiAgICAgICAgIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUlEKSwK
ICAgICAgICAgV1RGTW92ZShwYXJlbnRGcmFtZUlEKSwKICAgICB9OwogCiAgICAgc3RkOjpvcHRp
b25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKLSAgICBpZiAo
YXV0byYgcGFnZUlEID0gcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLnBhZ2VJRCkg
ewotICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlBhZ2UocGFnZUlEKSkKKyAgICBpZiAocmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllciAm
JiByZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVyLT5wYWdlSUQpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rl
ci5nbG9iYWxGcmFtZUlkZW50aWZpZXItPnBhZ2VJRCkpCiAgICAgICAgICAgICBvcmlnaW5hdGlu
Z1BhZ2VJRCA9IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsKICAgICB9CiAKQEAg
LTk5NSw4ICs5OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiA9IG5hdmlnYXRpb25BY3Rpb24u
dHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
aGFzT3BlbmVkRnJhbWVzID0gbmF2aWdhdGlvbkFjdGlvbi5oYXNPcGVuZWRGcmFtZXMoKTsKICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5vcGVuZWRCeURPTVdpdGhPcGVuZXIgPSBuYXZpZ2F0aW9u
QWN0aW9uLm9wZW5lZEJ5RE9NV2l0aE9wZW5lcigpOwotICAgIGlmIChhdXRvJiByZXF1ZXN0ZXIg
PSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpKQotICAgICAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5yZXF1ZXN0ZXJPcmlnaW4gPSByZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgp
OworICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnJlcXVlc3Rlck9yaWdpbiA9IHJlcXVlc3Rlci5z
ZWN1cml0eU9yaWdpbi0+ZGF0YSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnRhcmdldEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnRhcmdldEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zb3VyY2VCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyID0gbmF2aWdhdGlvbkFjdGlvbi5zb3VyY2VCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubG9ja0hpc3Rvcnkg
PSBuYXZpZ2F0aW9uQWN0aW9uLmxvY2tIaXN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGE2OTg1YTc4MDQ0YWIyYTc2M2U0OTRjNjg1Nzk4MzMxNzZhYTc3YTkuLjQwZjg2
YmRmYWNlZDRhOGI1ZTY2ODU1NWJiZTkyZDA2ZDNlZjBkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBX
ZWJDb3JlOjpOZXdGcmFtZU9wZW5lclBvbGljeSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNo
b3coKSBmaW5hbDsKICAgICAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6
RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBX
ZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ4M2E4OTU0N2ZmZmJkZmIy
OTI5YzJmOTZmNzUwMzE1ZDg4MWE2MmUuLjQ0OTA3N2EzODY3Y2FhNTA1ZjNhYTNlMTIyMzhlZTM0
NzAyZGFiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xNjIsNiArMTYyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRhY3RzUmVxdWVz
dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVBh
c3RlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgpAQCAtNDM0OCw2ICs0MzQ5LDI5IEBAIHZvaWQg
V2ViUGFnZTo6c2VuZENPRVBDT1JQVmlvbGF0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBTZWN1cml0eU9yaWdpCiAgICAgICAgIFdlYkNvcmU6OnNlbmRDT0VQQ09SUFZpb2xhdGlv
bigqZnJhbWUtPmNvcmVGcmFtZSgpLCBlbWJlZGRlck9yaWdpbiwgZW5kcG9pbnQsIGRpc3Bvc2l0
aW9uLCBkZXN0aW5hdGlvbiwgYmxvY2tlZFVSTCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2VuZFZp
b2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjb29wLCBDT09QRGlzcG9z
aXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91
c1Jlc3BvbnNlVVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgcHJldmlvdXNSZXNwb25zZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgcmVwb3J0
VG9IZWFkZXJWYWx1ZSkKK3sKKyAgICBpZiAoIXJlcG9ydFRvSGVhZGVyVmFsdWUuaXNFbXB0eSgp
KQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZXBvcnRpbmdFbmRwb2ludHNDYWNo
ZSgpLmFkZEVuZFBvaW50c0Zyb21SZXBvcnRUb0hlYWRlcihjb29wVVJMLCByZXBvcnRUb0hlYWRl
clZhbHVlKTsKKworICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2YgYnJvd3NpbmcgY29u
dGV4dCBncm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQgb2YgdHJlYXRpbmcg
dGhlIHdob2xlIHByb2Nlc3MgYXMgYSBncm91cC4KKyAgICBpZiAoUGFnZTo6bm9uVXRpbGl0eVBh
Z2VDb3VudCgpIDw9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOyBmcmFtZS0+Y29yZUZy
YW1lKCkpCisgICAgICAgIFdlYkNvcmU6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGlu
Z1RvQ09PUFJlc3BvbnNlKCpmcmFtZS0+Y29yZUZyYW1lKCksIGNvb3AsIGRpc3Bvc2l0aW9uLCBj
b29wVVJMLCBwcmV2aW91c1Jlc3BvbnNlVVJMLCBjb29wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCks
IHByZXZpb3VzUmVzcG9uc2VPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgcmVmZXJyZXIsIHVzZXJB
Z2VudCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0
aW5nQXdheUZyb21DT09QUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5JiBjb29wLCBDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24s
IGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBuZXh0UmVzcG9uc2VVUkwsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBu
ZXh0UmVzcG9uc2VPcmlnaW4sIGJvb2wgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9uU291cmNlLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHRoZSBjb25jZXB0
IG9mIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpbnN0
ZWFkIG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFzIGEgZ3JvdXAuCisgICAgaWYgKFBh
Z2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKSA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsgZnJhbWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBXZWJDb3JlOjpzZW5kVmlvbGF0aW9uUmVw
b3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZSgqZnJhbWUtPmNvcmVGcmFtZSgp
LCBjb29wLCBkaXNwb3NpdGlvbiwgY29vcFVSTCwgbmV4dFJlc3BvbnNlVVJMLCBjb29wT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCksIG5leHRSZXNwb25zZU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBp
c0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3VyY2UsIHVzZXJBZ2VudCk7Cit9CisKIHZvaWQgV2Vi
UGFnZTo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OkluaXQmJiBldmVudEluaXQp
CiB7CiAgICAgYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA5YmM0MTA3Nzg2OTkzYjVjZDAwMjU0MmJjODkwOWNiYWQwNThjNDM3Li4xMjZmNDA2NzU4MWNi
YTZiYzYyZTdiNzZiZGViMDExOTRlNjQ1YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NDEsNiArNDQxLDggQEAgcHVibGljOgogICAgIHZvaWQg
c2VuZENTUFZpb2xhdGlvblJlcG9ydChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYpOwogICAgIHZvaWQgc2VuZENP
RVBQb2xpY3lJbmhlcml0ZW5jZVZpb2xhdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZW1iZWRkZXJPcmlnaW4sIGNvbnN0IFN0
cmluZyYgZW5kcG9pbnQsIFdlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwpOwogICAgIHZvaWQgc2VuZENPRVBDT1JQVmlvbGF0
aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBlbWJlZGRlck9yaWdpbiwgY29uc3QgU3RyaW5nJiBlbmRwb2ludCwgV2ViQ29yZTo6
Q09FUERpc3Bvc2l0aW9uLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uLCBjb25z
dCBVUkwmIGJsb2NrZWRVUkwpOworICAgIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZp
Z2F0aW5nVG9DT09QUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSYsIFdlYkNvcmU6OkNPT1BEaXNwb3NpdGlvbiwg
Y29uc3QgVVJMJiBjb29wVVJMLCBjb25zdCBVUkwmIHByZXZpb3VzUmVzcG9uc2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgY29vcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiByZXBvcnRU
b0hlYWRlclZhbHVlKTsKKyAgICB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGlu
Z0F3YXlGcm9tQ09PUFJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmLCBXZWJDb3JlOjpDT09QRGlzcG9zaXRpb24s
IGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBuZXh0UmVzcG9uc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgY29vcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBuZXh0UmVzcG9uc2VPcmlnaW4sIGJvb2wgaXNDT09QUmVzcG9uc2VO
YXZpZ2F0aW9uU291cmNlLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCBlbnF1
ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OkluaXQmJik7CiAKICAgICAv
LyAtLSBDYWxsZWQgYnkgdGhlIERyYXdpbmdBcmVhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDI0ZjdhZmYwODky
ZDAxMjI0MGNiZWZhYjI5OTkyNTQwYTFmYWJiMC4uOGFmYzRlYTVlM2NkMDFjMmFjM2E0YTM0MWYz
MTZhOWEyMTEzMzJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFVSTCByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UgcmVwb3J0RGF0YSkKICAgICBTZW5kQ09FUFBvbGljeUluaGVyaXRlbmNlVmlvbGF0
aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIGVtYmVkZGVyT3JpZ2luLCBTdHJpbmcgZW5kcG9pbnQsIGVudW06Ym9v
bCBXZWJDb3JlOjpDT0VQRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFN0cmluZyB0eXBlLCBVUkwg
YmxvY2tlZFVSTCkKICAgICBTZW5kQ09FUENPUlBWaW9sYXRpb24oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZW1iZWRk
ZXJPcmlnaW4sIFN0cmluZyBlbmRwb2ludCwgZW51bTpib29sIFdlYkNvcmU6OkNPRVBEaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVz
dGluYXRpb24gZGVzdGluYXRpb24sIFVSTCBibG9ja2VkVVJMKQorICAgIFNlbmRWaW9sYXRpb25S
ZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY29vcCwg
ZW51bTpib29sIFdlYkNvcmU6OkNPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgVVJMIGNvb3BV
UkwsIFVSTCBwcmV2aW91c1Jlc3BvbnNlVVJMLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGNvb3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgcHJl
dmlvdXNSZXNwb25zZU9yaWdpbiwgU3RyaW5nIHJlZmVycmVyLCBTdHJpbmcgdXNlckFnZW50LCBT
dHJpbmcgcmVwb3J0VG9IZWFkZXJWYWx1ZSkKKyAgICBTZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5h
dmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNvb3AsIGVudW06
Ym9vbCBXZWJDb3JlOjpDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFVSTCBjb29wVVJMLCBV
UkwgbmV4dFJlc3BvbnNlVVJMLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGNv
b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbmV4dFJlc3BvbnNl
T3JpZ2luLCBib29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgU3RyaW5nIHVzZXJB
Z2VudCkKICAgICBFbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudDo6SW5pdCBldmVudEluaXQpCiAKICAgICBUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3Nh
Z2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTNmNWY5YzlmMGZmZDhhZWUyZGJmMGU3
ODMyMTZiYzNjMGE3NTVjNi4uYTI1OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThjZjU5MWViOGVh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb24mLCBXZWJDb3JlOjpOZXdGcmFtZU9wZW5lclBvbGljeSkgZmluYWw7
CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKIAotICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBm
cmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5
RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3MWE3MTViMzdmYTVlNmM1
Zjc0NDRlMjM3YzgyZDE1OWNlMDg4YWQxLi4zNTZjOTNmMzFlOGZhNTZkOTQyNDFjNWIyMGE5Mjll
NGJhYTQ4Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtODU1LDcgKzg1NSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAgW1t3ZWJW
aWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3XTsKIH0KIAotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNTg4OTky
ZDRhYWZlNWZjODM5YjY1NGRjZWRhODkyZGQ3MDM1ODIzYi4uZmIyNTgzZmU5NzI2NGM3M2VlYjIz
ZWJiNGQzOTkwYjNiODRhMDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
NTE5LDcgKzUxOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygp
CiAgICAgICAgIHVpLT53ZWJWaWV3U2hvdyh3ZWJWaWV3KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1
bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewog
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCAxZTMwMzFmOWI1MDJjM2RkODhhOGE1NDhhNDdjN2YyYjZiOTkzMGU2Li4wOTViMjUzNWE2
ODc1NDdiZDc4ODQ2ZjkwNzZhZTZjN2QwMTYyOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25l
KE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSos
IGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNiNjExYTg3N2I2YTlmZDkwMGY3OGQ5
Yzc2ZTViZjc2MTgxNjE2NDguLmJhNzM0ZjlhNTNmNWJjMWI4ZjVmMTU5NjdhNWE2ZDcyZWI3ZjJj
MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMS0wOS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgaGFuZGxpbmcgdG8g
dGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzA4MTIKKyAgICAgICAgPHJkYXI6Ly84MzUwNDg0Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3J0IENPT1AgQVBJIHRlc3Rz
IGZyb20gUFNPTlNjaGVtZUhhbmRsZXIgdG8gSFRUUFNlcnZlci4gVGhpcyB3YXMgbmVjZXNzYXJ5
IHNpbmNlIGN1c3RvbSBzY2hlbWUgaGFuZGxlcgorICAgICAgICBsb2FkcyBkbyBub3QgZ28gdmlh
IHRoZSBuZXR3b3JrUHJvY2VzcyAoV2hlcmUgQ09PUCBoYW5kbGluZyBpcyBub3cgaW1wbGVtZW50
ZWQpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3
ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bUFNPTlNjaGVtZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKwogMjAyMS0w
OS0yNCAgU2FtIFNuZWRkb24gIDxnc25lZGRlcnNAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91
dFRlc3RGaW5kZXIgc2hvdWxkIHJldHVybiB0ZXN0cyBpbiBvcmRlcgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0KaW5kZXggYzYzMzE2Nzg1ODUwNzNkZGViZGY0NDI2ZDIwM2RmYjFkNTZi
YjcyMi4uNDIwN2JlOGRhZDY0OWFjODQyOTliZGM4NWFkODRhOGQ3ZTM5ODI1OCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNv
bmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5oIgpAQCAtMTQxLDYgKzE0MiwxMiBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IG5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gZGlkUwogICAgIGRv
bmUgPSB0cnVlOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIF9O
dWxsYWJsZSBjcmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9XS19T
VFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VS
TEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7Cit9CisKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKiluYXZp
Z2F0aW9uCiB7CiAgICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWQgPSB0cnVlOwpAQCAtMjUwLDE1
ICsyNTcsMTIgQEAgQGludGVyZmFjZSBQU09OU2NoZW1lIDogTlNPYmplY3QgPFdLVVJMU2NoZW1l
SGFuZGxlcj4gewogICAgIGNvbnN0IGNoYXIqIF9ieXRlczsKICAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBfcmVkaXJlY3RzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNEYXRh
Pj4gX2RhdGFNYXBwaW5nczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfY29vcFZhbHVl
czsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfY29lcFZhbHVlczsKICAgICBIYXNoU2V0
PGlkIDxXS1VSTFNjaGVtZVRhc2s+PiBfcnVubmluZ1Rhc2tzOwogICAgIGJvb2wgX3Nob3VsZFJl
c3BvbmRBc3luY2hyb25vdXNseTsKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihj
b25zdCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0
cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlv
blVSTFN0cmluZzsKIC0gKHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICop
dXJsU3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciopZGF0YTsKLS0gKHZvaWQpYWRkTWFwcGluZ0Zy
b21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciopZGF0
YSB3aXRoQ09PUFZhbHVlOihjb25zdCBjaGFyKiljb29wVmFsdWUgd2l0aENPRVBWYWx1ZTooY29u
c3QgY2hhciopY29lcFZhbHVlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gUFNPTlNjaGVtZQpA
QCAtMjgwLDE1ICsyODQsNiBAQCAtICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0
cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGEKICAgICBfZGF0YU1hcHBp
bmdzLnNldCh1cmxTdHJpbmcsIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0
YSBsZW5ndGg6c3RybGVuKGRhdGEpIGZyZWVXaGVuRG9uZTpOT10pOwogfQogCi0tICh2b2lkKWFk
ZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0
IGNoYXIqKWRhdGEgd2l0aENPT1BWYWx1ZTooY29uc3QgY2hhciopY29vcFZhbHVlIHdpdGhDT0VQ
VmFsdWU6KGNvbnN0IGNoYXIqKWNvZXBWYWx1ZQotewotICAgIFtzZWxmIGFkZE1hcHBpbmdGcm9t
VVJMU3RyaW5nOnVybFN0cmluZyB0b0RhdGE6ZGF0YV07Ci0gICAgaWYgKGNvb3BWYWx1ZSkKLSAg
ICAgICAgX2Nvb3BWYWx1ZXMuYWRkKHVybFN0cmluZywgY29vcFZhbHVlKTsKLSAgICBpZiAoY29l
cFZhbHVlKQotICAgICAgICBfY29lcFZhbHVlcy5hZGQodXJsU3RyaW5nLCBjb2VwVmFsdWUpOwot
fQotCiAtICh2b2lkKXNldFNob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseTooQk9PTCl2YWx1ZQog
ewogICAgIF9zaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHkgPSB2YWx1ZTsKQEAgLTMyMywxNiAr
MzE4LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNj
aGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgICAgIFsoaWQ8V0tVUkxTY2hl
bWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9u
c2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKICAgICB9CiAKLSAgICBkb0FzeW5j
aHJvbm91c2x5SWZOZWNlc3NhcnkoW3NlbGYsIGZpbmFsVVJMID0gcmV0YWluUHRyKGZpbmFsVVJM
KV0oaWQgPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgIGRvQXN5bmNocm9ub3VzbHlJZk5l
Y2Vzc2FyeShbZmluYWxVUkwgPSByZXRhaW5QdHIoZmluYWxVUkwpXShpZCA8V0tVUkxTY2hlbWVU
YXNrPiB0YXNrKSB7CiAgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGhlYWRlckRpY3Rpb25h
cnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICAgICAgW2hlYWRlckRp
Y3Rpb25hcnkgc2V0T2JqZWN0OkAidGV4dC9odG1sIiBmb3JLZXk6QCJDb250ZW50LVR5cGUiXTsK
ICAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0T2JqZWN0OkAiMSIgZm9yS2V5OkAiQ29udGVu
dC1MZW5ndGgiXTsKLSAgICAgICAgYXV0byBjb29wVmFsdWUgPSBfY29vcFZhbHVlcy5nZXQoW2Zp
bmFsVVJMIGFic29sdXRlU3RyaW5nXSk7Ci0gICAgICAgIGlmICghY29vcFZhbHVlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDooTlNTdHJpbmcgKilj
b29wVmFsdWUgZm9yS2V5OkAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiXTsKLSAgICAgICAg
YXV0byBjb2VwVmFsdWUgPSBfY29lcFZhbHVlcy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5n
XSk7Ci0gICAgICAgIGlmICghY29lcFZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFtoZWFk
ZXJEaWN0aW9uYXJ5IHNldE9iamVjdDooTlNTdHJpbmcgKiljb2VwVmFsdWUgZm9yS2V5OkAiQ3Jv
c3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSJdOwogCiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOmZpbmFsVVJMLmdl
dCgpIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpo
ZWFkZXJEaWN0aW9uYXJ5XSk7CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5nZXQoKV07CkBAIC03MTgyLDcgKzcxNzEsNyBAQCBURVNUKFdlYlByb2Nlc3NDYWNoZSwg
Q2xlYXJXaGVuRW50ZXJpbmdDYWNoZSkKIHN0YXRpYyBjb25zdCBjaGFyKiB3aW5kb3dPcGVuQ3Jv
c3NPcmlnaW5DT09QVGVzdEJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCiA8c2NyaXB0Pgogd2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHcgPSB3aW5kb3cub3BlbigicHNvbjovL3d3dy5h
cHBsZS5jb20vcG9wdXAuaHRtbCIsICJmb28iKTsKKyAgICB3ID0gd2luZG93Lm9wZW4oImh0dHBz
Oi8vbG9jYWxob3N0OjgxODEvcG9wdXAuaHRtbCIsICJmb28iKTsKIH0KIDwvc2NyaXB0PgogKVBT
T05SRVNPVVJDRSI7CkBAIC03MTk5LDYgKzcxODgsNDIgQEAgZW51bSBjbGFzcyBJc1NhbWVPcmln
aW4gOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBEb1NlcnZlclNpZGVSZWRpcmVjdCA6
IGJvb2wgeyBObywgWWVzIH07CiBzdGF0aWMgdm9pZCBydW5DT09QUHJvY2Vzc1N3YXBUZXN0KGNv
bnN0IGNoYXIqIHNvdXJjZUNPT1AsIGNvbnN0IGNoYXIqIHNvdXJjZUNPRVAsIGNvbnN0IGNoYXIq
IGRlc3RpbmF0aW9uQ09PUCwgY29uc3QgY2hhciogZGVzdGluYXRpb25DT0VQLCBJc1NhbWVPcmln
aW4gaXNTYW1lT3JpZ2luLCBEb1NlcnZlclNpZGVSZWRpcmVjdCBkb1NlcnZlclNpZGVSZWRpcmVj
dCwgRXhwZWN0U3dhcCBleHBlY3RTd2FwKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJOworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gc291cmNlSGVhZGVyczsKKyAg
ICBzb3VyY2VIZWFkZXJzLmFkZCgiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zKTsKKyAg
ICBpZiAoc291cmNlQ09PUCkKKyAgICAgICAgc291cmNlSGVhZGVycy5hZGQoIkNyb3NzLU9yaWdp
bi1PcGVuZXItUG9saWN5Il9zLCBTdHJpbmcoc291cmNlQ09PUCkpOworICAgIGlmIChzb3VyY2VD
T0VQKQorICAgICAgICBzb3VyY2VIZWFkZXJzLmFkZCgiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBv
bGljeSJfcywgU3RyaW5nKHNvdXJjZUNPRVApKTsKKyAgICBIVFRQUmVzcG9uc2Ugc291cmNlUmVz
cG9uc2UoV1RGTW92ZShzb3VyY2VIZWFkZXJzKSwgaXNTYW1lT3JpZ2luID09IElzU2FtZU9yaWdp
bjo6WWVzID8gd2luZG93T3BlblNhbWVPcmlnaW5DT09QVGVzdEJ5dGVzIDogd2luZG93T3BlbkNy
b3NzT3JpZ2luQ09PUFRlc3RCeXRlcyk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBk
ZXN0aW5hdGlvbkhlYWRlcnM7CisgICAgZGVzdGluYXRpb25IZWFkZXJzLmFkZCgiQ29udGVudC1U
eXBlIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICBpZiAoZGVzdGluYXRpb25DT09QKQorICAgICAg
ICBkZXN0aW5hdGlvbkhlYWRlcnMuYWRkKCJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywg
U3RyaW5nKGRlc3RpbmF0aW9uQ09PUCkpOworICAgIGlmIChkZXN0aW5hdGlvbkNPRVApCisgICAg
ICAgIGRlc3RpbmF0aW9uSGVhZGVycy5hZGQoIkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3ki
X3MsIFN0cmluZyhkZXN0aW5hdGlvbkNPRVApKTsKKyAgICBIVFRQUmVzcG9uc2UgZGVzdGluYXRp
b25SZXNwb25zZShXVEZNb3ZlKGRlc3RpbmF0aW9uSGVhZGVycyksICJwb3B1cCJfcyk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SFRUUFNlcnZlcj4gc2VydmVyOworICAgIGlmIChkb1NlcnZlclNp
ZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7CisgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHJlZGlyZWN0SGVhZGVyczsKKyAgICAgICAgcmVkaXJlY3RIZWFk
ZXJzLmFkZCgibG9jYXRpb24iX3MsIGlzU2FtZU9yaWdpbiA9PSBJc1NhbWVPcmlnaW46OlllcyA/
ICJodHRwczovLzEyNy4wLjAuMTo4MTgxL3BvcHVwLWFmdGVyLXJlZGlyZWN0aW9uLmh0bWwiX3Mg
OiAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODE4MS9wb3B1cC1hZnRlci1yZWRpcmVjdGlvbi5odG1sIl9z
KTsKKyAgICAgICAgSFRUUFJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UoMzAxLCBXVEZNb3ZlKHJl
ZGlyZWN0SGVhZGVycykpOworCisgICAgICAgIHNlcnZlciA9IG1ha2VVbmlxdWU8SFRUUFNlcnZl
cj4oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+
IHsKKyAgICAgICAgICAgIHsgIi9tYWluLmh0bWwiLCBXVEZNb3ZlKHNvdXJjZVJlc3BvbnNlKSB9
LAorICAgICAgICAgICAgeyAiL3BvcHVwLmh0bWwiLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
IH0sCisgICAgICAgICAgICB7ICIvcG9wdXAtYWZ0ZXItcmVkaXJlY3Rpb24uaHRtbCIsIFdURk1v
dmUoZGVzdGluYXRpb25SZXNwb25zZSkgfQorICAgICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDgxODEpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHNlcnZlciA9IG1ha2VVbmlxdWU8SFRUUFNlcnZlcj4oc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHsKKyAgICAgICAgICAgIHsgIi9tYWluLmh0
bWwiLCBXVEZNb3ZlKHNvdXJjZVJlc3BvbnNlKSB9LAorICAgICAgICAgICAgeyAiL3BvcHVwLmh0
bWwiLCBXVEZNb3ZlKGRlc3RpbmF0aW9uUmVzcG9uc2UpIH0KKyAgICAgICAgfSwgSFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA4MTgxKTsKKyAgICB9CisKICAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgYm9vbCBzb3VyY2VTaG91bGRCZUNyb3NzT3JpZ2luSXNvbGF0ZWQgPSBzb3Vy
Y2VDT09QICYmICFzdHJjbXAoc291cmNlQ09PUCwgInNhbWUtb3JpZ2luIikgJiYgc291cmNlQ09F
UCAmJiAhc3RyY21wKHNvdXJjZUNPRVAsICJyZXF1aXJlLWNvcnAiKTsKQEAgLTcyMTUsMjQgKzcy
NDAsNiBAQCBzdGF0aWMgdm9pZCBydW5DT09QUHJvY2Vzc1N3YXBUZXN0KGNvbnN0IGNoYXIqIHNv
dXJjZUNPT1AsIGNvbnN0IGNoYXIqIHNvdXJjZUNPRQogICAgICAgICAgICAgW1t3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZl
YXR1cmU6ZmVhdHVyZV07CiAgICAgfQogCi0gICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BT
T05TY2hlbWUgYWxsb2NdIGluaXRdKTsKLSAgICBpZiAoaXNTYW1lT3JpZ2luID09IElzU2FtZU9y
aWdpbjo6WWVzKSB7Ci0gICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAi
cHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5TYW1lT3Jp
Z2luQ09PUFRlc3RCeXRlcyB3aXRoQ09PUFZhbHVlOnNvdXJjZUNPT1Agd2l0aENPRVBWYWx1ZTpz
b3VyY2VDT0VQXTsKLSAgICAgICAgaWYgKGRvU2VydmVyU2lkZVJlZGlyZWN0ID09IERvU2VydmVy
U2lkZVJlZGlyZWN0OjpZZXMpIHsKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0RnJv
bVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC5odG1sIiB0b1VSTFN0cmlu
ZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIl07Ci0g
ICAgICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cu
d2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRo
Q09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUCB3aXRoQ09FUFZhbHVlOmRlc3RpbmF0aW9uQ09FUF07
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxT
dHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIg
d2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlvbkNP
RVBdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3Ry
aW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5D
cm9zc09yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpzb3VyY2VDT09QIHdpdGhDT0VQ
VmFsdWU6c291cmNlQ09FUF07Ci0gICAgICAgIGlmIChkb1NlcnZlclNpZGVSZWRpcmVjdCA9PSBE
b1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7Ci0gICAgICAgICAgICBbaGFuZGxlciBhZGRSZWRp
cmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9wb3B1cC5odG1sIiB0b1VS
TFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwi
XTsKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjov
L3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXItcmVkaXJlY3QuaHRtbCIgdG9EYXRhOiJwb3B1cCIg
d2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlvbkNP
RVBdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9t
VVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1
cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlv
bkNPRVBdOwotICAgIH0KLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04iXTsKLQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIApAQCAtNzI0OCw3ICs3MjU1LDcgQEAgc3RhdGlj
IHZvaWQgcnVuQ09PUFByb2Nlc3NTd2FwVGVzdChjb25zdCBjaGFyKiBzb3VyY2VDT09QLCBjb25z
dCBjaGFyKiBzb3VyY2VDT0UKICAgICBmYWlsZWQgPSBmYWxzZTsKICAgICBzZXJ2ZXJSZWRpcmVj
dGVkID0gZmFsc2U7CiAgICAgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyA9IDA7Ci0gICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vMTI3LjAuMC4xOjgxODEvbWFpbi5odG1sIl1dOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
SFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKaW5k
ZXggZjQ4MjYwZjE2NDUyYjMzNjM0NDRmMTI0ODE1OTEyMWU2NzVmY2NjYi4uYzU2NjE2YjhmZDQ4
NTk5MmYyMzQ3ZmE4ZTdhY2Q3NDhmNWI0MmExYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ29ubmVjdGlvbjsKIHN0cnVjdCBI
VFRQUmVzcG9uc2U7CiAKIGNsYXNzIEhUVFBTZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSZXF1ZXN0RGF0YTsKICAgICBlbnVtIGNsYXNz
IFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMsIEh0
dHAyIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA1NzA5ZDZiNDljODNjNzY2
ZGEwMGRkOTQ0OWVjZDY4YmUxOGVhMTBmLi4xZWU0YzFlZGE2ODhlMDM0MGI4MmZlZWNiYzkyMDZl
ZGU2OWIzM2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMS0wOS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgaGFuZGxpbmcgdG8gdGhlIE5ldHdvcmtQ
cm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzA4MTIKKyAgICAgICAgPHJkYXI6Ly84MzUwNDg0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIGEgY291cGxlIG9mIFdQVCB0ZXN0
cyBkdWUgdG8gc29tZSBleHRyYSBsb2dnaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0
cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3Nz
LW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQ6CisK
IDIwMjEtMDktMjQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW2Nzcy1mbGV4Ym94XSBJbXBvcnQgbGF0ZXN0IGNoYW5nZXMgZnJvbSBjc3MtZmxl
eGJveCBXUFQgcmVwbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3AtY29lcC1z
YW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAt
c2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggODc5MTZjOTY4M2UxYmY4OTAyODFmODY5
ZGFjY2QyM2ExOGNhYmU4Yy4uMTc2ZTMxNDVhNzc4NGJiZmViOTNmNmM5ZDhkZmYyYWVmOWQ4NGY0
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3AtY29lcC1zYW5kYm94Lmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3gu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBOYXZp
Z2F0aW9uIHdhcyBibG9ja2VkIGJ5IENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5CitDT05TT0xF
IE1FU1NBR0U6IE5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kKIAogUEFTUyA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXBvcHVwcyBhbGxvdy1zY3JpcHRz
IGFsbG93LXNhbWUtb3JpZ2luIj4gU2FuZGJveGVkIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
IHBvcHVwIHNob3VsZCByZXN1bHQgaW4gYSBuZXR3b3JrIGVycm9yCiBQQVNTIDxpZnJhbWUgc2Fu
ZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93LXNjcmlwdHMiPiBTYW5kYm94ZWQgQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kgcG9wdXAgc2hvdWxkIHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJyb3IKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLXNhbmRib3guaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Ny
b3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQK
aW5kZXggODc5MTZjOTY4M2UxYmY4OTAyODFmODY5ZGFjY2QyM2ExOGNhYmU4Yy4uMTc2ZTMxNDVh
Nzc4NGJiZmViOTNmNmM5ZDhkZmYyYWVmOWQ4NGY0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXIt
cG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXIt
cG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw1IEBACitD
T05TT0xFIE1FU1NBR0U6IE5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9w
ZW5lci1Qb2xpY3kKK0NPTlNPTEUgTUVTU0FHRTogTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBD
cm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeQogCiBQQVNTIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
cG9wdXBzIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iPiBTYW5kYm94ZWQgQ3Jvc3Mt
T3JpZ2luLU9wZW5lci1Qb2xpY3kgcG9wdXAgc2hvdWxkIHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJy
b3IKIFBBU1MgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1wb3B1cHMgYWxsb3ctc2NyaXB0cyI+IFNh
bmRib3hlZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBwb3B1cCBzaG91bGQgcmVzdWx0IGlu
IGEgbmV0d29yayBlcnJvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439475</attachid>
            <date>2021-09-28 07:58:04 -0700</date>
            <delta_ts>2021-09-28 08:12:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230812-20210928075803.patch</filename>
            <type>text/plain</type>
            <size>166114</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVlZjcwYjBjY2FlMzQ2
ZjczZTc0MDQ3ZTVhZDUyNDY5YThhZDljMC4uYWFhZDVkZjc3ZjZjYmVmNDY5MjAzOTVkZjcxZmMw
ODM1NzAzM2QwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTA5LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgxMgorICAgICAgICA8cmRh
cjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAg
ICAgICAgUHJldmlvdXMsIENPT1AgaGFuZGxpbmcgd2FzIGZ1bGx5IGltcGxlbWVudGVkIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgbWVhbnQgdGhhdCBhCisgICAgICAgIFdlYlByb2Nl
c3MgZm9yIG9yaWdpbiBBIGNvdWxkIGdldCBhIG5ldHdvcmsgcmVzcG9uc2Ugd2l0aCBDT09QIGhl
YWRlciBmcm9tIG9yaWdpbiBCLCBkZWNpZGUKKyAgICAgICAgdGhhdCBjcm9zcy1vcmlnaW4gaXNv
bGF0aW9uIGlzIG5lZWRlZCBhbmQgYXNrIHRoZSBVSVByb2Nlc3MgdG8gcHJvY2Vzcy1zd2FwLiBU
aGlzIHdhcyBub3QgYQorICAgICAgICBnb29kIGRlc2lnbiBnaXZlbiB0aGF0IHRoZSBXZWJDb250
ZW50IHByb2Nlc3MgaXMgbm90IGEgdHJ1c3RlZCBwcm9jZXNzLiBXZSBzaG91bGQgbm90IHRydXN0
CisgICAgICAgIHRoZSBXZWJQcm9jZXNzIGZvciBvcmlnaW4gQSB0byBtYWtlIHRoZSBzd2FwIG9u
IGJlaGF2aW9yIG9mIG9yaWdpbiBCLiBBbHNvLCB0aGUgbmV0d29yaworICAgICAgICByZXNwb25z
ZSBmcm9tIG9yaWdpbiBCIG1heSBjb250YWluIHNlbnNpdGl2ZSBoZWFkZXJzIHRoYXQgd2UgZG9u
J3Qgd2FudCBvcmlnaW4gQSdzIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gc2VlLgorCisgICAgICAg
IFRvIGFkZHJlc3MgdGhlc2UgaXNzdWVzLCBJIGhhdmUgbW92ZWQgQ09PUCBoYW5kbGluZyBmcm9t
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9jZXNzLiBB
cyBzb29uIGFzIHRoZSBOZXR3b3JrUHJvY2VzcyBnZXRzIHRoZSBuZXR3b3JrIHJlc3BvbnNlLCBp
dCBtYWtlcyB0aGUgZGVjaXNpb24KKyAgICAgICAgd2hldGhlciBvciBub3QgY3Jvc3Mtb3JpZ2lu
IGlzb2xhdGlvbiBpcyBuZWVkZWQuIElmIGlzb2xhdGlvbiBpcyBuZWVkZWQsIHRoZSBuZXR3b3Jr
IHByb2Nlc3MKKyAgICAgICAgYXNrcyB0aGUgVUlQcm9jZXNzIGRpcmVjdGx5IHRvIGNvbnRpbnVl
IHRoZSBsb2FkIGluIGEgbmV3IFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZQorICAg
ICAgICBuZXR3b3JrIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50bHkgYXNzb2NpYXRlZCBXZWJQcm9j
ZXNzLiBXaGVuIHRoZSBuZXcgV2ViUHJvY2VzcyByZXN1bWVzIHRoZQorICAgICAgICBsb2FkLCB0
aGUgbmV0d29yayBwcm9jZXNzIHNlbmRzIGl0IHRoZSBuZXR3b3JrIHJlc3BvbnNlIGl0IGFscmVh
ZHkgaGFzLgorCisgICAgICAgIEkgbW92ZWQgbW9zdCBvZiB0aGUgQ09PUCBzcGVjaWZpY2F0aW9u
IGltcGxlbWVudGF0aW9uIGZyb20gRG9jdW1lbnRMb2FkZXIuY3BwL2ggdG8KKyAgICAgICAgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwL2ggc28gdGhhdCB3ZSBjYW4gbGV2ZXJhZ2UgaXQgZnJv
bSB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyIGluCisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nl
c3MuIFdlIHN0aWxsIGhhdmUgdG8gZG8gKnNvbWUqIENPT1AgaGFuZGxpbmcgYXQgRG9jdW1lbnRM
b2FkZXIgbGV2ZWwKKyAgICAgICAgY3VycmVudGx5IGZvciBub24taW5pdGlhbCBuYXZpZ2F0aW9u
cyB0byBhYm91dDpibGFuayBnaXZlbiB0aGF0IHRob3NlIGNhbiB0cmlnZ2VyIGEgYnJvd3NpbmcK
KyAgICAgICAgY29udGV4dCBncm91cCBzd2l0Y2ggYnV0IGN1cnJlbnRseSBkbyBub3QgaW52b2x2
ZSB0aGUgbmV0d29yayBwcm9jZXNzLiBJIGFsc28gaGFkIHRvIGFkZAorICAgICAgICBtb3JlIGlu
Zm9ybWF0aW9uIHRvIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHNvIHRoYXQgd2UgYXJl
IGFibGUgdG8gbWFrZSBhcHByb3ByaWF0ZQorICAgICAgICBDT09QIGRlY2lzaW9ucyBpbiB0aGUg
TmV0d29ya1Byb2Nlc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIENPT1AgdGVzdHMgdGhhdCBhcmUgc3RpbGwgcGFzc2luZy4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrSWZFbmZvcmNpbmdSZXBvcnRPbmx5Q09PUFdvdWxkUmVx
dWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVSZXNwb25zZU9yaWdpbkFuZENPT1ApOgorICAgICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJlc3Bv
bnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6b2J0YWluQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6c2VuZFZpb2xhdGlvblJl
cG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6c2Vu
ZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
Ojpmcm9tKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OjpyZXBvcnRpbmdFbmRwb2lu
dEZvckRpc3Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5OjpoYXNSZXBvcnRpbmdFbmRwb2ludCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRvQ3Jv
c3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzQ29udGlu
dWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQpOgorICAgICAgICBNb3ZlIG1vc3Qgb2YgdGhlIENPT1AgbG9naWMgZnJvbSBE
b2N1bWVudExvYWRlci5jcHAgdG8gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwLCBzbyB0aGF0
CisgICAgICAgIGl0IGNhbiBiZSByZXVzZWQgYnkgTmV0d29ya1Jlc291cmNlTG9hZGVyIGluIHRo
ZSBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCisgICAgICAgICogbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OnJlcXVlc3RlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjppc0VtcHR5IGNvbnN0KToKKyAgICAg
ICAgKiBsb2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmg6IEFkZGVkLgorICAgICAgICBFeHRyYWN0ZWQgTmF2
aWdhdGlvbkFjdGlvbjo6UmVxdWVzdGVyIHRvIGl0cyBvd24gaGVhZGVyIGFuZCByZW5hbWUgaXQg
dG8gTmF2aWdhdGlvblJlcXVlc3RlciwKKyAgICAgICAgc28gdGhhdCBpdHMgaW1wbGVtZW50YXRp
b24gY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIE5hdmlnYXRpb25BY3Rpb24sIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzCisgICAgICAgIGFuZCBDT09QLgorCisgICAgICAgICogbG9hZGVyL1Jl
cG9ydGluZ0VuZHBvaW50c0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcG9ydGluZ0Vu
ZHBvaW50c0NhY2hlOjphZGRFbmRQb2ludHNGcm9tUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXBvcnRUb0hlYWRl
cik6CisgICAgICAgICogbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5oOgorCiAyMDIxLTA5LTI4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjgzMTM2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBiYjgxMTUzZDU0ZTk4MWMyMjNkNmE0YWY5Mzc3YTY4ZTZhZTQyYjViLi5lY2M5ZmNmMTlm
ZjQ3NmU1MmNkMTY1YmU3OWFmYjgyN2I4Njc2MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBA
CisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29ya1By
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgSW1wbGVtZW50IENPT1AgaGFuZGxpbmcgaW4gdGhlIE5l
dHdvcmtQcm9jZXNzLCBpbnNpZGUgdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBjbGFzcy4KKyAg
ICAgICAgVGhpcyB3YXMgbG9naWMgdGhhdCB3YXMgY3VycmVudGx5IGltcGxlbWVudGVkIGF0IERv
Y3VtZW50TG9hZGVyLWxldmVsLCBpbiB0aGUgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6dG9Ccm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9u
c2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRy
eSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAo
aGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRy
aWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVO
YXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdB
d2F5RnJvbUNPT1BSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMS0wOS0yNyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEF2b2lkIGJ1aWxkaW5nIGxvZyBtZXNzYWdlcyB3aGVuIElQQ01lc3NhZ2VzIGxvZyBz
dHJlYW0gaXMgb2ZmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjE5NTQ2MmZmMmI1
MTMwYzMwZDFlMzA4ZWM1OTg1MDU0YzIzNDg1NS4uMDcxNmZhYmRhMzQ4NzE3YzhkNzczMTYxNTZj
ZDA0NGZkYjc3ZDQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29y
a1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorCiAyMDIxLTA5LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgbW9yZSBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tz
IHRvIFdlYkNvcmU6OmxpbmtlZE9uT3JBZnRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggYTE2YTMwZjViMzYyZDViOTA1ODZhMmFiYjA5Njg4YTM5OWRjZWI2Yi4uMGM3Njk4MDU3
MzA4YmExZTM3NWEyZTIwY2Q4YmE4MzBhYzExYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5k
bGluZyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0wOS0yNCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHR5cGVjaGVja2luZyBgaXNg
IG92ZXJsb2FkcyBmb3IgYHN0ZDo6dW5pcXVlX3B0cmAsIGBXVEY6OlVuaXF1ZVJlZmAsIGFuZCBg
V1RGOjpXZWFrUHRyYApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZWMwNTAxNDJhNWZjNjYxM2Q3NzM1
ZjY1Zjk0OWY3ODFkOGNlMGZjNi4uOGYzOTRjZTJkZjNiYWFkZWI4MzdmODEwYTNlOGEwZjc1NDE5
MTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04MzEsNiArODMxLDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKICAgICBsb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCiAgICAgbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaAorICAgIGxvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmgKICAgICBsb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAogICAgIGxvYWRlci9QaW5nTG9hZGVyLmgKICAg
ICBsb2FkZXIvUG9saWN5Q2hlY2tlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdmZmRjOTYwZTBmYzQ2
ZGM4MGQ3YjY5NWVmYmYwMDlmZmNjNDI1M2YuLjcxM2Y3NDlkN2FlZDlkZWE0ZTE1MzZmNWNlYzYw
MTZjNWUyNTllYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNTYwLDYgKzE1NjAsNyBAQCBsb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuY3BwCiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIGxvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCits
b2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5jcHAKIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcAogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAogbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNWM0OWQxMDc2YTMxZDFmNjQwNmU2ZWFiNGQwYjgyMmY3MmY5ZGQ4My4u
ODJiZWFkNmEyYWQyOWYxYzhjYzI4NjI4NWQxZDhhZmM2N2NiMGEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyMyw2ICsx
MzIzLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERG
QTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5Q0NDRkUyNjlEMDIx
QzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNh
c3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUQ3N0I2Mjcw
MTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJG
IC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRU
YXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFn
ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODQ2NCw4ICs4NDY1LDEwIEBACiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENoYW5u
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAyMDA2
RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8q
IE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF2aWdhdGlvblJlcXVlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkFB
QUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyQ29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBQUFBM0MyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZB
Q0Q4MTEyNzAxNjU2QTAwRUY4Q0VEIC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblJlcXVlc3Rlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCNjUw
REIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc3OTgsNiArMjc4MDEsOCBAQAogCQkJCTkzQ0NG
MDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLywKIAkJCQk5M0ND
RjAyNjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovLAogCQkJCTlCQTgy
Nzc4MUYwNjE1NjUwMEY3MUU3NSAvKiBOYXZpZ2F0aW9uRGlzYWJsZXIuaCAqLywKKwkJCQk0NkFD
RDgxMTI3MDE2NTZBMDBFRjhDRUQgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5jcHAgKi8sCisJCQkJ
NDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLywKIAkJ
CQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgKi8s
CiAJCQkJOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAq
LywKIAkJCQk5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwICovLApAQCAtMzQyMjcsNiArMzQyMzIsNyBAQAogCQkJCTgzQjJEMTc1MUI4QkNE
NkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBC
OUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRp
b25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgz
QiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2RTVBNjBE
NzQ2NDU4MDA2NDQyRTkgLyogTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI3MTlD
NzBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IGVhMGEwODAyYzU3ZmM2OWM1MTNkOGY0NjI0ZDlmNWZhMWI2MmY4
NzQuLmM0MThkNTkwZDE5NDEyMDBiNmM2NmRmNjZhNGE3ZTllMTc1MDVhMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMzY3LDcgKzEzNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhbWVP
cmlnaW5Bc1RvcERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gc2VjdXJpdHlPcmlnaW4oKS5pc1Nh
bWVPcmlnaW5Bcyh0b3BPcmlnaW4oKSk7IH0KICAgICBib29sIHNob3VsZEZvcmNlTm9PcGVuZXJC
YXNlZE9uQ09PUCgpIGNvbnN0OwogCi0gICAgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3km
IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRDcm9zc09yaWdpbk9wZW5lclBvbGljeShjb25z
dCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYpOwogCiAgICAgdm9pZCB3aWxsTG9hZFNjcmlwdEVs
ZW1lbnQoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmNwcAppbmRleCBjNjVmMWIyMmQ1NzI4ZjUyZTg0MGU1MDJlNGU3MDFk
ZTllZDExMDlhLi5mOTg4OGY1ZmE5YzcxNGJiZjcxNzI0MmMyNTAwNDU4NjlkOTI3MjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAK
QEAgLTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmgiCiAKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmgiCiAjaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvblJlcXVlc3Rl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNjgsMTMgKzcwLDg3IEBAIHN0YXRpYyBBU0NJSUxp
dGVyYWwgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZVRvRWZmZWN0aXZlUG9saWN5U3RyaW5n
KENyb3NzT3JpCiAgICAgcmV0dXJuICJ1bnNhZmUtbm9uZSJfczsKIH0KIAorLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY2hlY2stYnJvd3Npbmct
Y29udGV4dC1ncm91cC1zd2l0Y2gtY29vcC12YWx1ZQorc3RhdGljIGJvb2wgY2hlY2tJZkNPT1BW
YWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goYm9vbCBpc0luaXRpYWxBYm91
dEJsYW5rLCBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlIGFjdGl2ZURvY3VtZW50Q09PUFZh
bHVlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2lu
LCBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlIHJlc3BvbnNlQ09PUFZhbHVlLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pCit7CisgICAgLy8gSWYgdGhlIHJlc3VsdCBv
ZiBtYXRjaGluZyBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0
aW9uT3JpZ2luLCByZXNwb25zZUNPT1BWYWx1ZSwgYW5kIHJlc3BvbnNlT3JpZ2luIGlzIHRydWUs
IHJldHVybiBmYWxzZS4KKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9vcmlnaW4uaHRtbCNtYXRjaGluZy1jb29wCisgICAgaWYgKGFjdGl2ZURvY3VtZW50Q09P
UFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUgJiYgcmVz
cG9uc2VDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhY3RpdmVEb2N1bWVudENPT1BWYWx1
ZSA9PSByZXNwb25zZUNPT1BWYWx1ZSAmJiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4u
aXNTYW1lT3JpZ2luQXMocmVzcG9uc2VPcmlnaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKKyAgICAvLyAtIGlzSW5p
dGlhbEFib3V0QmxhbmssCisgICAgLy8gLSBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSdzIHZhbHVl
IGlzICJzYW1lLW9yaWdpbi1hbGxvdy1wb3B1cHMiLgorICAgIC8vIC0gcmVzcG9uc2VDT09QVmFs
dWUgaXMgInVuc2FmZS1ub25lIiwKKyAgICAvLyB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBpZiAo
aXNJbml0aWFsQWJvdXRCbGFuayAmJiBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSA9PSBDcm9zc09y
aWdpbk9wZW5lclBvbGljeVZhbHVlOjpTYW1lT3JpZ2luQWxsb3dQb3B1cHMgJiYgcmVzcG9uc2VD
T09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2NoZWNrLWJjZy1zd2l0
Y2gtbmF2aWdhdGlvbi1yZXBvcnQtb25seQorc3RhdGljIGJvb2wgY2hlY2tJZkVuZm9yY2luZ1Jl
cG9ydE9ubHlDT09QV291bGRSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goYm9vbCBp
c0luaXRpYWxBYm91dEJsYW5rLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgYWN0aXZl
RG9jdW1lbnRDT09QLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlRG9jdW1lbnROYXZpZ2F0
aW9uT3JpZ2luLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pCit7CisgICAgaWYgKCFjaGVja0lm
Q09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxBYm91
dEJsYW5rLCBhY3RpdmVEb2N1bWVudENPT1AucmVwb3J0T25seVZhbHVlLCBhY3RpdmVEb2N1bWVu
dE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5VmFsdWUsIHJlc3BvbnNl
T3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNoZWNrSWZDT09QVmFs
dWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0Qmxhbmss
IGFjdGl2ZURvY3VtZW50Q09PUC5yZXBvcnRPbmx5VmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdh
dGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QLnZhbHVlLCByZXNwb25zZU9yaWdpbikpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKGNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0QmxhbmssIGFjdGl2ZURvY3VtZW50Q09P
UC52YWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AucmVw
b3J0T25seVZhbHVlLCByZXNwb25zZU9yaWdpbikpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgc3RkOjp0dXBsZTxSZWY8U2VjdXJpdHlPcmln
aW4+LCBDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY29tcHV0ZVJlc3BvbnNlT3JpZ2luQW5kQ09P
UChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW9uUmVxdWVzdGVyPiYgcmVxdWVzdGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIHJl
c3BvbnNlQ1NQKQoreworICAgIC8vIE5vbi1pbml0aWFsIGVtcHR5IGRvY3VtZW50cyAoYWJvdXQ6
YmxhbmspIHNob3VsZCBpbmhlcml0IHRoZWlyIGNyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5IGZy
b20gdGhlIG5hdmlnYXRpb24ncyBpbml0aWF0b3IgdG9wIGxldmVsIGRvY3VtZW50LAorICAgIC8v
IGlmIHRoZSBpbml0aWF0b3IgYW5kIGl0cyB0b3AgbGV2ZWwgZG9jdW1lbnQgYXJlIHNhbWUtb3Jp
Z2luLCBvciBkZWZhdWx0ICh1bnNhZmUtbm9uZSkgb3RoZXJ3aXNlLgorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNjkxMworICAgIGlmIChTZWN1cml0eVBvbGlj
eTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKHJlc3BvbnNlLnVybCgpKSAm
JiByZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUocmVxdWVzdGVyLT5z
ZWN1cml0eU9yaWdpbiwgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbi0+aXNTYW1lT3JpZ2luQXMo
cmVxdWVzdGVyLT50b3BPcmlnaW4pID8gcmVxdWVzdGVyLT5jcm9zc09yaWdpbk9wZW5lclBvbGlj
eSA6IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgfSk7CisKKyAgICAvLyBJZiB0aGUgSFRUUCBy
ZXNwb25zZSBjb250YWlucyBhIENTUCBoZWFkZXIsIGl0IG1heSBzZXQgc2FuZGJveCBmbGFncywg
d2hpY2ggd291bGQgY2F1c2UgdGhlIG9yaWdpbiB0byBiZWNvbWUgdW5pcXVlLgorICAgIGF1dG8g
cmVzcG9uc2VPcmlnaW4gPSByZXNwb25zZUNTUCAmJiByZXNwb25zZUNTUC0+c2FuZGJveEZsYWdz
KCkgIT0gU2FuZGJveE5vbmUgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3R1cGxlKFdURk1vdmUocmVzcG9uc2VPcmlnaW4pLCBvYnRhaW5Dcm9zc09yaWdpbk9wZW5lclBv
bGljeShyZXNwb25zZSkpOworfQorCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9vcmlnaW4uaHRtbCNjb29wLWVuZm9yY2UKK3N0YXRpYyBDcm9zc09yaWdpbk9wZW5l
clBvbGljeUVuZm9yY2VtZW50UmVzdWx0IGVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5KGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQmIGN1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3Vy
aXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3km
IHJlc3BvbnNlQ09PUCwgYm9vbCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwgY29u
c3QgRnVuY3Rpb248dm9pZChDT09QRGlzcG9zaXRpb24pPiYgc2VuZFZpb2xhdGlvblJlcG9ydHMp
Cit7CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCBuZXdDT09Q
RW5mb3JjZW1lbnRSZXN1bHQgPSB7CisgICAgICAgIHJlc3BvbnNlVVJMLAorICAgICAgICByZXNw
b25zZU9yaWdpbiwKKyAgICAgICAgcmVzcG9uc2VDT09QLAorICAgICAgICB0cnVlIC8qIGlzQ3Vy
cmVudENvbnRleHROYXZpZ2F0aW9uU291cmNlICovLAorICAgICAgICBjdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0Lm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsCisgICAgICAgIGN1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aER1ZVRvUmVwb3J0T25seQorICAgIH07CisKKyAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNSZXF1
aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQsIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kudmFsdWUsIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3VycmVudE9yaWdpbiwgcmVz
cG9uc2VDT09QLnZhbHVlLCByZXNwb25zZU9yaWdpbikpIHsKKyAgICAgICAgbmV3Q09PUEVuZm9y
Y2VtZW50UmVzdWx0Lm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggPSB0cnVlOworICAg
ICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0cyhDT09QRGlzcG9zaXRpb246OkVuZm9yY2UpOworICAg
IH0KKworICAgIGlmIChjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSwg
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1As
IHJlc3BvbnNlT3JpZ2luKSkgeworICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQubmVl
ZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaER1ZVRvUmVwb3J0T25seSA9IHRydWU7CisgICAg
ICAgIHNlbmRWaW9sYXRpb25SZXBvcnRzKENPT1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbmV3Q09PUEVuZm9yY2VtZW50UmVzdWx0OworfQorCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNvYnRhaW4tY29v
cAotQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdp
bk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k+IGNvZXA7Ci0gICAgYXV0byBl
bnN1cmVDT0VQID0gWyZjb2VwLCAmcmVzcG9uc2UsICZjb250ZXh0XSgpIC0+IENyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kmIHsKKyAgICBhdXRvIGVuc3VyZUNPRVAgPSBbJmNvZXAsICZyZXNwb25z
ZV0oKSAtPiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiB7CiAgICAgICAgIGlmICghY29lcCkK
LSAgICAgICAgICAgIGNvZXAgPSBvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3Bv
bnNlLCAmY29udGV4dCk7CisgICAgICAgICAgICBjb2VwID0gb2J0YWluQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeShyZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybiAqY29lcDsKICAg
ICB9OwogICAgIGF1dG8gcGFyc2VDT09QID0gWyZyZXNwb25zZSwgJmVuc3VyZUNPRVBdKEhUVFBI
ZWFkZXJOYW1lIGhlYWRlck5hbWUsIGF1dG8mIHZhbHVlLCBhdXRvJiByZXBvcnRpbmdFbmRwb2lu
dCkgewpAQCAtOTUsNyArMTcxLDcgQEAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICB9Owog
CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgcG9saWN5OwotICAgIGlmICghY29udGV4dC5z
ZXR0aW5nc1ZhbHVlcygpLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCB8fCAhU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSktPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRo
eSgpKQorICAgIGlmICghU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSktPmlz
UG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpKQogICAgICAgICByZXR1cm4gcG9saWN5OwogCiAgICAg
cGFyc2VDT09QKEhUVFBIZWFkZXJOYW1lOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSwgcG9saWN5
LnZhbHVlLCBwb2xpY3kucmVwb3J0aW5nRW5kcG9pbnQpOwpAQCAtMTMyLDcgKzIwOCw3IEBAIHZv
aWQgYWRkQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBDcm9zc09yCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9vcmlnaW4uaHRtbCNjb29wLXZpb2xhdGlvbi1uYXZpZ2F0aW9uLXRvCiB2b2lkIHNl
bmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1lJiBmcmFt
ZSwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY29vcCwgQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgcHJldmlvdXNSZXNwb25zZVVSTCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBw
cmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCkKIHsKLSAgICBhdXRvJiBlbmRwb2ludCA9IGRpc3Bvc2l0aW9uID09IENP
T1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nID8gY29vcC5yZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9p
bnQgOiBjb29wLnJlcG9ydGluZ0VuZHBvaW50OworICAgIGF1dG8mIGVuZHBvaW50ID0gY29vcC5y
ZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKTsKICAgICBpZiAoZW5k
cG9pbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0OCw3ICsyMjQsNyBAQCB2
b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1l
JiBmcmFtZSwgQ3Jvc3NPcmlnaW5PcAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY29vcC12aW9sYXRpb24tbmF2aWdhdGlvbi1mcm9tCiB2b2lk
IHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlKEZy
YW1lJiBmcmFtZSwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY29vcCwgQ09PUERpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNl
VVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIG5leHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGF1dG8mIGVuZHBvaW50ID0gZGlz
cG9zaXRpb24gPT0gQ09PUERpc3Bvc2l0aW9uOjpSZXBvcnRpbmcgPyBjb29wLnJlcG9ydE9ubHlS
ZXBvcnRpbmdFbmRwb2ludCA6IGNvb3AucmVwb3J0aW5nRW5kcG9pbnQ7CisgICAgYXV0byYgZW5k
cG9pbnQgPSBjb29wLnJlcG9ydGluZ0VuZHBvaW50Rm9yRGlzcG9zaXRpb24oZGlzcG9zaXRpb24p
OwogICAgIGlmIChlbmRwb2ludC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTYw
LDQgKzIzNiwyOCBAQCB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlG
cm9tQ09PUFJlc3BvbnNlKEZyYW1lJiBmcmFtZSwgQ3Jvc3NPcgogICAgIH0pOwogfQogCisvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0
bWwjcHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEzLjUuNikKK3N0ZDo6b3B0aW9uYWw8
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gZG9Dcm9zc09yaWdpbk9w
ZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uUmVxdWVzdGVyPiYgcmVxdWVzdGVyLCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqIHJlc3BvbnNlQ1NQLCBTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2Fu
ZGJveEZsYWdzLCBib29sIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCBjb25zdCBD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0JiBjdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0LCBjb25zdCBGdW5jdGlvbjx2b2lkKENPT1BEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKT4mIHNlbmRWaW9sYXRpb25SZXBvcnRzKQor
eworICAgIGF1dG8gW3Jlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1BdID0gY29tcHV0ZVJlc3Bv
bnNlT3JpZ2luQW5kQ09PUChyZXNwb25zZSwgcmVxdWVzdGVyLCByZXNwb25zZUNTUCk7CisKKyAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUt
d2ViLmh0bWwjcHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEzLjUuNi4yKQorICAgIC8v
IElmIHNhbmRib3hGbGFncyBpcyBub3QgZW1wdHkgYW5kIHJlc3BvbnNlQ09PUCdzIHZhbHVlIGlz
IG5vdCAidW5zYWZlLW5vbmUiLCB0aGVuIHNldCByZXNwb25zZSB0byBhbiBhcHByb3ByaWF0ZSBu
ZXR3b3JrIGVycm9yIGFuZCBicmVhay4KKyAgICBpZiAocmVzcG9uc2VDT09QLnZhbHVlICE9IENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUgJiYgZWZmZWN0aXZlU2FuZGJv
eEZsYWdzICE9IFNhbmRib3hOb25lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGN1cnJlbnRD
b29wRW5mb3JjZW1lbnRSZXN1bHQsIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZU9yaWdpbiwgcmVz
cG9uc2VDT09QLCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwgWyYsIHJlc3BvbnNl
T3JpZ2luID0gcmVzcG9uc2VPcmlnaW4sIHJlc3BvbnNlQ09PUCA9IHJlc3BvbnNlQ09PUF0oQ09P
UERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKSB7CisgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRz
KGRpc3Bvc2l0aW9uLCByZXNwb25zZUNPT1AsIHJlc3BvbnNlT3JpZ2luKTsKKyAgICB9KTsKK30K
KworQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0Ojpmcm9tKGNvbnN0IFVSTCYgY3VycmVudFVSTCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIGN1cnJlbnRPcmlnaW4sIGNvbnN0IENyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5JiBjcm9zc09yaWdpbk9wZW5lclBvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW9uUmVxdWVzdGVyPiByZXF1ZXN0ZXIsIGNvbnN0IFVSTCYgb3BlbmVyVVJMKQoreworICAgIENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgcmVzdWx0IHsgY3VycmVudFVS
TCwgV1RGTW92ZShjdXJyZW50T3JpZ2luKSwgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgfTsKKyAg
ICByZXN1bHQuaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UgPSByZXF1ZXN0ZXIgJiYg
cmVzdWx0LmN1cnJlbnRPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHJlcXVlc3Rlci0+c2VjdXJpdHlP
cmlnaW4pOworICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3Jp
Z2luRnJvbU93bmVyKGN1cnJlbnRVUkwpICYmIG9wZW5lclVSTC5pc1ZhbGlkKCkpCisgICAgICAg
IHJlc3VsdC51cmwgPSBvcGVuZXJVUkw7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuaAppbmRleCA4N2E1YjEzMGNkZjY1MjFiOWUxN2Q5OGQzNGI3ZDFiYmUxNTBh
NTQyLi45NDY0NzRiNTg1ODE5M2IwYjMwNmM5MmUxZjViMmU4YmMxZmFjOWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaApAQCAtMzEsOSAr
MzEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAorc3RydWN0IE5hdmlnYXRpb25SZXF1ZXN0ZXI7CisKK3R5cGVkZWYgaW50IFNhbmRi
b3hGbGFnczsKKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3Jp
Z2luLmh0bWwjY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3ktdmFsdWUKIGVudW0gY2xhc3MgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSA6IHVpbnQ4X3QgewogICAgIFVuc2FmZU5vbmUsCkBA
IC00Miw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSA6
IHVpbnQ4X3QgewogICAgIFNhbWVPcmlnaW5BbGxvd1BvcHVwcwogfTsKIAorZW51bSBjbGFzcyBD
T09QRGlzcG9zaXRpb24gOiBib29sIHsgUmVwb3J0aW5nICwgRW5mb3JjZSB9OworCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjcm9zcy1vcmln
aW4tb3BlbmVyLXBvbGljeQogc3RydWN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsKICAgICBD
cm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlIHZhbHVlIHsgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3lWYWx1ZTo6VW5zYWZlTm9uZSB9OwpAQCAtNDksMTEgKzU2LDI0IEBAIHN0cnVjdCBDcm9zc09y
aWdpbk9wZW5lclBvbGljeSB7CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSByZXBv
cnRPbmx5VmFsdWUgeyBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lIH07
CiAgICAgU3RyaW5nIHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludDsKIAorICAgIGNvbnN0IFN0
cmluZyYgcmVwb3J0aW5nRW5kcG9pbnRGb3JEaXNwb3NpdGlvbihDT09QRGlzcG9zaXRpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzUmVwb3J0aW5nRW5kcG9pbnQoQ09PUERpc3Bvc2l0aW9uKSBjb25z
dDsKKwogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGlzb2xhdGVkQ29weSgpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDcm9zc09y
aWdpbk9wZW5lclBvbGljeT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK2lubGluZSBjb25zdCBT
dHJpbmcmIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5OjpyZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bv
c2l0aW9uKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4g
ZGlzcG9zaXRpb24gPT0gQ09PUERpc3Bvc2l0aW9uOjpFbmZvcmNlID8gcmVwb3J0aW5nRW5kcG9p
bnQgOiByZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQ7Cit9CisKK2lubGluZSBib29sIENyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5OjpoYXNSZXBvcnRpbmdFbmRwb2ludChDT09QRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuICFyZXBvcnRpbmdFbmRwb2ludEZvckRp
c3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKS5pc0VtcHR5KCk7Cit9CisKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGEsIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiBiKQogewogICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWUgJiYgYS5y
ZXBvcnRpbmdFbmRwb2ludCA9PSBiLnJlcG9ydGluZ0VuZHBvaW50ICYmIGEucmVwb3J0T25seVZh
bHVlID09IGIucmVwb3J0T25seVZhbHVlICYmIGEucmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50
ID09IGIucmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50OwpAQCAtOTgsMjAgKzExOCwyMSBAQCBz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBDcm9zc09yaWdpbk9wZW5lclBv
bGljeTo6ZGVjb2RlKERlY29kZXImCiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL29yaWdpbi5odG1sI2Nvb3AtZW5mb3JjZW1lbnQtcmVzdWx0CiBzdHJ1Y3QgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCB7Ci0gICAgYm9vbCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoIHsgZmFsc2UgfTsKLSAgICBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHkgeyBmYWxzZSB9OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
IGZyb20oY29uc3QgVVJMJiBjdXJyZW50VVJMLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgY3VycmVu
dE9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmLCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpb25SZXF1ZXN0ZXI+LCBjb25zdCBVUkwmIG9wZW5lclVSTCk7CisKICAgICBVUkwgdXJs
OwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gY3VycmVudE9yaWdpbjsKICAgICBDcm9zc09yaWdp
bk9wZW5lclBvbGljeSBjcm9zc09yaWdpbk9wZW5lclBvbGljeTsKICAgICBib29sIGlzQ3VycmVu
dENvbnRleHROYXZpZ2F0aW9uU291cmNlIHsgdHJ1ZSB9OworICAgIGJvb2wgbmVlZHNCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaCB7IGZhbHNlIH07CisgICAgYm9vbCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5IHsgZmFsc2UgfTsKIH07CiAKLWVudW0gY2xh
c3MgQ09PUERpc3Bvc2l0aW9uIDogYm9vbCB7IFJlcG9ydGluZyAsIEVuZm9yY2UgfTsKLQotQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKK0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3lIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDcm9zc09yaWdpbk9wZW5l
clBvbGljeSYpOwotdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BS
ZXNwb25zZShGcmFtZSYsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBDT09QRGlzcG9zaXRpb24s
IGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91c1Jlc3BvbnNlVVJMLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHByZXZp
b3VzUmVzcG9uc2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KTsKLXZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZy
b21DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSwgQ09PUERpc3Bv
c2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJMLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG5l
eHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3VyY2UsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZFZpb2xhdGlv
blJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeSwgQ09PUERpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVS
TCYgcHJldmlvdXNSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNl
KEZyYW1lJiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbiwgY29uc3Qg
VVJMJiBjb29wVVJMLCBjb25zdCBVUkwmIG5leHRSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBuZXh0UmVzcG9uc2VPcmln
aW4sIGJvb2wgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9uU291cmNlLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGlvblJlcXVlc3Rlcj4mLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIHJlc3BvbnNlQ1NQLCBTYW5k
Ym94RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzLCBib29sIGlzRGlzcGxheWluZ0luaXRpYWxF
bXB0eURvY3VtZW50LCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVz
dWx0JiBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LCBjb25zdCBGdW5jdGlvbjx2b2lkKENP
T1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3km
IHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKT4mIHNl
bmRWaW9sYXRpb25SZXBvcnRzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBmMDllMGVkYWJlZTBjZTBhZDgz
ZDEyMjdjZGU0NTc2MWQ1ZGJmY2E0Li5iNjlkOWMxZjZhMzAwN2VlZGVmMzAwNGUwNmNkN2IyZmQ2
YzlkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTY5
LDYgKzY5LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJNaXhlZENvbnRlbnRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlv
blJlcXVlc3Rlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCIKQEAgLTYzNSw3ICs2MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIGJvb2wg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsK
ICAgICBpZiAoZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgbV9mcmFtZS0+aXNNYWluRnJh
bWUoKSkgewogICAgICAgICBpZiAoYXV0byByZXBvcnRpbmdFbmRwb2ludHNDYWNoZSA9IG1fZnJh
bWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+cmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUoKSA6
IG51bGxwdHIpCi0gICAgICAgICAgICByZXBvcnRpbmdFbmRwb2ludHNDYWNoZS0+YWRkRW5kUG9p
bnRzRnJvbVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgcmVwb3J0aW5n
RW5kcG9pbnRzQ2FjaGUtPmFkZEVuZHBvaW50c0Zyb21SZXNwb25zZShyZWRpcmVjdFJlc3BvbnNl
KTsKICAgICB9CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxs
b3dlZEJ5Q1NQKG5ld1JlcXVlc3QudXJsKCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkg
ewpAQCAtNzAyLDkgKzcwMyw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgIWRvQ3Jvc3NP
cmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghbmV3UmVxdWVzdC51cmwoKS5ob3N0KCkuaXNFbXB0eSgpICYm
IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRJZ25vcmVIb3N0KG5ld1JlcXVlc3QudXJsKCkpKSB7CiAg
ICAgICAgIGF1dG8gdXJsID0gbmV3UmVxdWVzdC51cmwoKTsKICAgICAgICAgdXJsLnNldEhvc3RB
bmRQb3J0KHsgfSk7CkBAIC03NDQsMTM0ICs3NDIsMzUgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmMKICAgICBwb2xpY3lDaGVja2VyLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1Jl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9vcmlnaW4uaHRtbCNjaGVjay1icm93c2luZy1jb250ZXh0LWdyb3VwLXN3aXRjaC1jb29w
LXZhbHVlCi1zdGF0aWMgYm9vbCBjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5VmFsdWUgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
VmFsdWUgcmVzcG9uc2VDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9y
aWdpbikKLXsKLSAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIGFjdGl2ZURvY3VtZW50
Q09PUFZhbHVlLCBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUFZh
bHVlLCBhbmQgcmVzcG9uc2VPcmlnaW4gaXMgdHJ1ZSwgcmV0dXJuIGZhbHNlLgotICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI21hdGNoaW5n
LWNvb3AKLSAgICBpZiAoYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09y
aWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGFjdGl2ZURvY3VtZW50Q09PUFZhbHVlID09IHJlc3BvbnNlQ09PUFZhbHVlICYm
IGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbi5pc1NhbWVPcmlnaW5BcyhyZXNwb25zZU9y
aWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIElmIGFsbCBvZiB0aGUgZm9s
bG93aW5nIGFyZSB0cnVlOgotICAgIC8vIC0gaXNJbml0aWFsQWJvdXRCbGFuaywKLSAgICAvLyAt
IGFjdGl2ZURvY3VtZW50Q09PUFZhbHVlJ3MgdmFsdWUgaXMgInNhbWUtb3JpZ2luLWFsbG93LXBv
cHVwcyIuCi0gICAgLy8gLSByZXNwb25zZUNPT1BWYWx1ZSBpcyAidW5zYWZlLW5vbmUiLAotICAg
IC8vIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIGlmIChpc0luaXRpYWxBYm91dEJsYW5rICYmIGFj
dGl2ZURvY3VtZW50Q09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNh
bWVPcmlnaW5BbGxvd1BvcHVwcyAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvb3JpZ2luLmh0bWwjY2hlY2stYmNnLXN3aXRjaC1uYXZpZ2F0aW9uLXJlcG9ydC1vbmx5
Ci1zdGF0aWMgYm9vbCBjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIGNvbnN0
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBhY3RpdmVEb2N1bWVudENPT1AsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIGNvbnN0IENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5JiByZXNwb25zZUNPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNw
b25zZU9yaWdpbikKLXsKLSAgICBpZiAoIWNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0QmxhbmssIGFjdGl2ZURvY3VtZW50Q09P
UC5yZXBvcnRPbmx5VmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9u
c2VDT09QLnJlcG9ydE9ubHlWYWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2goaXNJbml0aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9y
dE9ubHlWYWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1Au
dmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
Y2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJbml0
aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnZhbHVlLCBhY3RpdmVEb2N1bWVudE5h
dmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5VmFsdWUsIHJlc3BvbnNlT3Jp
Z2luKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0
YXRpYyBzdGQ6OnR1cGxlPFJlZjxTZWN1cml0eU9yaWdpbj4sIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5PiBjb21wdXRlUmVzcG9uc2VPcmlnaW5BbmRDT09QKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGlvbkFjdGlvbjo6UmVxdWVzdGVyPiYgcmVxdWVzdGVyLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kqIHJlc3BvbnNlQ1NQKQotewotICAgIC8vIE5vbi1pbml0aWFsIGVtcHR5IGRvY3VtZW50
cyAoYWJvdXQ6YmxhbmspIHNob3VsZCBpbmhlcml0IHRoZWlyIGNyb3NzLW9yaWdpbi1vcGVuZXIt
cG9saWN5IGZyb20gdGhlIG5hdmlnYXRpb24ncyBpbml0aWF0b3IgdG9wIGxldmVsIGRvY3VtZW50
LAotICAgIC8vIGlmIHRoZSBpbml0aWF0b3IgYW5kIGl0cyB0b3AgbGV2ZWwgZG9jdW1lbnQgYXJl
IHNhbWUtb3JpZ2luLCBvciBkZWZhdWx0ICh1bnNhZmUtbm9uZSkgb3RoZXJ3aXNlLgotICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNjkxMwotICAgIGlmIChTZWN1
cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKHJlc3BvbnNl
LnVybCgpKSAmJiByZXF1ZXN0ZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoUmVm
IHsgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpIH0sIHJlcXVlc3Rlci0+c2VjdXJpdHlPcmln
aW4oKS5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnRvcE9yaWdpbigpKSA/IHJlcXVlc3Rlci0+
Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSA6IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgfSk7
Ci0KLSAgICAvLyBJZiB0aGUgSFRUUCByZXNwb25zZSBjb250YWlucyBhIENTUCBoZWFkZXIsIGl0
IG1heSBzZXQgc2FuZGJveCBmbGFncywgd2hpY2ggd291bGQgY2F1c2UgdGhlIG9yaWdpbiB0byBi
ZWNvbWUgdW5pcXVlLgotICAgIGF1dG8gcmVzcG9uc2VPcmlnaW4gPSByZXNwb25zZUNTUCAmJiBy
ZXNwb25zZUNTUC0+c2FuZGJveEZsYWdzKCkgIT0gU2FuZGJveE5vbmUgPyBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgp
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUocmVzcG9uc2VPcmlnaW4pLCBv
YnRhaW5Dcm9zc09yaWdpbk9wZW5lclBvbGljeShyZXNwb25zZSwgZG9jdW1lbnQpKTsKLX0KLQog
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NpbmctdGhlLXdl
Yi5odG1sI3Byb2Nlc3MtYS1uYXZpZ2F0ZS1mZXRjaCAoU3RlcCAxMi41LjYpCi1ib29sIERvY3Vt
ZW50TG9hZGVyOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5l
clBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBEb2N1bWVudExvYWRlcjo6ZG9Dcm9zc09yaWdpbk9w
ZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICAvLyBDT09QIG9ubHkgYXBwbGllcyB0byB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4
dHMuCiAgICAgaWYgKCFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghbV9mcmFtZS0+ZG9j
dW1lbnQoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIFty
ZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QXSA9IGNvbXB1dGVSZXNwb25zZU9yaWdpbkFuZENP
T1AocmVzcG9uc2UsICptX2ZyYW1lLT5kb2N1bWVudCgpLCBtX3RyaWdnZXJpbmdBY3Rpb24ucmVx
dWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpKTsKLQotICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNw
cm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42LjIpCi0gICAgLy8gSWYgc2FuZGJv
eEZsYWdzIGlzIG5vdCBlbXB0eSBhbmQgcmVzcG9uc2VDT09QJ3MgdmFsdWUgaXMgbm90ICJ1bnNh
ZmUtbm9uZSIsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGFuIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJy
b3IgYW5kIGJyZWFrLgotICAgIGlmIChyZXNwb25zZUNPT1AudmFsdWUgIT0gQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiBmcmFtZUxvYWRlcigpLT5lZmZlY3RpdmVT
YW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSkgewotICAgICAgICBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0ID0gZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kocmVzcG9uc2UudXJs
KCksIHJlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1ApOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNj
b29wLWVuZm9yY2UKLUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgRG9j
dW1lbnRMb2FkZXI6OmVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbiwgY29uc3Qg
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCkKLXsKLSAgICBBU1NFUlQobV9m
cmFtZS0+aXNNYWluRnJhbWUoKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwot
ICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5RW5hYmxlZCgpKTsKLQotICAgIGlmICghbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gcmVxdWVzdGVyID0gbV90cmlnZ2VyaW5nQWN0aW9uLnJl
cXVlc3RlcigpOwotICAgICAgICBib29sIGN1cnJlbnRDb250ZXh0SXNTb3VyY2UgPSByZXF1ZXN0
ZXIgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5B
cyhyZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQgPSBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
IHsKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5j
cm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAotICAgICAgICAgICAgY3VycmVudENvbnRleHRJc1Nv
dXJjZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhl
cml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJGcmFtZSA9IG1fZnJhbWUtPmxvYWRlcigpLm9w
ZW5lcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gb3BlbmVyRG9jdW1lbnQgPSBvcGVu
ZXJGcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LT51cmwgPSBvcGVuZXJEb2N1bWVudC0+dXJsKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IG5ld0NPT1BFbmZvcmNl
bWVudFJlc3VsdCA9IHsKLSAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5u
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLAotICAgICAgICBtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9y
dE9ubHksCi0gICAgICAgIHJlc3BvbnNlVVJMLAotICAgICAgICByZXNwb25zZU9yaWdpbiwKLSAg
ICAgICAgcmVzcG9uc2VDT09QLAotICAgICAgICB0cnVlCi0gICAgfTsKKyAgICBVUkwgb3BlbmVy
VVJMOworICAgIGlmIChhdXRvIG9wZW5lckZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCkub3BlbmVy
KCkpCisgICAgICAgIG9wZW5lclVSTCA9IG9wZW5lckZyYW1lLT5kb2N1bWVudCgpID8gb3BlbmVy
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogVVJMKCk7CiAKLSAgICBpZiAoY2hlY2tJZkNPT1BW
YWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goZnJhbWVMb2FkZXIoKS0+c3Rh
dGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgbV9jdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeS52YWx1ZSwgbV9j
dXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1Au
dmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkgewotICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1
bHQubmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCA9IHRydWU7CisgICAgYXV0byBjdXJy
ZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNl
bWVudFJlc3VsdDo6ZnJvbShtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3koKSwgbV90cmlnZ2VyaW5nQWN0aW9uLnJlcXVlc3RlcigpLCBvcGVuZXJV
UkwpOwogCisgICAgYXV0byBuZXdDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBXZWJDb3JlOjpkb0Ny
b3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlLCBtX3RyaWdnZXJpbmdB
Y3Rpb24ucmVxdWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpLCBmcmFtZUxv
YWRlcigpLT5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSwgZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdCwgWyZdKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHJlc3BvbnNlT3JpZ2luKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2Yg
YnJvd3NpbmcgY29udGV4dCBncm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQg
b2YgdHJlYXRpbmcgdGhlIHdob2xlIHByb2Nlc3MgYXMgYSBncm91cC4KICAgICAgICAgaWYgKFBh
Z2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKSA+IDEpIHsKLSAgICAgICAgICAgIHNlbmRWaW9sYXRp
b25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCptX2ZyYW1lLCByZXNwb25zZUNP
T1AsIENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25zZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1f
cmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9y
dFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3Np
dGlvbjo6RW5mb3JjZSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3Bv
bnNlVVJMLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJl
c3BvbnNlT3JpZ2luLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmlzQ3VycmVudENv
bnRleHROYXZpZ2F0aW9uU291cmNlLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3Vs
ZFJlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChmcmFtZUxvYWRlcigpLT5zdGF0ZU1h
Y2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpLCBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VP
cmlnaW4pKSB7Ci0gICAgICAgIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5ID0gdHJ1ZTsKLQotICAgICAgICAvLyBG
SVhNRTogQWRkIHRoZSBjb25jZXB0IG9mIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0
aGUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFz
IGEgZ3JvdXAuCi0gICAgICAgIGlmIChQYWdlOjpub25VdGlsaXR5UGFnZUNvdW50KCkgPiAxKSB7
Ci0gICAgICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNw
b25zZSgqbV9mcmFtZSwgcmVzcG9uc2VDT09QLCBDT09QRGlzcG9zaXRpb246OlJlcG9ydGluZywg
cmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25z
ZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBt
X3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1fcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAg
ICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVz
cG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nLCBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQtPnVybCwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdC0+Y3VycmVudE9yaWdpbiwgcmVzcG9uc2VPcmlnaW4sIG1fY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+aXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG1fcmVx
dWVzdC5odHRwVXNlckFnZW50KCkpOworICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdo
ZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoKm1fZnJhbWUsIHJlc3BvbnNlQ09PUCwgZGlzcG9z
aXRpb24sIHJlc3BvbnNlLnVybCgpLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LnVybCwg
cmVzcG9uc2VPcmlnaW4sIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3VycmVudE9yaWdp
biwgbV9yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsK
KyAgICAgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09P
UFJlc3BvbnNlKCptX2ZyYW1lLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LCBkaXNwb3NpdGlvbiwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC51cmwsIHJlc3BvbnNlLnVybCgpLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmN1cnJl
bnRPcmlnaW4sIHJlc3BvbnNlT3JpZ2luLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0Lmlz
Q3VycmVudENvbnRleHROYXZpZ2F0aW9uU291cmNlLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgp
KTsKICAgICAgICAgfQorICAgIH0pOworICAgIGlmICghbmV3Q29vcEVuZm9yY2VtZW50UmVzdWx0
KSB7CisgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2Vs
bGVkRXJyb3IobV9yZXF1ZXN0KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCi0gICAgcmV0dXJuIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdDsKKyAgICByZXR1cm4gbmV3
Q29vcEVuZm9yY2VtZW50UmVzdWx0OwogfQogCiBib29sIERvY3VtZW50TG9hZGVyOjp0cnlMb2Fk
aW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkKQEAgLTk2OCw2ICs4NjcsOCBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlk
UmVjZWl2ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVz
cG9uc2UgfSwgbV9yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBudWxscHRyOworICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRv
Y3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuYWJsZWQoKSkKKyAgICAgICAgbV9yZXNwb25zZUNPT1AgPSBvYnRhaW5Dcm9z
c09yaWdpbk9wZW5lclBvbGljeShyZXNwb25zZSk7CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTikKICAgICAvLyBGSVhNRSgyMTg3NzkpOiBSZW1vdmUgdGhpcyBx
dWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVzIHRoZWlyIGxvZ2luIGZsb3cgcmVkZXNp
Z24uCkBAIC0xMDAxLDE1ICs5MDIsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgIHJl
c3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotc3RhdGljIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gdG9Ccm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4mIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQpCi17Ci0gICAgaWYgKCFjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0IHx8ICFjdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKQot
ICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUlu
R3JvdXA7Ci0gICAgaWYgKGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5LnZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVP
cmlnaW5QbHVzQ09FUCkKLSAgICAgICAgcmV0dXJuIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb246Ok5ld0lzb2xhdGVkR3JvdXA7Ci0gICAgcmV0dXJuIEJyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoRGVjaXNpb246Ok5ld1NoYXJlZEdyb3VwOwotfQotCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsKQEAgLTEwMzMsNyArOTI1LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQ29tcGxldGkKIAogICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIGlmIChhdXRvIHJlcG9ydGluZ0VuZHBvaW50c0NhY2hlID0gbV9mcmFtZS0+cGFn
ZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5yZXBvcnRpbmdFbmRwb2ludHNDYWNoZSgpIDogbnVsbHB0
cikKLSAgICAgICAgICAgIHJlcG9ydGluZ0VuZHBvaW50c0NhY2hlLT5hZGRFbmRQb2ludHNGcm9t
UmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICAgICAgcmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUt
PmFkZEVuZHBvaW50c0Zyb21SZXNwb25zZShyZXNwb25zZSk7CiAgICAgfQogCiAgICAgQVNTRVJU
KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgfHwgbV9tYWluUmVzb3Vy
Y2UpOwpAQCAtMTEwMywyMCArOTk1LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpCiAgICAg
fQogI2VuZGlmCiAKLSAgICBpZiAoIWRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9u
c2UocmVzcG9uc2UpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RkOjpleGNoYW5nZSht
X2lzQ29udGludWluZ0xvYWRBZnRlclJlc3BvbnNlUG9saWN5Q2hlY2ssIGZhbHNlKSkgewotICAg
ICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb246OlVzZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1haW5S
ZXNvdXJjZUxvYWRlciA9IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRlcigpOwogICAgIGlmIChtYWlu
UmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRlci0+bWFya0luQXN5bmNS
ZXNwb25zZVBvbGljeUNoZWNrKCk7CiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGlj
eUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7Ci0gICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaERlY2lzaW9uID0gdG9Ccm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uKG1f
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCk7Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tD
b250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVudGlmaWVyLCBicm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIG1haW5SZXNvdXJjZUxvYWRlciA9IFdURk1vdmUobWFpblJlc291cmNlTG9hZGVyKSwKKyAg
ICBmcmFtZUxvYWRlcigpLT5jaGVja0NvbnRlbnRQb2xpY3kobV9yZXNwb25zZSwgcmVxdWVzdElk
ZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbWFpblJlc291
cmNlTG9hZGVyID0gV1RGTW92ZShtYWluUmVzb3VyY2VMb2FkZXIpLAogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSwgcmVxdWVzdElk
ZW50aWZpZXJdIChQb2xpY3lBY3Rpb24gcG9saWN5LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgcmVz
cG9uc2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzcG9u
c2VJZGVudGlmaWVyLmlzVmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIpKTsKICAgICAgICAgY29u
dGludWVBZnRlckNvbnRlbnRQb2xpY3kocG9saWN5KTsKQEAgLTIxMDQsMTIgKzE5ODcsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7
CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpIHsKLSAgICAgICAgZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRs
aW5nT2ZSZXNwb25zZShtX3Jlc3BvbnNlKTsKLQotICAgICAgICAvLyBGSVhNRTogTm9uLWluaXRp
YWwgYWJvdXQ6YmxhbmsgbG9hZHMgbWF5IGNhdXNlIGEgYnJvd3NpbmcgY29udGV4dCBncm91cCBz
d2l0Y2guIEhvd2V2ZXIsIHN1Y2ggbG9hZCBpcyBzeW5jaHJvbm91cyBhbmQgZG9lc24ndAotICAg
ICAgICAvLyBpbnZvbHZlIGEgcmVzcG9uc2UgcG9saWN5IGRlY2lzaW9uLiBBcyBhIHJlc3VsdCwg
d2Ugc2ltdWxhdGUgYSBicm93c2luZyBjb250ZXh0IGdyb3VwIHN3aXRjaCB3aXRob3V0IGFjdHVh
bGx5IHN3YXBwaW5nIHByb2Nlc3MuCi0gICAgICAgIGlmIChtX2N1cnJlbnRDb29wRW5mb3JjZW1l
bnRSZXN1bHQgJiYgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKQotICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+c3dpdGNoQnJv
d3NpbmdDb250ZXh0c0dyb3VwKCk7CisgICAgICAgIGlmIChhdXRvIGNvb3BFbmZvcmNlbWVudFJl
c3VsdCA9IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UobV9yZXNwb25zZSkp
IHsKKyAgICAgICAgICAgIG1fcmVzcG9uc2VDT09QID0gY29vcEVuZm9yY2VtZW50UmVzdWx0LT5j
cm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICAgICAgICAgIGlmIChjb29wRW5mb3JjZW1lbnRS
ZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gpCisgICAgICAgICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+c3dpdGNoQnJvd3NpbmdDb250ZXh0c0dyb3VwKCk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBmaW5pc2hlZExvYWRpbmcoKTsKQEAgLTIzMzksNyArMjIyMSw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICNlbmRpZgogCiAgICAgbV9t
YWluUmVzb3VyY2UgPSBudWxscHRyOwotICAgIG1faXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9u
c2VQb2xpY3lDaGVjayA9IGZhbHNlOworICAgIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCA9IGZhbHNlOwogCiAgICAgdW5yZWdpc3RlclRlbXBvcmFyeVNlcnZp
Y2VXb3JrZXJDbGllbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
aW5kZXggOGVlMTRhMjRkNTdiMzRjYzdjYmVhNGNkYzc3MzEwMjcyNmQyZTVkNi4uOWZjNDEzN2E2
OTAwZTI0YTFhODJjZWM3Y2M3NTc5M2QzNDdlOTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKQEAgLTQyNSwxMCArNDI1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkOyB9CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRl
bnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5
LmdldCgpOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSkgOiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiYgY3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQ09PUDsgfQogCi0gICAgYm9v
bCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Ci0gICAgdm9p
ZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKGJvb2wgaXNDb250
aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjaykgeyBtX2lzQ29udGludWluZ0xvYWRB
ZnRlclJlc3BvbnNlUG9saWN5Q2hlY2sgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBv
bGljeUNoZWNrOyB9CisgICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExv
YWRTdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNp
b25hbExvYWRTdGFydGVkOyB9CisgICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92
aXNpb25hbExvYWRTdGFydGVkKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCkgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAtNDUwLDggKzQ1MCw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHVucmVnaXN0ZXJUZW1wb3JhcnlTZXJ2aWNlV29ya2Vy
Q2xpZW50KCk7CiAKLSAgICBib29sIGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
RW5mb3JjZW1lbnRSZXN1bHQgZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luLCBj
b25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IGRvQ3Jvc3NP
cmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgdm9pZCBsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmKTsKIApAQCAtNTY2
LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dvdEZpcnN0Qnl0ZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xv
YWRpbmdNdWx0aXBhcnRDb250ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNDb250aW51aW5n
TG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQ29u
dGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgeyBmYWxzZSB9OwogCiAgICAg
Ly8gRklYTUU6IERvY3VtZW50OjptX3Byb2Nlc3NpbmdMb2FkRXZlbnQgYW5kIERvY3VtZW50TG9h
ZGVyOjptX3dhc09ubG9hZERpc3BhdGNoZWQgYXJlIHJvdWdobHkgdGhlIHNhbWUKICAgICAvLyBh
bmQgc2hvdWxkIGJlIG1lcmdlZC4KQEAgLTU5MCw3ICs1ODksNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZXNvdXJjZVJlc3BvbnNlPiBtX3Jlc3BvbnNlczsKICAgICBib29sIG1fc3RvcFJlY29y
ZGluZ1Jlc3BvbnNlcyB7IGZhbHNlIH07CiAKLSAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJl
c3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBtX3Jlc3Bv
bnNlQ09PUDsKICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFJlc291cmNlTG9hZGVy
PiwgUmVmUHRyPFN1YnN0aXR1dGVSZXNvdXJjZT4+IFN1YnN0aXR1dGVSZXNvdXJjZU1hcDsKICAg
ICBTdWJzdGl0dXRlUmVzb3VyY2VNYXAgbV9wZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggOWJlZGVjNjM2YjJiNGZlNjE4
NGE0MTlhOWFiNjUzMzQ1YzE1YmQ3My4uZjdkNGU3YWZiODc2NDZhZWU2NjJkNTdlZmY4MjgzY2Q3
YjdjNzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTgxOCw3
ICs4MTgsNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7
CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwMjk0
ZGM0MzQyMDRiNmY5YmZmMjkyNjFhMDc3OWI2OGEwNGZlYmQ1Li4yMjY5OWM5YzUxODMyYTVhYThj
ODlhYmFiMmZmYzdlMDk4NWJmYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9w
ZW5lclBvbGljeSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKIAotICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0
ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5j
dGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzdlNTExMzc5MjQ1ZjlmNThkNDE4MDk0
ODMxNDY3MTViNGY2MGJkOC4uNGI5NTE1ZjM3MGZiMjJjMjU5ZTI5NzY3ZDk2OGM0OTIzNmU5NzQy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MTMsNyArNDEzLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICB9
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIEJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2hEZWNpc2lvbiwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKK3Zv
aWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbnRlbnRQb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFhY3RpdmVEb2N1bWVu
dExvYWRlcigpKSB7CiAgICAgICAgIC8vIExvYWQgd2FzIGNhbmNlbGxlZApAQCAtNDIyLDcgKzQy
Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUG9saWN5Q2hlCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFZh
bGlkYXRlIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllci4KLSAgICBjbGllbnQoKS5kaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigp
LT5yZXF1ZXN0KCksIGlkZW50aWZpZXIsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2Fk
QXR0cmlidXRlKCksIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdURk1vdmUo
ZnVuY3Rpb24pKTsKKyAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlkZW50aWZpZXIs
IGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2FkQXR0cmlidXRlKCksIFdURk1vdmUoZnVu
Y3Rpb24pKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50
LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxO
ZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZv
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50KQpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRl
ciA9IG1fY2xpZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LnN1YnN0aXR1dGVEYXRhKCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzV2Vi
QXJjaGl2ZUZvck1haW5GcmFtZShyZXF1ZXN0LmlzUmVxdWVzdEZyb21DbGllbnRPclVzZXJJbnB1
dCgpKTsKICAgICBsb2FkZXItPnNldEFsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lKHJlcXVlc3Qu
aXNSZXF1ZXN0RnJvbUNsaWVudE9yVXNlcklucHV0KCkpOwotICAgIGxvYWRlci0+c2V0SXNDb250
aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjayhyZXF1ZXN0LnNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCgpID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJS
ZXNwb25zZVBvbGljeURlY2lzaW9uKTsKKyAgICBsb2FkZXItPnNldElzQ29udGludWluZ0xvYWRB
ZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQocmVxdWVzdC5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQoKSA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCk7CiAgICAgYWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVkZWQobG9h
ZGVyLT5yZXF1ZXN0KCkpOwogICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
TmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlNzQ3NWE0MjQ3ZTk5ZTZjNGI4NzgxYTk0MzIxNzVi
ZWZiMmY0YjQ1Li5hZTNmNmQ2MDZhOTFiOTA5OWRjOTA0YjlkNWM2ODIzMjg2MjE0YjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMjIwLDcgKzIyMCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250
ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIs
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIENvbnRlbnRQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uJiYpOworICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uJiYpOwogCiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW4oKTsKIApAQCAtMjM5LDcgKzIz
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIHNhbmRib3ggZmxhZ3Mgd2lsbCBi
ZSBmb3JjZWQsIHJlZ2FyZGxlc3Mgb2YgY2hhbmdlcyB0bwogICAgIC8vIHRoZSBzYW5kYm94IGF0
dHJpYnV0ZSBvZiBhbnkgcGFyZW50IGZyYW1lcy4KICAgICB2b2lkIGZvcmNlU2FuZGJveEZsYWdz
KFNhbmRib3hGbGFncyBmbGFncykgeyBtX2ZvcmNlZFNhbmRib3hGbGFncyB8PSBmbGFnczsgfQot
ICAgIFNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAK
ICAgICBib29sIGNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IFVSTCYsIGJvb2wg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0OwogCkBAIC0yNjksNiArMjY5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgbG9hZHNTeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9s
b2Fkc1N5bmNocm9ub3VzbHk7IH0KIAogICAgIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lJiBzdGF0
ZU1hY2hpbmUoKSB7IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQorICAgIGNvbnN0IEZyYW1lTG9h
ZGVyU3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFj
aGluZTsgfQogCiAgICAgLy8gRklYTUU6IHNob3VsZCByZXR1cm4gUmVmUHRyLgogICAgIFdFQkNP
UkVfRVhQT1JUIEZyYW1lKiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0YTcwNmM4N2Y1OGM4YjA4MjRlOGNl
YjM2M2M2MTQ3YzI3Y2RjMzUyLi4wZjY0ZDEzODAyOTllNDc5ZGQwNDFkMWEzYTc3YWE0NjI1Nzk5
ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTkx
LDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBh
Z2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24s
IEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA1YTBmYzQxZTlj
MzI5YTFiMzAzNDNmNDc4ZjI5NWYyNmM2ZTZiNDExLi5mYzhjNWM5NzEyYTgwNTk5N2Y2ZjNiOTJl
NjY2YjhjYmFkZTlmM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rp
b24uY3BwCkBAIC0zNywyMiArMzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBHbG9iYWxGcmFtZUlkZW50aWZpZXIgY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuIHsgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3Io
UGFnZUlkZW50aWZpZXIgeyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgp
LnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pIH07Ci0gICAgcmV0dXJuIEdsb2JhbEZyYW1l
SWRlbnRpZmllcigpOwotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpSZXF1ZXN0ZXI6OlJlcXVlc3Rl
cihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBtX3VybCB7IFVSTCB7IGRvY3VtZW50
LnVybCgpIH0gfQotICAgICwgbV9vcmlnaW4geyAmZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9
Ci0gICAgLCBtX3RvcE9yaWdpbiB7ICZkb2N1bWVudC50b3BPcmlnaW4oKSB9Ci0gICAgLCBtX2Ny
b3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgZG9jdW1lbnQuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
KSB9Ci0gICAgLCBtX2dsb2JhbEZyYW1lSWRlbnRpZmllcihjcmVhdGVHbG9iYWxGcmFtZUlkZW50
aWZpZXIoZG9jdW1lbnQpKQotewotfQotCiBOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtl
eVN0YXRlRGF0YTo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlT
dGF0ZSYgdWlFdmVudCkKICAgICA6IGlzVHJ1c3RlZCB7IHVpRXZlbnQuaXNUcnVzdGVkKCkgfQog
ICAgICwgc2hpZnRLZXkgeyB1aUV2ZW50LnNoaWZ0S2V5KCkgfQpAQCAtMTAzLDcgKzg3LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+IG1v
dXNlRXZlbnREYXRhRm9yRmlyc3RNb3UKIH0KIAogTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbihEb2N1bWVudCYgcmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIE5h
dmlnYXRpb25UeXBlIHR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgRXZlbnQqIGV2ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSkKLSAgICA6IG1fcmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KKyAgICA6IG1f
cmVxdWVzdGVyIHsgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIpIH0KICAgICAs
IG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IHR5
cGUgfQogICAgICwgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSB9CkBAIC0xMjksNyArMTEzLDcgQEAgc3RhdGljIE5hdmlnYXRpb25U
eXBlIG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zv
cm1TdWIKIH0KIAogTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYg
cmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5pdGlh
dGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIEZyYW1lTG9hZFR5cGUgZnJhbWVM
b2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCi0gICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3Rl
ciB9CisgICAgOiBtX3JlcXVlc3RlciB7IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmZyb20ocmVxdWVz
dGVyKSB9CiAgICAgLCBtX3Jlc291cmNlUmVxdWVzdCB7IHJlc291cmNlUmVxdWVzdCB9CiAgICAg
LCBtX3R5cGUgeyBuYXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9u
LCAhIWV2ZW50KSB9CiAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5oCmluZGV4IDFlOGZkZmEwMzM2YzdlM2ZjZGI4ZTIzZWZmY2NhODk0MGEzNDNiZDku
LjE2M2NjN2U4M2NiZDU1OTlmZWE3NTM3MGQ3OTM0Y2MwOWFkZjEzZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIu
aCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02NCwyMyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwog
ICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0g
ICAgY2xhc3MgUmVxdWVzdGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlcXVlc3Rlcihjb25z
dCBEb2N1bWVudCYpOwotCi0gICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KLSAgICAgICAgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4o
KSBjb25zdCB7IHJldHVybiAqbV90b3BPcmlnaW47IH0KLSAgICAgICAgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5OyB9Ci0gICAgICAgIGNvbnN0IEdsb2JhbEZyYW1lSWRlbnRpZmll
ciYgZ2xvYmFsRnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGcmFtZUlk
ZW50aWZpZXI7IH0KLSAgICBwcml2YXRlOgotICAgICAgICBVUkwgbV91cmw7Ci0gICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gbV90b3BPcmlnaW47Ci0gICAgICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG1fY3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3k7Ci0gICAgICAgIEdsb2JhbEZyYW1lSWRlbnRpZmllciBtX2ds
b2JhbEZyYW1lSWRlbnRpZmllcjsKLSAgICB9OwotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVx
dWVzdGVyPiYgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQogCiAgICAgc3RydWN0IFVJRXZlbnRXaXRoS2V5U3Rh
dGVEYXRhIHsKICAgICAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdp
dGhLZXlTdGF0ZSYpOwpAQCAtMTA1LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgTmF2aWdhdGlv
bkFjdGlvbiBjb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0ZXItPnVybCgpLmlzRW1wdHkoKSB8fCBtX3Jl
c291cmNlUmVxdWVzdC51cmwoKS5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0ZXItPnVybC5pc0VtcHR5KCkgfHwg
bV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuaXNFbXB0eSgpOyB9CiAKICAgICBVUkwgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCk7IH0KICAgICBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1
ZXN0OyB9CkBAIC0xNDcsNyArMTMyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBEbyBu
b3QgYWRkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYXRpbmcgZG9jdW1lbnQgb3Ig
YSBzdWJvYmplY3QgdGhhdCBob2xkcyB0aGUKICAgICAvLyBvcmlnaW5hdGluZyBkb2N1bWVudC4g
U2VlIGNvbW1lbnQgYWJvdmUgdGhlIGNsYXNzIGZvciBtb3JlIGRldGFpbHMuCi0gICAgc3RkOjpv
cHRpb25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGlvblJlcXVlc3Rlcj4gbV9yZXF1ZXN0ZXI7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3Vy
Y2VSZXF1ZXN0OwogICAgIE5hdmlnYXRpb25UeXBlIG1fdHlwZTsKICAgICBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzZl
NmUzOWE3OWY3MTVmZTVlZDAyODcxZGRmZWI1N2ExY2EzMzk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuY3BwCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF2aWdh
dGlvblJlcXVlc3Rlci5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBjcmVhdGVHbG9iYWxG
cmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmICghZG9j
dW1lbnQuZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8g
cGFnZUlEID0gZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCk7CisgICAgYXV0byBm
cmFtZUlEID0gZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpOworICAgIGlmICgh
cGFnZUlEIHx8ICFmcmFtZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7ICpwYWdlSUQsICpmcmFtZUlEIH07Cit9CisK
K05hdmlnYXRpb25SZXF1ZXN0ZXIgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShEb2N1bWVudCYg
ZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgZG9jdW1lbnQudXJsKCksCisgICAg
ICAgIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksCisgICAgICAgIGRvY3VtZW50LnRvcE9yaWdp
bigpLAorICAgICAgICBkb2N1bWVudC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAorICAgICAg
ICBjcmVhdGVHbG9iYWxGcmFtZUlkZW50aWZpZXIoZG9jdW1lbnQpCisgICAgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25SZXF1ZXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVx
dWVzdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y5NjkxMjZjNjJmMmNlOTdkMjgyMTI4MTg0NTM5ZjYzNGZk
MDMwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
UmVxdWVzdGVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCIKKyNpbmNsdWRlICJHbG9iYWxG
cmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCitzdHJ1Y3QgTmF2aWdhdGlvblJlcXVl
c3RlciB7CisgICAgc3RhdGljIE5hdmlnYXRpb25SZXF1ZXN0ZXIgZnJvbShEb2N1bWVudCYpOwor
CisgICAgVVJMIHVybDsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwor
ICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luOworICAgIENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8R2xvYmFs
RnJhbWVJZGVudGlmaWVyPiBnbG9iYWxGcmFtZUlkZW50aWZpZXI7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE5h
dmlnYXRpb25SZXF1ZXN0ZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgdXJsIDw8IHNlY3VyaXR5T3JpZ2luLmdldCgpIDw8IHRvcE9yaWdpbi5nZXQo
KSA8PCBjcm9zc09yaWdpbk9wZW5lclBvbGljeSA8PCBnbG9iYWxGcmFtZUlkZW50aWZpZXI7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1
ZXN0ZXI+IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CisgICAgZGVjb2RlciA+PiB1cmw7CisgICAgaWYg
KCF1cmwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXNlY3Vy
aXR5T3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB0b3BP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghdG9wT3Jp
Z2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxD
cm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CisgICAgZGVj
b2RlciA+PiBjcm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICBpZiAoIWNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4+IGdsb2JhbEZyYW1lSWRl
bnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGdsb2JhbEZyYW1lSWRlbnRpZmllcjsKKyAgICBpZiAo
IWdsb2JhbEZyYW1lSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBOYXZpZ2F0aW9uUmVxdWVzdGVyIHsgV1RGTW92ZSgqdXJsKSwgc2VjdXJpdHlP
cmlnaW4ucmVsZWFzZU5vbk51bGwoKSwgdG9wT3JpZ2luLnJlbGVhc2VOb25OdWxsKCksIFdURk1v
dmUoKmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KSwgKmdsb2JhbEZyYW1lSWRlbnRpZmllciB9Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmNwcAppbmRleCBmMTFjNjU2NjVmNjNjNDBiZjdkMDQ0
OGU3ZDQ5ZGU0NGI0NzVjNmJkLi40YjkzNzE3NGQ5MmI1MGYyY2NjZTc4NjY3MjM2OWM4NzIwNTVk
OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRz
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHND
YWNoZS5jcHAKQEAgLTY1LDEzICs2NSwxNyBAQCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6UmVw
b3J0aW5nRW5kcG9pbnRzQ2FjaGUoKSA9IGRlZmF1bHQ7CiBSZXBvcnRpbmdFbmRwb2ludHNDYWNo
ZTo6flJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKCkgPSBkZWZhdWx0OwogCiAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvcmVwb3J0aW5nLyNwcm9jZXNzLWhlYWRlcgotdm9pZCBSZXBvcnRpbmdFbmRw
b2ludHNDYWNoZTo6YWRkRW5kUG9pbnRzRnJvbVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQordm9pZCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6YWRkRW5kcG9pbnRz
RnJvbVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIHJl
dHVybiBhZGRFbmRwb2ludHNGcm9tUmVwb3J0VG9IZWFkZXIocmVzcG9uc2UudXJsKCksIHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVwb3J0VG8pKTsKK30KKwordm9p
ZCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6YWRkRW5kcG9pbnRzRnJvbVJlcG9ydFRvSGVhZGVy
KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGNvbnN0IFN0cmluZyYgcmVwb3J0VG9IZWFkZXJWYWx1
ZSkKIHsKLSAgICBhdXRvIHJlcG9ydFRvSGVhZGVyVmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OlJlcG9ydFRvKTsKICAgICBpZiAocmVwb3J0VG9IZWFkZXJW
YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2VjdXJpdHlPcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKTsKKyAgICBhdXRvIHNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZVVSTCk7CiAgICAg
aWYgKHNlY3VyaXR5T3JpZ2luLT5pc1VuaXF1ZSgpIHx8ICFzZWN1cml0eU9yaWdpbi0+aXNQb3Rl
bnRpYWxseVRydXN0d29ydGh5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTQsMTAgKzk4LDEw
IEBAIHZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgd2hpbGUgKGRpY3Rpb25hcnlTdGFydCA8
IHJlcG9ydFRvSGVhZGVyVmFsdWUubGVuZ3RoKCkpIHsKICAgICAgICAgYXV0byBpbmRleE9mTmV4
dFRvcExldmVsQ29tbWEgPSBmaW5kTmV4dFRvcExldmVsQ29tbWEoZGljdGlvbmFyeVN0YXJ0KTsK
ICAgICAgICAgaWYgKGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSA9PSBub3RGb3VuZCkgewotICAg
ICAgICAgICAgYWRkRW5kcG9pbnRGcm9tRGljdGlvbmFyeShzZWN1cml0eU9yaWdpbi0+ZGF0YSgp
LCByZXNwb25zZS51cmwoKSwgcmVwb3J0VG9IZWFkZXJWYWx1ZS5zdWJzdHJpbmcoZGljdGlvbmFy
eVN0YXJ0KSk7CisgICAgICAgICAgICBhZGRFbmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5
T3JpZ2luLT5kYXRhKCksIHJlc3BvbnNlVVJMLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmlu
ZyhkaWN0aW9uYXJ5U3RhcnQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcmVz
cG9uc2UudXJsKCksIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5nKGRpY3Rpb25hcnlTdGFy
dCwgaW5kZXhPZk5leHRUb3BMZXZlbENvbW1hIC0gZGljdGlvbmFyeVN0YXJ0KSk7CisgICAgICAg
IGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcmVzcG9u
c2VVUkwsIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5nKGRpY3Rpb25hcnlTdGFydCwgaW5k
ZXhPZk5leHRUb3BMZXZlbENvbW1hIC0gZGljdGlvbmFyeVN0YXJ0KSk7CiAgICAgICAgIGRpY3Rp
b25hcnlTdGFydCA9IGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSArIDE7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaAppbmRleCA2
MzAwZjJlMWNmMzY1NTk4ZGU3YjIyMjU5MzhhZmU2OWU1M2JhNGYyLi45ZWExNjRkYTA5NTk1N2E4
NzYyZmZhNzU2ZDVjNWFhM2MwMDYwZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaApAQCAtNDIsNyArNDIsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSZXBvcnRpbmdFbmRwb2ludHNDYWNoZT4gY3JlYXRl
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKCk7CiAKLSAg
ICB2b2lkIGFkZEVuZFBvaW50c0Zyb21SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRFbmRwb2ludHNGcm9tUmVwb3J0VG9IZWFkZXIo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhZGRFbmRwb2ludHNGcm9tUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFVSTCBlbmRwb2ludFVSTChjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIGdyb3VwKSBjb25zdDsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQuaAppbmRleCBhYjEzNTNiY2MwODJlNDFiYTU4OWM5YzI5YzIxMDg1M2EzOTk1Mjg1
Li41ZGU3OTJjNGFiM2FkYTU0OTJhNGJiZmFiZWUyYzZiZjQwYzNiZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgOiB1aW50OF90IHsgTm8sIFllc0FmdGVyTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uLCBZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24gfTsKK2VudW0gY2xh
c3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogdWludDhfdCB7IE5vLCBZZXNBZnRlck5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwgWWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZD4g
ewogICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsCiAgICAgICAg
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sCiAgICAgICAgIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24sCi0gICAgICAgIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uCisgICAgICAgIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkCiAgICAg
PjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYTMwMWI3ODQ0Y2M4NTVmZTdkOTlmNGQ3MzZmY2Q4
NWY5NjY5MDAwNi4uZGY1OWRkMTJlMGY3YTQ5YWI3NWFkNzI4MzZkODA3NDFlMDhmYWI0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKQEAgLTI4NSw3ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoUmVmPEJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeT4mJik7IC8vIE9ubHkgdXNlZCBieSBXZWJLaXRMZWdhY3kuCiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UGFnZSYpPiYpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBub25VdGlsaXR5UGFnZUNvdW50KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIG5vblV0aWxpdHlQYWdlQ291bnQoKTsK
IAogICAgIHVuc2lnbmVkIHN1YmZyYW1lQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkZWI4MDlmN2M4Njlk
YzVhMjExOTg3ODc1MWYwYTYyZDgxYmIxOTNiLi5kYzMxMzUxOWExYzM3NDgzMWMzN2FkODlkN2Ey
YWMxYTdlMmYxNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtMjg0NCwyOSArMjg0NCw2IEBAIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiB9CiAj
ZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJh
bnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiByZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoIXJlc291cmNlTG9hZElkZW50aWZpZXIpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwot
ICAgIH0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oc291cmNl
UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRvIHNlc3Npb24gPSBj
b25uZWN0aW9uLT5uZXR3b3JrU2Vzc2lvbigpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRvIGxvYWRl
ciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoKnJlc291cmNlTG9hZElk
ZW50aWZpZXIpOwotICAgIGlmICghbG9hZGVyKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRl
bnRpZmllcigpOwotICAgIHNlc3Npb24tPmFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5z
ZmVyKGxvYWRlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihpZGVu
dGlmaWVyKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2ViUGFnZU5ldHdvcmtQYXJh
bWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0
byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlNzU4NWI4NmU2MGE3YTA0NWQ4
NTQ4NTExODY1YTk5MjNmYmEyZDIzLi4zZTRiYWUzMDA4YmIwZjcwMWIxYzg3NWE4MzQ4NThjNGY0
MmY5Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC00MjUsNyArNDI1LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5j
TmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6
OkF0dGFjaG1lbnQ+JiYsIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmKTsKLSAg
ICB2b2lkIHByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRp
b24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlhYTllYWE5ZjEzMWIwMWY2NjliNTM4ODUwMDIyNmU0MzUy
YTFkMGEuLmU4OWY4OTdjOTVhZTliYTkzNmM2MTAwNjkzMDQzZmU0ZDA0MzYyMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTk2LDggKzE5Niw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBDbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAotICAgIFByZXBhcmVM
b2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJj
ZVByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gbmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXIpIEFzeW5jCi0KICAgICBBZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIFJlbW92
ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAgICAgQ291bnROb25EZWZhdWx0U2Vz
c2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc2l6ZV90IGNvdW50KSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBmNDFmNTU5MGJkNmZmZjc3NjgzYzBj
ODIxYjA1YzY2Y2FlNTRhMTE0Li5kZGY5NmRlMDMzYzY1ZjU1MjFmM2JiYmU4MWQxOWFjOGU3YTVi
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE0LDcgKzExNCwxNiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkOwogCiAgICAgZW5jb2RlciA8PCBkb2N1bWVudFVSTDsKLSAgICAKKworICAgIGVu
Y29kZXIgPDwgaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQ7CisgICAgZW5jb2RlciA8
PCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudDsKKyAgICBlbmNvZGVyIDw8IGVmZmVj
dGl2ZVNhbmRib3hGbGFnczsKKyAgICBlbmNvZGVyIDw8IG9wZW5lclVSTDsKKyAgICBlbmNvZGVy
IDw8IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OworCisgICAgZW5jb2RlciA8PCBuYXZp
Z2F0aW9uSUQ7CisgICAgZW5jb2RlciA8PCBuYXZpZ2F0aW9uUmVxdWVzdGVyOworCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlcnNNb2RlOwog
ICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CkBAIC0y
OTIsNiArMzAxLDQ5IEBAIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRvY3VtZW50VVJMOwogCisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZDsK
KyAgICBkZWNvZGVyID4+IGlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkOworICAgIGlm
ICghaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmVzdWx0LmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkID0g
KmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkOworCisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudDsKKyAgICBkZWNvZGVyID4+IGlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworICAgIGlmICghaXNEaXNwbGF5aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVz
dWx0LmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gKmlzRGlzcGxheWluZ0luaXRp
YWxFbXB0eURvY3VtZW50OworCisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RmxhZ3M+IGVmZmVj
dGl2ZVNhbmRib3hGbGFnczsKKyAgICBkZWNvZGVyID4+IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsK
KyAgICBpZiAoIWVmZmVjdGl2ZVNhbmRib3hGbGFncykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXN1bHQuZWZmZWN0aXZlU2FuZGJveEZsYWdzID0gKmVmZmVjdGl2ZVNhbmRi
b3hGbGFnczsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBvcGVuZXJVUkw7CisgICAgZGVjb2Rl
ciA+PiBvcGVuZXJVUkw7CisgICAgaWYgKCFvcGVuZXJVUkwpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmVzdWx0Lm9wZW5lclVSTCA9IFdURk1vdmUoKm9wZW5lclVSTCk7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBzb3VyY2VDcm9zc09y
aWdpbk9wZW5lclBvbGljeTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OworICAgIGlmICghc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LnNvdXJjZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5ID0gV1RGTW92ZSgqc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpOworCisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmF2aWdhdGlvbklEOworICAgIGRlY29kZXIgPj4gbmF2
aWdhdGlvbklEOworICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHJlc3VsdC5uYXZpZ2F0aW9uSUQgPSAqbmF2aWdhdGlvbklEOworCisgICAg
c3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+PiBuYXZpZ2F0
aW9uUmVxdWVzdGVyOworICAgIGRlY29kZXIgPj4gbmF2aWdhdGlvblJlcXVlc3RlcjsKKyAgICBp
ZiAoIW5hdmlnYXRpb25SZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXN1bHQubmF2aWdhdGlvblJlcXVlc3RlciA9IFdURk1vdmUoKm5hdmlnYXRpb25SZXF1
ZXN0ZXIpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgZGVjb2RlciA+PiBz
ZXJ2aWNlV29ya2Vyc01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggNGNiODVjYmEy
MDZiODAyODdkNDJiNWJlNTZiY2M4ZTkzMjYxMjU1MS4uM2Y4MDRkMTc1MWFlMDgzYTQ3NDVjYzYx
NDU1MjIyN2Q1ZWYzNTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25SZXF1ZXN0
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVySWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKQEAgLTY3LDYgKzY4LDE0IEBAIHB1YmxpYzoKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKICAg
ICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAg
ICBVUkwgZG9jdW1lbnRVUkw7CisKKyAgICBib29sIGlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lF
bmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50IHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2FuZGJv
eEZsYWdzIHsgV2ViQ29yZTo6U2FuZGJveE5vbmUgfTsKKyAgICBVUkwgb3BlbmVyVVJMOworICAg
IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OworICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCB7IDAgfTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok5hdmlnYXRpb25SZXF1ZXN0ZXI+IG5hdmlnYXRpb25SZXF1ZXN0ZXI7CiAg
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJzTW9kZSBzZXJ2aWNlV29ya2Vyc01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6
Ok5vbmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFmMjNhODg3NTZkMjRiZGE5ZmRhNWI2ODllMDU0
MjBkYmMxYjRmLi40NzZkMGZlNGFhMjA4MDcwYzZmMTNjNmQ0ZGM5NTU2YjQ5MmMxMTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC02NTIsNiArNjUzLDQ3IEBA
IGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRXb3JrZXJMb2FkRm9y
Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwj
cHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEyLjUuNikKK3N0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VFcnJvcj4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFu
ZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IC8vIENPT1Agb25seSBhcHBsaWVzIHRvIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cy4KKyAg
ICBpZiAoIWlzTWFpbkZyYW1lTG9hZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgaWYgKCFtX3BhcmFtZXRlcnMuaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudFNlY3VyaXR5UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgaWYgKCFyZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eSkuaXNOdWxsKCkpIHsKKyAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHJlc3BvbnNlLnVybCgpIH0sIG51bGxwdHIp
OworICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH0sIG9yaWdpbmFsUmVx
dWVzdCgpLmh0dHBSZWZlcnJlcigpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydFBhcnNp
bmdFcnJvcnM6Ok5vKTsKKyAgICB9CisKKyAgICBpZiAoIW1fY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdCkgeworICAgICAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IG1fcGFyYW1ldGVycy5zb3Vy
Y2VPcmlnaW4gPyBSZWYgeyAqbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiB9IDogU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZVVuaXF1ZSgpOworICAgICAgICBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRS
ZXN1bHQgPSBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0Ojpmcm9tKG1f
cGFyYW1ldGVycy5kb2N1bWVudFVSTCwgV1RGTW92ZShzb3VyY2VPcmlnaW4pLCBtX3BhcmFtZXRl
cnMuc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIG1fcGFyYW1ldGVycy5uYXZpZ2F0aW9u
UmVxdWVzdGVyLCBtX3BhcmFtZXRlcnMub3BlbmVyVVJMKTsKKyAgICB9CisKKyAgICBtX2N1cnJl
bnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBXZWJDb3JlOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFu
ZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMubmF2aWdhdGlvblJlcXVlc3Rl
ciwgY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpLCBtX3BhcmFtZXRlcnMuZWZmZWN0aXZlU2Fu
ZGJveEZsYWdzLCBtX3BhcmFtZXRlcnMuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQs
ICptX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQsIFsmXShDT09QRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiByZXNwb25zZUNPT1AsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbikgeworICAgICAgICBpZiAocmVzcG9u
c2VDT09QLmhhc1JlcG9ydGluZ0VuZHBvaW50KGRpc3Bvc2l0aW9uKSkKKyAgICAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1Rv
Q09PUFJlc3BvbnNlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHJlc3BvbnNlQ09PUCwgZGlz
cG9zaXRpb24sIHJlc3BvbnNlLnVybCgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQt
PnVybCwgcmVzcG9uc2VPcmlnaW4uZGF0YSgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQtPmN1cnJlbnRPcmlnaW4tPmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVy
KCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBVc2VyQWdlbnQoKSwgcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSZXBvcnRUbykgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCk7CisgICAgICAgIGlmIChtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5Lmhhc1JlcG9ydGluZ0VuZHBvaW50KGRpc3Bvc2l0aW9uKSkKKyAgICAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2
aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIGRp
c3Bvc2l0aW9uLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPnVybCwgcmVzcG9uc2Uu
dXJsKCksIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3VycmVudE9yaWdpbi0+ZGF0
YSgpLCByZXNwb25zZU9yaWdpbi5kYXRhKCksIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC0+aXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG9yaWdpbmFsUmVxdWVzdCgpLmh0
dHBVc2VyQWdlbnQoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICB9KTsKKyAgICBp
ZiAoIW1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwg
Ik5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3Ms
IFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCitzdGF0aWMgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiB0
b0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiYgY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdCkKK3sKKyAgICBpZiAoIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQg
fHwgIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gpCisgICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uOjpTdGF5SW5Hcm91cDsKKyAgICBpZiAoY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+
Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kudmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lW
YWx1ZTo6U2FtZU9yaWdpblBsdXNDT0VQKQorICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cDsKKyAgICByZXR1cm4gQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3U2hhcmVkR3JvdXA7Cit9CisKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25z
ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBl
eHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRh
dGlvbj0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCks
IHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CkBAIC03NDAsNiArNzgyLDE1
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKG1fcmVzcG9uc2UpKSB7Cisg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPR19FUlJPUigiZGlkUmVjZWl2ZVJlc3BvbnNlOiBJbnRl
cnJ1cHRpbmcgbG9hZCBkdWUgdG8gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZXJyb3IgPSBXVEZNb3ZlKCplcnJvcildIHsKKyAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX25ldHdvcmtMb2FkKQorICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZh
aWxMb2FkaW5nKGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgfQorCiAgICAgYXV0byByZXNwb25z
ZSA9IHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFJlc291cmNlUmVzcG9uc2UgeyBtX3Jlc3Bv
bnNlIH0sIFJlc291cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2Fm
ZSk7CiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVSZXNwb25zZTogVXNpbmcgcmVzcG9uc2UgZm9yIHN5bmNocm9ub3VzIGxv
YWQiKTsKQEAgLTc2MSw3ICs4MTIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgIC8v
IGEgbWFpbiByZXNvdXJjZSBiZWNhdXNlIHRoZSBlbWJlZGRpbmcgY2xpZW50IG11c3QgZGVjaWRl
IHdoZXRoZXIgdG8gYWxsb3cgdGhlIGxvYWQuCiAgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9u
c2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7CisgICAgc2VuZERp
ZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChyZXNw
b25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk7CiAKICAgICBpZiAo
bV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCiAgICAgICAgIG1fY29ubmVj
dGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9u
c2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvLCByZXNwb25z
ZSksIDApOwpAQCAtNzgwLDYgKzgzMSwyNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJv
d3NpbmdDb250ZXh0R3JvdXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit7CisgICAg
YXV0byBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID0gdG9Ccm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uKG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCk7Cisg
ICAgaWYgKGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUluR3JvdXApIHsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gbG9hZGVyID0gbV9jb25uZWN0aW9uLT50YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKGNvcmVJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChsb2FkZXIgPT0gdGhp
cyk7CisgICAgYXV0byBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKKyAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtTZXNz
aW9uKCktPmFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKGxvYWRlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IHJlc3Bv
bnNlLnVybCgpIH07CisgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6VHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlv
bihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQs
IGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHJlc3BvbnNlRG9tYWluLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCBbZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzZXNzaW9uID0gbWFrZVdlYWtQdHIo
Y29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKCkpXShib29sIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlTG9hZGVyV2FpdGluZ1dlYlBy
b2Nlc3NUcmFuc2ZlcihleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCkBAIC05NDMsNiArMTAx
NSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3Bv
bnNlKHJlZGlyZWN0UmVzcG9uc2UpKSB7CisgICAgICAgIGRpZEZhaWxMb2FkaW5nKCplcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIp
IHsKICAgICAgICAgaWYgKHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSkKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5lbmFibGVDb250ZW50RXh0
ZW5zaW9uc0NoZWNrKCk7CkBAIC0xMjQ5LDYgKzEzMjYsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjoKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChhdXRvIGVycm9yID0gZG9Dcm9zc09y
aWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSkpIHsKKyAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HX0VSUk9SKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IEludGVycnVwdGluZyBs
b2FkIGR1ZSB0byBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIpOworICAgICAgICBkaWRGYWls
TG9hZGluZygqZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVzcG9uc2Ug
PSBzYW5pdGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShXVEZNb3ZlKHJlc3BvbnNlKSwgUmVzb3VyY2VS
ZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsKICAgICBpZiAoaXNT
eW5jaHJvbm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+cmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKTsKQEAgLTEyNTksNyArMTM0Miw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJp
ZXZlQ2FjaGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIElQQyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQpIiwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgc2VuZERpZFJlY2VpdmVS
ZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChyZXNwb25zZSwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogCiAgICAgaWYgKG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBX
VEZNb3ZlKHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYyMmI0Y2MzMDc0Y2JkNjgxNTJjZjQ5NTM2
YzBmMGU4YjNhMDRjZjAuLmIyZDFkY2I3Yzc2ODE1NzlhMWNmNmZmYmQ0MjRkNDFmMTA5ZDA1ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTQ2LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlcnZpY2VX
b3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayopOwogI2VuZGlmCiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IGRvQ3Jvc3NPcmlnaW5PcGVu
ZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZvaWQgc2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0Nv
bnRleHRHcm91cChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CisKICAgICBib29sIGlzQXBwSW5pdGlh
dGVkKCk7CiAKIHByaXZhdGU6CkBAIC0yNTcsNiArMjYwLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX3Jlc291cmNlTG9hZElEOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVz
cG9uc2VVUkw7IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2Zl
dGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVz
dWx0PiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKaW5kZXggZjM4NjBiMjA0ZjA2MzBhOWQ2ZWU1OTZjM2VmOWNiZGMxMjUyZDJjMi4uZThi
NDllZTBlNTI4NDE0MzJhY2ExZTAxYTFjYTJkNWM0NzY1NWNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQyNSwxMCArNDI1LDcg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpleHBp
cmF0aW9uVGltZXJGaXJlZCgpCiAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGxvYWRlciA9IHNlc3Npb24tPnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NU
cmFuc2ZlcihtX2xvYWRlci0+aWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQobG9hZGVyKTsKLSAg
ICBpZiAobG9hZGVyKQotICAgICAgICBsb2FkZXItPmFib3J0KCk7CisgICAgc2Vzc2lvbi0+cmVt
b3ZlTG9hZGVyV2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihtX2xvYWRlci0+aWRlbnRpZmllcigp
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNz
VHJhbnNmZXIoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpCkBAIC00NDUsNiAr
NDQyLDEyIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtTZXNzaW9uOjp0
YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmCiAgICAgcmV0dXJuIGNhY2hlZFJlc291
cmNlTG9hZGVyID8gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnRha2VMb2FkZXIoKSA6IG51bGxwdHI7
CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnJlbW92ZUxvYWRlcldhaXRpbmdXZWJQcm9jZXNz
VHJhbnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAg
ICBpZiAoYXV0byBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJv
Y2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLT50YWtlTG9hZGVyKCktPmFib3J0KCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXgg
OTdmN2QwN2Y1ODZiMmI5N2NkNjU0OTc4MjZhNzdlM2EwMzNjOWI4Ni4uNWVjZTE0NGNmY2JiOTUx
Njk3ODRkNGM4ZTcyNzRhYmQ3YmRiZTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAKICAgICB2
b2lkIGFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKFJlZjxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+JiYpOworICAgIHZvaWQgcmVtb3ZlTG9hZGVyV2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgUmVmUHRyPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4gdGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKE5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKIAogICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNh
Y2hlKCkgeyByZXR1cm4gbV9jYWNoZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCmluZGV4IGQ0NTU5MzUyNTNmNzlmNWMwNDMxZGJhZWVmOTI5MzM2MDcw
NGVhMjYuLjU3YjhjMTZiNTg1N2EyYTg0YzU1NGExNTc2NjViZTljOGQ0Zjg2ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTE2MCw4ICsxNjAsMTMgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBib28KICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICghbV9s
b2FkZXIuZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSkpIHsK
KyAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgcmVzcG9uc2UudXJsKCksICJOYXZpZ2F0aW9uIHdhcyBibG9ja2VkIGJ5IENyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9s
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcik7Ci0gICAgc2VuZFRvQ2xpZW50
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9u
c2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOworICAgIG1fbG9h
ZGVyLnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0
R3JvdXAocmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgICAg
IG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDMzNGI4MWM2ZDVkYzg1MTM5NmUyMTQ5
ODA5MzJmMmM2ODkyMjkwMDcuLjNmZGVkYThiZmM5NDlhYmExZDA5YWUxZWMxZTk2Zjc5NThkMDVi
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzI3LDYg
KzMyNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVJl
Y29yZGVySWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UERGUGx1Z2luSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcicsCkBAIC02OTMsNiArNjk0LDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpBdXRvcGxheUV2ZW50Rmxh
Z3MnOiBbJzxXZWJDb3JlL0F1dG9wbGF5RXZlbnQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24nOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVy
VHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbic6IFsnPFdlYkNv
cmUvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oPiddLAorICAgICAgICAnV2ViQ29yZTo6Q09P
UERpc3Bvc2l0aW9uJzogWyc8V2ViQ29yZS9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQnOiBbJzxXZWJDb3Jl
L0FwcEhpZ2hsaWdodC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZSc6IFsnPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSc6IFsnPFdlYkNvcmUvQ29sb3JTcGFjZS5oPiddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggMzY1YTYxOWQ3YThhZTgxYTYwMzNiMDY3MTE0N2UwMWFjY2RkNDE3Zi4u
NTkwZmI5NTcxOTRkOWFkMWRkNWIzYTM2NDNmMjkxMWFlODBhMDE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC00MzYsNiArNDM2LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkTmVnb3Rp
YXRlTW9kZXJuVExTKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjCiAgICAgICAgIHBh
Z2UtPmRpZE5lZ290aWF0ZU1vZGVyblRMUyh1cmwpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4s
IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3Mp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGlu
ZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRm9yTmF2aWdhdGlvbjogcGFnZUlEPSUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQ9JSIg
UFJJdTY0ICIsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb249JXUsIGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQsIHRoaXMsIHBh
Z2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsICh1bnNpZ25lZClicm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUudG9VSW50NjQoKSk7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBwYWdlSUQgPyBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKSA6IG51bGxwdHIpCisgICAgICAgIHBhZ2UtPnRy
aWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24obmF2aWdhdGlvbklE
LCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCByZXNwb25zZURvbWFpbiwgZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFBy
b2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyhsYXVuY2hlciwgY29ubmVjdGlvbklkZW50aWZpZXIpOwpAQCAtNDc2LDE3ICs0
ODUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IHJlc291cmNlTG9hZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JX
ZWJQcm9jZXNzVHJhbnNmZXI6IHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VMb2FkSWRlbnRpZmllcjogJSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllci50b1VJbnQ2NCgpLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyID8gcmVzb3VyY2VMb2Fk
SWRlbnRpZmllci0+dG9VSW50NjQoKSA6IDApOwotICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRp
ZmllcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZp
ZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDYwZmIzMmU4
MTBlMmZmYjJjNDliODU4OTc5MjYzNmI3YmVhMGQ4YS4uMTQ0OGU2ZDllZDgxM2Q2NzIzMjQ3YzMy
ZDg2Zjk0OWY5MDZmOTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIxNCw4ICsyMTQsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9p
ZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJik7Ci0KICAgICBQcm9jZXNzVGhy
b3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZv
aWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogCkBAIC0zMjIsNiArMzIwLDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcik7CiAKKyAgICB2b2lkIHRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5h
dmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKKwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFj
ZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHF1b3RhKT4mJik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJv
bVNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZDY3NDkyNWM1ODFkYmQ5ZjBhNzY5YTY3MDAzNmQ5YzZkZWYzNDA3MS4uZmQyMTBiZjFj
MDUwMGY4MDYxYzRjMjRkYTQyMzUyMGU3OWFmMDM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNzMsNiArNzMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0
OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCiAgICAgUmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0
OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKKyAgICBUcmln
Z2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBi
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZXNwb25zZURvbWFpbiwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpIC0+IChib29s
IHN1Y2Nlc3MpIEFzeW5jCisKICNpZiBVU0UoU09VUCkKICAgICBEaWRFeGNlZWRNZW1vcnlMaW1p
dCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAppbmRleCBiMDkxOWI4Y2I0YTVhNDMzMmVmODgyZGI1YTQ0YTJjMzQwOTI0YmVh
Li4wZDNlN2QyZjRiZTJhOTk2Y2ZkOTgxODk4ZTY2NmY2ODRhMzc5NGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMzMsMTIg
KzMzMywxMiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyCiAgICAgbV9wYWdlLmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0
aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5n
RnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSks
IHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERl
Y2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2
YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVy
LCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25s
b2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVy
SUQsIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
bV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmlu
ZGV4IGE1ZGVjZmYyZjdlOTIxM2Q3ZDNiZWRhMGRiYzM2ZDZkOTk1NGMzZDMuLmRjNzE4YzIwMTdi
OTVhY2UyYTU3MmI0OTBjZjRiNjg5YjlhMmU0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25T
ZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5m
b0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQp
OwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJv
dmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBVc2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNWE3ZGIwNGU4MjJlNTI2MTFiOWUyMmEzMjJhYWVlNGU4OTJiN2Q3Ny4uYjdlYzJl
Y2U1MmM3ZTY0OThmMDk1OGM2YTJiMmNkMmJkNDdlMWRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjQ2LDcgKzM2NDYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgcwogICAgIH0KIAogICAgIGJvb2wgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QgPSBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZ
ZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAmJiBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1
ZXN0SXNSZWRpcmVjdCgpOwotICAgIGJvb2wgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNv
bW1pdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbjsKKyAgICBib29sIHNob3Vs
ZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQ7CiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFs
UGFnZVByb3h5PigqdGhpcywgV1RGTW92ZShuZXdQcm9jZXNzKSwgV1RGTW92ZShzdXNwZW5kZWRQ
YWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QsIG5h
dmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
c2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCwgd2Vic2l0ZVBvbGljaWVzLmdldCgp
KTsKICAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgbmF2aWdhdGlvbiA9IFJlZiB7IG5hdmlnYXRpb24gfSwgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyks
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLT50YXJnZXRJdGVtKCkpIHsK
QEAgLTU2MzEsMTIgKzU2MzEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hv
d01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLAotICAgIGJvb2wgd2Fz
QWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNp
b24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgYm9v
bCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1l
SW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNo
b3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZN
b3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVl
c3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIGJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01
NjQ5LDcgKzU2NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0
ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRp
b25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNw
b25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKLSAgICBSZWYgbGlz
dGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgd2ViUGFnZUlELCBmcmFtZUlELCBicm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgaWRlbnRpZmll
ciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgUmVm
IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwg
bGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCiAgICAgICAgIHBy
b2Nlc3MsIG5hdmlnYXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNl
IGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXku
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwpAQCAtNTY1OCwyNiArNTY1OCw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVj
aXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0
ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKICAgICAgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiwgY3JlYXRlTmV0d29ya0V4
dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKSksIHdlYlBhZ2VJRCk7CiAgICAgICAg
IH0pOwotCi0gICAgICAgIGF1dG8gd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vOwotICAgICAgICBpZiAocG9saWN5QWN0aW9uID09
IFBvbGljeUFjdGlvbjo6VXNlICYmIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24g
IT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUluR3JvdXAgJiYgbmF2
aWdhdGlvbikgewotICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NT
d2FwcGluZywgImRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkOiBQcm9jZXNzLXN3YXBwaW5n
IGR1ZSB0byBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSwgbmV3UHJvY2Vzc0lzQ3Jvc3NPcmln
aW5Jc29sYXRlZD0lZCIsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0gQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cCk7Ci0gICAg
ICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbjsKLSAg
ICAgICAgICAgIGlmIChicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246Ok5ld0lzb2xhdGVkR3JvdXApCi0gICAgICAg
ICAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
Y3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6
OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFp
biB7IG5hdmlnYXRpb25SZXNwb25zZS0+cmVzcG9uc2UoKS51cmwoKSB9OwotICAgICAgICAgICAg
ICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNl
RG9tYWluKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5u
ZXR3b3JrUHJvY2VzcygpLnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHByb2Nlc3Mt
PmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBuYXZpZ2F0aW9uLCBu
YXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIHNlbmRlciA9
IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBwcm9jZXNzRm9yTmF2aWdh
dGlvbi5yZWxlYXNlTm9uTnVsbCgpXShhdXRvIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBXVEZNb3ZlKHByb2Nlc3NG
b3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uLCBudWxs
cHRyLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwotCi0g
ICAgICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2Up
LCBXVEZNb3ZlKHNlbmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVz
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3Zl
KHNlbmRlciksIHsgfSwgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzcyk7CisgICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxs
cHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAg
fSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91
bmREb21haW5SZXN1bHQ6Ok5vKTsKIAogICAgIGlmICh3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSkgewpAQCAtNTY5MSw2ICs1NjczLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
KCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVuZXIpLCBw
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hGb3JOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uICE9
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKTsKKyAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbV9uYXZp
Z2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxwdHI7CisgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInRyaWdnZXJCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb246IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5LCBuZXdQcm9jZXNzSXNDcm9zc09yaWdpbklzb2xhdGVk
PSVkLCBuYXZpZ2F0aW9uPSVwIiwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9
PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwLCBu
YXZpZ2F0aW9uLmdldCgpKTsKKyAgICBpZiAoIW5hdmlnYXRpb24pCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzRm9yTmF2aWdhdGlvbjsKKyAgICBpZiAoYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29sYXRl
ZEdyb3VwKQorICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKCksIFdlYlByb2Nl
c3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkKTsKKyAg
ICBlbHNlCisgICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRo
aXMsIHJlc3BvbnNlRG9tYWluKTsKKworICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vz
cygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgcHJvY2Vzc0Zvck5hdmlnYXRpb24ucmVsZWFzZU5vbk51
bGwoKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkLCBudWxscHRyLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRydWUpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYmUxMDEwNWYxNjEzYmNjNDllNzcyNWU4MTg1NTFlM2I1ZTQwY2VmMy4uZjJk
ZmIwNTEwODZkYmYwOGI1N2Y5YzU5OTEzN2M2YWJiMWFlMjg1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY4NSw2ICs2ODUsOCBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xv
cjsgfQogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwog
CisgICAgdm9pZCB0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9u
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2hEZWNpc2lvbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9t
YWluLCBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNj
ZXNzKT4mJik7CisKICAgICAvLyBBdCB0aGlzIHRpbWUsIG1fcGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yIGNhbiBiZSBzZXQgdmlhIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5n
ZSgpIHdoaWNoIGlzIGEgbWVzc2FnZQogICAgIC8vIGZyb20gdGhlIFVJUHJvY2Vzcywgb3IgYnkg
ZGlkQ29tbWl0TGF5ZXJUcmVlKCkuIFdoZW4gUExBVEZPUk0oTUFDKSBhZG9wdHMgVUkgc2lkZSBj
b21wb3NpdGluZywgd2Ugc2hvdWxkIGdldCByaWQgb2YKICAgICAvLyB0aGUgbWVzc2FnZSBlbnRp
cmVseS4KQEAgLTE3NDYsNyArMTc0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
VVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9u
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFy
dFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Np
b25IaXN0b3J5VmlzaWJpbGl0eSk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBz
dGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVs
bG9wdCk7CkBAIC0yMDY0LDcgKzIwNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNv
bnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzJl
MmU0YTVjNDQ5ZTkxODc1NjA0ZmFiMDI3OGRiNTgwOGYwODE4ZS4uOThiNzRmMWJhMDNmMDhmOGNm
MWFjZDAwZmUxMzY2NzZmNDgyNTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmli
dXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllcj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNh
blNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBm
cmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVj
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVj
aXNpb24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJh
bWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCmluZGV4IDBkMTgyOWIzOThjMzYwNTFiODRlMjE1ZGIzZDE2ZWEzNDc3OTE5NjUu
LmFkMzVlMmJmMTFlYjE5MmQ5ODA2ZDYxN2RmMzMyMzJlM2IwN2U4NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUg
IldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC0zOTgsOCArMzk5LDI0IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMCiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9u
c2VBY2Nlc3MgPSBzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKIAogICAgIGxvYWRQYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgJiYg
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+aXNNYWluRnJhbWUoKSAmJiByZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOworICAgIGlmIChs
b2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24gJiYgZG9jdW1lbnQpCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5ID0gZG9jdW1lbnQt
PmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KCk7CiAKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5S
ZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgJiYg
cmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZp
Z2F0ZTsKKyAgICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8gZG9jdW1lbnRMb2FkZXIgPSByZXNvdXJjZUxv
YWRlci5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5uYXZp
Z2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpkb2N1bWVudExvYWRl
cikubmF2aWdhdGlvbklEKCk7CisgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9u
UmVxdWVzdGVyID0gZG9jdW1lbnRMb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5yZXF1ZXN0ZXIo
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBsb2FkUGFyYW1ldGVycy5pc0Nyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5RW5hYmxlZCA9IGRvY3VtZW50ICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLmNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzRGlzcGxh
eWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLnN0YXRl
TWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCk7CisgICAgaWYgKGZy
YW1lKQorICAgICAgICBsb2FkUGFyYW1ldGVycy5lZmZlY3RpdmVTYW5kYm94RmxhZ3MgPSBmcmFt
ZS0+bG9hZGVyKCkuZWZmZWN0aXZlU2FuZGJveEZsYWdzKCk7CisgICAgaWYgKGF1dG8gb3BlbmVy
RnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5vcGVuZXIoKSA6IG51bGxwdHIpIHsKKyAg
ICAgICAgaWYgKGF1dG8gb3BlbmVyRG9jdW1lbnQgPSBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLm9wZW5lclVSTCA9IG9wZW5lckRvY3VtZW50LT51
cmwoKTsKKyAgICB9CiAKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRFbmFibGVDcm9zc09yaWdp
blJlc291cmNlUG9saWN5ID0gIWxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNThmMGM0NGZhYzA5ZjBlYmMy
ZGQyMTk1MDMzNjRkNjZjZThhNTAzMy4uZmVjNjgwYTA2NTU4NjA5Y2I0NDEwOWNkYWUzMzhlNTE0
ZWE1MDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC01MzAsNyArNTMw
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7
CiAgICAgUmVmUHRyIHByb3Zpc2lvbmFsTG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRM
b2FkZXIqPihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcigpKTsKIAotICAgIGlmICghcHJvdmlzaW9uYWxMb2FkZXIgfHwgcHJvdmlzaW9uYWxM
b2FkZXItPmlzQ29udGludWluZ0xvYWRBZnRlclJlc3BvbnNlUG9saWN5Q2hlY2soKSkKKyAgICBp
ZiAoIXByb3Zpc2lvbmFsTG9hZGVyIHx8IHByb3Zpc2lvbmFsTG9hZGVyLT5pc0NvbnRpbnVpbmdM
b2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBhdXRvJiB1cmwgPSBwcm92aXNpb25hbExvYWRlci0+dXJsKCk7CkBAIC04MTcsNyArODE3
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKICAgICB3ZWJQ
YWdlLT5zaG93KCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIEJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNp
c2lvbiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGF1dG8q
IHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CkBAIC04Mzgs
NyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICBXS0J1bmRsZVBhZ2VQb2xp
Y3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1lLnB0cigpLCByZXNwb25zZSwg
cmVxdWVzdCwgdXNlckRhdGEpOwogICAgIC8vIElmIGEgYnJvd3NpbmcgY29udGV4dCBzd2l0Y2gg
aXMgcmVxdWVzdGVkLCB3ZSBzdGlsbCBuZWVkIHRvIHNlbmQgdGhlIElQQyB0byB0aGUgVUlQcm9j
ZXNzIGluIG9yZGVyIHRvIHByb2Nlc3Mtc3dhcCBpZiBuZWNlc3NhcnksIGV2ZW4gdGhvdWdoIHRo
ZQogICAgIC8vIGluamVjdGVkIGJ1bmRsZSBoYXMgYWxyZWFkeSBoYW5kbGVkIHRoZSBwb2xpY3kg
ZGVjaXNpb24uCi0gICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2Ug
JiYgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uOjpTdGF5SW5Hcm91cCkgeworICAgIGlmIChwb2xpY3kgPT0gV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5U
X1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBj
b250aW51aW5nIGJlY2F1c2UgaW5qZWN0ZWQgYnVuZGxlIHNheXMgc28iKTsKICAgICAgICAgZnVu
Y3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIGlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CkBA
IC04NDksMTQgKzg0OSwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIGF1dG8qIGNv
cmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8qIHBvbGljeURvY3VtZW50
TG9hZGVyID0gY29yZUZyYW1lID8gY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9j
dW1lbnRMb2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1
bWVudExvYWRlcikubmF2aWdhdGlvbklEKCkgOiAwOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsK
LSAgICBpZiAoYXV0byBtYWluUmVzb3VyY2VMb2FkZXIgPSBwb2xpY3lEb2N1bWVudExvYWRlciA/
IHBvbGljeURvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKSA6IG51bGxwdHIpCi0g
ICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gbWFpblJlc291cmNlTG9hZGVyLT5p
ZGVudGlmaWVyKCk7CiAKICAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlID0gcG9s
aWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZTsKICAgICBhdXRvIHByb3RlY3RvciA9
IG1fZnJhbWUuY29weVJlZigpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5z
ZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFt
ZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwotICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25z
ZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dl
ZEJ5SW5qZWN0ZWRCdW5kbGUsIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSkpKSkgeworICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlu
Zm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZS
QU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlOiBpZ25vcmluZyBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UgZmFpbGVkIik7CiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHN0ZDo6bnVs
bG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0KQEAgLTk1
Niw5ICs5NTMsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHJlcXVlc3RJZGVudGlmaWVyLCBX
VEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Olllcyk7CiAK
ICAgICBBU1NFUlQobmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKSk7Ci0gICAgYXV0byByZXF1
ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpLnZhbHVlKCk7CisgICAgYXV0byYg
cmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKS52YWx1ZSgpOwogCi0gICAg
YXV0byogcmVxdWVzdGluZ0ZyYW1lID0gcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigp
LmZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZ2xv
YmFsRnJhbWVJZGVudGlmaWVyKCkuZnJhbWVJRCkgOiBudWxscHRyOworICAgIGF1dG8qIHJlcXVl
c3RpbmdGcmFtZSA9IHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIgJiYgcmVxdWVzdGVy
Lmdsb2JhbEZyYW1lSWRlbnRpZmllci0+ZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXItPmZyYW1lSUQpIDogbnVs
bHB0cjsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdGcmFtZUlEOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBwYXJlbnRGcmFtZUlEOwogICAgIGlmIChyZXF1ZXN0aW5nRnJhbWUpIHsKQEAgLTk2OSwxNSAr
OTY2LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAKICAgICBGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSB7CiAgICAgICAgIG5hdmlnYXRpb25BY3Rpb24uaW5pdGlh
dGVkQnlNYWluRnJhbWUoKSA9PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzLAotICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0ZXIudXJsKCkgfSwKLSAgICAgICAgcmVxdWVzdGVyLnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpLAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0
ZXIudXJsIH0sCisgICAgICAgIHJlcXVlc3Rlci5zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLAogICAg
ICAgICBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJRCksCiAgICAgICAgIFdURk1vdmUocGFyZW50
RnJhbWVJRCksCiAgICAgfTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7Ci0gICAgaWYgKGF1dG8mIHBhZ2VJRCA9IHJlcXVlc3Rl
ci5nbG9iYWxGcmFtZUlkZW50aWZpZXIoKS5wYWdlSUQpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdl
YlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCkpCisgICAgaWYg
KHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIgJiYgcmVxdWVzdGVyLmdsb2JhbEZyYW1l
SWRlbnRpZmllci0+cGFnZUlEKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVy
LT5wYWdlSUQpKQogICAgICAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQgPSB3ZWJQYWdlLT53ZWJQ
YWdlUHJveHlJZGVudGlmaWVyKCk7CiAgICAgfQogCkBAIC05OTUsOCArOTkyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IE5hdmlnYXQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS50cmVhdEFzU2FtZU9y
aWdpbk5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uQWN0aW9uLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdh
dGlvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmhhc09wZW5lZEZyYW1lcyA9IG5hdmln
YXRpb25BY3Rpb24uaGFzT3BlbmVkRnJhbWVzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
b3BlbmVkQnlET01XaXRoT3BlbmVyID0gbmF2aWdhdGlvbkFjdGlvbi5vcGVuZWRCeURPTVdpdGhP
cGVuZXIoKTsKLSAgICBpZiAoYXV0byYgcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1
ZXN0ZXIoKSkKLSAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEucmVxdWVzdGVyT3JpZ2luID0g
cmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5yZXF1ZXN0ZXJPcmlnaW4gPSByZXF1ZXN0ZXIuc2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS50YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
ID0gbmF2aWdhdGlvbkFjdGlvbi50YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKCk7CiAg
ICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciA9
IG5hdmlnYXRpb25BY3Rpb24uc291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcigpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLmxvY2tIaXN0b3J5ID0gbmF2aWdhdGlvbkFjdGlvbi5sb2Nr
SGlzdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhNjk4NWE3ODA0NGFi
MmE3NjNlNDk0YzY4NTc5ODMzMTc2YWE3N2E5Li40MGY4NmJkZmFjZWQ0YThiNWU2Njg1NTViYmU5
MmQwNmQzZWYwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTI5LDcgKzEy
OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShj
b25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgV2ViQ29yZTo6TmV3RnJhbWVPcGVuZXJQ
b2xpY3kpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAgICAgCi0gICAg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikg
ZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2Vi
Q29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVjaygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA5NDcxMTJhODg0NDE3MDhmY2M0MzkzZDljYzFhODI0YWM4ZTY1MmNm
Li4yMmQwOTIxZTliMWRkYzNmMmRmNjg5N2Y1Yzg3MmE5Y2JhNWM1ODkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTYyLDYgKzE2Miw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250YWN0c1JlcXVlc3REYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3Jp
Z2luRW1iZWRkZXJQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luT3BlbmVy
UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFn
ZXIuaD4KQEAgLTQzNDgsNiArNDM0OSwyOSBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDT0VQQ09SUFZp
b2xhdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaQogICAg
ICAgICBXZWJDb3JlOjpzZW5kQ09FUENPUlBWaW9sYXRpb24oKmZyYW1lLT5jb3JlRnJhbWUoKSwg
ZW1iZWRkZXJPcmlnaW4sIGVuZHBvaW50LCBkaXNwb3NpdGlvbiwgZGVzdGluYXRpb24sIGJsb2Nr
ZWRVUkwpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdh
dGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBDcm9zc09y
aWdpbk9wZW5lclBvbGljeSYgY29vcCwgQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25z
dCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgcHJldmlvdXNSZXNwb25zZVVSTCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBjb29wT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHBy
ZXZpb3VzUmVzcG9uc2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHJlcG9ydFRvSGVhZGVyVmFsdWUpCit7CisgICAg
aWYgKCFyZXBvcnRUb0hlYWRlclZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUoKS5hZGRFbmRwb2ludHNGcm9tUmVw
b3J0VG9IZWFkZXIoY29vcFVSTCwgcmVwb3J0VG9IZWFkZXJWYWx1ZSk7CisKKyAgICAvLyBGSVhN
RTogQWRkIHRoZSBjb25jZXB0IG9mIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0aGUg
c3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFzIGEg
Z3JvdXAuCisgICAgaWYgKFBhZ2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKSA8PSAxKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJGcmFtZShmcmFtZUlEKTsgZnJhbWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBXZWJDb3Jl
OjpzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSgqZnJhbWUt
PmNvcmVGcmFtZSgpLCBjb29wLCBkaXNwb3NpdGlvbiwgY29vcFVSTCwgcHJldmlvdXNSZXNwb25z
ZVVSTCwgY29vcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBwcmV2aW91c1Jlc3BvbnNlT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCksIHJlZmVycmVyLCB1c2VyQWdlbnQpOworfQorCit2b2lkIFdlYlBh
Z2U6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNl
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYg
Y29vcCwgQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNv
bnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BP
cmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbmV4dFJlc3BvbnNlT3JpZ2luLCBib29s
IGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
Cit7CisgICAgLy8gRklYTUU6IEFkZCB0aGUgY29uY2VwdCBvZiBicm93c2luZyBjb250ZXh0IGdy
b3VwIGxpa2UgaW4gdGhlIHNwZWNpZmljYXRpb24gaW5zdGVhZCBvZiB0cmVhdGluZyB0aGUgd2hv
bGUgcHJvY2VzcyBhcyBhIGdyb3VwLgorICAgIGlmIChQYWdlOjpub25VdGlsaXR5UGFnZUNvdW50
KCkgPD0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7IGZyYW1lLT5jb3JlRnJhbWUoKSkK
KyAgICAgICAgV2ViQ29yZTo6c2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZy
b21DT09QUmVzcG9uc2UoKmZyYW1lLT5jb3JlRnJhbWUoKSwgY29vcCwgZGlzcG9zaXRpb24sIGNv
b3BVUkwsIG5leHRSZXNwb25zZVVSTCwgY29vcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBuZXh0
UmVzcG9uc2VPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9u
U291cmNlLCB1c2VyQWdlbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OmVucXVldWVTZWN1cml0eVBv
bGljeVZpb2xhdGlvbkV2ZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50OjpJbml0JiYgZXZlbnRJbml0KQogewogICAgIGF1dG8qIGZyYW1lID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOWJjNDEwNzc4Njk5M2I1Y2QwMDI1
NDJiYzg5MDljYmFkMDU4YzQzNy4uMTI2ZjQwNjc1ODFjYmE2YmM2MmU3Yjc2YmRlYjAxMTk0ZTY0
NWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NDQxLDYgKzQ0MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmKTsKICAgICB2b2lkIHNlbmRDT0VQUG9saWN5SW5oZXJpdGVuY2VWaW9s
YXRpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGVtYmVkZGVyT3JpZ2luLCBjb25zdCBTdHJpbmcmIGVuZHBvaW50LCBXZWJDb3Jl
OjpDT0VQRGlzcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgVVJMJiBibG9ja2Vk
VVJMKTsKICAgICB2b2lkIHNlbmRDT0VQQ09SUFZpb2xhdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZW1iZWRkZXJPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZW5kcG9pbnQsIFdlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbiwgV2ViQ29y
ZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiwgY29uc3QgVVJMJiBibG9ja2VkVVJMKTsKKyAg
ICB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kmLCBXZWJDb3JlOjpDT09QRGlzcG9zaXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29u
c3QgVVJMJiBwcmV2aW91c1Jlc3BvbnNlVVJMLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgcHJl
dmlvdXNSZXNwb25zZU9yaWdpbiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgcmVwb3J0VG9IZWFkZXJWYWx1ZSk7CisgICAgdm9p
ZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5JiwgV2ViQ29yZTo6Q09PUERpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNv
bnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJMLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGNvb3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgbmV4dFJl
c3BvbnNlT3JpZ2luLCBib29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpOwogICAgIHZvaWQgZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3
aW5nQXJlYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IGQyNGY3YWZmMDg5MmQwMTIyNDBjYmVmYWIyOTk5MjU0MGEx
ZmFiYjAuLjhhZmM0ZWE1ZTNjZDAxYzJhYzNhNGEzNDFmMzE2YTlhMjExMzMyZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtMzEsNiArMzEsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCiAg
ICAgU2VuZENPRVBQb2xpY3lJbmhlcml0ZW5jZVZpb2xhdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBlbWJlZGRl
ck9yaWdpbiwgU3RyaW5nIGVuZHBvaW50LCBlbnVtOmJvb2wgV2ViQ29yZTo6Q09FUERpc3Bvc2l0
aW9uIGRpc3Bvc2l0aW9uLCBTdHJpbmcgdHlwZSwgVVJMIGJsb2NrZWRVUkwpCiAgICAgU2VuZENP
RVBDT1JQVmlvbGF0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGVtYmVkZGVyT3JpZ2luLCBTdHJpbmcgZW5kcG9p
bnQsIGVudW06Ym9vbCBXZWJDb3JlOjpDT0VQRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGVudW06
dWludDhfdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBV
UkwgYmxvY2tlZFVSTCkKKyAgICBTZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NP
T1BSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNv
cmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGNvb3AsIGVudW06Ym9vbCBXZWJDb3JlOjpDT09Q
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFVSTCBjb29wVVJMLCBVUkwgcHJldmlvdXNSZXNwb25z
ZVVSTCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBjb29wT3JpZ2luLCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIFN0
cmluZyByZWZlcnJlciwgU3RyaW5nIHVzZXJBZ2VudCwgU3RyaW5nIHJlcG9ydFRvSGVhZGVyVmFs
dWUpCisgICAgU2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVz
cG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpD
cm9zc09yaWdpbk9wZW5lclBvbGljeSBjb29wLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q09PUERpc3Bv
c2l0aW9uIGRpc3Bvc2l0aW9uLCBVUkwgY29vcFVSTCwgVVJMIG5leHRSZXNwb25zZVVSTCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBjb29wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG5leHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNw
b25zZU5hdmlnYXRpb25Tb3VyY2UsIFN0cmluZyB1c2VyQWdlbnQpCiAgICAgRW5xdWV1ZVNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OkluaXQgZXZlbnRJbml0KQog
CiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGUzZjVmOWM5ZjBmZmQ4YWVlMmRiZjBlNzgzMjE2YmMzYzBhNzU1YzYuLmEyNTk4
ZjMyZmI3NjBhN2Q4ODNjOWY0Y2VlYzE4Y2Y1OTFlYjhlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RnJhbWUq
IGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgV2Vi
Q29yZTo6TmV3RnJhbWVPcGVuZXJQb2xpY3kpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93
KCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpGb3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7
CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZp
bmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggNzFhNzE1YjM3ZmE1ZTZjNWY3NDQ0ZTIzN2M4MmQxNTljZTA4OGFk
MS4uMzU2YzkzZjMxZThmYTU2ZDk0MjQxYzViMjBhOTI5ZTRiYWE0OGNiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFNob3coKQogICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlld1Nob3c6d2ViVmlld107CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDU4ODk5MmQ0YWFmZTVmYzgzOWI2NTRkY2VkYTg5
MmRkNzAzNTgyM2IuLmZiMjU4M2ZlOTcyNjRjNzNlZWIyM2ViYjRkMzk5MGIzYjg0YTA3ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQogICAgICAgICB1aS0+d2ViVmlld1No
b3cod2ViVmlldyk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb24sIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2Vi
RnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWUzMDMxZjliNTAyYzNkZDg4
YThhNTQ4YTQ3YzdmMmI2Yjk5MzBlNi4uMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2Yzdk
MDE2Mjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJh
bWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGlj
eURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hl
Y2soKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAwZmFhZDRlNDY2YzY4NTU2MGYwOTA3YmQ1ZTQ2NTE0ZTU5YTVkNGU3Li4wNmVi
NDFjYzE3NTA1Y2RhZmVmODljYjUwNTJhYThhN2NiYzdkMjEzIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDkt
MjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENyb3Nz
LU9yaWdpbi1PcGVuZXItUG9saWN5IGhhbmRsaW5nIHRvIHRoZSBOZXR3b3JrUHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODEyCisgICAg
ICAgIDxyZGFyOi8vODM1MDQ4NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICBQb3J0IENPT1AgQVBJIHRlc3RzIGZyb20gUFNPTlNjaGVtZUhhbmRsZXIg
dG8gSFRUUFNlcnZlci4gVGhpcyB3YXMgbmVjZXNzYXJ5IHNpbmNlIGN1c3RvbSBzY2hlbWUgaGFu
ZGxlcgorICAgICAgICBsb2FkcyBkbyBub3QgZ28gdmlhIHRoZSBuZXR3b3JrUHJvY2VzcyAoV2hl
cmUgQ09PUCBoYW5kbGluZyBpcyBub3cgaW1wbGVtZW50ZWQpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAg
ICAgICAgKC1bUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUFNPTlNj
aGVtZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKwogMjAyMS0wOS0yOCAgR2V6YSBMb3JlICA8Z2V6YWxv
cmVAZ21haWwuY29tPgogCiAgICAgICAgIEZpeCByb3VuZGluZyBpc3N1ZSBpbiBydW4tanNjLXN0
cmVzcy10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYzYzMzE2Nzg1
ODUwNzNkZGViZGY0NDI2ZDIwM2RmYjFkNTZiYjcyMi4uNDIwN2JlOGRhZDY0OWFjODQyOTliZGM4
NWFkODRhOGQ3ZTM5ODI1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVy
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2lt
cG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtMTQxLDYgKzE0MiwxMiBAQCAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24gZGlkUwogICAgIGRvbmUgPSB0cnVlOwogfQogCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIF9OdWxsYWJsZSBjcmVkZW50aWFsKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1
c3QpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VD
cmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7Cit9CisKIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNw
ZWNpZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCiB7CiAgICAgZGlkU3RhcnRQcm92aXNp
b25hbExvYWQgPSB0cnVlOwpAQCAtMjUwLDE1ICsyNTcsMTIgQEAgQGludGVyZmFjZSBQU09OU2No
ZW1lIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4gewogICAgIGNvbnN0IGNoYXIqIF9i
eXRlczsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfcmVkaXJlY3RzOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNEYXRhPj4gX2RhdGFNYXBwaW5nczsKLSAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBfY29vcFZhbHVlczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBfY29lcFZhbHVlczsKICAgICBIYXNoU2V0PGlkIDxXS1VSTFNjaGVtZVRhc2s+PiBfcnVubmlu
Z1Rhc2tzOwogICAgIGJvb2wgX3Nob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseTsKIH0KIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRk
UmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0
cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZzsKIC0gKHZvaWQpYWRkTWFwcGlu
Z0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciop
ZGF0YTsKLS0gKHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3Ry
aW5nIHRvRGF0YTooY29uc3QgY2hhciopZGF0YSB3aXRoQ09PUFZhbHVlOihjb25zdCBjaGFyKilj
b29wVmFsdWUgd2l0aENPRVBWYWx1ZTooY29uc3QgY2hhciopY29lcFZhbHVlOwogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gUFNPTlNjaGVtZQpAQCAtMjgwLDE1ICsyODQsNiBAQCAtICh2b2lkKWFk
ZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0
IGNoYXIqKWRhdGEKICAgICBfZGF0YU1hcHBpbmdzLnNldCh1cmxTdHJpbmcsIFtOU0RhdGEgZGF0
YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6c3RybGVuKGRhdGEpIGZyZWVXaGVu
RG9uZTpOT10pOwogfQogCi0tICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmlu
ZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGEgd2l0aENPT1BWYWx1ZTooY29u
c3QgY2hhciopY29vcFZhbHVlIHdpdGhDT0VQVmFsdWU6KGNvbnN0IGNoYXIqKWNvZXBWYWx1ZQot
ewotICAgIFtzZWxmIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOnVybFN0cmluZyB0b0RhdGE6ZGF0
YV07Ci0gICAgaWYgKGNvb3BWYWx1ZSkKLSAgICAgICAgX2Nvb3BWYWx1ZXMuYWRkKHVybFN0cmlu
ZywgY29vcFZhbHVlKTsKLSAgICBpZiAoY29lcFZhbHVlKQotICAgICAgICBfY29lcFZhbHVlcy5h
ZGQodXJsU3RyaW5nLCBjb2VwVmFsdWUpOwotfQotCiAtICh2b2lkKXNldFNob3VsZFJlc3BvbmRB
c3luY2hyb25vdXNseTooQk9PTCl2YWx1ZQogewogICAgIF9zaG91bGRSZXNwb25kQXN5bmNocm9u
b3VzbHkgPSB2YWx1ZTsKQEAgLTMyMywxNiArMzE4LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+
KXRhCiAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9y
bVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lmdl
dCgpXTsKICAgICB9CiAKLSAgICBkb0FzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoW3NlbGYsIGZp
bmFsVVJMID0gcmV0YWluUHRyKGZpbmFsVVJMKV0oaWQgPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykg
eworICAgIGRvQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShbZmluYWxVUkwgPSByZXRhaW5QdHIo
ZmluYWxVUkwpXShpZCA8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkqIGhlYWRlckRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0
aW9uYXJ5XTsKICAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0T2JqZWN0OkAidGV4dC9odG1s
IiBmb3JLZXk6QCJDb250ZW50LVR5cGUiXTsKICAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0
T2JqZWN0OkAiMSIgZm9yS2V5OkAiQ29udGVudC1MZW5ndGgiXTsKLSAgICAgICAgYXV0byBjb29w
VmFsdWUgPSBfY29vcFZhbHVlcy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSk7Ci0gICAg
ICAgIGlmICghY29vcFZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFtoZWFkZXJEaWN0aW9u
YXJ5IHNldE9iamVjdDooTlNTdHJpbmcgKiljb29wVmFsdWUgZm9yS2V5OkAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiXTsKLSAgICAgICAgYXV0byBjb2VwVmFsdWUgPSBfY29lcFZhbHVlcy5n
ZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSk7Ci0gICAgICAgIGlmICghY29lcFZhbHVlLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDooTlNTdHJp
bmcgKiljb2VwVmFsdWUgZm9yS2V5OkAiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSJdOwog
CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOmZpbmFsVVJMLmdldCgpIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9u
OkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpoZWFkZXJEaWN0aW9uYXJ5XSk7CiAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CkBAIC03MTgyLDcgKzcxNzEs
NyBAQCBURVNUKFdlYlByb2Nlc3NDYWNoZSwgQ2xlYXJXaGVuRW50ZXJpbmdDYWNoZSkKIHN0YXRp
YyBjb25zdCBjaGFyKiB3aW5kb3dPcGVuQ3Jvc3NPcmlnaW5DT09QVGVzdEJ5dGVzID0gUiJQU09O
UkVTT1VSQ0UoCiA8c2NyaXB0Pgogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHcg
PSB3aW5kb3cub3BlbigicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAuaHRtbCIsICJmb28iKTsK
KyAgICB3ID0gd2luZG93Lm9wZW4oImh0dHBzOi8vbG9jYWxob3N0OjgxODEvcG9wdXAuaHRtbCIs
ICJmb28iKTsKIH0KIDwvc2NyaXB0PgogKVBTT05SRVNPVVJDRSI7CkBAIC03MTk5LDYgKzcxODgs
NDIgQEAgZW51bSBjbGFzcyBJc1NhbWVPcmlnaW4gOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBj
bGFzcyBEb1NlcnZlclNpZGVSZWRpcmVjdCA6IGJvb2wgeyBObywgWWVzIH07CiBzdGF0aWMgdm9p
ZCBydW5DT09QUHJvY2Vzc1N3YXBUZXN0KGNvbnN0IGNoYXIqIHNvdXJjZUNPT1AsIGNvbnN0IGNo
YXIqIHNvdXJjZUNPRVAsIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uQ09PUCwgY29uc3QgY2hhciog
ZGVzdGluYXRpb25DT0VQLCBJc1NhbWVPcmlnaW4gaXNTYW1lT3JpZ2luLCBEb1NlcnZlclNpZGVS
ZWRpcmVjdCBkb1NlcnZlclNpZGVSZWRpcmVjdCwgRXhwZWN0U3dhcCBleHBlY3RTd2FwKQogewor
ICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworCisgICAgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gc291cmNlSGVhZGVyczsKKyAgICBzb3VyY2VIZWFkZXJzLmFkZCgiQ29udGVudC1U
eXBlIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICBpZiAoc291cmNlQ09PUCkKKyAgICAgICAgc291
cmNlSGVhZGVycy5hZGQoIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCBTdHJpbmcoc291
cmNlQ09PUCkpOworICAgIGlmIChzb3VyY2VDT0VQKQorICAgICAgICBzb3VyY2VIZWFkZXJzLmFk
ZCgiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSJfcywgU3RyaW5nKHNvdXJjZUNPRVApKTsK
KyAgICBIVFRQUmVzcG9uc2Ugc291cmNlUmVzcG9uc2UoV1RGTW92ZShzb3VyY2VIZWFkZXJzKSwg
aXNTYW1lT3JpZ2luID09IElzU2FtZU9yaWdpbjo6WWVzID8gd2luZG93T3BlblNhbWVPcmlnaW5D
T09QVGVzdEJ5dGVzIDogd2luZG93T3BlbkNyb3NzT3JpZ2luQ09PUFRlc3RCeXRlcyk7CisKKyAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBkZXN0aW5hdGlvbkhlYWRlcnM7CisgICAgZGVzdGlu
YXRpb25IZWFkZXJzLmFkZCgiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICBp
ZiAoZGVzdGluYXRpb25DT09QKQorICAgICAgICBkZXN0aW5hdGlvbkhlYWRlcnMuYWRkKCJDcm9z
cy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgU3RyaW5nKGRlc3RpbmF0aW9uQ09PUCkpOworICAg
IGlmIChkZXN0aW5hdGlvbkNPRVApCisgICAgICAgIGRlc3RpbmF0aW9uSGVhZGVycy5hZGQoIkNy
b3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kiX3MsIFN0cmluZyhkZXN0aW5hdGlvbkNPRVApKTsK
KyAgICBIVFRQUmVzcG9uc2UgZGVzdGluYXRpb25SZXNwb25zZShXVEZNb3ZlKGRlc3RpbmF0aW9u
SGVhZGVycyksICJwb3B1cCJfcyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRUUFNlcnZlcj4g
c2VydmVyOworICAgIGlmIChkb1NlcnZlclNpZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRp
cmVjdDo6WWVzKSB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlZGlyZWN0SGVh
ZGVyczsKKyAgICAgICAgcmVkaXJlY3RIZWFkZXJzLmFkZCgibG9jYXRpb24iX3MsIGlzU2FtZU9y
aWdpbiA9PSBJc1NhbWVPcmlnaW46OlllcyA/ICJodHRwczovLzEyNy4wLjAuMTo4MTgxL3BvcHVw
LWFmdGVyLXJlZGlyZWN0aW9uLmh0bWwiX3MgOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODE4MS9wb3B1
cC1hZnRlci1yZWRpcmVjdGlvbi5odG1sIl9zKTsKKyAgICAgICAgSFRUUFJlc3BvbnNlIHJlZGly
ZWN0UmVzcG9uc2UoMzAxLCBXVEZNb3ZlKHJlZGlyZWN0SGVhZGVycykpOworCisgICAgICAgIHNl
cnZlciA9IG1ha2VVbmlxdWU8SFRUUFNlcnZlcj4oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHsKKyAgICAgICAgICAgIHsgIi9tYWluLmh0bWwi
LCBXVEZNb3ZlKHNvdXJjZVJlc3BvbnNlKSB9LAorICAgICAgICAgICAgeyAiL3BvcHVwLmh0bWwi
LCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpIH0sCisgICAgICAgICAgICB7ICIvcG9wdXAtYWZ0
ZXItcmVkaXJlY3Rpb24uaHRtbCIsIFdURk1vdmUoZGVzdGluYXRpb25SZXNwb25zZSkgfQorICAg
ICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDgx
ODEpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlcnZlciA9IG1ha2VVbmlxdWU8SFRUUFNlcnZl
cj4oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+
IHsKKyAgICAgICAgICAgIHsgIi9tYWluLmh0bWwiLCBXVEZNb3ZlKHNvdXJjZVJlc3BvbnNlKSB9
LAorICAgICAgICAgICAgeyAiL3BvcHVwLmh0bWwiLCBXVEZNb3ZlKGRlc3RpbmF0aW9uUmVzcG9u
c2UpIH0KKyAgICAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBu
dWxscHRyLCA4MTgxKTsKKyAgICB9CisKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYm9vbCBzb3VyY2VTaG91bGRC
ZUNyb3NzT3JpZ2luSXNvbGF0ZWQgPSBzb3VyY2VDT09QICYmICFzdHJjbXAoc291cmNlQ09PUCwg
InNhbWUtb3JpZ2luIikgJiYgc291cmNlQ09FUCAmJiAhc3RyY21wKHNvdXJjZUNPRVAsICJyZXF1
aXJlLWNvcnAiKTsKQEAgLTcyMTUsMjQgKzcyNDAsNiBAQCBzdGF0aWMgdm9pZCBydW5DT09QUHJv
Y2Vzc1N3YXBUZXN0KGNvbnN0IGNoYXIqIHNvdXJjZUNPT1AsIGNvbnN0IGNoYXIqIHNvdXJjZUNP
RQogICAgICAgICAgICAgW1t3ZWJWaWV3Q29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVu
YWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6ZmVhdHVyZV07CiAgICAgfQogCi0gICAg
YXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKLSAgICBp
ZiAoaXNTYW1lT3JpZ2luID09IElzU2FtZU9yaWdpbjo6WWVzKSB7Ci0gICAgICAgIFtoYW5kbGVy
IGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRt
bCIgdG9EYXRhOndpbmRvd09wZW5TYW1lT3JpZ2luQ09PUFRlc3RCeXRlcyB3aXRoQ09PUFZhbHVl
OnNvdXJjZUNPT1Agd2l0aENPRVBWYWx1ZTpzb3VyY2VDT0VQXTsKLSAgICAgICAgaWYgKGRvU2Vy
dmVyU2lkZVJlZGlyZWN0ID09IERvU2VydmVyU2lkZVJlZGlyZWN0OjpZZXMpIHsKLSAgICAgICAg
ICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0
Lm9yZy9wb3B1cC5odG1sIiB0b1VSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1
cC1hZnRlci1yZWRpcmVjdC5odG1sIl07Ci0gICAgICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5n
RnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVj
dC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUCB3aXRo
Q09FUFZhbHVlOmRlc3RpbmF0aW9uQ09FUF07Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
W2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcv
cG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Ag
d2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlvbkNPRVBdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFto
YW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21h
aW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5Dcm9zc09yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENP
T1BWYWx1ZTpzb3VyY2VDT09QIHdpdGhDT0VQVmFsdWU6c291cmNlQ09FUF07Ci0gICAgICAgIGlm
IChkb1NlcnZlclNpZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7Ci0g
ICAgICAgICAgICBbaGFuZGxlciBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3
LmFwcGxlLmNvbS9wb3B1cC5odG1sIiB0b1VSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29t
L3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiXTsKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1h
cHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXItcmVk
aXJlY3QuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Ag
d2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlvbkNPRVBdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5j
b20vcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNP
T1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlvbkNPRVBdOwotICAgIH0KLSAgICBbd2ViVmlld0Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAIlBTT04iXTsKLQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIApA
QCAtNzI0OCw3ICs3MjU1LDcgQEAgc3RhdGljIHZvaWQgcnVuQ09PUFByb2Nlc3NTd2FwVGVzdChj
b25zdCBjaGFyKiBzb3VyY2VDT09QLCBjb25zdCBjaGFyKiBzb3VyY2VDT0UKICAgICBmYWlsZWQg
PSBmYWxzZTsKICAgICBzZXJ2ZXJSZWRpcmVjdGVkID0gZmFsc2U7CiAgICAgbnVtYmVyT2ZEZWNp
ZGVQb2xpY3lDYWxscyA9IDA7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cud2Vi
a2l0Lm9yZy9tYWluLmh0bWwiXV07CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vMTI3
LjAuMC4xOjgxODEvbWFpbi5odG1sIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKaW5kZXggZjQ4MjYwZjE2NDUyYjMzNjM0NDRmMTI0ODE1
OTEyMWU2NzVmY2NjYi4uYzU2NjE2YjhmZDQ4NTk5MmYyMzQ3ZmE4ZTdhY2Q3NDhmNWI0MmExYSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKQEAgLTM4LDYgKzM4LDcgQEAg
Y2xhc3MgQ29ubmVjdGlvbjsKIHN0cnVjdCBIVFRQUmVzcG9uc2U7CiAKIGNsYXNzIEhUVFBTZXJ2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBS
ZXF1ZXN0RGF0YTsKICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0
dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMsIEh0dHAyIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCA3MmFkNmRiZDI4ZDc1ZDA5NTdjNzIzNTJkMWViMWU0N2Y0NjcwYWRlLi5kNjFh
OGY2NGVhYWM5ZDdkOTExYzFiMzFlM2M1OGFlMzIzMDdhNDM0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wOS0yNyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xp
Y3kgaGFuZGxpbmcgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA4MTIKKyAgICAgICAgPHJkYXI6Ly84MzUwNDg0
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlYmFz
ZWxpbmUgYSBjb3VwbGUgb2YgV1BUIHRlc3RzIGR1ZSB0byBzb21lIGV4dHJhIGxvZ2dpbmcuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBv
bGljeS9jb29wLWNvZXAtc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1zYW5k
Ym94Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wOS0yOCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVyc10gSW1wb3J0IG1v
cmUgV1BUIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNh
bmRib3guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3AtY29lcC1z
YW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NzkxNmM5NjgzZTFiZjg5MDI4MWY4Njlk
YWNjZDIzYTE4Y2FiZThjLi4xNzZlMzE0NWE3Nzg0YmJmZWI5M2Y2YzlkOGRmZjJhZWY5ZDg0ZjQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IE5hdmln
YXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kKK0NPTlNPTEUg
TUVTU0FHRTogTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBv
bGljeQogCiBQQVNTIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93LXNjcmlwdHMg
YWxsb3ctc2FtZS1vcmlnaW4iPiBTYW5kYm94ZWQgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kg
cG9wdXAgc2hvdWxkIHJlc3VsdCBpbiBhIG5ldHdvcmsgZXJyb3IKIFBBU1MgPGlmcmFtZSBzYW5k
Ym94PSJhbGxvdy1wb3B1cHMgYWxsb3ctc2NyaXB0cyI+IFNhbmRib3hlZCBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSBwb3B1cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBlcnJvcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dApp
bmRleCA4NzkxNmM5NjgzZTFiZjg5MDI4MWY4NjlkYWNjZDIzYTE4Y2FiZThjLi4xNzZlMzE0NWE3
Nzg0YmJmZWI5M2Y2YzlkOGRmZjJhZWY5ZDg0ZjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1w
b2xpY3kvY29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1w
b2xpY3kvY29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDUgQEAKK0NP
TlNPTEUgTUVTU0FHRTogTmF2aWdhdGlvbiB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeQorQ09OU09MRSBNRVNTQUdFOiBOYXZpZ2F0aW9uIHdhcyBibG9ja2VkIGJ5IENy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5CiAKIFBBU1MgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1w
b3B1cHMgYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI+IFNhbmRib3hlZCBDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSBwb3B1cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBlcnJv
cgogUEFTUyA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXBvcHVwcyBhbGxvdy1zY3JpcHRzIj4gU2Fu
ZGJveGVkIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IHBvcHVwIHNob3VsZCByZXN1bHQgaW4g
YSBuZXR3b3JrIGVycm9yCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439476</attachid>
            <date>2021-09-28 08:12:10 -0700</date>
            <delta_ts>2021-09-28 10:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230812-20210928081210.patch</filename>
            <type>text/plain</type>
            <size>165976</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVlZjcwYjBjY2FlMzQ2
ZjczZTc0MDQ3ZTVhZDUyNDY5YThhZDljMC4uYWFhZDVkZjc3ZjZjYmVmNDY5MjAzOTVkZjcxZmMw
ODM1NzAzM2QwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDIxLTA5LTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgxMgorICAgICAgICA8cmRh
cjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAg
ICAgICAgUHJldmlvdXMsIENPT1AgaGFuZGxpbmcgd2FzIGZ1bGx5IGltcGxlbWVudGVkIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgbWVhbnQgdGhhdCBhCisgICAgICAgIFdlYlByb2Nl
c3MgZm9yIG9yaWdpbiBBIGNvdWxkIGdldCBhIG5ldHdvcmsgcmVzcG9uc2Ugd2l0aCBDT09QIGhl
YWRlciBmcm9tIG9yaWdpbiBCLCBkZWNpZGUKKyAgICAgICAgdGhhdCBjcm9zcy1vcmlnaW4gaXNv
bGF0aW9uIGlzIG5lZWRlZCBhbmQgYXNrIHRoZSBVSVByb2Nlc3MgdG8gcHJvY2Vzcy1zd2FwLiBU
aGlzIHdhcyBub3QgYQorICAgICAgICBnb29kIGRlc2lnbiBnaXZlbiB0aGF0IHRoZSBXZWJDb250
ZW50IHByb2Nlc3MgaXMgbm90IGEgdHJ1c3RlZCBwcm9jZXNzLiBXZSBzaG91bGQgbm90IHRydXN0
CisgICAgICAgIHRoZSBXZWJQcm9jZXNzIGZvciBvcmlnaW4gQSB0byBtYWtlIHRoZSBzd2FwIG9u
IGJlaGF2aW9yIG9mIG9yaWdpbiBCLiBBbHNvLCB0aGUgbmV0d29yaworICAgICAgICByZXNwb25z
ZSBmcm9tIG9yaWdpbiBCIG1heSBjb250YWluIHNlbnNpdGl2ZSBoZWFkZXJzIHRoYXQgd2UgZG9u
J3Qgd2FudCBvcmlnaW4gQSdzIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gc2VlLgorCisgICAgICAg
IFRvIGFkZHJlc3MgdGhlc2UgaXNzdWVzLCBJIGhhdmUgbW92ZWQgQ09PUCBoYW5kbGluZyBmcm9t
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9jZXNzLiBB
cyBzb29uIGFzIHRoZSBOZXR3b3JrUHJvY2VzcyBnZXRzIHRoZSBuZXR3b3JrIHJlc3BvbnNlLCBp
dCBtYWtlcyB0aGUgZGVjaXNpb24KKyAgICAgICAgd2hldGhlciBvciBub3QgY3Jvc3Mtb3JpZ2lu
IGlzb2xhdGlvbiBpcyBuZWVkZWQuIElmIGlzb2xhdGlvbiBpcyBuZWVkZWQsIHRoZSBuZXR3b3Jr
IHByb2Nlc3MKKyAgICAgICAgYXNrcyB0aGUgVUlQcm9jZXNzIGRpcmVjdGx5IHRvIGNvbnRpbnVl
IHRoZSBsb2FkIGluIGEgbmV3IFdlYlByb2Nlc3MgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZQorICAg
ICAgICBuZXR3b3JrIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50bHkgYXNzb2NpYXRlZCBXZWJQcm9j
ZXNzLiBXaGVuIHRoZSBuZXcgV2ViUHJvY2VzcyByZXN1bWVzIHRoZQorICAgICAgICBsb2FkLCB0
aGUgbmV0d29yayBwcm9jZXNzIHNlbmRzIGl0IHRoZSBuZXR3b3JrIHJlc3BvbnNlIGl0IGFscmVh
ZHkgaGFzLgorCisgICAgICAgIEkgbW92ZWQgbW9zdCBvZiB0aGUgQ09PUCBzcGVjaWZpY2F0aW9u
IGltcGxlbWVudGF0aW9uIGZyb20gRG9jdW1lbnRMb2FkZXIuY3BwL2ggdG8KKyAgICAgICAgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwL2ggc28gdGhhdCB3ZSBjYW4gbGV2ZXJhZ2UgaXQgZnJv
bSB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyIGluCisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nl
c3MuIFdlIHN0aWxsIGhhdmUgdG8gZG8gKnNvbWUqIENPT1AgaGFuZGxpbmcgYXQgRG9jdW1lbnRM
b2FkZXIgbGV2ZWwKKyAgICAgICAgY3VycmVudGx5IGZvciBub24taW5pdGlhbCBuYXZpZ2F0aW9u
cyB0byBhYm91dDpibGFuayBnaXZlbiB0aGF0IHRob3NlIGNhbiB0cmlnZ2VyIGEgYnJvd3NpbmcK
KyAgICAgICAgY29udGV4dCBncm91cCBzd2l0Y2ggYnV0IGN1cnJlbnRseSBkbyBub3QgaW52b2x2
ZSB0aGUgbmV0d29yayBwcm9jZXNzLiBJIGFsc28gaGFkIHRvIGFkZAorICAgICAgICBtb3JlIGlu
Zm9ybWF0aW9uIHRvIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHNvIHRoYXQgd2UgYXJl
IGFibGUgdG8gbWFrZSBhcHByb3ByaWF0ZQorICAgICAgICBDT09QIGRlY2lzaW9ucyBpbiB0aGUg
TmV0d29ya1Byb2Nlc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIENPT1AgdGVzdHMgdGhhdCBhcmUgc3RpbGwgcGFzc2luZy4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrSWZFbmZvcmNpbmdSZXBvcnRPbmx5Q09PUFdvdWxkUmVx
dWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVSZXNwb25zZU9yaWdpbkFuZENPT1ApOgorICAgICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJlc3Bv
bnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6b2J0YWluQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6c2VuZFZpb2xhdGlvblJl
cG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6c2Vu
ZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
Ojpmcm9tKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OjpyZXBvcnRpbmdFbmRwb2lu
dEZvckRpc3Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5OjpoYXNSZXBvcnRpbmdFbmRwb2ludCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRvQ3Jv
c3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzQ29udGlu
dWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldElzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQpOgorICAgICAgICBNb3ZlIG1vc3Qgb2YgdGhlIENPT1AgbG9naWMgZnJvbSBE
b2N1bWVudExvYWRlci5jcHAgdG8gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwLCBzbyB0aGF0
CisgICAgICAgIGl0IGNhbiBiZSByZXVzZWQgYnkgTmV0d29ya1Jlc291cmNlTG9hZGVyIGluIHRo
ZSBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjaGVja0NvbnRlbnRQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCisgICAgICAgICogbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OnJlcXVlc3RlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjppc0VtcHR5IGNvbnN0KToKKyAgICAg
ICAgKiBsb2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmg6IEFkZGVkLgorICAgICAgICBFeHRyYWN0ZWQgTmF2
aWdhdGlvbkFjdGlvbjo6UmVxdWVzdGVyIHRvIGl0cyBvd24gaGVhZGVyIGFuZCByZW5hbWUgaXQg
dG8gTmF2aWdhdGlvblJlcXVlc3RlciwKKyAgICAgICAgc28gdGhhdCBpdHMgaW1wbGVtZW50YXRp
b24gY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIE5hdmlnYXRpb25BY3Rpb24sIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzCisgICAgICAgIGFuZCBDT09QLgorCisgICAgICAgICogbG9hZGVyL1Jl
cG9ydGluZ0VuZHBvaW50c0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcG9ydGluZ0Vu
ZHBvaW50c0NhY2hlOjphZGRFbmRQb2ludHNGcm9tUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXBvcnRUb0hlYWRl
cik6CisgICAgICAgICogbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5oOgorCiAyMDIxLTA5LTI4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjgzMTM2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBiYjgxMTUzZDU0ZTk4MWMyMjNkNmE0YWY5Mzc3YTY4ZTZhZTQyYjViLi5lY2M5ZmNmMTlm
ZjQ3NmU1MmNkMTY1YmU3OWFmYjgyN2I4Njc2MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBA
CisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29ya1By
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgSW1wbGVtZW50IENPT1AgaGFuZGxpbmcgaW4gdGhlIE5l
dHdvcmtQcm9jZXNzLCBpbnNpZGUgdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBjbGFzcy4KKyAg
ICAgICAgVGhpcyB3YXMgbG9naWMgdGhhdCB3YXMgY3VycmVudGx5IGltcGxlbWVudGVkIGF0IERv
Y3VtZW50TG9hZGVyLWxldmVsLCBpbiB0aGUgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6dG9Ccm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9u
c2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRy
eSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAo
aGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRy
aWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGludWVO
YXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdB
d2F5RnJvbUNPT1BSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMS0wOS0yNyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEF2b2lkIGJ1aWxkaW5nIGxvZyBtZXNzYWdlcyB3aGVuIElQQ01lc3NhZ2VzIGxvZyBz
dHJlYW0gaXMgb2ZmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjE5NTQ2MmZmMmI1
MTMwYzMwZDFlMzA4ZWM1OTg1MDU0YzIzNDg1NS4uMDcxNmZhYmRhMzQ4NzE3YzhkNzczMTYxNTZj
ZDA0NGZkYjc3ZDQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5kbGluZyB0byB0aGUgTmV0d29y
a1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorCiAyMDIxLTA5LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgbW9yZSBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tz
IHRvIFdlYkNvcmU6OmxpbmtlZE9uT3JBZnRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggYTE2YTMwZjViMzYyZDViOTA1ODZhMmFiYjA5Njg4YTM5OWRjZWI2Yi4uMGM3Njk4MDU3
MzA4YmExZTM3NWEyZTIwY2Q4YmE4MzBhYzExYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA5LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBoYW5k
bGluZyB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMDgxMgorICAgICAgICA8cmRhcjovLzgzNTA0ODQyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAyMS0wOS0yNCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHR5cGVjaGVja2luZyBgaXNg
IG92ZXJsb2FkcyBmb3IgYHN0ZDo6dW5pcXVlX3B0cmAsIGBXVEY6OlVuaXF1ZVJlZmAsIGFuZCBg
V1RGOjpXZWFrUHRyYApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZWMwNTAxNDJhNWZjNjYxM2Q3NzM1
ZjY1Zjk0OWY3ODFkOGNlMGZjNi4uOGYzOTRjZTJkZjNiYWFkZWI4MzdmODEwYTNlOGEwZjc1NDE5
MTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC04MzEsNiArODMxLDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKICAgICBsb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCiAgICAgbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaAorICAgIGxvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmgKICAgICBsb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAogICAgIGxvYWRlci9QaW5nTG9hZGVyLmgKICAg
ICBsb2FkZXIvUG9saWN5Q2hlY2tlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdmZmRjOTYwZTBmYzQ2
ZGM4MGQ3YjY5NWVmYmYwMDlmZmNjNDI1M2YuLjcxM2Y3NDlkN2FlZDlkZWE0ZTE1MzZmNWNlYzYw
MTZjNWUyNTllYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNTYwLDYgKzE1NjAsNyBAQCBsb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuY3BwCiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIGxvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCits
b2FkZXIvTmF2aWdhdGlvblJlcXVlc3Rlci5jcHAKIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcAogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAogbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNWM0OWQxMDc2YTMxZDFmNjQwNmU2ZWFiNGQwYjgyMmY3MmY5ZGQ4My4u
ODJiZWFkNmEyYWQyOWYxYzhjYzI4NjI4NWQxZDhhZmM2N2NiMGEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyMyw2ICsx
MzIzLDcgQEAKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERG
QTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQyNjEwMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5Q0NDRkUyNjlEMDIx
QzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAyMDIwMDZFMDMxNCAvKiBCcm9hZGNh
c3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUQ3N0I2Mjcw
MTYyNTAwMDE0MkZBNiAvKiBOYXZpZ2F0aW9uUmVxdWVzdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZBQUFBM0QyNUQzNjMyMDAwQkFGNDJG
IC8qIEF1ZGlvRmlsZVJlYWRlckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkFBQUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRU
YXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCNjUwREQy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQgLyogUGFn
ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODQ2NCw4ICs4NDY1LDEwIEBACiAJCTQ2OUNDQ0ZBMjY5RDAyMDIwMDZFMDMxNCAv
KiBCcm9hZGNhc3RDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyb2FkY2FzdENoYW5u
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlDQ0NGQzI2OUQwMjAyMDA2
RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm9hZGNhc3RDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OUNDQ0ZEMjY5RDAyMDMwMDZF
MDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCcm9hZGNhc3RDaGFubmVsLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8q
IE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF2aWdhdGlvblJlcXVlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkFB
QUEzQTI1RDM2MzE0MDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyQ29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBQUFBM0MyNUQzNjMxNDAwQkFGNDJGIC8qIEF1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZB
Q0Q4MTEyNzAxNjU2QTAwRUY4Q0VEIC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblJlcXVlc3Rlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCNjUw
REIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2Qjg1OTNBMjYxNjcyMEMwMDE5RURDNiAvKiBTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc3OTgsNiArMjc4MDEsOCBAQAogCQkJCTkzQ0NG
MDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLywKIAkJCQk5M0ND
RjAyNjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovLAogCQkJCTlCQTgy
Nzc4MUYwNjE1NjUwMEY3MUU3NSAvKiBOYXZpZ2F0aW9uRGlzYWJsZXIuaCAqLywKKwkJCQk0NkFD
RDgxMTI3MDE2NTZBMDBFRjhDRUQgLyogTmF2aWdhdGlvblJlcXVlc3Rlci5jcHAgKi8sCisJCQkJ
NDY5RDc3QjYyNzAxNjI1MDAwMTQyRkE2IC8qIE5hdmlnYXRpb25SZXF1ZXN0ZXIuaCAqLywKIAkJ
CQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgKi8s
CiAJCQkJOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAq
LywKIAkJCQk5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwICovLApAQCAtMzQyMjcsNiArMzQyMzIsNyBAQAogCQkJCTgzQjJEMTc1MUI4QkNE
NkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBC
OUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDY5RDc3QjgyNzAxNjI1MTAwMTQyRkE2IC8qIE5hdmlnYXRp
b25SZXF1ZXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgz
QiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2RTVBNjBE
NzQ2NDU4MDA2NDQyRTkgLyogTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI3MTlD
NzBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IGVhMGEwODAyYzU3ZmM2OWM1MTNkOGY0NjI0ZDlmNWZhMWI2MmY4
NzQuLmM0MThkNTkwZDE5NDEyMDBiNmM2NmRmNjZhNGE3ZTllMTc1MDVhMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMzY3LDcgKzEzNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhbWVP
cmlnaW5Bc1RvcERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gc2VjdXJpdHlPcmlnaW4oKS5pc1Nh
bWVPcmlnaW5Bcyh0b3BPcmlnaW4oKSk7IH0KICAgICBib29sIHNob3VsZEZvcmNlTm9PcGVuZXJC
YXNlZE9uQ09PUCgpIGNvbnN0OwogCi0gICAgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3km
IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRDcm9zc09yaWdpbk9wZW5lclBvbGljeShjb25z
dCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYpOwogCiAgICAgdm9pZCB3aWxsTG9hZFNjcmlwdEVs
ZW1lbnQoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmNwcAppbmRleCBjNjVmMWIyMmQ1NzI4ZjUyZTg0MGU1MDJlNGU3MDFk
ZTllZDExMDlhLi5mOTg4OGY1ZmE5YzcxNGJiZjcxNzI0MmMyNTAwNDU4NjlkOTI3MjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAK
QEAgLTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmgiCiAKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmgiCiAjaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvblJlcXVlc3Rl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNjgsMTMgKzcwLDg3IEBAIHN0YXRpYyBBU0NJSUxp
dGVyYWwgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZVRvRWZmZWN0aXZlUG9saWN5U3RyaW5n
KENyb3NzT3JpCiAgICAgcmV0dXJuICJ1bnNhZmUtbm9uZSJfczsKIH0KIAorLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY2hlY2stYnJvd3Npbmct
Y29udGV4dC1ncm91cC1zd2l0Y2gtY29vcC12YWx1ZQorc3RhdGljIGJvb2wgY2hlY2tJZkNPT1BW
YWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goYm9vbCBpc0luaXRpYWxBYm91
dEJsYW5rLCBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlIGFjdGl2ZURvY3VtZW50Q09PUFZh
bHVlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2lu
LCBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlIHJlc3BvbnNlQ09PUFZhbHVlLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pCit7CisgICAgLy8gSWYgdGhlIHJlc3VsdCBv
ZiBtYXRjaGluZyBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0
aW9uT3JpZ2luLCByZXNwb25zZUNPT1BWYWx1ZSwgYW5kIHJlc3BvbnNlT3JpZ2luIGlzIHRydWUs
IHJldHVybiBmYWxzZS4KKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9vcmlnaW4uaHRtbCNtYXRjaGluZy1jb29wCisgICAgaWYgKGFjdGl2ZURvY3VtZW50Q09P
UFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUgJiYgcmVz
cG9uc2VDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhY3RpdmVEb2N1bWVudENPT1BWYWx1
ZSA9PSByZXNwb25zZUNPT1BWYWx1ZSAmJiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4u
aXNTYW1lT3JpZ2luQXMocmVzcG9uc2VPcmlnaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKKyAgICAvLyAtIGlzSW5p
dGlhbEFib3V0QmxhbmssCisgICAgLy8gLSBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSdzIHZhbHVl
IGlzICJzYW1lLW9yaWdpbi1hbGxvdy1wb3B1cHMiLgorICAgIC8vIC0gcmVzcG9uc2VDT09QVmFs
dWUgaXMgInVuc2FmZS1ub25lIiwKKyAgICAvLyB0aGVuIHJldHVybiBmYWxzZS4KKyAgICBpZiAo
aXNJbml0aWFsQWJvdXRCbGFuayAmJiBhY3RpdmVEb2N1bWVudENPT1BWYWx1ZSA9PSBDcm9zc09y
aWdpbk9wZW5lclBvbGljeVZhbHVlOjpTYW1lT3JpZ2luQWxsb3dQb3B1cHMgJiYgcmVzcG9uc2VD
T09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2NoZWNrLWJjZy1zd2l0
Y2gtbmF2aWdhdGlvbi1yZXBvcnQtb25seQorc3RhdGljIGJvb2wgY2hlY2tJZkVuZm9yY2luZ1Jl
cG9ydE9ubHlDT09QV291bGRSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goYm9vbCBp
c0luaXRpYWxBYm91dEJsYW5rLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgYWN0aXZl
RG9jdW1lbnRDT09QLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZlRG9jdW1lbnROYXZpZ2F0
aW9uT3JpZ2luLCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgcmVzcG9uc2VPcmlnaW4pCit7CisgICAgaWYgKCFjaGVja0lm
Q09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0luaXRpYWxBYm91
dEJsYW5rLCBhY3RpdmVEb2N1bWVudENPT1AucmVwb3J0T25seVZhbHVlLCBhY3RpdmVEb2N1bWVu
dE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5VmFsdWUsIHJlc3BvbnNl
T3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNoZWNrSWZDT09QVmFs
dWVzUmVxdWlyZUJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0Qmxhbmss
IGFjdGl2ZURvY3VtZW50Q09PUC5yZXBvcnRPbmx5VmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdh
dGlvbk9yaWdpbiwgcmVzcG9uc2VDT09QLnZhbHVlLCByZXNwb25zZU9yaWdpbikpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKGNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0QmxhbmssIGFjdGl2ZURvY3VtZW50Q09P
UC52YWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1AucmVw
b3J0T25seVZhbHVlLCByZXNwb25zZU9yaWdpbikpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgc3RkOjp0dXBsZTxSZWY8U2VjdXJpdHlPcmln
aW4+LCBDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY29tcHV0ZVJlc3BvbnNlT3JpZ2luQW5kQ09P
UChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW9uUmVxdWVzdGVyPiYgcmVxdWVzdGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIHJl
c3BvbnNlQ1NQKQoreworICAgIC8vIE5vbi1pbml0aWFsIGVtcHR5IGRvY3VtZW50cyAoYWJvdXQ6
YmxhbmspIHNob3VsZCBpbmhlcml0IHRoZWlyIGNyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5IGZy
b20gdGhlIG5hdmlnYXRpb24ncyBpbml0aWF0b3IgdG9wIGxldmVsIGRvY3VtZW50LAorICAgIC8v
IGlmIHRoZSBpbml0aWF0b3IgYW5kIGl0cyB0b3AgbGV2ZWwgZG9jdW1lbnQgYXJlIHNhbWUtb3Jp
Z2luLCBvciBkZWZhdWx0ICh1bnNhZmUtbm9uZSkgb3RoZXJ3aXNlLgorICAgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNjkxMworICAgIGlmIChTZWN1cml0eVBvbGlj
eTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKHJlc3BvbnNlLnVybCgpKSAm
JiByZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUocmVxdWVzdGVyLT5z
ZWN1cml0eU9yaWdpbiwgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbi0+aXNTYW1lT3JpZ2luQXMo
cmVxdWVzdGVyLT50b3BPcmlnaW4pID8gcmVxdWVzdGVyLT5jcm9zc09yaWdpbk9wZW5lclBvbGlj
eSA6IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgfSk7CisKKyAgICAvLyBJZiB0aGUgSFRUUCBy
ZXNwb25zZSBjb250YWlucyBhIENTUCBoZWFkZXIsIGl0IG1heSBzZXQgc2FuZGJveCBmbGFncywg
d2hpY2ggd291bGQgY2F1c2UgdGhlIG9yaWdpbiB0byBiZWNvbWUgdW5pcXVlLgorICAgIGF1dG8g
cmVzcG9uc2VPcmlnaW4gPSByZXNwb25zZUNTUCAmJiByZXNwb25zZUNTUC0+c2FuZGJveEZsYWdz
KCkgIT0gU2FuZGJveE5vbmUgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3R1cGxlKFdURk1vdmUocmVzcG9uc2VPcmlnaW4pLCBvYnRhaW5Dcm9zc09yaWdpbk9wZW5lclBv
bGljeShyZXNwb25zZSkpOworfQorCisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9vcmlnaW4uaHRtbCNjb29wLWVuZm9yY2UKK3N0YXRpYyBDcm9zc09yaWdpbk9wZW5l
clBvbGljeUVuZm9yY2VtZW50UmVzdWx0IGVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5KGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQmIGN1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3Vy
aXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3km
IHJlc3BvbnNlQ09PUCwgYm9vbCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwgY29u
c3QgRnVuY3Rpb248dm9pZChDT09QRGlzcG9zaXRpb24pPiYgc2VuZFZpb2xhdGlvblJlcG9ydHMp
Cit7CisgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCBuZXdDT09Q
RW5mb3JjZW1lbnRSZXN1bHQgPSB7CisgICAgICAgIHJlc3BvbnNlVVJMLAorICAgICAgICByZXNw
b25zZU9yaWdpbiwKKyAgICAgICAgcmVzcG9uc2VDT09QLAorICAgICAgICB0cnVlIC8qIGlzQ3Vy
cmVudENvbnRleHROYXZpZ2F0aW9uU291cmNlICovLAorICAgICAgICBjdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0Lm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsCisgICAgICAgIGN1
cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQubmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aER1ZVRvUmVwb3J0T25seQorICAgIH07CisKKyAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNSZXF1
aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQsIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kudmFsdWUsIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3VycmVudE9yaWdpbiwgcmVz
cG9uc2VDT09QLnZhbHVlLCByZXNwb25zZU9yaWdpbikpIHsKKyAgICAgICAgbmV3Q09PUEVuZm9y
Y2VtZW50UmVzdWx0Lm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggPSB0cnVlOworICAg
ICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0cyhDT09QRGlzcG9zaXRpb246OkVuZm9yY2UpOworICAg
IH0KKworICAgIGlmIChjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSwg
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1As
IHJlc3BvbnNlT3JpZ2luKSkgeworICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1bHQubmVl
ZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaER1ZVRvUmVwb3J0T25seSA9IHRydWU7CisgICAg
ICAgIHNlbmRWaW9sYXRpb25SZXBvcnRzKENPT1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbmV3Q09PUEVuZm9yY2VtZW50UmVzdWx0OworfQorCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNvYnRhaW4tY29v
cAotQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCitDcm9zc09yaWdpbk9wZW5lclBvbGljeSBvYnRhaW5Dcm9zc09yaWdp
bk9wZW5lclBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k+IGNvZXA7Ci0gICAgYXV0byBl
bnN1cmVDT0VQID0gWyZjb2VwLCAmcmVzcG9uc2UsICZjb250ZXh0XSgpIC0+IENyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kmIHsKKyAgICBhdXRvIGVuc3VyZUNPRVAgPSBbJmNvZXAsICZyZXNwb25z
ZV0oKSAtPiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiB7CiAgICAgICAgIGlmICghY29lcCkK
LSAgICAgICAgICAgIGNvZXAgPSBvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3Bv
bnNlLCAmY29udGV4dCk7CisgICAgICAgICAgICBjb2VwID0gb2J0YWluQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeShyZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybiAqY29lcDsKICAg
ICB9OwogICAgIGF1dG8gcGFyc2VDT09QID0gWyZyZXNwb25zZSwgJmVuc3VyZUNPRVBdKEhUVFBI
ZWFkZXJOYW1lIGhlYWRlck5hbWUsIGF1dG8mIHZhbHVlLCBhdXRvJiByZXBvcnRpbmdFbmRwb2lu
dCkgewpAQCAtOTUsNyArMTcxLDcgQEAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICB9Owog
CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgcG9saWN5OwotICAgIGlmICghY29udGV4dC5z
ZXR0aW5nc1ZhbHVlcygpLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCB8fCAhU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSktPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRo
eSgpKQorICAgIGlmICghU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZS51cmwoKSktPmlz
UG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpKQogICAgICAgICByZXR1cm4gcG9saWN5OwogCiAgICAg
cGFyc2VDT09QKEhUVFBIZWFkZXJOYW1lOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSwgcG9saWN5
LnZhbHVlLCBwb2xpY3kucmVwb3J0aW5nRW5kcG9pbnQpOwpAQCAtMTMyLDcgKzIwOCw3IEBAIHZv
aWQgYWRkQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBDcm9zc09yCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9vcmlnaW4uaHRtbCNjb29wLXZpb2xhdGlvbi1uYXZpZ2F0aW9uLXRvCiB2b2lkIHNl
bmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1lJiBmcmFt
ZSwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY29vcCwgQ09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgcHJldmlvdXNSZXNwb25zZVVSTCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBw
cmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCkKIHsKLSAgICBhdXRvJiBlbmRwb2ludCA9IGRpc3Bvc2l0aW9uID09IENP
T1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nID8gY29vcC5yZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9p
bnQgOiBjb29wLnJlcG9ydGluZ0VuZHBvaW50OworICAgIGF1dG8mIGVuZHBvaW50ID0gY29vcC5y
ZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKTsKICAgICBpZiAoZW5k
cG9pbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0OCw3ICsyMjQsNyBAQCB2
b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1l
JiBmcmFtZSwgQ3Jvc3NPcmlnaW5PcAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY29vcC12aW9sYXRpb24tbmF2aWdhdGlvbi1mcm9tCiB2b2lk
IHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlKEZy
YW1lJiBmcmFtZSwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgY29vcCwgQ09PUERpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNl
VVJMLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIG5leHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGF1dG8mIGVuZHBvaW50ID0gZGlz
cG9zaXRpb24gPT0gQ09PUERpc3Bvc2l0aW9uOjpSZXBvcnRpbmcgPyBjb29wLnJlcG9ydE9ubHlS
ZXBvcnRpbmdFbmRwb2ludCA6IGNvb3AucmVwb3J0aW5nRW5kcG9pbnQ7CisgICAgYXV0byYgZW5k
cG9pbnQgPSBjb29wLnJlcG9ydGluZ0VuZHBvaW50Rm9yRGlzcG9zaXRpb24oZGlzcG9zaXRpb24p
OwogICAgIGlmIChlbmRwb2ludC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTYw
LDQgKzIzNiwyOCBAQCB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlG
cm9tQ09PUFJlc3BvbnNlKEZyYW1lJiBmcmFtZSwgQ3Jvc3NPcgogICAgIH0pOwogfQogCisvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0
bWwjcHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEzLjUuNikKK3N0ZDo6b3B0aW9uYWw8
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4gZG9Dcm9zc09yaWdpbk9w
ZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uUmVxdWVzdGVyPiYgcmVxdWVzdGVyLCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqIHJlc3BvbnNlQ1NQLCBTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2Fu
ZGJveEZsYWdzLCBib29sIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50LCBjb25zdCBD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0JiBjdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0LCBjb25zdCBGdW5jdGlvbjx2b2lkKENPT1BEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKT4mIHNlbmRWaW9sYXRpb25SZXBvcnRzKQor
eworICAgIGF1dG8gW3Jlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1BdID0gY29tcHV0ZVJlc3Bv
bnNlT3JpZ2luQW5kQ09PUChyZXNwb25zZSwgcmVxdWVzdGVyLCByZXNwb25zZUNTUCk7CisKKyAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUt
d2ViLmh0bWwjcHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEzLjUuNi4yKQorICAgIC8v
IElmIHNhbmRib3hGbGFncyBpcyBub3QgZW1wdHkgYW5kIHJlc3BvbnNlQ09PUCdzIHZhbHVlIGlz
IG5vdCAidW5zYWZlLW5vbmUiLCB0aGVuIHNldCByZXNwb25zZSB0byBhbiBhcHByb3ByaWF0ZSBu
ZXR3b3JrIGVycm9yIGFuZCBicmVhay4KKyAgICBpZiAocmVzcG9uc2VDT09QLnZhbHVlICE9IENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlVuc2FmZU5vbmUgJiYgZWZmZWN0aXZlU2FuZGJv
eEZsYWdzICE9IFNhbmRib3hOb25lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGN1cnJlbnRD
b29wRW5mb3JjZW1lbnRSZXN1bHQsIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZU9yaWdpbiwgcmVz
cG9uc2VDT09QLCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCwgWyYsIHJlc3BvbnNl
T3JpZ2luID0gcmVzcG9uc2VPcmlnaW4sIHJlc3BvbnNlQ09PUCA9IHJlc3BvbnNlQ09PUF0oQ09P
UERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKSB7CisgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRz
KGRpc3Bvc2l0aW9uLCByZXNwb25zZUNPT1AsIHJlc3BvbnNlT3JpZ2luKTsKKyAgICB9KTsKK30K
KworQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0Ojpmcm9tKGNvbnN0IFVSTCYgY3VycmVudFVSTCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIGN1cnJlbnRPcmlnaW4sIGNvbnN0IENyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5JiBjcm9zc09yaWdpbk9wZW5lclBvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW9uUmVxdWVzdGVyPiByZXF1ZXN0ZXIsIGNvbnN0IFVSTCYgb3BlbmVyVVJMKQoreworICAgIENy
b3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgcmVzdWx0IHsgY3VycmVudFVS
TCwgV1RGTW92ZShjdXJyZW50T3JpZ2luKSwgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgfTsKKyAg
ICByZXN1bHQuaXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UgPSByZXF1ZXN0ZXIgJiYg
cmVzdWx0LmN1cnJlbnRPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHJlcXVlc3Rlci0+c2VjdXJpdHlP
cmlnaW4pOworICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3Jp
Z2luRnJvbU93bmVyKGN1cnJlbnRVUkwpICYmIG9wZW5lclVSTC5pc1ZhbGlkKCkpCisgICAgICAg
IHJlc3VsdC51cmwgPSBvcGVuZXJVUkw7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuaAppbmRleCA4N2E1YjEzMGNkZjY1MjFiOWUxN2Q5OGQzNGI3ZDFiYmUxNTBh
NTQyLi45NDY0NzRiNTg1ODE5M2IwYjMwNmM5MmUxZjViMmU4YmMxZmFjOWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaApAQCAtMzEsOSAr
MzEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAorc3RydWN0IE5hdmlnYXRpb25SZXF1ZXN0ZXI7CisKK3R5cGVkZWYgaW50IFNhbmRi
b3hGbGFnczsKKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3Jp
Z2luLmh0bWwjY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3ktdmFsdWUKIGVudW0gY2xhc3MgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSA6IHVpbnQ4X3QgewogICAgIFVuc2FmZU5vbmUsCkBA
IC00Miw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSA6
IHVpbnQ4X3QgewogICAgIFNhbWVPcmlnaW5BbGxvd1BvcHVwcwogfTsKIAorZW51bSBjbGFzcyBD
T09QRGlzcG9zaXRpb24gOiBib29sIHsgUmVwb3J0aW5nICwgRW5mb3JjZSB9OworCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjcm9zcy1vcmln
aW4tb3BlbmVyLXBvbGljeQogc3RydWN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsKICAgICBD
cm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlIHZhbHVlIHsgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3lWYWx1ZTo6VW5zYWZlTm9uZSB9OwpAQCAtNDksMTEgKzU2LDI0IEBAIHN0cnVjdCBDcm9zc09y
aWdpbk9wZW5lclBvbGljeSB7CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSByZXBv
cnRPbmx5VmFsdWUgeyBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lIH07
CiAgICAgU3RyaW5nIHJlcG9ydE9ubHlSZXBvcnRpbmdFbmRwb2ludDsKIAorICAgIGNvbnN0IFN0
cmluZyYgcmVwb3J0aW5nRW5kcG9pbnRGb3JEaXNwb3NpdGlvbihDT09QRGlzcG9zaXRpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzUmVwb3J0aW5nRW5kcG9pbnQoQ09PUERpc3Bvc2l0aW9uKSBjb25z
dDsKKwogICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IGlzb2xhdGVkQ29weSgpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDcm9zc09y
aWdpbk9wZW5lclBvbGljeT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK2lubGluZSBjb25zdCBT
dHJpbmcmIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5OjpyZXBvcnRpbmdFbmRwb2ludEZvckRpc3Bv
c2l0aW9uKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4g
ZGlzcG9zaXRpb24gPT0gQ09PUERpc3Bvc2l0aW9uOjpFbmZvcmNlID8gcmVwb3J0aW5nRW5kcG9p
bnQgOiByZXBvcnRPbmx5UmVwb3J0aW5nRW5kcG9pbnQ7Cit9CisKK2lubGluZSBib29sIENyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5OjpoYXNSZXBvcnRpbmdFbmRwb2ludChDT09QRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuICFyZXBvcnRpbmdFbmRwb2ludEZvckRp
c3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKS5pc0VtcHR5KCk7Cit9CisKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIGEsIGNvbnN0IENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5JiBiKQogewogICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWUgJiYgYS5y
ZXBvcnRpbmdFbmRwb2ludCA9PSBiLnJlcG9ydGluZ0VuZHBvaW50ICYmIGEucmVwb3J0T25seVZh
bHVlID09IGIucmVwb3J0T25seVZhbHVlICYmIGEucmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50
ID09IGIucmVwb3J0T25seVJlcG9ydGluZ0VuZHBvaW50OwpAQCAtOTgsMjAgKzExOCwyMSBAQCBz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBDcm9zc09yaWdpbk9wZW5lclBv
bGljeTo6ZGVjb2RlKERlY29kZXImCiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL29yaWdpbi5odG1sI2Nvb3AtZW5mb3JjZW1lbnQtcmVzdWx0CiBzdHJ1Y3QgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdCB7Ci0gICAgYm9vbCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoIHsgZmFsc2UgfTsKLSAgICBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9ydE9ubHkgeyBmYWxzZSB9OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
IGZyb20oY29uc3QgVVJMJiBjdXJyZW50VVJMLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgY3VycmVu
dE9yaWdpbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmLCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpb25SZXF1ZXN0ZXI+LCBjb25zdCBVUkwmIG9wZW5lclVSTCk7CisKICAgICBVUkwgdXJs
OwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gY3VycmVudE9yaWdpbjsKICAgICBDcm9zc09yaWdp
bk9wZW5lclBvbGljeSBjcm9zc09yaWdpbk9wZW5lclBvbGljeTsKICAgICBib29sIGlzQ3VycmVu
dENvbnRleHROYXZpZ2F0aW9uU291cmNlIHsgdHJ1ZSB9OworICAgIGJvb2wgbmVlZHNCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaCB7IGZhbHNlIH07CisgICAgYm9vbCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5IHsgZmFsc2UgfTsKIH07CiAKLWVudW0gY2xh
c3MgQ09PUERpc3Bvc2l0aW9uIDogYm9vbCB7IFJlcG9ydGluZyAsIEVuZm9yY2UgfTsKLQotQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kgb2J0YWluQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKK0Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5IG9idGFpbkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3lIZWFkZXJzKFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDcm9zc09yaWdpbk9wZW5l
clBvbGljeSYpOwotdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BS
ZXNwb25zZShGcmFtZSYsIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBDT09QRGlzcG9zaXRpb24s
IGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91c1Jlc3BvbnNlVVJMLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHByZXZp
b3VzUmVzcG9uc2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KTsKLXZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZy
b21DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSwgQ09PUERpc3Bv
c2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJMLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgY29vcE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG5l
eHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3VyY2UsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2VuZFZpb2xhdGlv
blJlcG9ydFdoZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoRnJhbWUmLCBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeSwgQ09PUERpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVS
TCYgcHJldmlvdXNSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIGNvb3BPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNl
KEZyYW1lJiwgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbiwgY29uc3Qg
VVJMJiBjb29wVVJMLCBjb25zdCBVUkwmIG5leHRSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBuZXh0UmVzcG9uc2VPcmln
aW4sIGJvb2wgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9uU291cmNlLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGlvblJlcXVlc3Rlcj4mLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIHJlc3BvbnNlQ1NQLCBTYW5k
Ym94RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzLCBib29sIGlzRGlzcGxheWluZ0luaXRpYWxF
bXB0eURvY3VtZW50LCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVz
dWx0JiBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LCBjb25zdCBGdW5jdGlvbjx2b2lkKENP
T1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3km
IHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luKT4mIHNl
bmRWaW9sYXRpb25SZXBvcnRzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBmMDllMGVkYWJlZTBjZTBhZDgz
ZDEyMjdjZGU0NTc2MWQ1ZGJmY2E0Li5iNjlkOWMxZjZhMzAwN2VlZGVmMzAwNGUwNmNkN2IyZmQ2
YzlkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTY5
LDYgKzY5LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJNaXhlZENvbnRlbnRDaGVja2VyLmgiCisjaW5jbHVkZSAiTmF2aWdhdGlv
blJlcXVlc3Rlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCIKQEAgLTYzNSw3ICs2MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIGJvb2wg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsK
ICAgICBpZiAoZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgbV9mcmFtZS0+aXNNYWluRnJh
bWUoKSkgewogICAgICAgICBpZiAoYXV0byByZXBvcnRpbmdFbmRwb2ludHNDYWNoZSA9IG1fZnJh
bWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+cmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUoKSA6
IG51bGxwdHIpCi0gICAgICAgICAgICByZXBvcnRpbmdFbmRwb2ludHNDYWNoZS0+YWRkRW5kUG9p
bnRzRnJvbVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgcmVwb3J0aW5n
RW5kcG9pbnRzQ2FjaGUtPmFkZEVuZHBvaW50c0Zyb21SZXNwb25zZShyZWRpcmVjdFJlc3BvbnNl
KTsKICAgICB9CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxs
b3dlZEJ5Q1NQKG5ld1JlcXVlc3QudXJsKCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkg
ewpAQCAtNzAyLDkgKzcwMyw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgIWRvQ3Jvc3NP
cmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghbmV3UmVxdWVzdC51cmwoKS5ob3N0KCkuaXNFbXB0eSgpICYm
IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRJZ25vcmVIb3N0KG5ld1JlcXVlc3QudXJsKCkpKSB7CiAg
ICAgICAgIGF1dG8gdXJsID0gbmV3UmVxdWVzdC51cmwoKTsKICAgICAgICAgdXJsLnNldEhvc3RB
bmRQb3J0KHsgfSk7CkBAIC03NDQsMTM0ICs3NDIsMzUgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmMKICAgICBwb2xpY3lDaGVja2VyLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1Jl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9vcmlnaW4uaHRtbCNjaGVjay1icm93c2luZy1jb250ZXh0LWdyb3VwLXN3aXRjaC1jb29w
LXZhbHVlCi1zdGF0aWMgYm9vbCBjaGVja0lmQ09PUFZhbHVlc1JlcXVpcmVCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5VmFsdWUgYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
VmFsdWUgcmVzcG9uc2VDT09QVmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9y
aWdpbikKLXsKLSAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIGFjdGl2ZURvY3VtZW50
Q09PUFZhbHVlLCBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUFZh
bHVlLCBhbmQgcmVzcG9uc2VPcmlnaW4gaXMgdHJ1ZSwgcmV0dXJuIGZhbHNlLgotICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI21hdGNoaW5n
LWNvb3AKLSAgICBpZiAoYWN0aXZlRG9jdW1lbnRDT09QVmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09y
aWdpbk9wZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGFjdGl2ZURvY3VtZW50Q09PUFZhbHVlID09IHJlc3BvbnNlQ09PUFZhbHVlICYm
IGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbi5pc1NhbWVPcmlnaW5BcyhyZXNwb25zZU9y
aWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIElmIGFsbCBvZiB0aGUgZm9s
bG93aW5nIGFyZSB0cnVlOgotICAgIC8vIC0gaXNJbml0aWFsQWJvdXRCbGFuaywKLSAgICAvLyAt
IGFjdGl2ZURvY3VtZW50Q09PUFZhbHVlJ3MgdmFsdWUgaXMgInNhbWUtb3JpZ2luLWFsbG93LXBv
cHVwcyIuCi0gICAgLy8gLSByZXNwb25zZUNPT1BWYWx1ZSBpcyAidW5zYWZlLW5vbmUiLAotICAg
IC8vIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIGlmIChpc0luaXRpYWxBYm91dEJsYW5rICYmIGFj
dGl2ZURvY3VtZW50Q09PUFZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNh
bWVPcmlnaW5BbGxvd1BvcHVwcyAmJiByZXNwb25zZUNPT1BWYWx1ZSA9PSBDcm9zc09yaWdpbk9w
ZW5lclBvbGljeVZhbHVlOjpVbnNhZmVOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvb3JpZ2luLmh0bWwjY2hlY2stYmNnLXN3aXRjaC1uYXZpZ2F0aW9uLXJlcG9ydC1vbmx5
Ci1zdGF0aWMgYm9vbCBjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3VsZFJlcXVpcmVC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChib29sIGlzSW5pdGlhbEFib3V0QmxhbmssIGNvbnN0
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiBhY3RpdmVEb2N1bWVudENPT1AsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBhY3RpdmVEb2N1bWVudE5hdmlnYXRpb25PcmlnaW4sIGNvbnN0IENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5JiByZXNwb25zZUNPT1AsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiByZXNw
b25zZU9yaWdpbikKLXsKLSAgICBpZiAoIWNoZWNrSWZDT09QVmFsdWVzUmVxdWlyZUJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKGlzSW5pdGlhbEFib3V0QmxhbmssIGFjdGl2ZURvY3VtZW50Q09P
UC5yZXBvcnRPbmx5VmFsdWUsIGFjdGl2ZURvY3VtZW50TmF2aWdhdGlvbk9yaWdpbiwgcmVzcG9u
c2VDT09QLnJlcG9ydE9ubHlWYWx1ZSwgcmVzcG9uc2VPcmlnaW4pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoY2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2goaXNJbml0aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnJlcG9y
dE9ubHlWYWx1ZSwgYWN0aXZlRG9jdW1lbnROYXZpZ2F0aW9uT3JpZ2luLCByZXNwb25zZUNPT1Au
dmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
Y2hlY2tJZkNPT1BWYWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goaXNJbml0
aWFsQWJvdXRCbGFuaywgYWN0aXZlRG9jdW1lbnRDT09QLnZhbHVlLCBhY3RpdmVEb2N1bWVudE5h
dmlnYXRpb25PcmlnaW4sIHJlc3BvbnNlQ09PUC5yZXBvcnRPbmx5VmFsdWUsIHJlc3BvbnNlT3Jp
Z2luKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0
YXRpYyBzdGQ6OnR1cGxlPFJlZjxTZWN1cml0eU9yaWdpbj4sIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5PiBjb21wdXRlUmVzcG9uc2VPcmlnaW5BbmRDT09QKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGlvbkFjdGlvbjo6UmVxdWVzdGVyPiYgcmVxdWVzdGVyLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kqIHJlc3BvbnNlQ1NQKQotewotICAgIC8vIE5vbi1pbml0aWFsIGVtcHR5IGRvY3VtZW50
cyAoYWJvdXQ6YmxhbmspIHNob3VsZCBpbmhlcml0IHRoZWlyIGNyb3NzLW9yaWdpbi1vcGVuZXIt
cG9saWN5IGZyb20gdGhlIG5hdmlnYXRpb24ncyBpbml0aWF0b3IgdG9wIGxldmVsIGRvY3VtZW50
LAotICAgIC8vIGlmIHRoZSBpbml0aWF0b3IgYW5kIGl0cyB0b3AgbGV2ZWwgZG9jdW1lbnQgYXJl
IHNhbWUtb3JpZ2luLCBvciBkZWZhdWx0ICh1bnNhZmUtbm9uZSkgb3RoZXJ3aXNlLgotICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNjkxMwotICAgIGlmIChTZWN1
cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKHJlc3BvbnNl
LnVybCgpKSAmJiByZXF1ZXN0ZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoUmVm
IHsgcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpIH0sIHJlcXVlc3Rlci0+c2VjdXJpdHlPcmln
aW4oKS5pc1NhbWVPcmlnaW5BcyhyZXF1ZXN0ZXItPnRvcE9yaWdpbigpKSA/IHJlcXVlc3Rlci0+
Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSA6IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgfSk7
Ci0KLSAgICAvLyBJZiB0aGUgSFRUUCByZXNwb25zZSBjb250YWlucyBhIENTUCBoZWFkZXIsIGl0
IG1heSBzZXQgc2FuZGJveCBmbGFncywgd2hpY2ggd291bGQgY2F1c2UgdGhlIG9yaWdpbiB0byBi
ZWNvbWUgdW5pcXVlLgotICAgIGF1dG8gcmVzcG9uc2VPcmlnaW4gPSByZXNwb25zZUNTUCAmJiBy
ZXNwb25zZUNTUC0+c2FuZGJveEZsYWdzKCkgIT0gU2FuZGJveE5vbmUgPyBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgp
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUocmVzcG9uc2VPcmlnaW4pLCBv
YnRhaW5Dcm9zc09yaWdpbk9wZW5lclBvbGljeShyZXNwb25zZSwgZG9jdW1lbnQpKTsKLX0KLQog
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NpbmctdGhlLXdl
Yi5odG1sI3Byb2Nlc3MtYS1uYXZpZ2F0ZS1mZXRjaCAoU3RlcCAxMi41LjYpCi1ib29sIERvY3Vt
ZW50TG9hZGVyOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5l
clBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiBEb2N1bWVudExvYWRlcjo6ZG9Dcm9zc09yaWdpbk9w
ZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICAvLyBDT09QIG9ubHkgYXBwbGllcyB0byB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4
dHMuCiAgICAgaWYgKCFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghbV9mcmFtZS0+ZG9j
dW1lbnQoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIFty
ZXNwb25zZU9yaWdpbiwgcmVzcG9uc2VDT09QXSA9IGNvbXB1dGVSZXNwb25zZU9yaWdpbkFuZENP
T1AocmVzcG9uc2UsICptX2ZyYW1lLT5kb2N1bWVudCgpLCBtX3RyaWdnZXJpbmdBY3Rpb24ucmVx
dWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpKTsKLQotICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNw
cm9jZXNzLWEtbmF2aWdhdGUtZmV0Y2ggKFN0ZXAgMTIuNS42LjIpCi0gICAgLy8gSWYgc2FuZGJv
eEZsYWdzIGlzIG5vdCBlbXB0eSBhbmQgcmVzcG9uc2VDT09QJ3MgdmFsdWUgaXMgbm90ICJ1bnNh
ZmUtbm9uZSIsIHRoZW4gc2V0IHJlc3BvbnNlIHRvIGFuIGFwcHJvcHJpYXRlIG5ldHdvcmsgZXJy
b3IgYW5kIGJyZWFrLgotICAgIGlmIChyZXNwb25zZUNPT1AudmFsdWUgIT0gQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3lWYWx1ZTo6VW5zYWZlTm9uZSAmJiBmcmFtZUxvYWRlcigpLT5lZmZlY3RpdmVT
YW5kYm94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSkgewotICAgICAgICBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVz
dWx0ID0gZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kocmVzcG9uc2UudXJs
KCksIHJlc3BvbnNlT3JpZ2luLCByZXNwb25zZUNPT1ApOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNj
b29wLWVuZm9yY2UKLUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQgRG9j
dW1lbnRMb2FkZXI6OmVuZm9yY2VSZXNwb25zZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbiwgY29uc3Qg
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCkKLXsKLSAgICBBU1NFUlQobV9m
cmFtZS0+aXNNYWluRnJhbWUoKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwot
ICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5RW5hYmxlZCgpKTsKLQotICAgIGlmICghbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gcmVxdWVzdGVyID0gbV90cmlnZ2VyaW5nQWN0aW9uLnJl
cXVlc3RlcigpOwotICAgICAgICBib29sIGN1cnJlbnRDb250ZXh0SXNTb3VyY2UgPSByZXF1ZXN0
ZXIgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5B
cyhyZXF1ZXN0ZXItPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICBtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQgPSBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0
IHsKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5j
cm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAotICAgICAgICAgICAgY3VycmVudENvbnRleHRJc1Nv
dXJjZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhl
cml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJGcmFtZSA9IG1fZnJhbWUtPmxvYWRlcigpLm9w
ZW5lcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gb3BlbmVyRG9jdW1lbnQgPSBvcGVu
ZXJGcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Q29vcEVu
Zm9yY2VtZW50UmVzdWx0LT51cmwgPSBvcGVuZXJEb2N1bWVudC0+dXJsKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0IG5ld0NPT1BFbmZvcmNl
bWVudFJlc3VsdCA9IHsKLSAgICAgICAgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5u
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLAotICAgICAgICBtX2N1cnJlbnRDb29wRW5m
b3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEdWVUb1JlcG9y
dE9ubHksCi0gICAgICAgIHJlc3BvbnNlVVJMLAotICAgICAgICByZXNwb25zZU9yaWdpbiwKLSAg
ICAgICAgcmVzcG9uc2VDT09QLAotICAgICAgICB0cnVlCi0gICAgfTsKKyAgICBVUkwgb3BlbmVy
VVJMOworICAgIGlmIChhdXRvIG9wZW5lckZyYW1lID0gbV9mcmFtZS0+bG9hZGVyKCkub3BlbmVy
KCkpCisgICAgICAgIG9wZW5lclVSTCA9IG9wZW5lckZyYW1lLT5kb2N1bWVudCgpID8gb3BlbmVy
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogVVJMKCk7CiAKLSAgICBpZiAoY2hlY2tJZkNPT1BW
YWx1ZXNSZXF1aXJlQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2goZnJhbWVMb2FkZXIoKS0+c3Rh
dGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgbV9jdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeS52YWx1ZSwgbV9j
dXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCByZXNwb25zZUNPT1Au
dmFsdWUsIHJlc3BvbnNlT3JpZ2luKSkgewotICAgICAgICBuZXdDT09QRW5mb3JjZW1lbnRSZXN1
bHQubmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCA9IHRydWU7CisgICAgYXV0byBjdXJy
ZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmZvcmNl
bWVudFJlc3VsdDo6ZnJvbShtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3koKSwgbV90cmlnZ2VyaW5nQWN0aW9uLnJlcXVlc3RlcigpLCBvcGVuZXJV
UkwpOwogCisgICAgYXV0byBuZXdDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBXZWJDb3JlOjpkb0Ny
b3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlLCBtX3RyaWdnZXJpbmdB
Y3Rpb24ucmVxdWVzdGVyKCksIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpLCBmcmFtZUxv
YWRlcigpLT5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSwgZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSwgY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdCwgWyZdKENPT1BEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3kmIHJlc3BvbnNlQ09PUCwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHJlc3BvbnNlT3JpZ2luKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgdGhlIGNvbmNlcHQgb2Yg
YnJvd3NpbmcgY29udGV4dCBncm91cCBsaWtlIGluIHRoZSBzcGVjaWZpY2F0aW9uIGluc3RlYWQg
b2YgdHJlYXRpbmcgdGhlIHdob2xlIHByb2Nlc3MgYXMgYSBncm91cC4KICAgICAgICAgaWYgKFBh
Z2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKSA+IDEpIHsKLSAgICAgICAgICAgIHNlbmRWaW9sYXRp
b25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKCptX2ZyYW1lLCByZXNwb25zZUNP
T1AsIENPT1BEaXNwb3NpdGlvbjo6RW5mb3JjZSwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25zZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9y
Y2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBtX3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1f
cmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9y
dFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENv
b3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3Np
dGlvbjo6RW5mb3JjZSwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT51cmwsIHJlc3Bv
bnNlVVJMLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJl
c3BvbnNlT3JpZ2luLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmlzQ3VycmVudENv
bnRleHROYXZpZ2F0aW9uU291cmNlLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChjaGVja0lmRW5mb3JjaW5nUmVwb3J0T25seUNPT1BXb3Vs
ZFJlcXVpcmVCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaChmcmFtZUxvYWRlcigpLT5zdGF0ZU1h
Y2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpLCBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5LCBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQtPmN1cnJlbnRPcmlnaW4sIHJlc3BvbnNlQ09PUCwgcmVzcG9uc2VP
cmlnaW4pKSB7Ci0gICAgICAgIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdC5uZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRHVlVG9SZXBvcnRPbmx5ID0gdHJ1ZTsKLQotICAgICAgICAvLyBG
SVhNRTogQWRkIHRoZSBjb25jZXB0IG9mIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0
aGUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFz
IGEgZ3JvdXAuCi0gICAgICAgIGlmIChQYWdlOjpub25VdGlsaXR5UGFnZUNvdW50KCkgPiAxKSB7
Ci0gICAgICAgICAgICBzZW5kVmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNw
b25zZSgqbV9mcmFtZSwgcmVzcG9uc2VDT09QLCBDT09QRGlzcG9zaXRpb246OlJlcG9ydGluZywg
cmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+dXJsLCByZXNwb25z
ZU9yaWdpbiwgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5jdXJyZW50T3JpZ2luLCBt
X3JlcXVlc3QuaHR0cFJlZmVycmVyKCksIG1fcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAg
ICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVz
cG9uc2UoKm1fZnJhbWUsIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3ksIENPT1BEaXNwb3NpdGlvbjo6UmVwb3J0aW5nLCBtX2N1cnJlbnRDb29w
RW5mb3JjZW1lbnRSZXN1bHQtPnVybCwgcmVzcG9uc2VVUkwsIG1fY3VycmVudENvb3BFbmZvcmNl
bWVudFJlc3VsdC0+Y3VycmVudE9yaWdpbiwgcmVzcG9uc2VPcmlnaW4sIG1fY3VycmVudENvb3BF
bmZvcmNlbWVudFJlc3VsdC0+aXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG1fcmVx
dWVzdC5odHRwVXNlckFnZW50KCkpOworICAgICAgICAgICAgc2VuZFZpb2xhdGlvblJlcG9ydFdo
ZW5OYXZpZ2F0aW5nVG9DT09QUmVzcG9uc2UoKm1fZnJhbWUsIHJlc3BvbnNlQ09PUCwgZGlzcG9z
aXRpb24sIHJlc3BvbnNlLnVybCgpLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LnVybCwg
cmVzcG9uc2VPcmlnaW4sIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQuY3VycmVudE9yaWdp
biwgbV9yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsK
KyAgICAgICAgICAgIHNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09P
UFJlc3BvbnNlKCptX2ZyYW1lLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LCBkaXNwb3NpdGlvbiwgY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC51cmwsIHJlc3BvbnNlLnVybCgpLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LmN1cnJl
bnRPcmlnaW4sIHJlc3BvbnNlT3JpZ2luLCBjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0Lmlz
Q3VycmVudENvbnRleHROYXZpZ2F0aW9uU291cmNlLCBtX3JlcXVlc3QuaHR0cFVzZXJBZ2VudCgp
KTsKICAgICAgICAgfQorICAgIH0pOworICAgIGlmICghbmV3Q29vcEVuZm9yY2VtZW50UmVzdWx0
KSB7CisgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2Vs
bGVkRXJyb3IobV9yZXF1ZXN0KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCi0gICAgcmV0dXJuIG5ld0NPT1BFbmZvcmNlbWVudFJlc3VsdDsKKyAgICByZXR1cm4gbmV3
Q29vcEVuZm9yY2VtZW50UmVzdWx0OwogfQogCiBib29sIERvY3VtZW50TG9hZGVyOjp0cnlMb2Fk
aW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkKQEAgLTk2OCw2ICs4NjcsOCBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlk
UmVjZWl2ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVz
cG9uc2UgfSwgbV9yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBudWxscHRyOworICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRv
Y3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbk9w
ZW5lclBvbGljeUVuYWJsZWQoKSkKKyAgICAgICAgbV9yZXNwb25zZUNPT1AgPSBvYnRhaW5Dcm9z
c09yaWdpbk9wZW5lclBvbGljeShyZXNwb25zZSk7CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTikKICAgICAvLyBGSVhNRSgyMTg3NzkpOiBSZW1vdmUgdGhpcyBx
dWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVzIHRoZWlyIGxvZ2luIGZsb3cgcmVkZXNp
Z24uCkBAIC0xMDAxLDE1ICs5MDIsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgIHJl
c3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotc3RhdGljIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gdG9Ccm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3lFbmZvcmNlbWVudFJlc3VsdD4mIGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQpCi17Ci0gICAgaWYgKCFjdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0IHx8ICFjdXJyZW50
Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoKQot
ICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUlu
R3JvdXA7Ci0gICAgaWYgKGN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5LnZhbHVlID09IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVP
cmlnaW5QbHVzQ09FUCkKLSAgICAgICAgcmV0dXJuIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb246Ok5ld0lzb2xhdGVkR3JvdXA7Ci0gICAgcmV0dXJuIEJyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoRGVjaXNpb246Ok5ld1NoYXJlZEdyb3VwOwotfQotCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsKQEAgLTEwMzMsNyArOTI1LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQ29tcGxldGkKIAogICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIGlmIChhdXRvIHJlcG9ydGluZ0VuZHBvaW50c0NhY2hlID0gbV9mcmFtZS0+cGFn
ZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5yZXBvcnRpbmdFbmRwb2ludHNDYWNoZSgpIDogbnVsbHB0
cikKLSAgICAgICAgICAgIHJlcG9ydGluZ0VuZHBvaW50c0NhY2hlLT5hZGRFbmRQb2ludHNGcm9t
UmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICAgICAgcmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUt
PmFkZEVuZHBvaW50c0Zyb21SZXNwb25zZShyZXNwb25zZSk7CiAgICAgfQogCiAgICAgQVNTRVJU
KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgfHwgbV9tYWluUmVzb3Vy
Y2UpOwpAQCAtMTEwMywyMCArOTk1LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpCiAgICAg
fQogI2VuZGlmCiAKLSAgICBpZiAoIWRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9u
c2UocmVzcG9uc2UpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RkOjpleGNoYW5nZSht
X2lzQ29udGludWluZ0xvYWRBZnRlclJlc3BvbnNlUG9saWN5Q2hlY2ssIGZhbHNlKSkgewotICAg
ICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb246OlVzZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1haW5S
ZXNvdXJjZUxvYWRlciA9IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRlcigpOwogICAgIGlmIChtYWlu
UmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRlci0+bWFya0luQXN5bmNS
ZXNwb25zZVBvbGljeUNoZWNrKCk7CiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IFBvbGlj
eUNoZWNrSWRlbnRpZmllcjo6Y3JlYXRlKCk7Ci0gICAgYXV0byBicm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaERlY2lzaW9uID0gdG9Ccm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uKG1f
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCk7Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tD
b250ZW50UG9saWN5KG1fcmVzcG9uc2UsIHJlcXVlc3RJZGVudGlmaWVyLCBicm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIG1haW5SZXNvdXJjZUxvYWRlciA9IFdURk1vdmUobWFpblJlc291cmNlTG9hZGVyKSwKKyAg
ICBmcmFtZUxvYWRlcigpLT5jaGVja0NvbnRlbnRQb2xpY3kobV9yZXNwb25zZSwgcmVxdWVzdElk
ZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbWFpblJlc291
cmNlTG9hZGVyID0gV1RGTW92ZShtYWluUmVzb3VyY2VMb2FkZXIpLAogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSwgcmVxdWVzdElk
ZW50aWZpZXJdIChQb2xpY3lBY3Rpb24gcG9saWN5LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgcmVz
cG9uc2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzcG9u
c2VJZGVudGlmaWVyLmlzVmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIpKTsKICAgICAgICAgY29u
dGludWVBZnRlckNvbnRlbnRQb2xpY3kocG9saWN5KTsKQEAgLTIxMDQsMTIgKzE5ODcsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKG1fcmVxdWVzdC51cmwoKSwgbWltZVR5cGUsIDAsICJVVEYtOCJfcyk7
CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpIHsKLSAgICAgICAgZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRs
aW5nT2ZSZXNwb25zZShtX3Jlc3BvbnNlKTsKLQotICAgICAgICAvLyBGSVhNRTogTm9uLWluaXRp
YWwgYWJvdXQ6YmxhbmsgbG9hZHMgbWF5IGNhdXNlIGEgYnJvd3NpbmcgY29udGV4dCBncm91cCBz
d2l0Y2guIEhvd2V2ZXIsIHN1Y2ggbG9hZCBpcyBzeW5jaHJvbm91cyBhbmQgZG9lc24ndAotICAg
ICAgICAvLyBpbnZvbHZlIGEgcmVzcG9uc2UgcG9saWN5IGRlY2lzaW9uLiBBcyBhIHJlc3VsdCwg
d2Ugc2ltdWxhdGUgYSBicm93c2luZyBjb250ZXh0IGdyb3VwIHN3aXRjaCB3aXRob3V0IGFjdHVh
bGx5IHN3YXBwaW5nIHByb2Nlc3MuCi0gICAgICAgIGlmIChtX2N1cnJlbnRDb29wRW5mb3JjZW1l
bnRSZXN1bHQgJiYgbV9jdXJyZW50Q29vcEVuZm9yY2VtZW50UmVzdWx0LT5uZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoKQotICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+c3dpdGNoQnJv
d3NpbmdDb250ZXh0c0dyb3VwKCk7CisgICAgICAgIGlmIChhdXRvIGNvb3BFbmZvcmNlbWVudFJl
c3VsdCA9IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UobV9yZXNwb25zZSkp
IHsKKyAgICAgICAgICAgIG1fcmVzcG9uc2VDT09QID0gY29vcEVuZm9yY2VtZW50UmVzdWx0LT5j
cm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICAgICAgICAgIGlmIChjb29wRW5mb3JjZW1lbnRS
ZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gpCisgICAgICAgICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+c3dpdGNoQnJvd3NpbmdDb250ZXh0c0dyb3VwKCk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBmaW5pc2hlZExvYWRpbmcoKTsKQEAgLTIzMzksNyArMjIyMSw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICNlbmRpZgogCiAgICAgbV9t
YWluUmVzb3VyY2UgPSBudWxscHRyOwotICAgIG1faXNDb250aW51aW5nTG9hZEFmdGVyUmVzcG9u
c2VQb2xpY3lDaGVjayA9IGZhbHNlOworICAgIG1faXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCA9IGZhbHNlOwogCiAgICAgdW5yZWdpc3RlclRlbXBvcmFyeVNlcnZp
Y2VXb3JrZXJDbGllbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
aW5kZXggOGVlMTRhMjRkNTdiMzRjYzdjYmVhNGNkYzc3MzEwMjcyNmQyZTVkNi4uOWZjNDEzN2E2
OTAwZTI0YTFhODJjZWM3Y2M3NTc5M2QzNDdlOTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKQEAgLTQyNSwxMCArNDI1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkOyB9CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRl
bnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5
LmdldCgpOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxDcm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDb29wRW5mb3Jj
ZW1lbnRSZXN1bHQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV9jdXJyZW50Q29vcEVuZm9yY2VtZW50
UmVzdWx0LT5jcm9zc09yaWdpbk9wZW5lclBvbGljeSkgOiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiYgY3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQ09PUDsgfQogCi0gICAgYm9v
bCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrOyB9Ci0gICAgdm9p
ZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBvbGljeUNoZWNrKGJvb2wgaXNDb250
aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjaykgeyBtX2lzQ29udGludWluZ0xvYWRB
ZnRlclJlc3BvbnNlUG9saWN5Q2hlY2sgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJSZXNwb25zZVBv
bGljeUNoZWNrOyB9CisgICAgYm9vbCBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExv
YWRTdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNp
b25hbExvYWRTdGFydGVkOyB9CisgICAgdm9pZCBzZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92
aXNpb25hbExvYWRTdGFydGVkKGJvb2wgaXNDb250aW51aW5nTG9hZEFmdGVyUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCkgeyBtX2lzQ29udGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQgPSBpc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAtNDUwLDggKzQ1MCw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHVucmVnaXN0ZXJUZW1wb3JhcnlTZXJ2aWNlV29ya2Vy
Q2xpZW50KCk7CiAKLSAgICBib29sIGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
RW5mb3JjZW1lbnRSZXN1bHQgZW5mb3JjZVJlc3BvbnNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgU2VjdXJpdHlPcmlnaW4mIHJlc3BvbnNlT3JpZ2luLCBj
b25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgcmVzcG9uc2VDT09QKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IGRvQ3Jvc3NP
cmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgdm9pZCBsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmKTsKIApAQCAtNTY2
LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dvdEZpcnN0Qnl0ZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xv
YWRpbmdNdWx0aXBhcnRDb250ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNDb250aW51aW5n
TG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQ29u
dGludWluZ0xvYWRBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQgeyBmYWxzZSB9OwogCiAgICAg
Ly8gRklYTUU6IERvY3VtZW50OjptX3Byb2Nlc3NpbmdMb2FkRXZlbnQgYW5kIERvY3VtZW50TG9h
ZGVyOjptX3dhc09ubG9hZERpc3BhdGNoZWQgYXJlIHJvdWdobHkgdGhlIHNhbWUKICAgICAvLyBh
bmQgc2hvdWxkIGJlIG1lcmdlZC4KQEAgLTU5MCw3ICs1ODksNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZXNvdXJjZVJlc3BvbnNlPiBtX3Jlc3BvbnNlczsKICAgICBib29sIG1fc3RvcFJlY29y
ZGluZ1Jlc3BvbnNlcyB7IGZhbHNlIH07CiAKLSAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2lu
T3BlbmVyUG9saWN5RW5mb3JjZW1lbnRSZXN1bHQ+IG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJl
c3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBtX3Jlc3Bv
bnNlQ09PUDsKICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFJlc291cmNlTG9hZGVy
PiwgUmVmUHRyPFN1YnN0aXR1dGVSZXNvdXJjZT4+IFN1YnN0aXR1dGVSZXNvdXJjZU1hcDsKICAg
ICBTdWJzdGl0dXRlUmVzb3VyY2VNYXAgbV9wZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggOWJlZGVjNjM2YjJiNGZlNjE4
NGE0MTlhOWFiNjUzMzQ1YzE1YmQ3My4uZjdkNGU3YWZiODc2NDZhZWU2NjJkNTdlZmY4MjgzY2Q3
YjdjNzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTgxOCw3
ICs4MTgsNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7
CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwMjk0
ZGM0MzQyMDRiNmY5YmZmMjkyNjFhMDc3OWI2OGEwNGZlYmQ1Li4yMjY5OWM5YzUxODMyYTVhYThj
ODlhYmFiMmZmYzdlMDk4NWJmYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9w
ZW5lclBvbGljeSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKIAotICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0
ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5j
dGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzdlNTExMzc5MjQ1ZjlmNThkNDE4MDk0
ODMxNDY3MTViNGY2MGJkOC4uNGI5NTE1ZjM3MGZiMjJjMjU5ZTI5NzY3ZDk2OGM0OTIzNmU5NzQy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MTMsNyArNDEzLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICB9
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIEJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2hEZWNpc2lvbiwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKK3Zv
aWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbnRlbnRQb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFhY3RpdmVEb2N1bWVu
dExvYWRlcigpKSB7CiAgICAgICAgIC8vIExvYWQgd2FzIGNhbmNlbGxlZApAQCAtNDIyLDcgKzQy
Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUG9saWN5Q2hlCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFZh
bGlkYXRlIHRoZSBwb2xpY3kgY2hlY2sgaWRlbnRpZmllci4KLSAgICBjbGllbnQoKS5kaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigp
LT5yZXF1ZXN0KCksIGlkZW50aWZpZXIsIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2Fk
QXR0cmlidXRlKCksIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdURk1vdmUo
ZnVuY3Rpb24pKTsKKyAgICBjbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHJlc3BvbnNlLCBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCksIGlkZW50aWZpZXIs
IGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmRvd25sb2FkQXR0cmlidXRlKCksIFdURk1vdmUoZnVu
Y3Rpb24pKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50
LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxO
ZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZv
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50KQpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRl
ciA9IG1fY2xpZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LnN1YnN0aXR1dGVEYXRhKCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzV2Vi
QXJjaGl2ZUZvck1haW5GcmFtZShyZXF1ZXN0LmlzUmVxdWVzdEZyb21DbGllbnRPclVzZXJJbnB1
dCgpKTsKICAgICBsb2FkZXItPnNldEFsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lKHJlcXVlc3Qu
aXNSZXF1ZXN0RnJvbUNsaWVudE9yVXNlcklucHV0KCkpOwotICAgIGxvYWRlci0+c2V0SXNDb250
aW51aW5nTG9hZEFmdGVyUmVzcG9uc2VQb2xpY3lDaGVjayhyZXF1ZXN0LnNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCgpID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJS
ZXNwb25zZVBvbGljeURlY2lzaW9uKTsKKyAgICBsb2FkZXItPnNldElzQ29udGludWluZ0xvYWRB
ZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQocmVxdWVzdC5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQoKSA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCk7CiAgICAgYWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVkZWQobG9h
ZGVyLT5yZXF1ZXN0KCkpOwogICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
TmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlNzQ3NWE0MjQ3ZTk5ZTZjNGI4NzgxYTk0MzIxNzVi
ZWZiMmY0YjQ1Li5hZTNmNmQ2MDZhOTFiOTA5OWRjOTA0YjlkNWM2ODIzMjg2MjE0YjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMjIwLDcgKzIyMCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgIHZvaWQgY2hlY2tDb250
ZW50UG9saWN5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIs
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIENvbnRlbnRQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uJiYpOworICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uJiYpOwogCiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW4oKTsKIApAQCAtMjM5LDcgKzIz
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIHNhbmRib3ggZmxhZ3Mgd2lsbCBi
ZSBmb3JjZWQsIHJlZ2FyZGxlc3Mgb2YgY2hhbmdlcyB0bwogICAgIC8vIHRoZSBzYW5kYm94IGF0
dHJpYnV0ZSBvZiBhbnkgcGFyZW50IGZyYW1lcy4KICAgICB2b2lkIGZvcmNlU2FuZGJveEZsYWdz
KFNhbmRib3hGbGFncyBmbGFncykgeyBtX2ZvcmNlZFNhbmRib3hGbGFncyB8PSBmbGFnczsgfQot
ICAgIFNhbmRib3hGbGFncyBlZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAK
ICAgICBib29sIGNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IFVSTCYsIGJvb2wg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0OwogCkBAIC0yNjksNiArMjY5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgbG9hZHNTeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gbV9s
b2Fkc1N5bmNocm9ub3VzbHk7IH0KIAogICAgIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lJiBzdGF0
ZU1hY2hpbmUoKSB7IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQorICAgIGNvbnN0IEZyYW1lTG9h
ZGVyU3RhdGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFj
aGluZTsgfQogCiAgICAgLy8gRklYTUU6IHNob3VsZCByZXR1cm4gUmVmUHRyLgogICAgIFdFQkNP
UkVfRVhQT1JUIEZyYW1lKiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0YTcwNmM4N2Y1OGM4YjA4MjRlOGNl
YjM2M2M2MTQ3YzI3Y2RjMzUyLi4wZjY0ZDEzODAyOTllNDc5ZGQwNDFkMWEzYTc3YWE0NjI1Nzk5
ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTkx
LDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBh
Z2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24s
IEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9s
aWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA1YTBmYzQxZTlj
MzI5YTFiMzAzNDNmNDc4ZjI5NWYyNmM2ZTZiNDExLi5mYzhjNWM5NzEyYTgwNTk5N2Y2ZjNiOTJl
NjY2YjhjYmFkZTlmM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rp
b24uY3BwCkBAIC0zNywyMiArMzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBHbG9iYWxGcmFtZUlkZW50aWZpZXIgY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAg
ICAgcmV0dXJuIHsgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3Io
UGFnZUlkZW50aWZpZXIgeyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgp
LnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pIH07Ci0gICAgcmV0dXJuIEdsb2JhbEZyYW1l
SWRlbnRpZmllcigpOwotfQotCi1OYXZpZ2F0aW9uQWN0aW9uOjpSZXF1ZXN0ZXI6OlJlcXVlc3Rl
cihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBtX3VybCB7IFVSTCB7IGRvY3VtZW50
LnVybCgpIH0gfQotICAgICwgbV9vcmlnaW4geyAmZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9
Ci0gICAgLCBtX3RvcE9yaWdpbiB7ICZkb2N1bWVudC50b3BPcmlnaW4oKSB9Ci0gICAgLCBtX2Ny
b3NzT3JpZ2luT3BlbmVyUG9saWN5IHsgZG9jdW1lbnQuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ko
KSB9Ci0gICAgLCBtX2dsb2JhbEZyYW1lSWRlbnRpZmllcihjcmVhdGVHbG9iYWxGcmFtZUlkZW50
aWZpZXIoZG9jdW1lbnQpKQotewotfQotCiBOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtl
eVN0YXRlRGF0YTo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlT
dGF0ZSYgdWlFdmVudCkKICAgICA6IGlzVHJ1c3RlZCB7IHVpRXZlbnQuaXNUcnVzdGVkKCkgfQog
ICAgICwgc2hpZnRLZXkgeyB1aUV2ZW50LnNoaWZ0S2V5KCkgfQpAQCAtMTAzLDcgKzg3LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+IG1v
dXNlRXZlbnREYXRhRm9yRmlyc3RNb3UKIH0KIAogTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbihEb2N1bWVudCYgcmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIE5h
dmlnYXRpb25UeXBlIHR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgRXZlbnQqIGV2ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSkKLSAgICA6IG1fcmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KKyAgICA6IG1f
cmVxdWVzdGVyIHsgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIpIH0KICAgICAs
IG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IHR5
cGUgfQogICAgICwgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSB9CkBAIC0xMjksNyArMTEzLDcgQEAgc3RhdGljIE5hdmlnYXRpb25U
eXBlIG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zv
cm1TdWIKIH0KIAogTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYg
cmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5pdGlh
dGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIEZyYW1lTG9hZFR5cGUgZnJhbWVM
b2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCi0gICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3Rl
ciB9CisgICAgOiBtX3JlcXVlc3RlciB7IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmZyb20ocmVxdWVz
dGVyKSB9CiAgICAgLCBtX3Jlc291cmNlUmVxdWVzdCB7IHJlc291cmNlUmVxdWVzdCB9CiAgICAg
LCBtX3R5cGUgeyBuYXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9u
LCAhIWV2ZW50KSB9CiAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5oCmluZGV4IDFlOGZkZmEwMzM2YzdlM2ZjZGI4ZTIzZWZmY2NhODk0MGEzNDNiZDku
LjE2M2NjN2U4M2NiZDU1OTlmZWE3NTM3MGQ3OTM0Y2MwOWFkZjEzZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJHbG9iYWxGcmFtZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIk5hdmlnYXRpb25SZXF1ZXN0ZXIu
aCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC02NCwyMyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwog
ICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0g
ICAgY2xhc3MgUmVxdWVzdGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlcXVlc3Rlcihjb25z
dCBEb2N1bWVudCYpOwotCi0gICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KLSAgICAgICAgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4o
KSBjb25zdCB7IHJldHVybiAqbV90b3BPcmlnaW47IH0KLSAgICAgICAgQ3Jvc3NPcmlnaW5PcGVu
ZXJQb2xpY3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2Nyb3Nz
T3JpZ2luT3BlbmVyUG9saWN5OyB9Ci0gICAgICAgIGNvbnN0IEdsb2JhbEZyYW1lSWRlbnRpZmll
ciYgZ2xvYmFsRnJhbWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGcmFtZUlk
ZW50aWZpZXI7IH0KLSAgICBwcml2YXRlOgotICAgICAgICBVUkwgbV91cmw7Ci0gICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gbV90b3BPcmlnaW47Ci0gICAgICAgIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5IG1fY3Jv
c3NPcmlnaW5PcGVuZXJQb2xpY3k7Ci0gICAgICAgIEdsb2JhbEZyYW1lSWRlbnRpZmllciBtX2ds
b2JhbEZyYW1lSWRlbnRpZmllcjsKLSAgICB9OwotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVx
dWVzdGVyPiYgcmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+JiByZXF1ZXN0ZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQogCiAgICAgc3RydWN0IFVJRXZlbnRXaXRoS2V5U3Rh
dGVEYXRhIHsKICAgICAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZURhdGEoY29uc3QgVUlFdmVudFdp
dGhLZXlTdGF0ZSYpOwpAQCAtMTA1LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgTmF2aWdhdGlv
bkFjdGlvbiBjb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkgY29uc3Q7CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0ZXItPnVybCgpLmlzRW1wdHkoKSB8fCBtX3Jl
c291cmNlUmVxdWVzdC51cmwoKS5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhbV9yZXF1ZXN0ZXIgfHwgbV9yZXF1ZXN0ZXItPnVybC5pc0VtcHR5KCkgfHwg
bV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuaXNFbXB0eSgpOyB9CiAKICAgICBVUkwgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCk7IH0KICAgICBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1
ZXN0OyB9CkBAIC0xNDcsNyArMTMyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBEbyBu
b3QgYWRkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYXRpbmcgZG9jdW1lbnQgb3Ig
YSBzdWJvYmplY3QgdGhhdCBob2xkcyB0aGUKICAgICAvLyBvcmlnaW5hdGluZyBkb2N1bWVudC4g
U2VlIGNvbW1lbnQgYWJvdmUgdGhlIGNsYXNzIGZvciBtb3JlIGRldGFpbHMuCi0gICAgc3RkOjpv
cHRpb25hbDxSZXF1ZXN0ZXI+IG1fcmVxdWVzdGVyOworICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdh
dGlvblJlcXVlc3Rlcj4gbV9yZXF1ZXN0ZXI7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3Vy
Y2VSZXF1ZXN0OwogICAgIE5hdmlnYXRpb25UeXBlIG1fdHlwZTsKICAgICBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVxdWVzdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzZl
NmUzOWE3OWY3MTVmZTVlZDAyODcxZGRmZWI1N2ExY2EzMzk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25SZXF1ZXN0ZXIuY3BwCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF2aWdh
dGlvblJlcXVlc3Rlci5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBjcmVhdGVHbG9iYWxG
cmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmICghZG9j
dW1lbnQuZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8g
cGFnZUlEID0gZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCk7CisgICAgYXV0byBm
cmFtZUlEID0gZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpOworICAgIGlmICgh
cGFnZUlEIHx8ICFmcmFtZUlEKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7ICpwYWdlSUQsICpmcmFtZUlEIH07Cit9CisK
K05hdmlnYXRpb25SZXF1ZXN0ZXIgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShEb2N1bWVudCYg
ZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgZG9jdW1lbnQudXJsKCksCisgICAg
ICAgIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksCisgICAgICAgIGRvY3VtZW50LnRvcE9yaWdp
bigpLAorICAgICAgICBkb2N1bWVudC5jcm9zc09yaWdpbk9wZW5lclBvbGljeSgpLAorICAgICAg
ICBjcmVhdGVHbG9iYWxGcmFtZUlkZW50aWZpZXIoZG9jdW1lbnQpCisgICAgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25SZXF1ZXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uUmVx
dWVzdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y5NjkxMjZjNjJmMmNlOTdkMjgyMTI4MTg0NTM5ZjYzNGZk
MDMwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
UmVxdWVzdGVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCIKKyNpbmNsdWRlICJHbG9iYWxG
cmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCitzdHJ1Y3QgTmF2aWdhdGlvblJlcXVl
c3RlciB7CisgICAgc3RhdGljIE5hdmlnYXRpb25SZXF1ZXN0ZXIgZnJvbShEb2N1bWVudCYpOwor
CisgICAgVVJMIHVybDsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwor
ICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luOworICAgIENyb3NzT3JpZ2luT3BlbmVy
UG9saWN5IGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OworICAgIHN0ZDo6b3B0aW9uYWw8R2xvYmFs
RnJhbWVJZGVudGlmaWVyPiBnbG9iYWxGcmFtZUlkZW50aWZpZXI7CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvblJlcXVlc3Rlcj4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE5h
dmlnYXRpb25SZXF1ZXN0ZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgdXJsIDw8IHNlY3VyaXR5T3JpZ2luLmdldCgpIDw8IHRvcE9yaWdpbi5nZXQo
KSA8PCBjcm9zc09yaWdpbk9wZW5lclBvbGljeSA8PCBnbG9iYWxGcmFtZUlkZW50aWZpZXI7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1
ZXN0ZXI+IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiB1cmw7CisgICAgZGVjb2RlciA+PiB1cmw7CisgICAgaWYg
KCF1cmwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXNlY3Vy
aXR5T3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB0b3BP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghdG9wT3Jp
Z2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxD
cm9zc09yaWdpbk9wZW5lclBvbGljeT4gY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CisgICAgZGVj
b2RlciA+PiBjcm9zc09yaWdpbk9wZW5lclBvbGljeTsKKyAgICBpZiAoIWNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4+IGdsb2JhbEZyYW1lSWRl
bnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGdsb2JhbEZyYW1lSWRlbnRpZmllcjsKKyAgICBpZiAo
IWdsb2JhbEZyYW1lSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBOYXZpZ2F0aW9uUmVxdWVzdGVyIHsgV1RGTW92ZSgqdXJsKSwgc2VjdXJpdHlP
cmlnaW4ucmVsZWFzZU5vbk51bGwoKSwgdG9wT3JpZ2luLnJlbGVhc2VOb25OdWxsKCksIFdURk1v
dmUoKmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5KSwgKmdsb2JhbEZyYW1lSWRlbnRpZmllciB9Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmNwcAppbmRleCBmMTFjNjU2NjVmNjNjNDBiZjdkMDQ0
OGU3ZDQ5ZGU0NGI0NzVjNmJkLi40YjkzNzE3NGQ5MmI1MGYyY2NjZTc4NjY3MjM2OWM4NzIwNTVk
OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRz
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXBvcnRpbmdFbmRwb2ludHND
YWNoZS5jcHAKQEAgLTY1LDEzICs2NSwxNyBAQCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6UmVw
b3J0aW5nRW5kcG9pbnRzQ2FjaGUoKSA9IGRlZmF1bHQ7CiBSZXBvcnRpbmdFbmRwb2ludHNDYWNo
ZTo6flJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKCkgPSBkZWZhdWx0OwogCiAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvcmVwb3J0aW5nLyNwcm9jZXNzLWhlYWRlcgotdm9pZCBSZXBvcnRpbmdFbmRw
b2ludHNDYWNoZTo6YWRkRW5kUG9pbnRzRnJvbVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQordm9pZCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6YWRkRW5kcG9pbnRz
RnJvbVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIHJl
dHVybiBhZGRFbmRwb2ludHNGcm9tUmVwb3J0VG9IZWFkZXIocmVzcG9uc2UudXJsKCksIHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVwb3J0VG8pKTsKK30KKwordm9p
ZCBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTo6YWRkRW5kcG9pbnRzRnJvbVJlcG9ydFRvSGVhZGVy
KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGNvbnN0IFN0cmluZyYgcmVwb3J0VG9IZWFkZXJWYWx1
ZSkKIHsKLSAgICBhdXRvIHJlcG9ydFRvSGVhZGVyVmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OlJlcG9ydFRvKTsKICAgICBpZiAocmVwb3J0VG9IZWFkZXJW
YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2VjdXJpdHlPcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc3BvbnNlLnVybCgpKTsKKyAgICBhdXRvIHNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNwb25zZVVSTCk7CiAgICAg
aWYgKHNlY3VyaXR5T3JpZ2luLT5pc1VuaXF1ZSgpIHx8ICFzZWN1cml0eU9yaWdpbi0+aXNQb3Rl
bnRpYWxseVRydXN0d29ydGh5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTQsMTAgKzk4LDEw
IEBAIHZvaWQgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU6OmFkZEVuZFBvaW50c0Zyb21SZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgd2hpbGUgKGRpY3Rpb25hcnlTdGFydCA8
IHJlcG9ydFRvSGVhZGVyVmFsdWUubGVuZ3RoKCkpIHsKICAgICAgICAgYXV0byBpbmRleE9mTmV4
dFRvcExldmVsQ29tbWEgPSBmaW5kTmV4dFRvcExldmVsQ29tbWEoZGljdGlvbmFyeVN0YXJ0KTsK
ICAgICAgICAgaWYgKGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSA9PSBub3RGb3VuZCkgewotICAg
ICAgICAgICAgYWRkRW5kcG9pbnRGcm9tRGljdGlvbmFyeShzZWN1cml0eU9yaWdpbi0+ZGF0YSgp
LCByZXNwb25zZS51cmwoKSwgcmVwb3J0VG9IZWFkZXJWYWx1ZS5zdWJzdHJpbmcoZGljdGlvbmFy
eVN0YXJ0KSk7CisgICAgICAgICAgICBhZGRFbmRwb2ludEZyb21EaWN0aW9uYXJ5KHNlY3VyaXR5
T3JpZ2luLT5kYXRhKCksIHJlc3BvbnNlVVJMLCByZXBvcnRUb0hlYWRlclZhbHVlLnN1YnN0cmlu
ZyhkaWN0aW9uYXJ5U3RhcnQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcmVz
cG9uc2UudXJsKCksIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5nKGRpY3Rpb25hcnlTdGFy
dCwgaW5kZXhPZk5leHRUb3BMZXZlbENvbW1hIC0gZGljdGlvbmFyeVN0YXJ0KSk7CisgICAgICAg
IGFkZEVuZHBvaW50RnJvbURpY3Rpb25hcnkoc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcmVzcG9u
c2VVUkwsIHJlcG9ydFRvSGVhZGVyVmFsdWUuc3Vic3RyaW5nKGRpY3Rpb25hcnlTdGFydCwgaW5k
ZXhPZk5leHRUb3BMZXZlbENvbW1hIC0gZGljdGlvbmFyeVN0YXJ0KSk7CiAgICAgICAgIGRpY3Rp
b25hcnlTdGFydCA9IGluZGV4T2ZOZXh0VG9wTGV2ZWxDb21tYSArIDE7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1JlcG9ydGluZ0VuZHBvaW50c0NhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaAppbmRleCA2
MzAwZjJlMWNmMzY1NTk4ZGU3YjIyMjU5MzhhZmU2OWU1M2JhNGYyLi45ZWExNjRkYTA5NTk1N2E4
NzYyZmZhNzU2ZDVjNWFhM2MwMDYwZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUuaApAQCAtNDIsNyArNDIsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSZXBvcnRpbmdFbmRwb2ludHNDYWNoZT4gY3JlYXRl
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKCk7CiAKLSAg
ICB2b2lkIGFkZEVuZFBvaW50c0Zyb21SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRFbmRwb2ludHNGcm9tUmVwb3J0VG9IZWFkZXIo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhZGRFbmRwb2ludHNGcm9tUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFVSTCBlbmRwb2ludFVSTChjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIGdyb3VwKSBjb25zdDsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQuaAppbmRleCBhYjEzNTNiY2MwODJlNDFiYTU4OWM5YzI5YzIxMDg1M2EzOTk1Mjg1
Li41ZGU3OTJjNGFiM2FkYTU0OTJhNGJiZmFiZWUyYzZiZjQwYzNiZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgOiB1aW50OF90IHsgTm8sIFllc0FmdGVyTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uLCBZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24gfTsKK2VudW0gY2xh
c3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogdWludDhfdCB7IE5vLCBZZXNBZnRlck5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwgWWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZD4g
ewogICAgICAgICBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsCiAgICAgICAg
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sCiAgICAgICAgIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24sCi0gICAgICAgIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uCisgICAgICAgIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFydGVkCiAgICAg
PjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYTMwMWI3ODQ0Y2M4NTVmZTdkOTlmNGQ3MzZmY2Q4
NWY5NjY5MDAwNi4uZGY1OWRkMTJlMGY3YTQ5YWI3NWFkNzI4MzZkODA3NDFlMDhmYWI0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKQEAgLTI4NSw3ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoUmVmPEJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeT4mJik7IC8vIE9ubHkgdXNlZCBieSBXZWJLaXRMZWdhY3kuCiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UGFnZSYpPiYpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBub25VdGlsaXR5UGFnZUNvdW50KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIG5vblV0aWxpdHlQYWdlQ291bnQoKTsK
IAogICAgIHVuc2lnbmVkIHN1YmZyYW1lQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkZWI4MDlmN2M4Njlk
YzVhMjExOTg3ODc1MWYwYTYyZDgxYmIxOTNiLi5kYzMxMzUxOWExYzM3NDgzMWMzN2FkODlkN2Ey
YWMxYTdlMmYxNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtMjg0NCwyOSArMjg0NCw2IEBAIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiB9CiAj
ZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJh
bnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiByZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoIXJlc291cmNlTG9hZElkZW50aWZpZXIpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwot
ICAgIH0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oc291cmNl
UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRvIHNlc3Npb24gPSBj
b25uZWN0aW9uLT5uZXR3b3JrU2Vzc2lvbigpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBhdXRvIGxvYWRl
ciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoKnJlc291cmNlTG9hZElk
ZW50aWZpZXIpOwotICAgIGlmICghbG9hZGVyKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRl
bnRpZmllcigpOwotICAgIHNlc3Npb24tPmFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5z
ZmVyKGxvYWRlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihpZGVu
dGlmaWVyKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2ViUGFnZU5ldHdvcmtQYXJh
bWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0
byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlNzU4NWI4NmU2MGE3YTA0NWQ4
NTQ4NTExODY1YTk5MjNmYmEyZDIzLi4zZTRiYWUzMDA4YmIwZjcwMWIxYzg3NWE4MzQ4NThjNGY0
MmY5Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC00MjUsNyArNDI1LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5j
TmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6
OkF0dGFjaG1lbnQ+JiYsIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmKTsKLSAg
ICB2b2lkIHByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRp
b24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lk
IGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlhYTllYWE5ZjEzMWIwMWY2NjliNTM4ODUwMDIyNmU0MzUy
YTFkMGEuLmU4OWY4OTdjOTVhZTliYTkzNmM2MTAwNjkzMDQzZmU0ZDA0MzYyMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTk2LDggKzE5Niw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBDbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAotICAgIFByZXBhcmVM
b2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJj
ZVByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gbmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXIpIEFzeW5jCi0KICAgICBBZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIFJlbW92
ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAgICAgQ291bnROb25EZWZhdWx0U2Vz
c2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc2l6ZV90IGNvdW50KSBBc3lu
YwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBmNDFmNTU5MGJkNmZmZjc3NjgzYzBj
ODIxYjA1YzY2Y2FlNTRhMTE0Li5kZGY5NmRlMDMzYzY1ZjU1MjFmM2JiYmU4MWQxOWFjOGU3YTVi
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE0LDcgKzExNCwxNiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkOwogCiAgICAgZW5jb2RlciA8PCBkb2N1bWVudFVSTDsKLSAgICAKKworICAgIGVu
Y29kZXIgPDwgaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQ7CisgICAgZW5jb2RlciA8
PCBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudDsKKyAgICBlbmNvZGVyIDw8IGVmZmVj
dGl2ZVNhbmRib3hGbGFnczsKKyAgICBlbmNvZGVyIDw8IG9wZW5lclVSTDsKKyAgICBlbmNvZGVy
IDw8IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OworCisgICAgZW5jb2RlciA8PCBuYXZp
Z2F0aW9uSUQ7CisgICAgZW5jb2RlciA8PCBuYXZpZ2F0aW9uUmVxdWVzdGVyOworCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlcnNNb2RlOwog
ICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CkBAIC0y
OTIsNiArMzAxLDQ5IEBAIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRvY3VtZW50VVJMOwogCisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZDsK
KyAgICBkZWNvZGVyID4+IGlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkOworICAgIGlm
ICghaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmVzdWx0LmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkID0g
KmlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lFbmFibGVkOworCisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBpc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudDsKKyAgICBkZWNvZGVyID4+IGlz
RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50OworICAgIGlmICghaXNEaXNwbGF5aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVz
dWx0LmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50ID0gKmlzRGlzcGxheWluZ0luaXRp
YWxFbXB0eURvY3VtZW50OworCisgICAgc3RkOjpvcHRpb25hbDxTYW5kYm94RmxhZ3M+IGVmZmVj
dGl2ZVNhbmRib3hGbGFnczsKKyAgICBkZWNvZGVyID4+IGVmZmVjdGl2ZVNhbmRib3hGbGFnczsK
KyAgICBpZiAoIWVmZmVjdGl2ZVNhbmRib3hGbGFncykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXN1bHQuZWZmZWN0aXZlU2FuZGJveEZsYWdzID0gKmVmZmVjdGl2ZVNhbmRi
b3hGbGFnczsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBvcGVuZXJVUkw7CisgICAgZGVjb2Rl
ciA+PiBvcGVuZXJVUkw7CisgICAgaWYgKCFvcGVuZXJVUkwpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmVzdWx0Lm9wZW5lclVSTCA9IFdURk1vdmUoKm9wZW5lclVSTCk7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luT3BlbmVyUG9saWN5PiBzb3VyY2VDcm9zc09y
aWdpbk9wZW5lclBvbGljeTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OworICAgIGlmICghc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LnNvdXJjZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5ID0gV1RGTW92ZSgqc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kpOworCisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmF2aWdhdGlvbklEOworICAgIGRlY29kZXIgPj4gbmF2
aWdhdGlvbklEOworICAgIGlmICghbmF2aWdhdGlvbklEKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHJlc3VsdC5uYXZpZ2F0aW9uSUQgPSAqbmF2aWdhdGlvbklEOworCisgICAg
c3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25SZXF1ZXN0ZXI+PiBuYXZpZ2F0
aW9uUmVxdWVzdGVyOworICAgIGRlY29kZXIgPj4gbmF2aWdhdGlvblJlcXVlc3RlcjsKKyAgICBp
ZiAoIW5hdmlnYXRpb25SZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXN1bHQubmF2aWdhdGlvblJlcXVlc3RlciA9IFdURk1vdmUoKm5hdmlnYXRpb25SZXF1
ZXN0ZXIpOworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgZGVjb2RlciA+PiBz
ZXJ2aWNlV29ya2Vyc01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggNGNiODVjYmEy
MDZiODAyODdkNDJiNWJlNTZiY2M4ZTkzMjYxMjU1MS4uM2Y4MDRkMTc1MWFlMDgzYTQ3NDVjYzYx
NDU1MjIyN2Q1ZWYzNTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25SZXF1ZXN0
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVySWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKQEAgLTY3LDYgKzY4LDE0IEBAIHB1YmxpYzoKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKICAg
ICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAg
ICBVUkwgZG9jdW1lbnRVUkw7CisKKyAgICBib29sIGlzQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lF
bmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50IHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpTYW5kYm94RmxhZ3MgZWZmZWN0aXZlU2FuZGJv
eEZsYWdzIHsgV2ViQ29yZTo6U2FuZGJveE5vbmUgfTsKKyAgICBVUkwgb3BlbmVyVVJMOworICAg
IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5IHNvdXJjZUNyb3NzT3JpZ2luT3BlbmVy
UG9saWN5OworICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCB7IDAgfTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok5hdmlnYXRpb25SZXF1ZXN0ZXI+IG5hdmlnYXRpb25SZXF1ZXN0ZXI7CiAg
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJzTW9kZSBzZXJ2aWNlV29ya2Vyc01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6
Ok5vbmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFmMjNhODg3NTZkMjRiZGE5ZmRhNWI2ODllMDU0
MjBkYmMxYjRmLi40NzZkMGZlNGFhMjA4MDcwYzZmMTNjNmQ0ZGM5NTU2YjQ5MmMxMTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC02NTIsNiArNjUzLDQ3IEBA
IGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRXb3JrZXJMb2FkRm9y
Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwj
cHJvY2Vzcy1hLW5hdmlnYXRlLWZldGNoIChTdGVwIDEyLjUuNikKK3N0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VFcnJvcj4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFu
ZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IC8vIENPT1Agb25seSBhcHBsaWVzIHRvIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cy4KKyAg
ICBpZiAoIWlzTWFpbkZyYW1lTG9hZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgaWYgKCFtX3BhcmFtZXRlcnMuaXNDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudFNlY3VyaXR5UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgaWYgKCFyZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eSkuaXNOdWxsKCkpIHsKKyAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHJlc3BvbnNlLnVybCgpIH0sIG51bGxwdHIp
OworICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH0sIG9yaWdpbmFsUmVx
dWVzdCgpLmh0dHBSZWZlcnJlcigpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydFBhcnNp
bmdFcnJvcnM6Ok5vKTsKKyAgICB9CisKKyAgICBpZiAoIW1fY3VycmVudENvb3BFbmZvcmNlbWVu
dFJlc3VsdCkgeworICAgICAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IG1fcGFyYW1ldGVycy5zb3Vy
Y2VPcmlnaW4gPyBSZWYgeyAqbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiB9IDogU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZVVuaXF1ZSgpOworICAgICAgICBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRS
ZXN1bHQgPSBDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0Ojpmcm9tKG1f
cGFyYW1ldGVycy5kb2N1bWVudFVSTCwgV1RGTW92ZShzb3VyY2VPcmlnaW4pLCBtX3BhcmFtZXRl
cnMuc291cmNlQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIG1fcGFyYW1ldGVycy5uYXZpZ2F0aW9u
UmVxdWVzdGVyLCBtX3BhcmFtZXRlcnMub3BlbmVyVVJMKTsKKyAgICB9CisKKyAgICBtX2N1cnJl
bnRDb29wRW5mb3JjZW1lbnRSZXN1bHQgPSBXZWJDb3JlOjpkb0Nyb3NzT3JpZ2luT3BlbmVySGFu
ZGxpbmdPZlJlc3BvbnNlKHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMubmF2aWdhdGlvblJlcXVlc3Rl
ciwgY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpLCBtX3BhcmFtZXRlcnMuZWZmZWN0aXZlU2Fu
ZGJveEZsYWdzLCBtX3BhcmFtZXRlcnMuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQs
ICptX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQsIFsmXShDT09QRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiByZXNwb25zZUNPT1AsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiByZXNwb25zZU9yaWdpbikgeworICAgICAgICBpZiAocmVzcG9u
c2VDT09QLmhhc1JlcG9ydGluZ0VuZHBvaW50KGRpc3Bvc2l0aW9uKSkKKyAgICAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1Rv
Q09PUFJlc3BvbnNlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHJlc3BvbnNlQ09PUCwgZGlz
cG9zaXRpb24sIHJlc3BvbnNlLnVybCgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQt
PnVybCwgcmVzcG9uc2VPcmlnaW4uZGF0YSgpLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1
bHQtPmN1cnJlbnRPcmlnaW4tPmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVy
KCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBVc2VyQWdlbnQoKSwgcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSZXBvcnRUbykgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCk7CisgICAgICAgIGlmIChtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPmNyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5Lmhhc1JlcG9ydGluZ0VuZHBvaW50KGRpc3Bvc2l0aW9uKSkKKyAgICAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2
aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
Y3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ksIGRp
c3Bvc2l0aW9uLCBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPnVybCwgcmVzcG9uc2Uu
dXJsKCksIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+Y3VycmVudE9yaWdpbi0+ZGF0
YSgpLCByZXNwb25zZU9yaWdpbi5kYXRhKCksIG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3Vs
dC0+aXNDdXJyZW50Q29udGV4dE5hdmlnYXRpb25Tb3VyY2UsIG9yaWdpbmFsUmVxdWVzdCgpLmh0
dHBVc2VyQWdlbnQoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICB9KTsKKyAgICBp
ZiAoIW1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwg
Ik5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3Ms
IFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCitzdGF0aWMgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiB0
b0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxD
cm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVzdWx0PiYgY3VycmVudENvb3BFbmZv
cmNlbWVudFJlc3VsdCkKK3sKKyAgICBpZiAoIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQg
fHwgIWN1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQtPm5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gpCisgICAgICAgIHJldHVybiBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uOjpTdGF5SW5Hcm91cDsKKyAgICBpZiAoY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdC0+
Y3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kudmFsdWUgPT0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lW
YWx1ZTo6U2FtZU9yaWdpblBsdXNDT0VQKQorICAgICAgICByZXR1cm4gQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cDsKKyAgICByZXR1cm4gQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3U2hhcmVkR3JvdXA7Cit9CisKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25z
ZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBl
eHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0ICIsIGhhc0NhY2hlZEVudHJ5Rm9yVmFsaWRh
dGlvbj0lZCwgaGFzTmV0d29ya0xvYWRDaGVja2VyPSVkKSIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCks
IHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCksICEhbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbiwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CkBAIC03NDAsNiArNzgyLDE1
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKG1fcmVzcG9uc2UpKSB7Cisg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPR19FUlJPUigiZGlkUmVjZWl2ZVJlc3BvbnNlOiBJbnRl
cnJ1cHRpbmcgbG9hZCBkdWUgdG8gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZXJyb3IgPSBXVEZNb3ZlKCplcnJvcildIHsKKyAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX25ldHdvcmtMb2FkKQorICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZh
aWxMb2FkaW5nKGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgfQorCiAgICAgYXV0byByZXNwb25z
ZSA9IHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFJlc291cmNlUmVzcG9uc2UgeyBtX3Jlc3Bv
bnNlIH0sIFJlc291cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2Fm
ZSk7CiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVSZXNwb25zZTogVXNpbmcgcmVzcG9uc2UgZm9yIHN5bmNocm9ub3VzIGxv
YWQiKTsKQEAgLTc2MSw3ICs4MTIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgIC8v
IGEgbWFpbiByZXNvdXJjZSBiZWNhdXNlIHRoZSBlbWJlZGRpbmcgY2xpZW50IG11c3QgZGVjaWRl
IHdoZXRoZXIgdG8gYWxsb3cgdGhlIGxvYWQuCiAgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9u
c2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7CisgICAgc2VuZERp
ZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChyZXNw
b25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk7CiAKICAgICBpZiAo
bV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCiAgICAgICAgIG1fY29ubmVj
dGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9u
c2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvLCByZXNwb25z
ZSksIDApOwpAQCAtNzgwLDYgKzgzMSwyNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJv
d3NpbmdDb250ZXh0R3JvdXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit7CisgICAg
YXV0byBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID0gdG9Ccm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uKG1fY3VycmVudENvb3BFbmZvcmNlbWVudFJlc3VsdCk7Cisg
ICAgaWYgKGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6U3RheUluR3JvdXApIHsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gbG9hZGVyID0gbV9jb25uZWN0aW9uLT50YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKGNvcmVJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChsb2FkZXIgPT0gdGhp
cyk7CisgICAgYXV0byBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKKyAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtTZXNz
aW9uKCktPmFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKGxvYWRlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IHJlc3Bv
bnNlLnVybCgpIH07CisgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6VHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlv
bihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQs
IGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHJlc3BvbnNlRG9tYWluLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCBbZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzZXNzaW9uID0gbWFrZVdlYWtQdHIo
Y29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKCkpXShib29sIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlTG9hZGVyV2FpdGluZ1dlYlBy
b2Nlc3NUcmFuc2ZlcihleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpOworICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCkBAIC05NDMsNiArMTAx
NSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3Bv
bnNlKHJlZGlyZWN0UmVzcG9uc2UpKSB7CisgICAgICAgIGRpZEZhaWxMb2FkaW5nKCplcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIp
IHsKICAgICAgICAgaWYgKHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSkKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5lbmFibGVDb250ZW50RXh0
ZW5zaW9uc0NoZWNrKCk7CkBAIC0xMjQ5LDYgKzEzMjYsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjoKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChhdXRvIGVycm9yID0gZG9Dcm9zc09y
aWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShyZXNwb25zZSkpIHsKKyAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HX0VSUk9SKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IEludGVycnVwdGluZyBs
b2FkIGR1ZSB0byBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIpOworICAgICAgICBkaWRGYWls
TG9hZGluZygqZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVzcG9uc2Ug
PSBzYW5pdGl6ZVJlc3BvbnNlSWZQb3NzaWJsZShXVEZNb3ZlKHJlc3BvbnNlKSwgUmVzb3VyY2VS
ZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsKICAgICBpZiAoaXNT
eW5jaHJvbm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+cmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKTsKQEAgLTEyNTksNyArMTM0Miw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJp
ZXZlQ2FjaGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIElQQyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQpIiwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgc2VuZERpZFJlY2VpdmVS
ZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleHRHcm91cChyZXNwb25zZSwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogCiAgICAgaWYgKG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBX
VEZNb3ZlKHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYyMmI0Y2MzMDc0Y2JkNjgxNTJjZjQ5NTM2
YzBmMGU4YjNhMDRjZjAuLmIyZDFkY2I3Yzc2ODE1NzlhMWNmNmZmYmQ0MjRkNDFmMTA5ZDA1ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTQ2LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlcnZpY2VX
b3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayopOwogI2VuZGlmCiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IGRvQ3Jvc3NPcmlnaW5PcGVu
ZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZvaWQgc2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0Nv
bnRleHRHcm91cChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CisKICAgICBib29sIGlzQXBwSW5pdGlh
dGVkKCk7CiAKIHByaXZhdGU6CkBAIC0yNTcsNiArMjYwLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX3Jlc291cmNlTG9hZElEOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogICAgIFVSTCBtX2ZpcnN0UmVz
cG9uc2VVUkw7IC8vIEZpcnN0IFVSTCBpbiByZXNwb25zZSdzIFVSTCBsaXN0IChodHRwczovL2Zl
dGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXNwb25zZS11cmwtbGlzdCkuCisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuZm9yY2VtZW50UmVz
dWx0PiBtX2N1cnJlbnRDb29wRW5mb3JjZW1lbnRSZXN1bHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKaW5kZXggZjM4NjBiMjA0ZjA2MzBhOWQ2ZWU1OTZjM2VmOWNiZGMxMjUyZDJjMi4uZThi
NDllZTBlNTI4NDE0MzJhY2ExZTAxYTFjYTJkNWM0NzY1NWNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQyNSwxMCArNDI1LDcg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpleHBp
cmF0aW9uVGltZXJGaXJlZCgpCiAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGxvYWRlciA9IHNlc3Npb24tPnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NU
cmFuc2ZlcihtX2xvYWRlci0+aWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQobG9hZGVyKTsKLSAg
ICBpZiAobG9hZGVyKQotICAgICAgICBsb2FkZXItPmFib3J0KCk7CisgICAgc2Vzc2lvbi0+cmVt
b3ZlTG9hZGVyV2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihtX2xvYWRlci0+aWRlbnRpZmllcigp
KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNz
VHJhbnNmZXIoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpCkBAIC00NDUsNiAr
NDQyLDEyIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtTZXNzaW9uOjp0
YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmCiAgICAgcmV0dXJuIGNhY2hlZFJlc291
cmNlTG9hZGVyID8gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnRha2VMb2FkZXIoKSA6IG51bGxwdHI7
CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnJlbW92ZUxvYWRlcldhaXRpbmdXZWJQcm9jZXNz
VHJhbnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAg
ICBpZiAoYXV0byBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJv
Y2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIGNhY2hlZFJlc291cmNlTG9h
ZGVyLT50YWtlTG9hZGVyKCktPmFib3J0KCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXgg
OTdmN2QwN2Y1ODZiMmI5N2NkNjU0OTc4MjZhNzdlM2EwMzNjOWI4Ni4uNWVjZTE0NGNmY2JiOTUx
Njk3ODRkNGM4ZTcyNzRhYmQ3YmRiZTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAKICAgICB2
b2lkIGFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKFJlZjxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+JiYpOworICAgIHZvaWQgcmVtb3ZlTG9hZGVyV2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgUmVmUHRyPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4gdGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKE5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKIAogICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNh
Y2hlKCkgeyByZXR1cm4gbV9jYWNoZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCmluZGV4IGQ0NTU5MzUyNTNmNzlmNWMwNDMxZGJhZWVmOTI5MzM2MDcw
NGVhMjYuLjAzNDE3NGE0YTE4NmQ0Y2JkMTNmYTQ5MWNiYTViMzg1NmViYzk5ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTE2MCw4ICsxNjAsMTMgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBib28KICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChhdXRv
IGVycm9yID0gbV9sb2FkZXIuZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShy
ZXNwb25zZSkpIHsKKyAgICAgICAgZGlkRmFpbCgqZXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcik7Ci0gICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIH0pOworICAgIG1fbG9hZGVyLnNlbmREaWRSZWNlaXZlUmVzcG9u
c2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXAocmVzcG9uc2UsIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBpZiAobmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDMzNGI4MWM2ZDVkYzg1MTM5NmUyMTQ5ODA5MzJmMmM2ODkyMjkwMDcuLjNmZGVk
YThiZmM5NDlhYmExZDA5YWUxZWMxZTk2Zjc5NThkMDViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzI3LDYgKzMyNyw3IEBAIGRlZiB0eXBlc190aGF0
X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkxpYldlYlJU
Q1Jlc29sdmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllcicsCisgICAg
ICAgICdXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UERGUGx1Z2luSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VHcm91cElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllcicsCkBAIC02OTMsNiArNjk0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAg
ICAgICAgICdXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1dG9wbGF5
RXZlbnQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
RGVjaXNpb24nOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OkNPRVBEaXNwb3NpdGlvbic6IFsnPFdlYkNvcmUvQ3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeS5oPiddLAorICAgICAgICAnV2ViQ29yZTo6Q09PUERpc3Bvc2l0aW9uJzogWyc8V2ViQ29y
ZS9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQnOiBbJzxXZWJDb3JlL0FwcEhpZ2hsaWdodC5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSc6IFsnPFdlYkNvcmUvRE9NUGFz
dGVBY2Nlc3MuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSc6
IFsnPFdlYkNvcmUvQ29sb3JTcGFjZS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzY1YTYxOWQ3
YThhZTgxYTYwMzNiMDY3MTE0N2UwMWFjY2RkNDE3Zi4uNTkwZmI5NTcxOTRkOWFkMWRkNWIzYTM2
NDNmMjkxMWFlODBhMDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC00MzYsNiArNDM2LDE1IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkTmVnb3RpYXRlTW9kZXJuVExTKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlELCBjCiAgICAgICAgIHBhZ2UtPmRpZE5lZ290aWF0ZU1vZGVyblRM
Uyh1cmwpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRyaWdnZXJCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNp
c2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgcmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQ
cm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbjogcGFn
ZUlEPSUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQ9JSIgUFJJdTY0ICIsIGJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRGVjaXNpb249JXUsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0
aW9uSUQsICh1bnNpZ25lZClicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudG9VSW50NjQoKSk7Cisg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBwYWdlSUQgPyBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFn
ZUlEKSA6IG51bGxwdHIpCisgICAgICAgIHBhZ2UtPnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaEZvck5hdmlnYXRpb24obmF2aWdhdGlvbklELCBicm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uLCByZXNwb25zZURvbWFpbiwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxz
ZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cit9CisKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAg
ICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhsYXVuY2hlciwgY29u
bmVjdGlvbklkZW50aWZpZXIpOwpAQCAtNDc2LDE3ICs0ODUsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2Vi
Q29yZTo6UAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9h
ZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQ
cm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXI+IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gTmV0
d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXI6IHNvdXJj
ZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcjog
JSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCByZXNv
dXJjZUxvYWRJZGVudGlmaWVyID8gcmVzb3VyY2VMb2FkSWRlbnRpZmllci0+dG9VSW50NjQoKSA6
IDApOwotICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlcGFyZUxvYWRGb3JXZWJQcm9j
ZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHJlc291cmNlTG9hZElkZW50aWZp
ZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDYwZmIzMmU4MTBlMmZmYjJjNDliODU4OTc5MjYzNmI3
YmVhMGQ4YS4uMTQ0OGU2ZDllZDgxM2Q2NzIzMjQ3YzMyZDg2Zjk0OWY5MDZmOTZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKQEAgLTIxNCw4ICsyMTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0lu
Y29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQcm9jZXNzSW5jb21p
bmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYmKTsKICAg
ICB2b2lkIHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCi0gICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nl
c3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+KT4mJik7Ci0KICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5h
bCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bigpOwogCkBAIC0zMjIsNiArMzIwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdGVybWluYXRl
V2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHRyaWdn
ZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaERlY2lzaW9uLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVz
cG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIHN1Y2Nlc3MpPiYmKTsKKwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CiAKICAgICBXZWJz
aXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3Npb25J
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDY3NDkyNWM1ODFkYmQ5ZjBh
NzY5YTY3MDAzNmQ5YzZkZWYzNDA3MS4uZmQyMTBiZjFjMDUwMGY4MDYxYzRjMjRkYTQyMzUyMGU3
OWFmMDM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzMsNiArNzMsOCBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBS
ZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291
cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgUmVz
b3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291
cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKKyAgICBUcmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hGb3JOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aERlY2lzaW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiwgV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisKICNpZiBV
U0UoU09VUCkKICAgICBEaWRFeGNlZWRNZW1vcnlMaW1pdCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCBiMDkxOWI4
Y2I0YTVhNDMzMmVmODgyZGI1YTQ0YTJjMzQwOTI0YmVhLi4wZDNlN2QyZjRiZTJhOTk2Y2ZkOTgx
ODk4ZTY2NmY2ODRhMzc5NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMzMsMTIgKzMzMywxMiBAQCB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJ
ZGVudGlmaWVyCiAgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
Y1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92
ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQ
YWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0
Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsK
IH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5h
dmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJ
RCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNl
LCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBtX3Bh
Z2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93
ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdh
dGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJp
YnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGE1ZGVjZmYyZjdlOTIxM2Q3ZDNi
ZWRhMGRiYzM2ZDZkOTk1NGMzZDMuLmRjNzE4YzIwMTdiOTVhY2UyYTU3MmI0OTBjZjRiNjg5Yjlh
MmU0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIq
KT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1l
SW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIFdlYkNvcmU6OkJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAg
IHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWE3ZGIwNGU4MjJlNTI2
MTFiOWUyMmEzMjJhYWVlNGU4OTJiN2Q3Ny4uYjdlYzJlY2U1MmM3ZTY0OThmMDk1OGM2YTJiMmNk
MmJkNDdlMWRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0zNjQ2LDcgKzM2NDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9u
SW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIH0KIAogICAg
IGJvb2wgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
PT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiAmJiBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpOwotICAgIGJv
b2wgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9u
c2VQb2xpY3lEZWNpc2lvbjsKKyAgICBib29sIHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJD
b21taXQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ7CiAgICAgbV9wcm92aXNp
b25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgV1RGTW92
ZShuZXdQcm9jZXNzKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0
aW9uSUQoKSwgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QsIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3Qo
KSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VB
ZnRlckNvbW1pdCwgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICBhdXRvIGNvbnRpbnVhdGlv
biA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmF2aWdhdGlvbiA9IFJl
ZiB7IG5hdmlnYXRpb24gfSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9s
aWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0
ZW0gPSBuYXZpZ2F0aW9uLT50YXJnZXRJdGVtKCkpIHsKQEAgLTU2MzEsMTIgKzU2MzEsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLAotICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXI+IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1
bmRsZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1f
d2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmln
YXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRy
aWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBicm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNl
ckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93
bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBsaXN0ZW5lcklELCB1
c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uIGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24s
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjQ5LDcgKzU2NDksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24g
PSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9u
SUQpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdh
dGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1l
SW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBk
b3dubG9hZEF0dHJpYnV0ZSk7CiAKLSAgICBSZWYgbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xp
Y3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgd2Vi
UGFnZUlELCBmcmFtZUlELCBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlv
biA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgUmVmIGxpc3RlbmVyID0gZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9
IFdURk1vdmUobmF2aWdhdGlvbiksCiAgICAgICAgIHByb2Nlc3MsIG5hdmlnYXRpb25SZXNwb25z
ZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBS
ZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJz
aXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDo6Tm8pOwpAQCAtNTY1OCwyNiArNTY1OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
CiAgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVu
dGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzXSAoY29uc3Qg
YXV0byYgcG9saWN5RGVjaXNpb24pIHsKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklE
LCBwb2xpY3lEZWNpc2lvbiwgY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9u
cyhwcm9jZXNzKSksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwotCi0gICAgICAgIGF1dG8gd2ls
bENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6
Ok5vOwotICAgICAgICBpZiAocG9saWN5QWN0aW9uID09IFBvbGljeUFjdGlvbjo6VXNlICYmIGJy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gIT0gQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbjo6U3RheUluR3JvdXAgJiYgbmF2aWdhdGlvbikgewotICAgICAgICAgICAg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkOiBQcm9jZXNzLXN3YXBwaW5nIGR1ZSB0byBDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeSwgbmV3UHJvY2Vzc0lzQ3Jvc3NPcmlnaW5Jc29sYXRlZD0lZCIsIGJyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hE
ZWNpc2lvbjo6TmV3SXNvbGF0ZWRHcm91cCk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbjsKLSAgICAgICAgICAgIGlmIChicm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVj
aXNpb246Ok5ld0lzb2xhdGVkR3JvdXApCi0gICAgICAgICAgICAgICAgcHJvY2Vzc0Zvck5hdmln
YXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vi
c2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NP
cmlnaW5Nb2RlOjpJc29sYXRlZCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IG5hdmlnYXRpb25SZXNwb25zZS0+
cmVzcG9uc2UoKS51cmwoKSB9OwotICAgICAgICAgICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9u
ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3
ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVM
b2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigp
LCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZN
b3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vz
c0Zvck5hdmlnYXRpb24gPSBwcm9jZXNzRm9yTmF2aWdhdGlvbi5yZWxlYXNlTm9uTnVsbCgpXShh
dXRvIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZp
Z2F0aW9uLCBudWxscHRyLCBXVEZNb3ZlKHByb2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVz
QWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uLCBudWxscHRyLCBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwotCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbi5nZXQoKSwgbnVs
bHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlciksIHsgfSwg
V2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIAotICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RG
TW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlciksIHsgfSwgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2Vzcyk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25S
ZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dz
aW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5vKTsKIAog
ICAgIGlmICh3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSkgewpAQCAtNTY5MSw2ICs1NjczLDI0
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRp
b25SZXNwb25zZSksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiBicm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzcG9uc2VEb21haW4sIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChicm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uICE9IEJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb246OlN0YXlJbkdyb3VwKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBu
YXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24o
bmF2aWdhdGlvbklEKSA6IG51bGxwdHI7CisgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgInRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmln
YXRpb246IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
LCBuZXdQcm9jZXNzSXNDcm9zc09yaWdpbklzb2xhdGVkPSVkLCBuYXZpZ2F0aW9uPSVwIiwgYnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaERlY2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwLCBuYXZpZ2F0aW9uLmdldCgpKTsKKyAgICBp
ZiAoIW5hdmlnYXRpb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbjsKKyAg
ICBpZiAoYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwKQorICAgICAgICBwcm9jZXNz
Rm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9j
ZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKCksIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5v
LCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkKTsKKyAgICBlbHNlCisgICAgICAgIHByb2Nlc3NG
b3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdpc3Ry
YWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsKKwor
ICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwgbnVsbHB0ciwg
cHJvY2Vzc0Zvck5hdmlnYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJQcm92
aXNpb25hbExvYWRTdGFydGVkLCBudWxscHRyLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYmUxMDEwNWYxNjEz
YmNjNDllNzcyNWU4MTg1NTFlM2I1ZTQwY2VmMy4uZjJkZmIwNTEwODZkYmYwOGI1N2Y5YzU5OTEz
N2M2YWJiMWFlMjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTY4NSw2ICs2ODUsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsgfQogICAgIHZvaWQgc2V0VW5kZXJs
YXlDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCisgICAgdm9pZCB0cmlnZ2VyQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc3BvbnNlRG9tYWluLCBOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CisKICAgICAvLyBBdCB0
aGlzIHRpbWUsIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdmlhIHBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpIHdoaWNoIGlzIGEgbWVzc2FnZQog
ICAgIC8vIGZyb20gdGhlIFVJUHJvY2Vzcywgb3IgYnkgZGlkQ29tbWl0TGF5ZXJUcmVlKCkuIFdo
ZW4gUExBVEZPUk0oTUFDKSBhZG9wdHMgVUkgc2lkZSBjb21wb3NpdGluZywgd2Ugc2hvdWxkIGdl
dCByaWQgb2YKICAgICAvLyB0aGUgbWVzc2FnZSBlbnRpcmVseS4KQEAgLTE3NDYsNyArMTc0OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZy
YW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmln
aW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25s
b2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBXZWJDb3JlOjpC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZp
Z2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7CiAg
ICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CkBAIC0yMDY0LDcgKzIwNjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBXZWJDb3JlOjpCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNo
b3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxv
d2VkQnlJbmplY3RlZEJ1bmRsZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzJlMmU0YTVjNDQ5ZTkxODc1NjA0ZmFiMDI3
OGRiNTgwOGYwODE4ZS4uOThiNzRmMWJhMDNmMDhmOGNmMWFjZDAwZmUxMzY2NzZmNDgyNTUxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYK
IAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNo
b3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiBicm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRv
d25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJh
bWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0
IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNpb24pIFN5bmNocm9ub3VzCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDBkMTgyOWIz
OThjMzYwNTFiODRlMjE1ZGIzZDE2ZWEzNDc3OTE5NjUuLmFkMzVlMmJmMTFlYjE5MmQ5ODA2ZDYx
N2RmMzMyMzJlM2IwN2U4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CkBAIC0zOTgsOCArMzk5LDI0IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgbG9hZFBh
cmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3Jt
U2VjdXJpdHlDaGVja3MoKTsKIAogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdh
dGlvbiA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgJiYgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+
aXNNYWluRnJhbWUoKSAmJiByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkubW9kZSA9PSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOworICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFt
ZU5hdmlnYXRpb24gJiYgZG9jdW1lbnQpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNvdXJjZUNy
b3NzT3JpZ2luT3BlbmVyUG9saWN5ID0gZG9jdW1lbnQtPmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5
KCk7CiAKICAgICBsb2FkUGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlG
cmFtZSA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygp
Lm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsKKyAgICBpZiAobG9hZFBhcmFt
ZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpIHsKKyAgICAgICAgaWYg
KGF1dG8gZG9jdW1lbnRMb2FkZXIgPSByZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpKSB7
CisgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxX
ZWJEb2N1bWVudExvYWRlciY+KCpkb2N1bWVudExvYWRlcikubmF2aWdhdGlvbklEKCk7CisgICAg
ICAgICAgICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uUmVxdWVzdGVyID0gZG9jdW1lbnRMb2Fk
ZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5yZXF1ZXN0ZXIoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBsb2FkUGFyYW1ldGVycy5pc0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxlZCA9IGRvY3Vt
ZW50ICYmIGRvY3VtZW50LT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5hYmxl
ZCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50
ID0gZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCk7CisgICAgaWYgKGZyYW1lKQorICAgICAgICBsb2FkUGFyYW1l
dGVycy5lZmZlY3RpdmVTYW5kYm94RmxhZ3MgPSBmcmFtZS0+bG9hZGVyKCkuZWZmZWN0aXZlU2Fu
ZGJveEZsYWdzKCk7CisgICAgaWYgKGF1dG8gb3BlbmVyRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5s
b2FkZXIoKS5vcGVuZXIoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKGF1dG8gb3BlbmVyRG9j
dW1lbnQgPSBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGxvYWRQYXJhbWV0
ZXJzLm9wZW5lclVSTCA9IG9wZW5lckRvY3VtZW50LT51cmwoKTsKKyAgICB9CiAKICAgICBsb2Fk
UGFyYW1ldGVycy5zaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5ID0gIWxvYWRQ
YXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggNThmMGM0NGZhYzA5ZjBlYmMyZGQyMTk1MDMzNjRkNjZjZThhNTAzMy4u
ZmVjNjgwYTA2NTU4NjA5Y2I0NDEwOWNkYWUzMzhlNTE0ZWE1MDgzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKCp3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAgICAgUmVmUHRyIHByb3Zpc2lvbmFs
TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKTsKIAotICAgIGlmICgh
cHJvdmlzaW9uYWxMb2FkZXIgfHwgcHJvdmlzaW9uYWxMb2FkZXItPmlzQ29udGludWluZ0xvYWRB
ZnRlclJlc3BvbnNlUG9saWN5Q2hlY2soKSkKKyAgICBpZiAoIXByb3Zpc2lvbmFsTG9hZGVyIHx8
IHByb3Zpc2lvbmFsTG9hZGVyLT5pc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRT
dGFydGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhdXRvJiB1cmwgPSBwcm92aXNp
b25hbExvYWRlci0+dXJsKCk7CkBAIC04MTcsNyArODE3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKICAgICB3ZWJQYWdlLT5zaG93KCk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNp
b24gYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgRnJhbWVQb2xpY3lGdW5jdGlv
biYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CkBAIC04MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnMKICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3
ZWJQYWdlLCBtX2ZyYW1lLnB0cigpLCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAg
IC8vIElmIGEgYnJvd3NpbmcgY29udGV4dCBzd2l0Y2ggaXMgcmVxdWVzdGVkLCB3ZSBzdGlsbCBu
ZWVkIHRvIHNlbmQgdGhlIElQQyB0byB0aGUgVUlQcm9jZXNzIGluIG9yZGVyIHRvIHByb2Nlc3Mt
c3dhcCBpZiBuZWNlc3NhcnksIGV2ZW4gdGhvdWdoIHRoZQogICAgIC8vIGluamVjdGVkIGJ1bmRs
ZSBoYXMgYWxyZWFkeSBoYW5kbGVkIHRoZSBwb2xpY3kgZGVjaXNpb24uCi0gICAgaWYgKHBvbGlj
eSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UgJiYgYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpTdGF5
SW5Hcm91cCkgeworICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
KSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBjb250aW51aW5nIGJlY2F1c2UgaW5qZWN0
ZWQgYnVuZGxlIHNheXMgc28iKTsKICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2Us
IGlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CkBAIC04NDksMTQgKzg0OSwxMSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9ucwogICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVG
cmFtZSgpOwogICAgIGF1dG8qIHBvbGljeURvY3VtZW50TG9hZGVyID0gY29yZUZyYW1lID8gY29y
ZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgOiBudWxscHRyOwog
ICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNfY2Fz
dDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlvbklE
KCkgOiAwOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKLSAgICBpZiAoYXV0byBtYWluUmVzb3Vy
Y2VMb2FkZXIgPSBwb2xpY3lEb2N1bWVudExvYWRlciA/IHBvbGljeURvY3VtZW50TG9hZGVyLT5t
YWluUmVzb3VyY2VMb2FkZXIoKSA6IG51bGxwdHIpCi0gICAgICAgIG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyID0gbWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAKICAgICBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlID0gcG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGlj
eUFjdGlvblVzZTsKICAgICBhdXRvIHByb3RlY3RvciA9IG1fZnJhbWUuY29weVJlZigpOwogICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50
aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6
Tm8pOwotICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwg
aWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3Bv
bnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgeworICAgIGlmICghd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdh
dGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJp
YnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEu
Z2V0KCkpLmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0Vf
TE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBpZ25vcmluZyBi
ZWNhdXNlIFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgZmFpbGVkIik7CiAg
ICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xp
Y3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0KQEAgLTk1Niw5ICs5NTMsOSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdAogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBv
bGljeUxpc3RlbmVyKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJh
bWU6OkZvck5hdmlnYXRpb25BY3Rpb246Olllcyk7CiAKICAgICBBU1NFUlQobmF2aWdhdGlvbkFj
dGlvbi5yZXF1ZXN0ZXIoKSk7Ci0gICAgYXV0byByZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9u
LnJlcXVlc3RlcigpLnZhbHVlKCk7CisgICAgYXV0byYgcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFj
dGlvbi5yZXF1ZXN0ZXIoKS52YWx1ZSgpOwogCi0gICAgYXV0byogcmVxdWVzdGluZ0ZyYW1lID0g
cmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllcigpLmZyYW1lSUQgPyBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVyKCkuZnJh
bWVJRCkgOiBudWxscHRyOworICAgIGF1dG8qIHJlcXVlc3RpbmdGcmFtZSA9IHJlcXVlc3Rlci5n
bG9iYWxGcmFtZUlkZW50aWZpZXIgJiYgcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllci0+
ZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5nbG9i
YWxGcmFtZUlkZW50aWZpZXItPmZyYW1lSUQpIDogbnVsbHB0cjsKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdGcmFtZUlEOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBwYXJlbnRGcmFtZUlEOwogICAgIGlm
IChyZXF1ZXN0aW5nRnJhbWUpIHsKQEAgLTk2OSwxNSArOTY2LDE1IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0CiAKICAgICBGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSB7
CiAgICAgICAgIG5hdmlnYXRpb25BY3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0
aWF0ZWRCeU1haW5GcmFtZTo6WWVzLAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0
ZXIudXJsKCkgfSwKLSAgICAgICAgcmVxdWVzdGVyLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLAor
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0ZXIudXJsIH0sCisgICAgICAgIHJlcXVl
c3Rlci5zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLAogICAgICAgICBXVEZNb3ZlKG9yaWdpbmF0aW5n
RnJhbWVJRCksCiAgICAgICAgIFdURk1vdmUocGFyZW50RnJhbWVJRCksCiAgICAgfTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7
Ci0gICAgaWYgKGF1dG8mIHBhZ2VJRCA9IHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlkZW50aWZpZXIo
KS5wYWdlSUQpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCkpCisgICAgaWYgKHJlcXVlc3Rlci5nbG9iYWxGcmFtZUlk
ZW50aWZpZXIgJiYgcmVxdWVzdGVyLmdsb2JhbEZyYW1lSWRlbnRpZmllci0+cGFnZUlEKSB7Cisg
ICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShyZXF1ZXN0ZXIuZ2xvYmFsRnJhbWVJZGVudGlmaWVyLT5wYWdlSUQpKQogICAgICAgICAgICAg
b3JpZ2luYXRpbmdQYWdlSUQgPSB3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCk7CiAg
ICAgfQogCkBAIC05OTUsOCArOTkyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS50cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24gPSBuYXZpZ2F0
aW9uQWN0aW9uLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbigpOwogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLmhhc09wZW5lZEZyYW1lcyA9IG5hdmlnYXRpb25BY3Rpb24uaGFzT3BlbmVkRnJh
bWVzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEub3BlbmVkQnlET01XaXRoT3BlbmVyID0g
bmF2aWdhdGlvbkFjdGlvbi5vcGVuZWRCeURPTVdpdGhPcGVuZXIoKTsKLSAgICBpZiAoYXV0byYg
cmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0ZXIoKSkKLSAgICAgICAgbmF2aWdh
dGlvbkFjdGlvbkRhdGEucmVxdWVzdGVyT3JpZ2luID0gcmVxdWVzdGVyLT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5yZXF1ZXN0ZXJPcmlnaW4gPSBy
ZXF1ZXN0ZXIuc2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0
YS50YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyID0gbmF2aWdhdGlvbkFjdGlvbi50YXJn
ZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
c291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciA9IG5hdmlnYXRpb25BY3Rpb24uc291cmNl
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmxv
Y2tIaXN0b3J5ID0gbmF2aWdhdGlvbkFjdGlvbi5sb2NrSGlzdG9yeSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCBhNjk4NWE3ODA0NGFiMmE3NjNlNDk0YzY4NTc5ODMzMTc2YWE3
N2E5Li40MGY4NmJkZmFjZWQ0YThiNWU2Njg1NTViYmU5MmQwNmQzZWYwZGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgV2ViQ29yZTo6TmV3RnJhbWVPcGVuZXJQb2xpY3kpIGZpbmFsOwogICAgIHZvaWQg
ZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAgICAgCi0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OkJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24s
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikg
ZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihj
b25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2Rl
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NDcxMTJh
ODg0NDE3MDhmY2M0MzkzZDljYzFhODI0YWM4ZTY1MmNmLi4yMmQwOTIxZTliMWRkYzNmMmRmNjg5
N2Y1Yzg3MmE5Y2JhNWM1ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMTYyLDYgKzE2Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db250
YWN0c1JlcXVlc3REYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YVRyYW5zZmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KQEAgLTQzNDgsNiArNDM0OSwy
OSBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDT0VQQ09SUFZpb2xhdGlvbihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaQogICAgICAgICBXZWJDb3JlOjpzZW5kQ09FUENP
UlBWaW9sYXRpb24oKmZyYW1lLT5jb3JlRnJhbWUoKSwgZW1iZWRkZXJPcmlnaW4sIGVuZHBvaW50
LCBkaXNwb3NpdGlvbiwgZGVzdGluYXRpb24sIGJsb2NrZWRVUkwpOwogfQogCit2b2lkIFdlYlBh
Z2U6OnNlbmRWaW9sYXRpb25SZXBvcnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgY29vcCwg
Q09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVS
TCYgcHJldmlvdXNSZXNwb25zZVVSTCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBjb29wT3Jp
Z2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJp
bmcmIHJlcG9ydFRvSGVhZGVyVmFsdWUpCit7CisgICAgaWYgKCFyZXBvcnRUb0hlYWRlclZhbHVl
LmlzRW1wdHkoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVwb3J0aW5nRW5k
cG9pbnRzQ2FjaGUoKS5hZGRFbmRwb2ludHNGcm9tUmVwb3J0VG9IZWFkZXIoY29vcFVSTCwgcmVw
b3J0VG9IZWFkZXJWYWx1ZSk7CisKKyAgICAvLyBGSVhNRTogQWRkIHRoZSBjb25jZXB0IG9mIGJy
b3dzaW5nIGNvbnRleHQgZ3JvdXAgbGlrZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9m
IHRyZWF0aW5nIHRoZSB3aG9sZSBwcm9jZXNzIGFzIGEgZ3JvdXAuCisgICAgaWYgKFBhZ2U6Om5v
blV0aWxpdHlQYWdlQ291bnQoKSA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0
byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsgZnJh
bWUtPmNvcmVGcmFtZSgpKQorICAgICAgICBXZWJDb3JlOjpzZW5kVmlvbGF0aW9uUmVwb3J0V2hl
bk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZSgqZnJhbWUtPmNvcmVGcmFtZSgpLCBjb29wLCBkaXNw
b3NpdGlvbiwgY29vcFVSTCwgcHJldmlvdXNSZXNwb25zZVVSTCwgY29vcE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpLCBwcmV2aW91c1Jlc3BvbnNlT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIHJlZmVy
cmVyLCB1c2VyQWdlbnQpOworfQorCit2b2lkIFdlYlBhZ2U6OnNlbmRWaW9sYXRpb25SZXBvcnRX
aGVuTmF2aWdhdGluZ0F3YXlGcm9tQ09PUFJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBDcm9zc09yaWdpbk9wZW5lclBvbGljeSYgY29vcCwgQ09PUERpc3Bvc2l0aW9uIGRp
c3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJM
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgbmV4dFJlc3BvbnNlT3JpZ2luLCBib29sIGlzQ09PUFJlc3BvbnNlTmF2aWdhdGlv
blNvdXJjZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit7CisgICAgLy8gRklYTUU6IEFkZCB0
aGUgY29uY2VwdCBvZiBicm93c2luZyBjb250ZXh0IGdyb3VwIGxpa2UgaW4gdGhlIHNwZWNpZmlj
YXRpb24gaW5zdGVhZCBvZiB0cmVhdGluZyB0aGUgd2hvbGUgcHJvY2VzcyBhcyBhIGdyb3VwLgor
ICAgIGlmIChQYWdlOjpub25VdGlsaXR5UGFnZUNvdW50KCkgPD0gMSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCk7IGZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAgV2ViQ29yZTo6c2VuZFZp
b2xhdGlvblJlcG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoKmZyYW1lLT5j
b3JlRnJhbWUoKSwgY29vcCwgZGlzcG9zaXRpb24sIGNvb3BVUkwsIG5leHRSZXNwb25zZVVSTCwg
Y29vcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBuZXh0UmVzcG9uc2VPcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSwgaXNDT09QUmVzcG9uc2VOYXZpZ2F0aW9uU291cmNlLCB1c2VyQWdlbnQpOworfQor
CiB2b2lkIFdlYlBhZ2U6OmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYg
ZXZlbnRJbml0KQogewogICAgIGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggOWJjNDEwNzc4Njk5M2I1Y2QwMDI1NDJiYzg5MDljYmFkMDU4YzQzNy4uMTI2
ZjQwNjc1ODFjYmE2YmM2MmU3Yjc2YmRlYjAxMTk0ZTY0NWM0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQxLDYgKzQ0MSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKICAgICB2
b2lkIHNlbmRDT0VQUG9saWN5SW5oZXJpdGVuY2VWaW9sYXRpb24oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGVtYmVkZGVyT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGVuZHBvaW50LCBXZWJDb3JlOjpDT0VQRGlzcG9zaXRpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMKTsKICAgICB2b2lkIHNlbmRDT0VQ
Q09SUFZpb2xhdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZW1iZWRkZXJPcmlnaW4sIGNvbnN0IFN0cmluZyYgZW5kcG9pbnQs
IFdlYkNvcmU6OkNPRVBEaXNwb3NpdGlvbiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbiwgY29uc3QgVVJMJiBibG9ja2VkVVJMKTsKKyAgICB2b2lkIHNlbmRWaW9sYXRpb25SZXBv
cnRXaGVuTmF2aWdhdGluZ1RvQ09PUFJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kmLCBXZWJDb3JlOjpDT09QRGlz
cG9zaXRpb24sIGNvbnN0IFVSTCYgY29vcFVSTCwgY29uc3QgVVJMJiBwcmV2aW91c1Jlc3BvbnNl
VVJMLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgcHJldmlvdXNSZXNwb25zZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgcmVwb3J0VG9IZWFkZXJWYWx1ZSk7CisgICAgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0V2hl
bk5hdmlnYXRpbmdBd2F5RnJvbUNPT1BSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5JiwgV2ViQ29yZTo6Q09PUERp
c3Bvc2l0aW9uLCBjb25zdCBVUkwmIGNvb3BVUkwsIGNvbnN0IFVSTCYgbmV4dFJlc3BvbnNlVVJM
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGNvb3BPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgbmV4dFJlc3BvbnNlT3JpZ2luLCBib29sIGlzQ09P
UFJlc3BvbnNlTmF2aWdhdGlvblNvdXJjZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwogICAg
IHZvaWQgZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYp
OwogCiAgICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGQy
NGY3YWZmMDg5MmQwMTIyNDBjYmVmYWIyOTk5MjU0MGExZmFiYjAuLjhhZmM0ZWE1ZTNjZDAxYzJh
YzNhNGEzNDFmMzE2YTlhMjExMzMyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsOCBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZW5kQ1NQVmlvbGF0aW9uUmVw
b3J0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCiAgICAgU2VuZENPRVBQb2xpY3lJbmhlcml0
ZW5jZVZpb2xhdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBlbWJlZGRlck9yaWdpbiwgU3RyaW5nIGVuZHBvaW50
LCBlbnVtOmJvb2wgV2ViQ29yZTo6Q09FUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBTdHJpbmcg
dHlwZSwgVVJMIGJsb2NrZWRVUkwpCiAgICAgU2VuZENPRVBDT1JQVmlvbGF0aW9uKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGVtYmVkZGVyT3JpZ2luLCBTdHJpbmcgZW5kcG9pbnQsIGVudW06Ym9vbCBXZWJDb3JlOjpD
T0VQRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGVudW06dWludDhfdCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBVUkwgYmxvY2tlZFVSTCkKKyAgICBTZW5k
VmlvbGF0aW9uUmVwb3J0V2hlbk5hdmlnYXRpbmdUb0NPT1BSZXNwb25zZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5IGNvb3AsIGVudW06Ym9vbCBXZWJDb3JlOjpDT09QRGlzcG9zaXRpb24gZGlzcG9zaXRpb24s
IFVSTCBjb29wVVJMLCBVUkwgcHJldmlvdXNSZXNwb25zZVVSTCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBjb29wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHByZXZpb3VzUmVzcG9uc2VPcmlnaW4sIFN0cmluZyByZWZlcnJlciwgU3RyaW5nIHVz
ZXJBZ2VudCwgU3RyaW5nIHJlcG9ydFRvSGVhZGVyVmFsdWUpCisgICAgU2VuZFZpb2xhdGlvblJl
cG9ydFdoZW5OYXZpZ2F0aW5nQXdheUZyb21DT09QUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpDcm9zc09yaWdpbk9wZW5lclBvbGljeSBj
b29wLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q09PUERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBVUkwg
Y29vcFVSTCwgVVJMIG5leHRSZXNwb25zZVVSTCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBjb29wT3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG5l
eHRSZXNwb25zZU9yaWdpbiwgYm9vbCBpc0NPT1BSZXNwb25zZU5hdmlnYXRpb25Tb3VyY2UsIFN0
cmluZyB1c2VyQWdlbnQpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQ6OkluaXQgZXZlbnRJbml0KQogCiAgICAgVGVzdFByb2Nlc3NJbmNvbWlu
Z1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkg
U3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGUzZjVmOWM5ZjBmZmQ4
YWVlMmRiZjBlNzgzMjE2YmMzYzBhNzU1YzYuLmEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0Y2VlYzE4
Y2Y1OTFlYjhlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTI3LDcgKzEyNyw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25z
dCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgV2ViQ29yZTo6TmV3RnJhbWVPcGVuZXJQb2xp
Y3kpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWw7CiAKLSAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBXVEY6
OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNv
cmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9s
aWN5Q2hlY2soKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNzFhNzE1
YjM3ZmE1ZTZjNWY3NDQ0ZTIzN2M4MmQxNTljZTA4OGFkMS4uMzU2YzkzZjMxZThmYTU2ZDk0MjQx
YzViMjBhOTI5ZTRiYWE0OGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTg1
NSw3ICs4NTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQog
ICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld1Nob3c6d2ViVmlld107
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkJyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2Vi
VmlldyhtX3dlYkZyYW1lLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDU4ODk5MmQ0YWFmZTVmYzgzOWI2NTRkY2VkYTg5MmRkNzAzNTgyM2IuLmZiMjU4M2ZlOTcy
NjRjNzNlZWIyM2ViYjRkMzk5MGIzYjg0YTA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFNob3coKQogICAgICAgICB1aS0+d2ViVmlld1Nob3cod2ViVmlldyk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYsIEJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVjaXNpb24sIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5j
dGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggMWUzMDMxZjliNTAyYzNkZDg4YThhNTQ4YTQ3YzdmMmI2Yjk5MzBlNi4u
MDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91
dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6QnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
b3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZmFhZDRlNDY2YzY4
NTU2MGYwOTA3YmQ1ZTQ2NTE0ZTU5YTVkNGU3Li4wNmViNDFjYzE3NTA1Y2RhZmVmODljYjUwNTJh
YThhN2NiYzdkMjEzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDktMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IGhh
bmRsaW5nIHRvIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODEyCisgICAgICAgIDxyZGFyOi8vODM1MDQ4NDI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBQb3J0IENPT1Ag
QVBJIHRlc3RzIGZyb20gUFNPTlNjaGVtZUhhbmRsZXIgdG8gSFRUUFNlcnZlci4gVGhpcyB3YXMg
bmVjZXNzYXJ5IHNpbmNlIGN1c3RvbSBzY2hlbWUgaGFuZGxlcgorICAgICAgICBsb2FkcyBkbyBu
b3QgZ28gdmlhIHRoZSBuZXR3b3JrUHJvY2VzcyAoV2hlcmUgQ09PUCBoYW5kbGluZyBpcyBub3cg
aW1wbGVtZW50ZWQpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTk5hdmlnYXRpb25E
ZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bUFNPTlNjaGVtZSB3ZWJWaWV3OnN0YXJ0VVJMU2No
ZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoK
KwogMjAyMS0wOS0yOCAgR2V6YSBMb3JlICA8Z2V6YWxvcmVAZ21haWwuY29tPgogCiAgICAgICAg
IEZpeCByb3VuZGluZyBpc3N1ZSBpbiBydW4tanNjLXN0cmVzcy10ZXN0cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYzYzMzE2Nzg1ODUwNzNkZGViZGY0NDI2ZDIwM2RmYjFk
NTZiYjcyMi4uNDIwN2JlOGRhZDY0OWFjODQyOTliZGM4NWFkODRhOGQ3ZTM5ODI1OCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgpAQCAtMTQxLDYgKzE0MiwxMiBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IG5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gZGlkUwogICAg
IGRvbmUgPSB0cnVlOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
IF9OdWxsYWJsZSBjcmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9X
S19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50
aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRy
dXN0XSk7Cit9CisKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFy
dFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uCiB7CiAgICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWQgPSB0cnVlOwpAQCAtMjUw
LDE1ICsyNTcsMTIgQEAgQGludGVyZmFjZSBQU09OU2NoZW1lIDogTlNPYmplY3QgPFdLVVJMU2No
ZW1lSGFuZGxlcj4gewogICAgIGNvbnN0IGNoYXIqIF9ieXRlczsKICAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBfcmVkaXJlY3RzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNE
YXRhPj4gX2RhdGFNYXBwaW5nczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfY29vcFZh
bHVlczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfY29lcFZhbHVlczsKICAgICBIYXNo
U2V0PGlkIDxXS1VSTFNjaGVtZVRhc2s+PiBfcnVubmluZ1Rhc2tzOwogICAgIGJvb2wgX3Nob3Vs
ZFJlc3BvbmRBc3luY2hyb25vdXNseTsKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVz
Oihjb25zdCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihO
U1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5h
dGlvblVSTFN0cmluZzsKIC0gKHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5n
ICopdXJsU3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciopZGF0YTsKLS0gKHZvaWQpYWRkTWFwcGlu
Z0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5nIHRvRGF0YTooY29uc3QgY2hhciop
ZGF0YSB3aXRoQ09PUFZhbHVlOihjb25zdCBjaGFyKiljb29wVmFsdWUgd2l0aENPRVBWYWx1ZToo
Y29uc3QgY2hhciopY29lcFZhbHVlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gUFNPTlNjaGVt
ZQpAQCAtMjgwLDE1ICsyODQsNiBAQCAtICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihO
U1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGEKICAgICBfZGF0YU1h
cHBpbmdzLnNldCh1cmxTdHJpbmcsIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCop
ZGF0YSBsZW5ndGg6c3RybGVuKGRhdGEpIGZyZWVXaGVuRG9uZTpOT10pOwogfQogCi0tICh2b2lk
KWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNv
bnN0IGNoYXIqKWRhdGEgd2l0aENPT1BWYWx1ZTooY29uc3QgY2hhciopY29vcFZhbHVlIHdpdGhD
T0VQVmFsdWU6KGNvbnN0IGNoYXIqKWNvZXBWYWx1ZQotewotICAgIFtzZWxmIGFkZE1hcHBpbmdG
cm9tVVJMU3RyaW5nOnVybFN0cmluZyB0b0RhdGE6ZGF0YV07Ci0gICAgaWYgKGNvb3BWYWx1ZSkK
LSAgICAgICAgX2Nvb3BWYWx1ZXMuYWRkKHVybFN0cmluZywgY29vcFZhbHVlKTsKLSAgICBpZiAo
Y29lcFZhbHVlKQotICAgICAgICBfY29lcFZhbHVlcy5hZGQodXJsU3RyaW5nLCBjb2VwVmFsdWUp
OwotfQotCiAtICh2b2lkKXNldFNob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseTooQk9PTCl2YWx1
ZQogewogICAgIF9zaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHkgPSB2YWx1ZTsKQEAgLTMyMywx
NiArMzE4LDEwIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVS
TFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgICAgIFsoaWQ8V0tVUkxT
Y2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVz
cG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKICAgICB9CiAKLSAgICBkb0Fz
eW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoW3NlbGYsIGZpbmFsVVJMID0gcmV0YWluUHRyKGZpbmFs
VVJMKV0oaWQgPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgIGRvQXN5bmNocm9ub3VzbHlJ
Zk5lY2Vzc2FyeShbZmluYWxVUkwgPSByZXRhaW5QdHIoZmluYWxVUkwpXShpZCA8V0tVUkxTY2hl
bWVUYXNrPiB0YXNrKSB7CiAgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGhlYWRlckRpY3Rp
b25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICAgICAgW2hlYWRl
ckRpY3Rpb25hcnkgc2V0T2JqZWN0OkAidGV4dC9odG1sIiBmb3JLZXk6QCJDb250ZW50LVR5cGUi
XTsKICAgICAgICAgW2hlYWRlckRpY3Rpb25hcnkgc2V0T2JqZWN0OkAiMSIgZm9yS2V5OkAiQ29u
dGVudC1MZW5ndGgiXTsKLSAgICAgICAgYXV0byBjb29wVmFsdWUgPSBfY29vcFZhbHVlcy5nZXQo
W2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSk7Ci0gICAgICAgIGlmICghY29vcFZhbHVlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIFtoZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDooTlNTdHJpbmcg
Kiljb29wVmFsdWUgZm9yS2V5OkAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiXTsKLSAgICAg
ICAgYXV0byBjb2VwVmFsdWUgPSBfY29lcFZhbHVlcy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3Ry
aW5nXSk7Ci0gICAgICAgIGlmICghY29lcFZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFto
ZWFkZXJEaWN0aW9uYXJ5IHNldE9iamVjdDooTlNTdHJpbmcgKiljb2VwVmFsdWUgZm9yS2V5OkAi
Q3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSJdOwogCiAgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOmZpbmFsVVJM
LmdldCgpIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxk
czpoZWFkZXJEaWN0aW9uYXJ5XSk7CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpy
ZXNwb25zZS5nZXQoKV07CkBAIC03MTgyLDcgKzcxNzEsNyBAQCBURVNUKFdlYlByb2Nlc3NDYWNo
ZSwgQ2xlYXJXaGVuRW50ZXJpbmdDYWNoZSkKIHN0YXRpYyBjb25zdCBjaGFyKiB3aW5kb3dPcGVu
Q3Jvc3NPcmlnaW5DT09QVGVzdEJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCiA8c2NyaXB0Pgogd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIHcgPSB3aW5kb3cub3BlbigicHNvbjovL3d3
dy5hcHBsZS5jb20vcG9wdXAuaHRtbCIsICJmb28iKTsKKyAgICB3ID0gd2luZG93Lm9wZW4oImh0
dHBzOi8vbG9jYWxob3N0OjgxODEvcG9wdXAuaHRtbCIsICJmb28iKTsKIH0KIDwvc2NyaXB0Pgog
KVBTT05SRVNPVVJDRSI7CkBAIC03MTk5LDYgKzcxODgsNDIgQEAgZW51bSBjbGFzcyBJc1NhbWVP
cmlnaW4gOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBEb1NlcnZlclNpZGVSZWRpcmVj
dCA6IGJvb2wgeyBObywgWWVzIH07CiBzdGF0aWMgdm9pZCBydW5DT09QUHJvY2Vzc1N3YXBUZXN0
KGNvbnN0IGNoYXIqIHNvdXJjZUNPT1AsIGNvbnN0IGNoYXIqIHNvdXJjZUNPRVAsIGNvbnN0IGNo
YXIqIGRlc3RpbmF0aW9uQ09PUCwgY29uc3QgY2hhciogZGVzdGluYXRpb25DT0VQLCBJc1NhbWVP
cmlnaW4gaXNTYW1lT3JpZ2luLCBEb1NlcnZlclNpZGVSZWRpcmVjdCBkb1NlcnZlclNpZGVSZWRp
cmVjdCwgRXhwZWN0U3dhcCBleHBlY3RTd2FwKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOworCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gc291cmNlSGVhZGVyczsK
KyAgICBzb3VyY2VIZWFkZXJzLmFkZCgiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zKTsK
KyAgICBpZiAoc291cmNlQ09PUCkKKyAgICAgICAgc291cmNlSGVhZGVycy5hZGQoIkNyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5Il9zLCBTdHJpbmcoc291cmNlQ09PUCkpOworICAgIGlmIChzb3Vy
Y2VDT0VQKQorICAgICAgICBzb3VyY2VIZWFkZXJzLmFkZCgiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVy
LVBvbGljeSJfcywgU3RyaW5nKHNvdXJjZUNPRVApKTsKKyAgICBIVFRQUmVzcG9uc2Ugc291cmNl
UmVzcG9uc2UoV1RGTW92ZShzb3VyY2VIZWFkZXJzKSwgaXNTYW1lT3JpZ2luID09IElzU2FtZU9y
aWdpbjo6WWVzID8gd2luZG93T3BlblNhbWVPcmlnaW5DT09QVGVzdEJ5dGVzIDogd2luZG93T3Bl
bkNyb3NzT3JpZ2luQ09PUFRlc3RCeXRlcyk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBkZXN0aW5hdGlvbkhlYWRlcnM7CisgICAgZGVzdGluYXRpb25IZWFkZXJzLmFkZCgiQ29udGVu
dC1UeXBlIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICBpZiAoZGVzdGluYXRpb25DT09QKQorICAg
ICAgICBkZXN0aW5hdGlvbkhlYWRlcnMuYWRkKCJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJf
cywgU3RyaW5nKGRlc3RpbmF0aW9uQ09PUCkpOworICAgIGlmIChkZXN0aW5hdGlvbkNPRVApCisg
ICAgICAgIGRlc3RpbmF0aW9uSGVhZGVycy5hZGQoIkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xp
Y3kiX3MsIFN0cmluZyhkZXN0aW5hdGlvbkNPRVApKTsKKyAgICBIVFRQUmVzcG9uc2UgZGVzdGlu
YXRpb25SZXNwb25zZShXVEZNb3ZlKGRlc3RpbmF0aW9uSGVhZGVycyksICJwb3B1cCJfcyk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRUUFNlcnZlcj4gc2VydmVyOworICAgIGlmIChkb1NlcnZl
clNpZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7CisgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlZGlyZWN0SGVhZGVyczsKKyAgICAgICAgcmVkaXJlY3RI
ZWFkZXJzLmFkZCgibG9jYXRpb24iX3MsIGlzU2FtZU9yaWdpbiA9PSBJc1NhbWVPcmlnaW46Olll
cyA/ICJodHRwczovLzEyNy4wLjAuMTo4MTgxL3BvcHVwLWFmdGVyLXJlZGlyZWN0aW9uLmh0bWwi
X3MgOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODE4MS9wb3B1cC1hZnRlci1yZWRpcmVjdGlvbi5odG1s
Il9zKTsKKyAgICAgICAgSFRUUFJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UoMzAxLCBXVEZNb3Zl
KHJlZGlyZWN0SGVhZGVycykpOworCisgICAgICAgIHNlcnZlciA9IG1ha2VVbmlxdWU8SFRUUFNl
cnZlcj4oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25z
ZT4+IHsKKyAgICAgICAgICAgIHsgIi9tYWluLmh0bWwiLCBXVEZNb3ZlKHNvdXJjZVJlc3BvbnNl
KSB9LAorICAgICAgICAgICAgeyAiL3BvcHVwLmh0bWwiLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9u
c2UpIH0sCisgICAgICAgICAgICB7ICIvcG9wdXAtYWZ0ZXItcmVkaXJlY3Rpb24uaHRtbCIsIFdU
Rk1vdmUoZGVzdGluYXRpb25SZXNwb25zZSkgfQorICAgICAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDgxODEpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHNlcnZlciA9IG1ha2VVbmlxdWU8SFRUUFNlcnZlcj4oc3RkOjppbml0aWFsaXplcl9saXN0
PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHsKKyAgICAgICAgICAgIHsgIi9tYWlu
Lmh0bWwiLCBXVEZNb3ZlKHNvdXJjZVJlc3BvbnNlKSB9LAorICAgICAgICAgICAgeyAiL3BvcHVw
Lmh0bWwiLCBXVEZNb3ZlKGRlc3RpbmF0aW9uUmVzcG9uc2UpIH0KKyAgICAgICAgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA4MTgxKTsKKyAgICB9CisK
ICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAgICAgYm9vbCBzb3VyY2VTaG91bGRCZUNyb3NzT3JpZ2luSXNvbGF0ZWQgPSBz
b3VyY2VDT09QICYmICFzdHJjbXAoc291cmNlQ09PUCwgInNhbWUtb3JpZ2luIikgJiYgc291cmNl
Q09FUCAmJiAhc3RyY21wKHNvdXJjZUNPRVAsICJyZXF1aXJlLWNvcnAiKTsKQEAgLTcyMTUsMjQg
KzcyNDAsNiBAQCBzdGF0aWMgdm9pZCBydW5DT09QUHJvY2Vzc1N3YXBUZXN0KGNvbnN0IGNoYXIq
IHNvdXJjZUNPT1AsIGNvbnN0IGNoYXIqIHNvdXJjZUNPRQogICAgICAgICAgICAgW1t3ZWJWaWV3
Q29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRh
bEZlYXR1cmU6ZmVhdHVyZV07CiAgICAgfQogCi0gICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKLSAgICBpZiAoaXNTYW1lT3JpZ2luID09IElzU2Ft
ZU9yaWdpbjo6WWVzKSB7Ci0gICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5n
OkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5TYW1l
T3JpZ2luQ09PUFRlc3RCeXRlcyB3aXRoQ09PUFZhbHVlOnNvdXJjZUNPT1Agd2l0aENPRVBWYWx1
ZTpzb3VyY2VDT0VQXTsKLSAgICAgICAgaWYgKGRvU2VydmVyU2lkZVJlZGlyZWN0ID09IERvU2Vy
dmVyU2lkZVJlZGlyZWN0OjpZZXMpIHsKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0
RnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC5odG1sIiB0b1VSTFN0
cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIl07
Ci0gICAgICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93
d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIiB0b0RhdGE6InBvcHVwIiB3
aXRoQ09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUCB3aXRoQ09FUFZhbHVlOmRlc3RpbmF0aW9uQ09F
UF07Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21V
UkxTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1
cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlv
bkNPRVBdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJM
U3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09w
ZW5Dcm9zc09yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpzb3VyY2VDT09QIHdpdGhD
T0VQVmFsdWU6c291cmNlQ09FUF07Ci0gICAgICAgIGlmIChkb1NlcnZlclNpZGVSZWRpcmVjdCA9
PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7Ci0gICAgICAgICAgICBbaGFuZGxlciBhZGRS
ZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9wb3B1cC5odG1sIiB0
b1VSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0
bWwiXTsKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNv
bjovL3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXItcmVkaXJlY3QuaHRtbCIgdG9EYXRhOiJwb3B1
cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5hdGlv
bkNPRVBdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdG
cm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAuaHRtbCIgdG9EYXRhOiJw
b3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Agd2l0aENPRVBWYWx1ZTpkZXN0aW5h
dGlvbkNPRVBdOwotICAgIH0KLSAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04iXTsKLQogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKIApAQCAtNzI0OCw3ICs3MjU1LDcgQEAgc3Rh
dGljIHZvaWQgcnVuQ09PUFByb2Nlc3NTd2FwVGVzdChjb25zdCBjaGFyKiBzb3VyY2VDT09QLCBj
b25zdCBjaGFyKiBzb3VyY2VDT0UKICAgICBmYWlsZWQgPSBmYWxzZTsKICAgICBzZXJ2ZXJSZWRp
cmVjdGVkID0gZmFsc2U7CiAgICAgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxscyA9IDA7Ci0gICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07Cisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vMTI3LjAuMC4xOjgxODEvbWFpbi5odG1sIl1d
OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgK
aW5kZXggZjQ4MjYwZjE2NDUyYjMzNjM0NDRmMTI0ODE1OTEyMWU2NzVmY2NjYi4uYzU2NjE2Yjhm
ZDQ4NTk5MmYyMzQ3ZmE4ZTdhY2Q3NDhmNWI0MmExYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9IVFRQU2VydmVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ29ubmVjdGlvbjsKIHN0cnVj
dCBIVFRQUmVzcG9uc2U7CiAKIGNsYXNzIEhUVFBTZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSZXF1ZXN0RGF0YTsKICAgICBlbnVtIGNs
YXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMs
IEh0dHAyIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3MmFkNmRiZDI4ZDc1
ZDA5NTdjNzIzNTJkMWViMWU0N2Y0NjcwYWRlLi5kNjFhOGY2NGVhYWM5ZDdkOTExYzFiMzFlM2M1
OGFlMzIzMDdhNDM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0wOS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgaGFuZGxpbmcgdG8gdGhlIE5ldHdv
cmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzA4MTIKKyAgICAgICAgPHJkYXI6Ly84MzUwNDg0Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlYmFzZWxpbmUgYSBjb3VwbGUgb2YgV1BUIHRl
c3RzIGR1ZSB0byBzb21lIGV4dHJhIGxvZ2dpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5o
dHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dDoK
KwogMjAyMS0wOS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NTUyBDYXNjYWRlIExheWVyc10gSW1wb3J0IG1vcmUgV1BUIHRlc3RzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3Nz
LW9yaWdpbi1vcGVuZXItcG9saWN5L2Nvb3AtY29lcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4
dAppbmRleCA4NzkxNmM5NjgzZTFiZjg5MDI4MWY4NjlkYWNjZDIzYTE4Y2FiZThjLi4xNzZlMzE0
NWE3Nzg0YmJmZWI5M2Y2YzlkOGRmZjJhZWY5ZDg0ZjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5l
ci1wb2xpY3kvY29vcC1jb2VwLXNhbmRib3guaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4t
b3BlbmVyLXBvbGljeS9jb29wLWNvZXAtc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IE5hdmlnYXRpb24gd2FzIGJsb2NrZWQgYnkgQ3Jv
c3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kKK0NPTlNPTEUgTUVTU0FHRTogTmF2aWdhdGlvbiB3YXMg
YmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeQogCiBQQVNTIDxpZnJhbWUgc2Fu
ZGJveD0iYWxsb3ctcG9wdXBzIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iPiBTYW5k
Ym94ZWQgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgcG9wdXAgc2hvdWxkIHJlc3VsdCBpbiBh
IG5ldHdvcmsgZXJyb3IKIFBBU1MgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1wb3B1cHMgYWxsb3ct
c2NyaXB0cyI+IFNhbmRib3hlZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBwb3B1cCBzaG91
bGQgcmVzdWx0IGluIGEgbmV0d29yayBlcnJvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9s
aWN5L2Nvb3Atc2FuZGJveC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kv
Y29vcC1zYW5kYm94Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NzkxNmM5NjgzZTFiZjg5MDI4
MWY4NjlkYWNjZDIzYTE4Y2FiZThjLi4xNzZlMzE0NWE3Nzg0YmJmZWI5M2Y2YzlkOGRmZjJhZWY5
ZDg0ZjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1zYW5kYm94Lmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvY29vcC1zYW5kYm94Lmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogTmF2aWdhdGlv
biB3YXMgYmxvY2tlZCBieSBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeQorQ09OU09MRSBNRVNT
QUdFOiBOYXZpZ2F0aW9uIHdhcyBibG9ja2VkIGJ5IENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
CiAKIFBBU1MgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1wb3B1cHMgYWxsb3ctc2NyaXB0cyBhbGxv
dy1zYW1lLW9yaWdpbiI+IFNhbmRib3hlZCBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSBwb3B1
cCBzaG91bGQgcmVzdWx0IGluIGEgbmV0d29yayBlcnJvcgogUEFTUyA8aWZyYW1lIHNhbmRib3g9
ImFsbG93LXBvcHVwcyBhbGxvdy1zY3JpcHRzIj4gU2FuZGJveGVkIENyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5IHBvcHVwIHNob3VsZCByZXN1bHQgaW4gYSBuZXR3b3JrIGVycm9yCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>