<?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>207523</bug_id>
          
          <creation_ts>2020-02-10 17:08:55 -0800</creation_ts>
          <short_desc>Expose prevalent domains on a per-page basis</short_desc>
          <delta_ts>2020-02-19 09:11:10 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207944</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617211</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-10 17:08:55 -0800</bug_when>
    <thetext>There should be an API for prevalent domains on a per page basis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617212</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-10 17:09:16 -0800</bug_when>
    <thetext>rdar://problem/59270758</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617246</commentid>
    <comment_count>2</comment_count>
      <attachid>390332</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-10 18:13:27 -0800</bug_when>
    <thetext>Created attachment 390332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617390</commentid>
    <comment_count>3</comment_count>
      <attachid>390370</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-11 08:16:33 -0800</bug_when>
    <thetext>Created attachment 390370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617392</commentid>
    <comment_count>4</comment_count>
      <attachid>390370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-11 08:24:15 -0800</bug_when>
    <thetext>Comment on attachment 390370
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:302
&gt; +        updatePrevalentDomains(request.url());

For every sub-resource load, we may now send a NetworkProcessProxy::UpdatePrevalentDomains() to the UIProcess. Considering that there may be hundreds of sub-resources loads in a single page, many of them for the same registrable domain, this seems excessive.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:342
&gt; +    const auto domain = RegistrableDomain(url);

We usually don&apos;t use const locals in WebKit.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:413
&gt; +        completionHandler({ });

Shouldn&apos;t this be completionHandler(nil); ?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:417
&gt; +    auto webPageProxy = [webView _page];

auto*

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:419
&gt; +        completionHandler({ });

Shouldn&apos;t this be completionHandler(nil); ?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:436
&gt; +    auto webPageProxy = [webView _page];

auto*

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:521
&gt; +void NetworkProcessProxy::updatePrevalentDomains(WebPageProxyIdentifier pageID, RegistrableDomain domain)

RegistrableDomain&amp;&amp; since it is coming from IPC and you&apos;re moving it inside the implementation.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9859
&gt; +void WebPageProxy::updatePrevalentDomains(WebCore::RegistrableDomain&amp;&amp; domain)

WebCore:: is likely not needed.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1688
&gt; +    HashSet&lt;WebCore::RegistrableDomain&gt;&amp; prevalentDomains() { return m_prevalentDomains; }

should this be a const getter returning a const HashSet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617394</commentid>
    <comment_count>5</comment_count>
      <attachid>390370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-11 08:29:22 -0800</bug_when>
    <thetext>Comment on attachment 390370
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:419
&gt; +                domains.append(toWTFString(static_cast&lt;WKStringRef&gt;(item)));

You can use uncheckedAppend() since you called reserveInitialCapacity()

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:422
&gt; +        m_testRunner-&gt;callDidReceivePrevalentDomainsCallback(domains);

WTFMove(domains)

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2361
&gt; +    WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), messageName.get(), nullptr, nullptr);

No, this should not be a synchronous message. It should be an asynchronous one since you&apos;re taking a callback.

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2364
&gt; +void TestRunner::callDidReceivePrevalentDomainsCallback(Vector&lt;String&gt;&amp; domains)

Vector&lt;String&gt;&amp;&amp;

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2370
&gt; +    stringBuilder.appendLiteral(&quot;[&quot;);

append(&apos;[&apos;)

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2371
&gt; +    bool firstDomain = true;

Boolean variables need a prefix: isFirstDomain for e.g.

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:2381
&gt; +    stringBuilder.appendLiteral(&quot;]&quot;);

append(&apos;]&apos;)

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:938
&gt; +    if (WKStringIsEqualToUTF8CString(messageName, &quot;GetPrevalentDomains&quot;)) {

Should not be in didReceiveSynchronousMessage*(), use the async message version please.

&gt; Tools/WebKitTestRunner/TestInvocation.h:89
&gt; +    void didReceivePrevalentDomains(Vector&lt;String&gt;&amp; domains);

Vector&lt;String&gt;&amp;&amp;

&gt; Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:346
&gt; +        m_currentInvocation-&gt;didReceivePrevalentDomains(domains);

WTFMove(domains)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617395</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-11 08:31:35 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 390370 [details]
&gt; Patch
&gt; 

Thanks for the comments! I&apos;ll make these changes. 

&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390370&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:302
&gt; &gt; +        updatePrevalentDomains(request.url());
&gt; 
&gt; For every sub-resource load, we may now send a
&gt; NetworkProcessProxy::UpdatePrevalentDomains() to the UIProcess. Considering
&gt; that there may be hundreds of sub-resources loads in a single page, many of
&gt; them for the same registrable domain, this seems excessive.
&gt; 

Do you think a good solution is to batch in a HashSet and send every few seconds, like WebResourceLoadObserver?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617791</commentid>
    <comment_count>7</comment_count>
      <attachid>390472</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-11 17:43:54 -0800</bug_when>
    <thetext>Created attachment 390472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617793</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-11 17:46:24 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 390370 [details]
&gt; Patch
&gt; 

Thanks for the comments! 

(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 390370 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390370&amp;action=review
&gt; 

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:417
&gt; &gt; +    auto webPageProxy = [webView _page];
&gt; 
&gt; auto*
&gt; 

This one gave me a compiler error, but I addressed the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617794</commentid>
    <comment_count>9</comment_count>
      <attachid>390474</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-11 17:50:01 -0800</bug_when>
    <thetext>Created attachment 390474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618015</commentid>
    <comment_count>10</comment_count>
      <attachid>390524</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-12 08:11:33 -0800</bug_when>
    <thetext>Created attachment 390524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618020</commentid>
    <comment_count>11</comment_count>
      <attachid>390474</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 08:29:02 -0800</bug_when>
    <thetext>Comment on attachment 390474
Patch

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

This patch seems to completely ignore loads served by the memory cache and ping/beacon loads, which seems wrong? I think you likely want centralized logging in CachedResourceLoader::requestResource() which I believe is our bottleneck *before* the memory cache (Youenn can confirm if this would cover everything or not). I think it would cover everything.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:791
&gt; +void NetworkConnectionToWebProcess::checkForPrevalentSubresourceLoad(WebPageProxyIdentifier pageID, RegistrableDomain&amp;&amp; domain)

Please use webPageProxyID instead of pageID. We stopped using pageID now that we have 2 identifier types for pages (one for WebPageProxy and another for WebPage/Page).

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:797
&gt; +                    m_networkProcess-&gt;parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::UpdatePrevalentDomains(pageID, domain), 0);

You should be able to call send() on m_networkProcess directly since NetworkProcess class subclasses IPC::MessageSender.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:417
&gt; +    auto webPageProxy = [webView _page];

auto*, assuming it returns a raw pointer.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1151
&gt; +void NetworkProcessProxy::updatePrevalentDomains(WebKit::WebPageProxyIdentifier pageID, WebCore::RegistrableDomain&amp;&amp; domain)

WebKit:: is unnecessary. WebCore:: likely is too.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:53
&gt; +    UpdatePrevalentDomains(WebKit::WebPageProxyIdentifier pageIdentifier, WebCore::RegistrableDomain domain)

Shouldn&apos;t this be called AddPrevalentDomainForPage() ?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9860
&gt; +void WebPageProxy::updatePrevalentDomains(RegistrableDomain&amp;&amp; domain)

Seems like this should be named addPrevalentDomain().

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9868
&gt; +    send(Messages::WebPage::ClearLoadedSubDomains());

What&apos;s a SubDomain? I don&apos;t think this is a term we normally use in WebKit. We use registrable domain, domain or host. Here I assume you mean registrable domain.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1548
&gt; +    HashSet&lt;WebCore::RegistrableDomain&gt;&amp; prevalentDomains() { return m_prevalentDomains; }

As previously commented, this getter should likely be const and return a const HashSet&lt;&gt;&amp;.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:108
&gt;  void WebLoaderStrategy::loadResource(Frame&amp; frame, CachedResource&amp; resource, ResourceRequest&amp;&amp; request, const ResourceLoaderOptions&amp; options, CompletionHandler&lt;void(RefPtr&lt;SubresourceLoader&gt;&amp;&amp;)&gt;&amp;&amp; completionHandler)

How about ping loads (or beacons), do you intend to log those too? If so, you likely need to add logging to startPingLoad()

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:908
&gt; +    webPage-&gt;updateLoadedSubDomains(RegistrableDomain(request.url()));

This is not quite right, at this point we have not started to load the domain yet and the client may refuse to proceed with the load via the policy delegate. Odds are that you want to do this in didStartProvisionalLoad().
Also, you are again using an odd naming for this method. Seems to me it should be called something like addLoadedRegistrableDomain().

Also you should check but I believe decidePolicyForNavigationAction() / didStartProvisionalLoadForFrame() and WebLoaderStrategy::loadResource() are all called for main resources. Therefore, your code in WebLoaderStrategy::loadResource() may be sufficient. I believe WebLoaderStrategy::loadResource() is called for all async resource loads (main and sub resources). Not sure which domains you are attempting to log exactly (I assume all).

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6672
&gt; +    if (!m_loadedSubDomains.contains(domain)) {

You&apos;re doing a double hash lookup here, once in contains, and then again in add(). You should call add() and use the returned AddResult to check it is was new or not.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6674
&gt; +        WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::CheckForPrevalentSubresourceLoad(m_webPageProxyIdentifier, domain), 0);

You&apos;re calling this &quot;Check&quot; but it does not actually expect a response. Seems like you are &quot;Reporting&quot; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618021</commentid>
    <comment_count>12</comment_count>
      <attachid>390524</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 08:29:21 -0800</bug_when>
    <thetext>Comment on attachment 390524
Patch

See comments on previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618023</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-12 08:35:35 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; Comment on attachment 390474 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390474&amp;action=review
&gt; 
&gt; This patch seems to completely ignore loads served by the memory cache and
&gt; ping/beacon loads, which seems wrong? I think you likely want centralized
&gt; logging in CachedResourceLoader::requestResource() which I believe is our
&gt; bottleneck *before* the memory cache (Youenn can confirm if this would cover
&gt; everything or not). I think it would cover everything.
&gt; 

I think this covers cached loads. I say this because with the original patch logging domains in NetworkResourceLoader, the layout tests I added were failing because the iframe was in the memory cache and never made it to the Network Process. But here the tests run fine. I could be wrong though, Youenn should definitely confirm or deny.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618030</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 08:53:15 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #13)
&gt; (In reply to Chris Dumez from comment #11)
&gt; &gt; Comment on attachment 390474 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=390474&amp;action=review
&gt; &gt; 
&gt; &gt; This patch seems to completely ignore loads served by the memory cache and
&gt; &gt; ping/beacon loads, which seems wrong? I think you likely want centralized
&gt; &gt; logging in CachedResourceLoader::requestResource() which I believe is our
&gt; &gt; bottleneck *before* the memory cache (Youenn can confirm if this would cover
&gt; &gt; everything or not). I think it would cover everything.
&gt; &gt; 
&gt; 
&gt; I think this covers cached loads. I say this because with the original patch
&gt; logging domains in NetworkResourceLoader, the layout tests I added were
&gt; failing because the iframe was in the memory cache and never made it to the
&gt; Network Process. But here the tests run fine. I could be wrong though,
&gt; Youenn should definitely confirm or deny.


You are NOT covering *memory* cache loads. The only improvement in your new patch is that you are now covering *disk* cache loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618034</commentid>
    <comment_count>15</comment_count>
      <attachid>390524</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-12 09:07:11 -0800</bug_when>
    <thetext>Comment on attachment 390524
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:112
&gt; +    auto* webPage = webFrame ? webFrame-&gt;page() : nullptr;

Ping/beacon loads nowadays should go through this code path.
This is indeed missing all loads that are served by MemoryCache (content served directly by an existing CachedResource).
CachedResourceLoader::requestResource is the place for all loads.

At the same time, if it is in the memory cache, we should have already queried network process to know whether that is a prevalent resource.
I guess we might miss the case where a cached resource, not prevalent at the time, is becoming prevalent after this load.
Not sure whether this has an impact here.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6670
&gt; +void WebPage::updateLoadedSubDomains(WebCore::RegistrableDomain domain)

s/WebCore::RegistrableDomain/RegistrableDomain&amp;&amp;/ or const&amp;

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6674
&gt; +        WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::CheckForPrevalentSubresourceLoad(m_webPageProxyIdentifier, domain), 0);

We will send two IPC messages for every request (at least those that are not prevalent).
If we do not need to check for cached resources, maybe we could just send the regular request and add an option to the regular request to query the prevalent load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618057</commentid>
    <comment_count>16</comment_count>
      <attachid>390524</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 09:41:50 -0800</bug_when>
    <thetext>Comment on attachment 390524
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9867
&gt; +    m_prevalentDomains.clear();

Shouldn&apos;t we clear these when the page commits a new main frame load (i.e. the user navigated away)?

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:112
&gt;&gt; +    auto* webPage = webFrame ? webFrame-&gt;page() : nullptr;
&gt; 
&gt; Ping/beacon loads nowadays should go through this code path.
&gt; This is indeed missing all loads that are served by MemoryCache (content served directly by an existing CachedResource).
&gt; CachedResourceLoader::requestResource is the place for all loads.
&gt; 
&gt; At the same time, if it is in the memory cache, we should have already queried network process to know whether that is a prevalent resource.
&gt; I guess we might miss the case where a cached resource, not prevalent at the time, is becoming prevalent after this load.
&gt; Not sure whether this has an impact here.

I was referring to this branch in CachedResource::load():
if (m_options.keepAlive &amp;&amp; shouldUsePingLoad(type()) &amp;&amp; platformStrategies()-&gt;loaderStrategy()-&gt;usePingLoad()) {
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618058</commentid>
    <comment_count>17</comment_count>
      <attachid>390524</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-12 09:42:07 -0800</bug_when>
    <thetext>Comment on attachment 390524
Patch

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

&gt; Source/WebKit/ChangeLog:5
&gt; +        rdar://problem/59270758

Nit: &lt;rdar://problem/59270758&gt;

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:112
&gt;&gt; +    auto* webPage = webFrame ? webFrame-&gt;page() : nullptr;
&gt; 
&gt; Ping/beacon loads nowadays should go through this code path.
&gt; This is indeed missing all loads that are served by MemoryCache (content served directly by an existing CachedResource).
&gt; CachedResourceLoader::requestResource is the place for all loads.
&gt; 
&gt; At the same time, if it is in the memory cache, we should have already queried network process to know whether that is a prevalent resource.
&gt; I guess we might miss the case where a cached resource, not prevalent at the time, is becoming prevalent after this load.
&gt; Not sure whether this has an impact here.

I think we do want to capture information about prevalent resources that were requested from cached content, even though we would have taken corrective action. Ideally, a cold page load and a warm load from the cache would produce the same set of prevalent resources encountered. Of course, unclassified domains that later became classified would introduce some variance, but I think that is acceptable for this use case.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6674
&gt;&gt; +        WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::CheckForPrevalentSubresourceLoad(m_webPageProxyIdentifier, domain), 0);
&gt; 
&gt; We will send two IPC messages for every request (at least those that are not prevalent).
&gt; If we do not need to check for cached resources, maybe we could just send the regular request and add an option to the regular request to query the prevalent load.

Maybe we could collect these domains as the sub resource loads occur, then send one message when the page load completes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618075</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-12 10:04:11 -0800</bug_when>
    <thetext>I missed the fact that the hash set is for subdomains, not prevalent subdomains.
Might not be a big deal then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618139</commentid>
    <comment_count>19</comment_count>
      <attachid>390541</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-12 11:38:30 -0800</bug_when>
    <thetext>Created attachment 390541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618140</commentid>
    <comment_count>20</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-12 11:39:26 -0800</bug_when>
    <thetext>Thanks for the feedback everyone! This patch addresses all comments except for this one (from Chris):

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:417
&gt; +    auto webPageProxy = [webView _page];


auto*, assuming it returns a raw pointer.

I get error: variable &apos;webPageProxy&apos; with type &apos;auto *&apos; has incompatible initializer of type &apos;NakedPtr&lt;WebKit::WebPageProxy&gt;’</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618147</commentid>
    <comment_count>21</comment_count>
      <attachid>390542</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-12 11:55:38 -0800</bug_when>
    <thetext>Created attachment 390542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618179</commentid>
    <comment_count>22</comment_count>
      <attachid>390542</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 13:15:01 -0800</bug_when>
    <thetext>Comment on attachment 390542
Patch

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

This is much better but I am not sure I understand why we want to store these registrable domains in the UIProcess at all.

&gt; Source/WebCore/loader/FrameLoaderClient.h:37
&gt; +#include &quot;RegistrableDomain.h&quot;

Can be forward-declared instead.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:794
&gt; +    m_documentLoader-&gt;frameLoader()-&gt;client().addPrevalentDomain(RegistrableDomain(request.resourceRequest().url()));

Seems like you could get the frame loader like so:
frame-&gt;loader()

since you already have the frame. Seems more straightforward

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:791
&gt; +void NetworkConnectionToWebProcess::reportSubresourceLoad(WebPageProxyIdentifier webPageProxyID, RegistrableDomain&amp;&amp; domain)

I don&apos;t really like the name, seems too generic. Maybe something like reportSubresourceLoadToDomain()

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:65
&gt; +- (void)_getPrevalentDomainsFor:(WKWebView *)webView completionHandler:(void (^)(NSArray&lt;NSString *&gt; *domains))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Do we expect this to get called often? Given that this takes in a completion handler, another (simpler) approach would have been to keep the registrable domains on the WebPage (not the WebPageProxy) and then send an async IPC to the WebProcess to get the list of Registrable domains. This would avoid the awkward IPC from the NetworkProcess to the UIProcess to tell it to add a registrable domain for a WebPage for e.g. This would also simplify invalidation of registrable domains when necessary.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4529
&gt; +    if (frame-&gt;isMainFrame())

Can you reuse the if (frame-&gt;isMainFrame()) { block at line 4570.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:163
&gt; +    webPage-&gt;addLoadedRegistrableDomain(WTFMove(domain));

Something weird here: addPrevalentDomain() calls addLoadedRegistrableDomain() ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618285</commentid>
    <comment_count>23</comment_count>
      <attachid>390580</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-12 16:10:50 -0800</bug_when>
    <thetext>Created attachment 390580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618720</commentid>
    <comment_count>24</comment_count>
      <attachid>390580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 14:55:40 -0800</bug_when>
    <thetext>Comment on attachment 390580
Patch

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

Almost perfect, just a few more improvements.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:794
&gt; +    frame.loader().client().addLoadedRegistrableDomain(RegistrableDomain(request.resourceRequest().url()));

You may need something in CachedResource::redirectReceived() too to handle redirects. Please double check to Youenn where is the best place to add the addLoadedRegistrableDomain() for handling redirect cases.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:791
&gt; +void NetworkConnectionToWebProcess::isPrevalentSubresourceLoad(WebPageProxyIdentifier webPageProxyID, RegistrableDomain&amp;&amp; domain, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

webPageProxyID parameter is unused and should be dropped.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:801
&gt; +#endif

Please add a blank line after this one.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:423
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)

Why isn&apos;t this the first line of this method?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:424
&gt; +    webPageProxy-&gt;getPrevalentDomains([completionHandler = makeBlockPtr(completionHandler)] (HashSet&lt;WebCore::RegistrableDomain&gt; prevalentDomains) {

HashSet&lt;WebCore::RegistrableDomain&gt;&amp;&amp;

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:428
&gt; +            apiDomains.uncheckedAppend(API::String::create(domain.string()));

WTFMove(domain.string())

but you will need to add this to RegistrableDomain:
String&amp; string() { return m_registrableDomain; }

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:445
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)

Why isn&apos;t this the first line of this method?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4567
&gt; +        clearPrevalentDomains();

This is weird, it should be in the didCommitLoadForFrame() in the WebProcess instead, now that we don&apos;t store them in the UIProcess. It does unnecessary IPC otherwise.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:159
&gt; +    WebPage* webPage = m_frame-&gt;page();

auto*

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6593
&gt; +    clearPrevalentDomains();

Not needed anymore now that things are only stored in the WebProcess. You want this in didCommitLoadForFrame() when we are the main frame though (in WebProcess side).

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6673
&gt; +void WebPage::addLoadedRegistrableDomain(WebCore::RegistrableDomain&amp;&amp; domain)

I doubt WebCore:: is really needed.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6677
&gt; +        WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::IsPrevalentSubresourceLoad(m_webPageProxyIdentifier, domain), [this, protectedThis = makeRefPtr(*this), domain] (bool isPrevalent) {

m_webPageProxyIdentifier parameter is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618758</commentid>
    <comment_count>25</comment_count>
      <attachid>390580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 15:42:57 -0800</bug_when>
    <thetext>Comment on attachment 390580
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:427
&gt; +        for (auto&amp; domain : prevalentDomains)

Youenn speaking through my hands:
&quot;this should use WTF::map(prevalentDomains, [](auto&amp; domain) {
    return API::String::create(WTFMove(domain.string()))
});&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618792</commentid>
    <comment_count>26</comment_count>
      <attachid>390706</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-13 17:07:45 -0800</bug_when>
    <thetext>Created attachment 390706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618814</commentid>
    <comment_count>27</comment_count>
      <attachid>390706</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 17:56:17 -0800</bug_when>
    <thetext>Comment on attachment 390706
Patch

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

r=me with changes

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:794
&gt; +    frame.loader().client().addLoadedRegistrableDomain(RegistrableDomain(request.resourceRequest().url()));

I think this should be moved towards the end of the method to take into account content extensions/blockers for example (we may block the load or update the url). Probably by this line at the end:
 m_documentResources.set(resource-&gt;url(), resource);

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:426
&gt; +        apiDomains = WTF::map(prevalentDomains, [](auto&amp; domain) {

this can be on the previous line:
Vector&lt;RefPtr&lt;API::Object&gt;&gt; apiDomains = WTF::map();

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6678
&gt; +        WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::IsPrevalentSubresourceLoad(domain), [this, protectedThis = makeRefPtr(*this), domain] (bool isPrevalent) {

makeRef(), not makeRefPtr()

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6687
&gt; +    

nit: extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618829</commentid>
    <comment_count>28</comment_count>
      <attachid>390715</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-13 18:43:37 -0800</bug_when>
    <thetext>Created attachment 390715
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618830</commentid>
    <comment_count>29</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-13 18:44:05 -0800</bug_when>
    <thetext>Thanks Chris and Youenn!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618857</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-13 19:40:23 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 390715:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618858</commentid>
    <comment_count>31</comment_count>
      <attachid>390715</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-13 19:41:11 -0800</bug_when>
    <thetext>Comment on attachment 390715
Patch for landing

Clearing flags on attachment: 390715

Committed r256583: &lt;https://trac.webkit.org/changeset/256583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618859</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-13 19:41:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618860</commentid>
    <comment_count>33</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-13 19:42:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59448257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620695</commentid>
    <comment_count>34</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-02-19 09:11:10 -0800</bug_when>
    <thetext>The new test http/tests/resourceLoadStatistics/prevalent-domains-per-page-database.html

is a flaky timeout on iOS, tracking in https://bugs.webkit.org/show_bug.cgi?id=207944</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390332</attachid>
            <date>2020-02-10 18:13:27 -0800</date>
            <delta_ts>2020-02-11 08:16:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200210181326.patch</filename>
            <type>text/plain</type>
            <size>33664</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyNTM0ZGE1NWRiZDNmZGFi
NDExZjEzZjc3NGU5ZGNlNzI4MDBkZmMuLmM5MDBlYjhlZjgxMWI1OGQ4NjhlYmIyMDVhZTFmZDg1
MzA0NDBjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDItMTAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICByZGFyOi8vcHJvYmxlbS81
OTI3MDc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKworICAg
ICAgICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp1cGRhdGVQcmV2YWxlbnREb21haW5zKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgV2hlbmV2ZXIgYSBuZXcgbmV0d29yayBsb2FkIGlzIHN0YXJ0ZWQgZm9yIGEgc3VicmVzb3Vy
Y2Ugb3Igc3ViZnJhbWUsCisgICAgICAgIHRoaXMgY2hlY2tzIGlmIGl0cyBwcmV2YWxlbnQuIElm
IHNvLCBpdCBzZW5kcyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBXZWJQYWdlUHJv
eHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9y
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgX2NsZWFyUHJldmFsZW50RG9t
YWluc0ZvciBpcyBuZWVkZWQgdG8gcmVzZXQgc3RhdGUgYmV0d2VlbiB0ZXN0cy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJldmFsZW50
RG9tYWlucyk6CisKIDIwMjAtMDItMTAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbZ2VvbG9jYXRpb25dIEZpeCBub24tdW5pZmllZCBidWls
ZCBpc3N1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1ODZkOTBkYzM4NDE0OTc4N2VhMjM5Mjk4YjdhZDIw
ZTg5MGFjODA4Li42MzQxNGZkOGRjNTY4YzNmNzNjYzU4YWU4YTA3MzIwNjgyNTFhNjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0yOTcsNiArMjk3LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpyZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbChzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiAoaXNGaXJzdExvYWQ9JWQsIHRpbWVvdXQ9JWYpIiwgbG9h
ZCA9PSBGaXJzdExvYWQ6OlllcywgcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSk7CisgICAgCisg
ICAgaWYgKCFpc01haW5GcmFtZUxvYWQoKSkKKyAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWlu
cyhyZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7CiAg
ICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC0zMzMsNiArMzM3LDE1IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnROZXR3b3JrTG9hZDogR29pbmcgdG8gdGhlIG5ldHdvcmsgKGRlc2NyaXB0aW9uPSV7cHVibGlj
fXMpIiwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KIAor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZVByZXZhbGVudERvbWFpbnMoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgY29uc3QgYXV0byBkb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbih1
cmwpOworICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5pc1ByZXZhbGVudFJlc291
cmNlKHNlc3Npb25JRCgpLCBkb21haW4sIFt0aGlzLCBkb21haW5dIChib29sIGlzUHJldmFsZW50
KSB7CisgICAgICAgIGlmIChpc1ByZXZhbGVudCkKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVcGRhdGVQcmV2YWxlbnREb21haW5zKG1fcGFyYW1ldGVy
cy53ZWJQYWdlUHJveHlJRCwgZG9tYWluKSwgMCk7CisgICAgfSk7Cit9CisKIFJlc291cmNlTG9h
ZEluZm8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXNvdXJjZUxvYWRJbmZvKCkKIHsKICAgICBy
ZXR1cm4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggZTIzZGU5M2Y0YjNlZWIzZTViYWYzNzNiYTdlNDBiYWQ3YWE4
MzNhYy4uZGZiNzNmN2Y2N2Y4Mjc1ODY3OTk2NGNjNDAyZThlOGYzZWYxNjEzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CkBAIC0yMDEsNiArMjAxLDggQEAgcHJpdmF0ZToKIAogICAgIE9wdGlvbmFsPFNlY29uZHM+IHZh
bGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHZvaWQgdXBk
YXRlUHJldmFsZW50RG9tYWlucyhjb25zdCBVUkwmKTsKKyAgICAgICAgCiAgICAgUmVzb3VyY2VM
b2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7CiAKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4NjY3NTQyMTJk
ZGQ3ZmI4Mjg4YjZmNzIxOTI5ZmQyOTY2ZDM4YTg2Li44Nzg0ZjVlODBiMmRkN2M0Yjk0OWEyOWQx
ZTJhMjczYjkwZmVmZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQwNyw2ICs0MDcsMzkgQEAgc3Rh
dGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3Jk
cyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmFsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwogfQogCistICh2b2lkKV9nZXRQcmV2
YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB3ZWJQYWdlUHJveHkgPSBbd2ViVmll
dyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIHByZXZhbGVu
dERvbWFpbnMgPSB3ZWJQYWdlUHJveHktPnByZXZhbGVudERvbWFpbnMoKTsKKyAgICBWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKKyAgICBhcGlEb21haW5zLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocHJldmFsZW50RG9tYWlucy5zaXplKCkpOworICAgIGZvciAoYXV0byYg
ZG9tYWluIDogcHJldmFsZW50RG9tYWlucykKKyAgICAgICAgYXBpRG9tYWlucy51bmNoZWNrZWRB
cHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShkb21haW4uc3RyaW5nKCkpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURvbWFpbnMp
KSkpOworfQorCistICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcKK3sKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2ViUGFnZVByb3h5
KQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlUHJveHktPmNsZWFyUHJldmFsZW50RG9t
YWlucygpOworfQorCiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0
cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIXdlYlZpZXcp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDZlOTk2MTlkMjUwNThjZmY5Zjc4Mjhj
NTY5NTJiNGFmY2E0ZTJlMTYuLjdkM2ZkNWZkNjhjZDJjZGQ0MjAxNWI1YmFiYTFkYjk3OWY0ODE1
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykg
ewogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihu
dWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJh
Y2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7Cist
ICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1Jl
Z2lzdGVyZWRTZXJ2aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3Mo
MTIuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0YzhjMmViNGU0NzJhNDFjNTBhZjUwOGU1ZWVk
MzYyNjg0Zjk0YmE0Li5iN2JlNzUwZWI1ODdlOTBhYjI5ZmJmNzNiMmRjODVkOWMwNWI3NzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTUxOCw2ICs1MTgsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQYWdlUHJveHlJZGVudGlm
aWUKICAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXVEZNb3ZlKGxv
YWRJbmZvKSwgV1RGTW92ZShlcnJvcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbikKK3sKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBwYWdlLT51cGRhdGVQcmV2YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWluKSk7Cit9CisK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNTc4MThiNzdiNjI1YWZiNWFmYTllYWE0NGI0YWM3YzUyOWE2MDQ0
NS4uMjE5MjJhZmFhODc3YWQxZGEzZjkzMzdmOTE0NmIxZjBiMjMyZmNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTIxMiw2ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZUxvYWREaWRSZWNl
aXZlQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJik7CiAgICAgdm9pZCByZXNvdXJjZUxv
YWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2Fk
SW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgcmVzb3VyY2VM
b2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VM
b2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworICAgIHZvaWQgdXBkYXRlUHJl
dmFsZW50RG9tYWlucyhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbik7
CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4MzcxNjIwZTFl
NTNjNS4uMTY1ZGFmYTQ1OWE0ZTU3ZTBhYjFkYTg4ZWRkN2YzZmRhNGU1M2Q5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzUsNCArNzUsNSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFJlc291
cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNl
TG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkKICAg
ICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAg
UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAgVXBkYXRl
UHJldmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZiYTRhODJhZDFhMmQ0M2NmNjc4MTg2
MWIxMDlkNGVhNWNkNmY1YmMuLmFmNWUxMGFhZDI1ZGM4MjA1MGEyN2ZiNzBiMGJjMGJjNjRiYzhi
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTg1Niw2
ICs5ODU2LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2Fw
dHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlUHJldmFsZW50RG9tYWlucyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbikKK3sKKyAgICBtX3ByZXZhbGVudERvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworICAgIG1f
cHJldmFsZW50RG9tYWlucy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBiZDY1YjE4M2VkZThlMzhiODIzNDg0OGE2ZmFhM2NkMTI3MjI2ZDc4Li45MTVm
YTNhMWU5ZjFiYmI4ZjA3YmI2MmYyMjgwODljMGY4ZTRkOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTY4NSw2ICsxNjg1LDkgQEAgcHVibGljOgogICAgIHZv
aWQgZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKTsKICAgICB2b2lkIHJldm9rZUFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcygpOwogI2VuZGlmCisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4mIHByZXZhbGVudERvbWFpbnMoKSB7IHJldHVybiBtX3ByZXZhbGVudERvbWFpbnM7
IH0KKyAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKIAogcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKQEAgLTI3MTksNiArMjcyMiw3IEBAIHByaXZhdGU6CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE1vbm90b25pY1RpbWUg
bV9kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CisgICAgSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZTFkZTY5M2E1MjYzNGVhY2IxM2FhNWY0ZDI3Mjg1Y2E2M2VjMzFiOS4uNmZiM2NlYzgxNTZi
ZTRkNTRlMDkzOTQzMGFjOWIwNDBhNzE0Yjc3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAyLTEwICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBw
cmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vNTkyNzA3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBXZWJLaXRUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGlzIGZ1bmN0aW9uYWxp
dHkgY2FuIGJlIHRlc3RlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmdldFByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Y2xlYXJQcmV2YWxlbnREb21haW5zKToKKwogMjAyMC0wMi0xMCAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVzdWx0cy53ZWJraXQub3JnOiBBYnN0cmFj
dCBhcmNoaXZlIHN0b3JhZ2Ugc29sdXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCA5ZTUzYjViZTkyNjRmMjEzMDU5NmNiZWY3MGE5NDUxYWEzNTVlNGRlLi4zYmEyZjNkYzM3MjU4
ZDdlYmIwNTI1MGQ4MjhhZTJmN2E3OWNhNmQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTM0NCw2ICszNDQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNh
bGxiYWNrKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjaywgb3B0aW9uYWwgYm9vbGVhbiBvbmx5
T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxs
YmFjayk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAK
ICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4
dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggZmFlZGFmNTc0NWJiYzc4YjlkYjVjODc1N2RjNDg5ZjJmOWEwMmY5OC4uZGE5
YjYzZjk5YzQxNmQ4OWQ1ODczNGQxZTViNDhiOTNiMDNkZTc0NyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTQwNCw2ICs0MDQsMjQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90
ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2so
ZG9tYWlucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZVByZXZhbGVu
dERvbWFpbnMiKSkgeworICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgICAgICBBU1NF
UlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlHZXRUeXBlSUQoKSk7CisKKyAg
ICAgICAgV0tBcnJheVJlZiBkb21haW5zQXJyYXkgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPiht
ZXNzYWdlQm9keSk7CisgICAgICAgIGF1dG8gc2l6ZSA9IFdLQXJyYXlHZXRTaXplKGRvbWFpbnNB
cnJheSk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgICAgIGRvbWFpbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIFdLVHlwZVJlZiBpdGVtID0gV0tBcnJheUdl
dEl0ZW1BdEluZGV4KGRvbWFpbnNBcnJheSwgaSk7CisgICAgICAgICAgICBpZiAoaXRlbSAmJiBX
S0dldFR5cGVJRChpdGVtKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgICAg
IGRvbWFpbnMuYXBwZW5kKHRvV1RGU3RyaW5nKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihpdGVt
KSkpOworICAgICAgICB9CisKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZVBy
ZXZhbGVudERvbWFpbnNDYWxsYmFjayhkb21haW5zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2Fs
bERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpIHsKICAgICAgICAgbV90
ZXN0UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDVlNzU5YWI2NzBlMTQxNWJjZmYwYjEzODZlNjU0NDA4ZTkxYWIzMGMuLjFk
Y2IyMTYwZWQwYWE4NGQwNjBjYzJmMjZmZTYzOTQ5ZDI5NmI4MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzU0
LDYgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzQ2FsbGJhY2tJRCwKKyAgICBHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwKICAgICBE
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELAogICAgIEdldEFwcGxpY2F0
aW9uTWFuaWZlc3RDYWxsYmFja0lELAogICAgIFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxi
YWNrSUQsCkBAIC0yMzUyLDYgKzIzNTMsMzggQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVj
ZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGQKICAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJ
RCwgMSwgJnJlc3VsdCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlu
cyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEdl
dFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFjayk7CisKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJHZXRQcmV2YWxlbnREb21haW5zIikpOworICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpj
YWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZG9t
YWlucykKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdl
dE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwor
ICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KG1haW5GcmFtZSk7CisKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbIik7CisgICAgYm9vbCBmaXJzdERvbWFpbiA9
IHRydWU7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKSB7CisgICAgICAgIGlmIChm
aXJzdERvbWFpbikKKyAgICAgICAgICAgIGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiIpOworICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChkb21haW4pOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IlwiIik7CisgICAgfQorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXSIpOworCisg
ICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKGNvbnRleHQs
IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7Cit9CisKIHZvaWQg
VGVzdFJ1bm5lcjo6YWRkTW9ja01lZGlhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJZCwg
SlNTdHJpbmdSZWYgbGFiZWwsIGNvbnN0IGNoYXIqIHR5cGUpCiB7CiAgICAgVmVjdG9yPFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggOTU1ZGQwZjcxZmIzZDk1OTUwODVk
MDU2YjQ5OGY3NzY0M2Y5YWFmNC4uMjU3YzAxMDk4MmM3OGU4NWFkMDk4N2FlMzhkNGRhMGNkZTg3
MmI1OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKQEAgLTQ0OCw2ICs0NDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2soKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lz
dGVudFN0YXRlQ2FsbGJhY2soKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1
ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnND
YWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAKICAgICAvLyBJbmplY3RlZCBidW5k
bGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4dERpZENoYW5nZUluVGV4dEZpZWxk
Q2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGUxMGVmMzMzMTkwYWI3MTc2NTMwOGQzYTZiYTAzNDI4MGIw
N2MzYmMuLjgyY2I2NTY0N2MxY2VhMWI0YjZhOTg1YTk5MGViZDVmM2JjMGIwZGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMTEwLDYgKzExMTAsNyBA
QCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
KHRydWUpOwogCiAgICAgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICBj
bGVhclByZXZhbGVudERvbWFpbnMoKTsKICAgICAKICAgICBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlv
bigpOwogCkBAIC0zMTE0LDYgKzMxMTUsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQ
cmV2YWxlbnREb21haW5zKCkKK3sKK30KKwogI2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2tDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAppbmRleCBmYTYwODgyYmUxZjU3MDIzNGIzMjk2MmNhOWVjYzBjOGU2
NmQxNzI5Li40ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1YTFiMWY5OTRjIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNTgsNiArMjU4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAg
IHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKKyAgICB2b2lkIGdldFByZXZhbGVu
dERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlucygpOwogCiAgICAgV0tB
cnJheVJlZiBvcGVuUGFuZWxGaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmls
ZVVSTHMuZ2V0KCk7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYg
ZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVVUkxzOyB9CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGZkNWYyZTllZWYzOGNlNWMyNTU0
M2IyZGQ2NjI5ZjllMjZlN2RhMGQuLmVmNDZlNmRkOTIyODVkY2MxMmY1YWMwMTFlNjM1MWE5NTM1
MWFhMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC05
MzUsNiArOTM1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiR2V0UHJldmFsZW50RG9tYWlucyIpKSB7CisgICAgICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5nZXRQcmV2YWxlbnREb21haW5zKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUiKSkgewogICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoV0tCb29s
ZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQwLDYgKzE5NDUsMTcgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKK3sKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMiKSk7CisK
KyAgICBXS1JldGFpblB0cjxXS011dGFibGVBcnJheVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdL
KFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlu
cykKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZG9tYWluLnV0ZjgoKS5kYXRhKCkpKS5nZXQo
KSk7CisKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJlNTI2NjcxZTgzYjE0N2Q1MWNj
YmI2NzFjMjE3NGYyYi4uYTJlNzdlNTAwZGVlYzJiMzMxMGY4ODlkNDk1MjQ1MGViNjFlYWE1NSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODYsNiArODYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2
b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKIAog
ICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5k
ZXggM2Y5MzA0ZWE0ODAwYzAzZDE1YjRlMGU2M2RmYmVjZTcyMDM5ZmIyMy4uYjZhNDk2MDIzNTJm
ZGU2MTdhYzBhYjRkMDUwZmIzNGVhZmFhYzk5YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzMyLDYgKzMzMiwzMCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAg
fV07CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMoKQorewor
ICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOworICAgIGlmICghcGFyZW50Vmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndl
YnNpdGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZv
cm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFp
bnMpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKKyAgICAgICAgZG9tYWlucy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zRG9tYWlucy5jb3VudCk7CisgICAgICAgIGZvciAoTlNT
dHJpbmcgKmRvbWFpbiA6IG5zRG9tYWlucykKKyAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2Vk
QXBwZW5kKGRvbWFpbik7CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVQ
cmV2YWxlbnREb21haW5zKGRvbWFpbnMpOworICAgIH1dOworfQorCit2b2lkIFRlc3RDb250cm9s
bGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworICAgIGF1dG8qIHBhcmVudFZpZXcgPSBt
YWluV2ViVmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJl
dmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKV07Cit9CisKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogewog
ICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRX
aXRoU291cmNlOiB0b1dURlN0cmluZyhzY3JpcHQpIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGNmNmNiN2U4YmUwMjllN2Y0M2ExM2E2NmQwMmYzNzczZmRlNGMzZS4uN2IwNDcwNGFlZTQ1
OTFlMDI0N2VmZjVjNGU1YjQxMTUwYmMwOTczMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIw
LTAyLTEwICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAg
cmRhcjovL3Byb2JsZW0vNTkyNzA3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCAyIG5ldyB0ZXN0cyBmb3IgdGhlIHJlc291cmNlIGxvYWQg
c3RhdGlzdGljcyBkYXRhYmFzZSBhbmQKKyAgICAgICAgbWVtb3J5IHN0b3Jlcy4gQWRkZWQgYSBi
YXNpYyBpZnJhbWUgdGhhdCBib3RoIHRlc3RzIGNhbiB1c2UgdG8gdGVzdAorICAgICAgICBpZiBh
IHJlc291cmNlIGxvYWQgZnJvbSBhIHByZXZhbGVudCBkb21haW4gZ2V0cyByZXBvcnRlZCBwcm9w
ZXJseS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2
YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlu
cy1wZXItcGFnZS1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbDogQWRkZWQuCisK
IDIwMjAtMDItMTAgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgWyBtYWNPUyBdIGluc3BlY3Rvci9ydW50aW1lL2dldENvbGxlY3Rpb25FbnRyaWVzLmh0
bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2YzRkNzVlYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3
aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtl
ZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzJlNTBmOGRlMTYwYTE3Mjlm
YTRiMTBhMDdjMjQ5YzI3MmU4NGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
LWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3Jp
cHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBi
ZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLiIpOworICAgICAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4i
OworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21h
aW5zKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlucy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNbaV0gPT09ICJsb2NhbGhvc3QiKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRvbWFpbiB3
YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LiIpOworICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAgICAgICAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOworICAgICAgICAgICAgdmFy
IGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsK
KyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9m
ZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgs
IGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB9LAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
UHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBhc2tGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPT0gIiNlbGVtZW50
QWN0aXZhdGVkIikgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAi
ZWxlbWVudEFjdGl2YXRlZCI7CisgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KGlmcmFt
ZUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGhvc3RVbmRl
clRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0g
Imh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKKyAgICAgICAgCisgICAgICAgIHRlc3RSdW5uZXIu
c2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlz
dGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBn
ZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgICAgIGxldCBp
ZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAg
ICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICAgICAgICAg
IGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1lRnJvbVByZXZhbGVudERvbWFpbiI7CisgICAgICAg
ICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3Jh
Z2VBY2Nlc3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sJmR1bW15UGFyYW09IiArIE1hdGgu
cmFuZG9tKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJh
bWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBl
ci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2YzRkNzVlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
cmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9y
dGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYzRiNDU0MTgyMzA5ZDgwNjdmODQ0NWRkY2U0ZDJjZjVmNWIyZjU0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZh
bGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdl
LiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlGcmFtZUZy
b21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFpbnMoZnVu
Y3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhc3NlZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ld
ID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBw
cmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4i
KTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAg
ICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zm
c2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIu
YWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAg
ICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOworICAgICAgICAgICAgICAgIGFj
dGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29u
c3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7CisgICAgICAgIAor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwg
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25s
b2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gImlGcmFt
ZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3Jj
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9iYXNpYy1p
ZnJhbWUuaHRtbCZkdW1teVBhcmFtPSIgKyBNYXRoLnJhbmRvbSgpOworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NTVm
NGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3M2I0ZmJjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390370</attachid>
            <date>2020-02-11 08:16:33 -0800</date>
            <delta_ts>2020-02-11 17:43:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200211081633.patch</filename>
            <type>text/plain</type>
            <size>33739</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyNTM0ZGE1NWRiZDNmZGFi
NDExZjEzZjc3NGU5ZGNlNzI4MDBkZmMuLmEyOWIyNDg1MGUxYWQzMWJkMDFlNWUxNDNkMDU3MjBh
MDlkOGU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDItMTEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICByZGFyOi8vcHJvYmxlbS81
OTI3MDc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKworICAg
ICAgICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp1cGRhdGVQcmV2YWxlbnREb21haW5zKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgV2hlbmV2ZXIgYSBuZXcgbmV0d29yayBsb2FkIGlzIHN0YXJ0ZWQgZm9yIGEgc3VicmVzb3Vy
Y2Ugb3Igc3ViZnJhbWUsCisgICAgICAgIHRoaXMgY2hlY2tzIGlmIGl0cyBwcmV2YWxlbnQuIElm
IHNvLCBpdCBzZW5kcyB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBXZWJQYWdlUHJv
eHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9y
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgX2NsZWFyUHJldmFsZW50RG9t
YWluc0ZvciBpcyBuZWVkZWQgdG8gcmVzZXQgc3RhdGUgYmV0d2VlbiB0ZXN0cy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJldmFsZW50
RG9tYWlucyk6CisKIDIwMjAtMDItMTAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbZ2VvbG9jYXRpb25dIEZpeCBub24tdW5pZmllZCBidWls
ZCBpc3N1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1ODZkOTBkYzM4NDE0OTc4N2VhMjM5Mjk4YjdhZDIw
ZTg5MGFjODA4Li42MzQxNGZkOGRjNTY4YzNmNzNjYzU4YWU4YTA3MzIwNjgyNTFhNjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0yOTcsNiArMjk3LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpyZXRyaWV2ZUNhY2hlRW50cnlJbnRlcm5hbChzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiAoaXNGaXJzdExvYWQ9JWQsIHRpbWVvdXQ9JWYpIiwgbG9h
ZCA9PSBGaXJzdExvYWQ6OlllcywgcmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKSk7CisgICAgCisg
ICAgaWYgKCFpc01haW5GcmFtZUxvYWQoKSkKKyAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWlu
cyhyZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7CiAg
ICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC0zMzMsNiArMzM3LDE1IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnROZXR3b3JrTG9hZDogR29pbmcgdG8gdGhlIG5ldHdvcmsgKGRlc2NyaXB0aW9uPSV7cHVibGlj
fXMpIiwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KIAor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZVByZXZhbGVudERvbWFpbnMoY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgY29uc3QgYXV0byBkb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbih1
cmwpOworICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5pc1ByZXZhbGVudFJlc291
cmNlKHNlc3Npb25JRCgpLCBkb21haW4sIFt0aGlzLCBkb21haW5dIChib29sIGlzUHJldmFsZW50
KSB7CisgICAgICAgIGlmIChpc1ByZXZhbGVudCkKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVcGRhdGVQcmV2YWxlbnREb21haW5zKG1fcGFyYW1ldGVy
cy53ZWJQYWdlUHJveHlJRCwgZG9tYWluKSwgMCk7CisgICAgfSk7Cit9CisKIFJlc291cmNlTG9h
ZEluZm8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXNvdXJjZUxvYWRJbmZvKCkKIHsKICAgICBy
ZXR1cm4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggZTIzZGU5M2Y0YjNlZWIzZTViYWYzNzNiYTdlNDBiYWQ3YWE4
MzNhYy4uZGZiNzNmN2Y2N2Y4Mjc1ODY3OTk2NGNjNDAyZThlOGYzZWYxNjEzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CkBAIC0yMDEsNiArMjAxLDggQEAgcHJpdmF0ZToKIAogICAgIE9wdGlvbmFsPFNlY29uZHM+IHZh
bGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHZvaWQgdXBk
YXRlUHJldmFsZW50RG9tYWlucyhjb25zdCBVUkwmKTsKKyAgICAgICAgCiAgICAgUmVzb3VyY2VM
b2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7CiAKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4NjY3NTQyMTJk
ZGQ3ZmI4Mjg4YjZmNzIxOTI5ZmQyOTY2ZDM4YTg2Li44Nzg0ZjVlODBiMmRkN2M0Yjk0OWEyOWQx
ZTJhMjczYjkwZmVmZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQwNyw2ICs0MDcsMzkgQEAgc3Rh
dGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3Jk
cyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmFsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwogfQogCistICh2b2lkKV9nZXRQcmV2
YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB3ZWJQYWdlUHJveHkgPSBbd2ViVmll
dyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIHByZXZhbGVu
dERvbWFpbnMgPSB3ZWJQYWdlUHJveHktPnByZXZhbGVudERvbWFpbnMoKTsKKyAgICBWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKKyAgICBhcGlEb21haW5zLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocHJldmFsZW50RG9tYWlucy5zaXplKCkpOworICAgIGZvciAoYXV0byYg
ZG9tYWluIDogcHJldmFsZW50RG9tYWlucykKKyAgICAgICAgYXBpRG9tYWlucy51bmNoZWNrZWRB
cHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShkb21haW4uc3RyaW5nKCkpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURvbWFpbnMp
KSkpOworfQorCistICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcKK3sKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2ViUGFnZVByb3h5
KQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlUHJveHktPmNsZWFyUHJldmFsZW50RG9t
YWlucygpOworfQorCiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0
cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIXdlYlZpZXcp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDZlOTk2MTlkMjUwNThjZmY5Zjc4Mjhj
NTY5NTJiNGFmY2E0ZTJlMTYuLjdkM2ZkNWZkNjhjZDJjZGQ0MjAxNWI1YmFiYTFkYjk3OWY0ODE1
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykg
ewogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihu
dWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJh
Y2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7Cist
ICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1Jl
Z2lzdGVyZWRTZXJ2aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3Mo
MTIuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0YzhjMmViNGU0NzJhNDFjNTBhZjUwOGU1ZWVk
MzYyNjg0Zjk0YmE0Li5iN2JlNzUwZWI1ODdlOTBhYjI5ZmJmNzNiMmRjODVkOWMwNWI3NzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTUxOCw2ICs1MTgsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQYWdlUHJveHlJZGVudGlm
aWUKICAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXVEZNb3ZlKGxv
YWRJbmZvKSwgV1RGTW92ZShlcnJvcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbikKK3sKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBwYWdlLT51cGRhdGVQcmV2YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWluKSk7Cit9CisK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNTc4MThiNzdiNjI1YWZiNWFmYTllYWE0NGI0YWM3YzUyOWE2MDQ0
NS4uMjE5MjJhZmFhODc3YWQxZGEzZjkzMzdmOTE0NmIxZjBiMjMyZmNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTIxMiw2ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZUxvYWREaWRSZWNl
aXZlQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJik7CiAgICAgdm9pZCByZXNvdXJjZUxv
YWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2Fk
SW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgcmVzb3VyY2VM
b2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VM
b2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworICAgIHZvaWQgdXBkYXRlUHJl
dmFsZW50RG9tYWlucyhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbik7
CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4MzcxNjIwZTFl
NTNjNS4uMTY1ZGFmYTQ1OWE0ZTU3ZTBhYjFkYTg4ZWRkN2YzZmRhNGU1M2Q5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzUsNCArNzUsNSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFJlc291
cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNl
TG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkKICAg
ICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAg
UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisgICAgVXBkYXRl
UHJldmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZiYTRhODJhZDFhMmQ0M2NmNjc4MTg2
MWIxMDlkNGVhNWNkNmY1YmMuLmFmNWUxMGFhZDI1ZGM4MjA1MGEyN2ZiNzBiMGJjMGJjNjRiYzhi
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTg1Niw2
ICs5ODU2LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2Fw
dHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlUHJldmFsZW50RG9tYWlucyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbikKK3sKKyAgICBtX3ByZXZhbGVudERvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworICAgIG1f
cHJldmFsZW50RG9tYWlucy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBiZDY1YjE4M2VkZThlMzhiODIzNDg0OGE2ZmFhM2NkMTI3MjI2ZDc4Li4wZGQ5
YWY0NjYwY2Y1MjBkZmI4MjM4MmNhNTk2ZjhmMTE5MTdkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTY4NSw2ICsxNjg1LDkgQEAgcHVibGljOgogICAgIHZv
aWQgZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKTsKICAgICB2b2lkIHJldm9rZUFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcygpOwogI2VuZGlmCisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4mIHByZXZhbGVudERvbWFpbnMoKSB7IHJldHVybiBtX3ByZXZhbGVudERvbWFpbnM7
IH0KKyAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKIAogcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKQEAgLTI3MjAsNiArMjcyMyw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBNb25vdG9uaWNUaW1lIG1f
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yTWFpbkZyYW1lVGltZXN0YW1wOwogI2VuZGlmCisgICAg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTFkZTY5M2E1MjYzNGVhY2IxM2FhNWY0ZDI3Mjg1Y2E2
M2VjMzFiOS4uNWEzMzQ4NGI3OWE3YTg0YTNhNDVhOGViNThmODJiNTc5NzNkOTY4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTAyLTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIEV4cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTkyNzA3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXZWJLaXRUZXN0UnVubmVyIGZ1bmN0aW9u
cyBzbyB0aGlzIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIHRlc3RlZC4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlu
cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKToKKwogMjAyMC0wMi0x
MCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVzdWx0
cy53ZWJraXQub3JnOiBBYnN0cmFjdCBhcmNoaXZlIHN0b3JhZ2Ugc29sdXRpb25zCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAppbmRleCA5ZTUzYjViZTkyNjRmMjEzMDU5NmNiZWY3MGE5NDUxYWEz
NTVlNGRlLi4zYmEyZjNkYzM3MjU4ZDdlYmIwNTI1MGQ4MjhhZTJmN2E3OWNhNmQ2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0NCw2ICszNDQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9v
bGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjaywg
b3B0aW9uYWwgYm9vbGVhbiBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2xl
YW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5z
KG9iamVjdCBjYWxsYmFjayk7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQu
CiAgICAgdm9pZCBpbnN0YWxsVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0
IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZmFlZGFmNTc0NWJiYzc4YjlkYjVjODc1
N2RjNDg5ZjJmOWEwMmY5OC4uZGE5YjYzZjk5YzQxNmQ4OWQ1ODczNGQxZTViNDhiOTNiMDNkZTc0
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQwNCw2ICs0MDQsMjQgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzQ2FsbGJhY2soZG9tYWlucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJD
YWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMiKSkgeworICAgICAgICBBU1NFUlQobWVzc2Fn
ZUJvZHkpOworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJy
YXlHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgV0tBcnJheVJlZiBkb21haW5zQXJyYXkgPSBzdGF0
aWNfY2FzdDxXS0FycmF5UmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIGF1dG8gc2l6ZSA9IFdL
QXJyYXlHZXRTaXplKGRvbWFpbnNBcnJheSk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFp
bnM7CisgICAgICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIFdLVHlw
ZVJlZiBpdGVtID0gV0tBcnJheUdldEl0ZW1BdEluZGV4KGRvbWFpbnNBcnJheSwgaSk7CisgICAg
ICAgICAgICBpZiAoaXRlbSAmJiBXS0dldFR5cGVJRChpdGVtKSA9PSBXS1N0cmluZ0dldFR5cGVJ
RCgpKQorICAgICAgICAgICAgICAgIGRvbWFpbnMuYXBwZW5kKHRvV1RGU3RyaW5nKHN0YXRpY19j
YXN0PFdLU3RyaW5nUmVmPihpdGVtKSkpOworICAgICAgICB9CisKKyAgICAgICAgbV90ZXN0UnVu
bmVyLT5jYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhkb21haW5zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxi
YWNrIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDVlNzU5YWI2NzBlMTQxNWJjZmYwYjEz
ODZlNjU0NDA4ZTkxYWIzMGMuLjFkY2IyMTYwZWQwYWE4NGQwNjBjYzJmMjZmZTYzOTQ5ZDI5NmI4
MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcApAQCAtNzU0LDYgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NE
aWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0
aWNzRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAg
IEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwKKyAgICBHZXRQcmV2YWxlbnREb21h
aW5zQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFj
a0lELAogICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELAogICAgIFRleHREaWRD
aGFuZ2VJblRleHRGaWVsZENhbGxiYWNrSUQsCkBAIC0yMzUyLDYgKzIzNTMsMzggQEAgdm9pZCBU
ZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2so
VmVjdG9yPFN0cmluZz4mIGQKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6Z2V0UHJldmFsZW50RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hl
VGVzdFJ1bm5lckNhbGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFj
ayk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJHZXRQcmV2YWxlbnREb21haW5zIikpOwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFj
ayhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5G
cmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVG
cmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbIik7Cisg
ICAgYm9vbCBmaXJzdERvbWFpbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zKSB7CisgICAgICAgIGlmIChmaXJzdERvbWFpbikKKyAgICAgICAgICAgIGZpcnN0RG9tYWlu
ID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiIp
OworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChkb21haW4pOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiIik7CisgICAgfQorICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiXSIpOworCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZUZy
b21KU09OU3RyaW5nKGNvbnRleHQsIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAg
Y2FsbFRlc3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwgMSwg
JnJlc3VsdCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja01lZGlhRGV2aWNlKEpTU3Ry
aW5nUmVmIHBlcnNpc3RlbnRJZCwgSlNTdHJpbmdSZWYgbGFiZWwsIGNvbnN0IGNoYXIqIHR5cGUp
CiB7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXgg
OTU1ZGQwZjcxZmIzZDk1OTUwODVkMDU2YjQ5OGY3NzY0M2Y5YWFmNC4uMjU3YzAxMDk4MmM3OGU4
NWFkMDk4N2FlMzhkNGRhMGNkZTg3MmI1OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ0OCw2ICs0NDgsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGlj
c0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKKyAgICB2b2lkIGdldFBy
ZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVj
ZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAK
ICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4
dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUxMGVmMzMzMTkwYWI3
MTc2NTMwOGQzYTZiYTAzNDI4MGIwN2MzYmMuLjA1OTY1OGIzMTAyZTRmZWEzZTUzMDk3YThiNDRl
NmZhZTMzMDZlNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0xMTEwLDYgKzExMTAsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIHNldEFs
bG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwogCiAgICAgc3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGUoKTsKKyAgICBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKICAgICAKICAgICBj
bGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCkBAIC0zMTE0LDYgKzMxMTUsMTQgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogewogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwordm9pZCBUZXN0
Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwogI2VuZGlmCiAKIHN0
cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2tDb250ZXh0IHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmYTYwODgyYmUxZjU3MDIz
NGIzMjk2MmNhOWVjYzBjOGU2NmQxNzI5Li40ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1
YTFiMWY5OTRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0y
NTgsNiArMjU4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKKyAg
ICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9t
YWlucygpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxlVVJMcygpIGNvbnN0IHsgcmV0
dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZp
bGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVV
UkxzOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGZk
NWYyZTllZWYzOGNlNWMyNTU0M2IyZGQ2NjI5ZjllMjZlN2RhMGQuLmVmNDZlNmRkOTIyODVkY2Mx
MmY1YWMwMTFlNjM1MWE5NTM1MWFhMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC05MzUsNiArOTM1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4g
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiR2V0UHJldmFsZW50RG9tYWlucyIpKSB7Cisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nZXRQcmV2YWxlbnREb21haW5zKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUi
KSkgewogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QWxsb3dzQW55U1NM
Q2VydGlmaWNhdGUoV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPiht
ZXNzYWdlQm9keSkpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTQwLDYgKzE5NDUs
MTcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYg
ZG9tYWlucykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2ZVByZXZh
bGVudERvbWFpbnMiKSk7CisKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVBcnJheVJlZj4gbWVz
c2FnZUJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWlucykKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0obWVzc2FnZUJv
ZHkuZ2V0KCksIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZG9tYWluLnV0
ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2si
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJl
NTI2NjcxZTgzYjE0N2Q1MWNjYmI2NzFjMjE3NGYyYi4uYTJlNzdlNTAwZGVlYzJiMzMxMGY4ODlk
NDk1MjQ1MGViNjFlYWE1NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50
UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KaW5kZXggM2Y5MzA0ZWE0ODAwYzAzZDE1YjRlMGU2M2RmYmVjZTcyMDM5
ZmIyMy4uYjZhNDk2MDIzNTJmZGU2MTdhYzBhYjRkMDUwZmIzNGVhZmFhYzk5YyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpA
QCAtMzMyLDYgKzMzMiwzMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcygpCiAgICAgfV07CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFByZXZh
bGVudERvbWFpbnMoKQoreworICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwor
ICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6
cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5T
U3RyaW5nICo+ICpuc0RvbWFpbnMpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsK
KyAgICAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zRG9tYWlucy5jb3VudCk7
CisgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiA6IG5zRG9tYWlucykKKyAgICAgICAgICAg
IGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFpbik7CisgICAgICAgIG1fY3VycmVudEludm9j
YXRpb24tPmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKGRvbWFpbnMpOworICAgIH1dOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworICAgIGF1
dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZp
ZXcoKV07Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJp
bmdSZWYgc2NyaXB0KQogewogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJT
Y3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOiB0b1dURlN0cmluZyhzY3JpcHQpIGluamVjdGlv
blRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJh
bWVPbmx5Ok5PXSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGNmNmNiN2U4YmUwMjllN2Y0M2ExM2E2NmQwMmYzNzczZmRl
NGMzZS4uNzBlN2U3NmM3NDY3MWU5MGU5NWQ3YTM2NmQ4NzZlNzYyN2NjZTU5MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIwLTAyLTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1w
YWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc1MjMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNTkyNzA3NTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCAyIG5ldyB0ZXN0cyBmb3Ig
dGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBkYXRhYmFzZSBhbmQKKyAgICAgICAgbWVtb3J5
IHN0b3Jlcy4gQWRkZWQgYSBiYXNpYyBpZnJhbWUgdGhhdCBib3RoIHRlc3RzIGNhbiB1c2UgdG8g
dGVzdAorICAgICAgICBpZiBhIHJlc291cmNlIGxvYWQgZnJvbSBhIHByZXZhbGVudCBkb21haW4g
Z2V0cyByZXBvcnRlZCBwcm9wZXJseS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9iYXNpYy1pZnJh
bWUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDItMTAgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9m
ZkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBdIGluc3BlY3Rvci9ydW50aW1lL2dldENv
bGxlY3Rpb25FbnRyaWVzLmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5z
LXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFz
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRm
MDQ2YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEg
cHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlz
IHBhZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMg
c3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRh
dGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NzJlNTBmOGRlMTYwYTE3MjlmYTRiMTBhMDdjMjQ5YzI3MmU4NGI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVu
dC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZh
bGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdl
LiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlGcmFtZUZy
b21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFpbnMoZnVu
Y3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhc3NlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlucy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNbaV0g
PT09ICJsb2NhbGhvc3QiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHBy
ZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LiIp
OworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgeworICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50
Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZz
ZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBlci5h
Y3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeyB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAg
ICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
aGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgeworICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7CisgICAgICAgICAgICAgICAgYWN0
aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25z
dCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKKyAgICAgICAgCisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAg
ICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBydW5UZXN0
OworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1lRnJvbVByZXZhbGVu
dERvbWFpbiI7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sJmR1
bW15UGFyYW09IiArIE1hdGgucmFuZG9tKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2
YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRv
bWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5
IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzRiNDU0MTgyMzA5ZDgwNjdmODQ0NWRkY2U0ZDJj
ZjVmNWIyZjU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKQEAgLTAs
MCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBp
ZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxl
bnQgdW5kZXIgdGhpcyBwYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlm
cmFtZUlEID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBh
c2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFBy
ZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3Vj
Y2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkg
bWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVu
dChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5v
ZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2Vu
dGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOwor
ICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4
MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRl
clRlc3Q7CisgICAgICAgIAorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwp
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBh
cyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAg
IGlmcmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVF
bGVtZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAg
IGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNz
L3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCZkdW1teVBhcmFtPSIgKyBNYXRoLnJhbmRvbSgp
OworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVu
dCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2NTVmNGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3M2I0ZmJjNmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVz
b3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390472</attachid>
            <date>2020-02-11 17:43:54 -0800</date>
            <delta_ts>2020-02-11 17:50:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200211174353.patch</filename>
            <type>text/plain</type>
            <size>42568</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3OTQ1OTg4ZTFkZDg2ZjY3
MjJhMmNiMDQ1ZTdiOTdiNzQ2NjViMDYuLmM1NDdiMGYyNTJkOTUxOTBjNDk3ZWZiNGRmNGM3MzVi
ZDU0MWRjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDItMTEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICByZGFyOi8vcHJvYmxlbS81
OTI3MDc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKworICAg
ICAgICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLiBTdWJmcmFtZSBh
bmQgc3VicmVzb3VyY2UKKyAgICAgICAgbG9hZHMgYXJlIGxvZ2dlZCBpbiB0aGUgV2ViIFByb2Nl
c3MgdG8gaW5jbHVkZSBjYWNoZWQgbG9hZHMuIFRoZW4gdGhlCisgICAgICAgIE5ldHdvcmsgUHJv
Y2VzcyBpcyBxdWVyaWVkIHRvIGRldGVybWluZSBpZiB0aGUgcmVzb3VyY2VzIGFyZQorICAgICAg
ICBwcmV2YWxlbnQgYmVmb3JlIGZpbmFsbHkgYmVpbmcgcmVwb3J0ZWQgdG8gdGhlIFVJIFByb2Nl
c3MuCisKKyAgICAgICAgVGhlIFdlYlBhZ2Uga2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5
IGxvYWRlZCBkb21haW5zIHRvIGF2b2lkCisgICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVh
dCBkb21haW5zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjaGVja0ZvclByZXZhbGVudFN1YnJl
c291cmNlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9n
ZXRQcmV2YWxlbnREb21haW5zRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZXZhbGVu
dERvbWFpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlTG9hZGVkU3ViRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyTG9h
ZGVkU3ViRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAy
MC0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIERlcHJlY2F0ZSBfV0tVc2VyQ29udGVudFdvcmxkIHJlcGxhY2VkIGJ5IFdLQ29udGVu
dFdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkMzhlZGMx
Njc2ZmEzZDY4Njk2MmRjNzg2ZWFjYmQuLmJlZjE3MzNhNTljNjFlMTJiMWYyNWIzYjBmMzI4NjAx
OTYxZTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03ODcsOCArNzg3LDE5
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikp
OwogICAgIH0KIH0KLSNlbmRpZgogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjaGVja0ZvclByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgeworICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwYWdlSUQsIGRvbWFpbl0gKGJvb2wgaXNQcmV2YWxlbnQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNQcmV2YWxlbnQpCisgICAgICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlVwZGF0ZVByZXZhbGVudERvbWFpbnMocGFnZUlELCBkb21haW4pLCAwKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucykKIHsKICAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4
NTMyYjI2MWJiY2FjYTA1YjI5OWE1Zi4uM2YyNWMwMjI3OTgwNmI5MzM4NWFkNDYwYjFmNmQyNzdm
NWY5NjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgY2hl
Y2tGb3JQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVn
aXN0cmFibGVEb21haW4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTVlOGQ3NmIxMjgzZGQ3YjcyNDZiNjYwYjE4MTJh
Yy4uYTlhMDY5Zjg0YmNhNTU1ZWYwOTdjMjQyNDYwZDE3YjdkYmFiZDM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkg
LT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBDaGVj
a0ZvclByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKIAog
ICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0
cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDg2Njc1NDIxMmRk
ZDdmYjgyODhiNmY3MjE5MjlmZDI5NjZkMzhhODYuLjYxNTUzNWI2MGY5YWZiNTA0NmJiNjc5NWE5
NDFlMDdjZGU4Yjc1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDA3LDYgKzQwNyw0NiBAQCArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwog
fQogCistICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB3
ZWJQYWdlUHJveHkgPSBbd2ViVmlldyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYXV0byYgcHJldmFs
ZW50RG9tYWlucyA9IHdlYlBhZ2VQcm94eS0+cHJldmFsZW50RG9tYWlucygpOworICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zOworICAgIGFwaURvbWFpbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwcmV2YWxlbnREb21haW5zLnNpemUoKSk7CisgICAgZm9yIChhdXRv
JiBkb21haW4gOiBwcmV2YWxlbnREb21haW5zKQorICAgICAgICBhcGlEb21haW5zLnVuY2hlY2tl
ZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKGRvbWFpbi5zdHJpbmcoKSkpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlu
cykpKSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKwor
LSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7
CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHdlYlBhZ2VQ
cm94eSA9IFt3ZWJWaWV3IF9wYWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkKKyAgICAgICAg
cmV0dXJuOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB3ZWJQ
YWdlUHJveHktPmNsZWFyUHJldmFsZW50RG9tYWlucygpOworI2VuZGlmCit9CisKKwogLSAodm9p
ZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKCF3ZWJWaWV3KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAppbmRleCA2ZTk5NjE5ZDI1MDU4Y2ZmOWY3ODI4YzU2OTUyYjRhZmNhNGUyZTE2Li43
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKQEAgLTYyLDYgKzYyLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLSAodm9pZClfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tX
ZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICopKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOworLSAodm9pZClfZ2V0UHJldmFsZW50
RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAodm9pZClfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggNGM4YzJlYjRlNDcyYTQxYzUwYWY1MDhlNWVlZDM2MjY4NGY5NGJhNC4uYWJjY2I0
MDM1YmM3MjAwMjQ1MzUzMmU4NGVjODQ1NzA5YmM3MTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MTQ3LDYgKzExNDcsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXMKIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJl
dmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBhdXRvKiBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWdlLT51cGRhdGVQcmV2YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWlu
KSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZv
clRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1NzgxOGI3N2I2MjVhZmI1YWZhOWVhYTQ0YjRhYzdj
NTI5YTYwNDQ1Li4xMTU4YTJlOTI3MjA1N2JjYjcwZWVkYzNjM2E5ZTYwNzQ0OWRiMGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERv
d25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwogI2VuZGlmCiAgICAgCiAg
ICAgdm9pZCBzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4
MzcxNjIwZTFlNTNjNS4uMTY1ZGFmYTQ1OWE0ZTU3ZTBhYjFkYTg4ZWRkN2YzZmRhNGU1M2Q5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzUsNCArNzUsNSBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
ICAgIFJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZv
IHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxs
ZW5nZSkKICAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxv
YWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UpCiAgICAgUmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxv
YWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisg
ICAgVXBkYXRlUHJldmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1MjJlZjE2ZmVhZWIz
YThlYTNiMjhhYTM4NmM1YmY5YWZjOTg3ZWEuLjJlYWEzYjdjOTdiMjM4ODcwMTFiZDY4NTg5YmQ4
YWU2ZGZkMjEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtOTg1Niw2ICs5ODU2LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPcmllbnRhdGlvbkZv
ck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKICNlbmRpZgogfQogCisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVQ
cmV2YWxlbnREb21haW5zKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIG1fcHJl
dmFsZW50RG9tYWlucy5hZGQoV1RGTW92ZShkb21haW4pKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7CisgICAgbV9wcmV2YWxlbnREb21haW5zLmNs
ZWFyKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRTdWJEb21haW5z
KCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVSR0Vf
V0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE2
NzA4NTZkNzFlYTY4YzNmNWVlZmEwOGMwZTdjMWJmNTFmZTAyMDIuLmM5YjBhOTQwODgxODM0MzQ2
MTEwODU5OGI0ZWExMDYzMGEzMGExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xNTQ1LDYgKzE1NDUsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGRp
ZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNl
KCk7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIHByZXZhbGVudERv
bWFpbnMoKSB7IHJldHVybiBtX3ByZXZhbGVudERvbWFpbnM7IH0KKyAgICB2b2lkIHVwZGF0ZVBy
ZXZhbGVudERvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CisgICAgdm9pZCBj
bGVhclByZXZhbGVudERvbWFpbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklF
TlRBVElPTikKQEAgLTI3MjAsNiArMjcyMyw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE1vbm90b25pY1RpbWUgbV9kaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKaW5kZXggYzQ3Yjg3NjUzMzQyOGJjZDEwYzA1MDU5ZjE4M2M3NzU1ZmRkZjY0ZC4uZDcxNTVj
ZmM0MWQyNjk4ODhkMmExNDI1OTNmYTc0NmIzOTE4MDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3
LDYgKzEwNywxMyBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0cmF0ZWd5KCkKIAog
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBhdXRv
KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGll
bnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgYXV0
byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKKyAg
ICBpZiAod2ViUGFnZSkKKyAgICAgICAgd2ViUGFnZS0+dXBkYXRlTG9hZGVkU3ViRG9tYWlucyhS
ZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSk7CisgICAgCiAgICAgU3VicmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMs
IFt0aGlzLCByZWZlcnJlclBvbGljeSA9IG9wdGlvbnMucmVmZXJyZXJQb2xpY3ksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc291cmNlID0gQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KCZyZXNvdXJjZSksIGZyYW1lID0gbWFrZVJl
ZihmcmFtZSldIChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgqbG9hZGVyLCBy
ZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJy
ZXJXaGVuRG93bmdyYWRlKTsKQEAgLTU1Niw2ICs1NjMsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwg
dW5zaQogICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmlkZW50aWZpZXIoKSA6
IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZy
YW1lLT5mcmFtZUlEKCkgOiBGcmFtZUlkZW50aWZpZXIgeyB9OwogCisgICAgaWYgKHdlYlBhZ2Up
CisgICAgICAgIHdlYlBhZ2UtPnVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMoUmVnaXN0cmFibGVEb21h
aW4ocmVxdWVzdC51cmwoKSkpOworICAgIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2lu
Z1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQgPSBwYWdlSUQ7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFtZUlE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZjFiZDcxYTI0NTE3YzQ3OWEx
M2Y2ZDgyMDlmYzhlOWIxNDk1NGZhNi4uM2U4YTNmOGVhNGVhNzhkM2MwMjE0OGU3ZDdkYzBmZjMw
NzU1MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05MDUsNiArOTA1
LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKIAogICAgIExPRyhMb2FkaW5nLCAiV2ViUHJv
Y2VzcyAlaSAtIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiB0byByZXF1
ZXN0IHVybCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAorICAgIHdlYlBhZ2UtPnVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMo
UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkpOworCiAgICAgLy8gQWx3YXlzIGlnbm9y
ZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMuIAogICAgIGlmIChyZXF1ZXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgcmVxdWVzdElkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA1MDhiY2MxMDJlYmEwMDYyMDM2YmNkYzVlODA2NjNmNjAzNGZkMGUzLi41NWM4NDczZjM5ZGI1
MDZhMjc0ZDM0ZjI0YTc3MGZiYjc3YWZmODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjY2Niw2ICs2NjY2LDIwIEBAIHZvaWQgV2ViUGFn
ZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCiAKICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxl
bnRSZXNvdXJjZSgpOwogfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQoreworICAgIGlmICghbV9sb2FkZWRT
dWJEb21haW5zLmNvbnRhaW5zKGRvbWFpbikpIHsKKyAgICAgICAgbV9sb2FkZWRTdWJEb21haW5z
LmFkZChkb21haW4pOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNoZWNrRm9yUHJldmFsZW50U3VicmVzb3VyY2VMb2Fk
KG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciwgZG9tYWluKSwgMCk7CisgICAgfQorfQorCit2b2lk
IFdlYlBhZ2U6OmNsZWFyTG9hZGVkU3ViRG9tYWlucygpCit7CisgICAgbV9sb2FkZWRTdWJEb21h
aW5zLmNsZWFyKCk7Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmOThl
OTQ2NDc2ODJjYTczNGM2MDMwZWZmN2I4MmFmM2EzOWZjNzgyLi4yNjg5ZWIyMGVlMWM5YWY2MDg1
N2FkYmUwMDg0ZTYzNjY0ZGI1OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0xMTc2LDYgKzExNzYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQ
YWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluKSBjb25zdDsKICAgICB2b2lkIGFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNj
ZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKTsKICAgICB2b2lk
IHdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKKyAgICB2
b2lkIHVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4pOwor
ICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJEb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCkBAIC0yMDQ1LDYgKzIwNDcsNyBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0
aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9sb2FkZWRTdWJEb21haW5zOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9vdmVy
cmlkZGVuTWVkaWFUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYWI5N2IyYjkyNjA1OTkwN2NjZGNmOTljZGU5
ZTViZjNkMjdkN2E0OS4uYzM0MmQxMDJhNmIxMDI4NTE2OTU4ZmMxYzJiMjYzYTc1MWNlYTJjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC01ODIsNiArNTgyLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERh
dGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCisgICAgQ2xlYXJMb2FkZWRTdWJEb21h
aW5zKCkKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NzhkYTBlNjJjMjJiYWM5MDcx
YmI0OGY5MTg5MDAzMWQ5YzQwNTguLjg5MDFlNTMzNmYyYWNmN2E2MWUwYWUxNmQ5MWE3NTNiNDEy
ZjQ3MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNSBAQAorMjAyMC0wMi0xMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KKworICAgICAgICAgIEV4cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBh
IHBlci1wYWdlIGJhc2lzCisgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzUyMworICAgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU5MjcwNzU4CisKKyAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICBBZGRlZCBXZWJL
aXRUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGlzIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIHRlc3Rl
ZC4KKyAgICAgICAgIGNsZWFyUHJldmFsZW50RG9tYWlucyBzaG91bGQgYmUgY2FsbGVkIGJldHdl
ZW4gdGVzdHMgdG8gcmVzZXQgdGhlCisgICAgICAgICBzdGF0ZS4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOgorCiAyMDIwLTAyLTExICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLSFRUUENv
b2tpZVN0b3JlLl9nZXRDb29raWVzRm9yVVJMIFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
aW5kZXggMTYwYzJlOWYzYmE2NDc3NTk4YWE1MmNhMmM1YTc5MjgwODkzMjg2Ny4uYTdmZDIxZTRh
MGY4Nzc2NTMwMDNiNWE4YWUxNDhhNDY3ZDllMmE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCkBAIC0zNDQsNiArMzQ0LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xlYW4gdmFsdWUsIG9iamVj
dCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xlYW4g
b25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3Qg
Y2FsbGJhY2spOworICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhvYmplY3QgY2FsbGJhY2sp
OwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFs
bFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCmluZGV4IGZhZWRhZjU3NDViYmM3OGI5ZGI1Yzg3NTdkYzQ4OWYyZjlhMDJmOTgu
Ljk1OGE3OWJhNDM0OGE5NzkyMjgwM2VlMjM2MTkwYjUwMmZkZjNjMWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC00MDQsNiArNDA0LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVN
ZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAg
IG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxi
YWNrKGRvbWFpbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVQcmV2
YWxlbnREb21haW5zIikpIHsKKyAgICAgICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKKyAgICAgICAg
QVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5R2V0VHlwZUlEKCkpOwor
CisgICAgICAgIFdLQXJyYXlSZWYgZG9tYWluc0FycmF5ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJl
Zj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHNpemUgPSBXS0FycmF5R2V0U2l6ZShkb21h
aW5zQXJyYXkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOworICAgICAgICBkb21h
aW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBXS1R5cGVSZWYgaXRlbSA9IFdLQXJy
YXlHZXRJdGVtQXRJbmRleChkb21haW5zQXJyYXksIGkpOworICAgICAgICAgICAgaWYgKGl0ZW0g
JiYgV0tHZXRUeXBlSUQoaXRlbSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgICAg
ICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZCh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4oaXRlbSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2Fs
bERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAyNDU2OWM5OTMyMGYwMzJiZWIxMWM4
YTg4OTIzMmNjNzY1NTNkMDcyLi41MjFmNWU1NWQ2NjUzMDk5NDdmZjY0NTg4Mjg0NDA1MmExOWEz
NjVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw2ICs3NTQsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNz
RGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrSUQsCiAgICAgU3RhdGlz
dGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwKICAg
ICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCisgICAgR2V0UHJldmFsZW50RG9t
YWluc0NhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJh
Y2tJRCwKICAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwKICAgICBUZXh0RGlk
Q2hhbmdlSW5UZXh0RmllbGRDYWxsYmFja0lELApAQCAtMjM1Miw2ICsyMzUzLDM4IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNr
KFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhBbGxTdG9yYWdl
QWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCit2b2lkIFRlc3RSdW5u
ZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNo
ZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwgY2FsbGJh
Y2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFByZXZhbGVudERvbWFpbnMi
KSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5n
PiYmIGRvbWFpbnMpCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRs
ZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFn
ZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2Ny
aXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnWycpOworICAgIGJvb2wgaXNGaXJzdERv
bWFpbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKSB7CisgICAgICAg
IGlmIChpc0ZpcnN0RG9tYWluKQorICAgICAgICAgICAgaXNGaXJzdERvbWFpbiA9IGZhbHNlOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
Iik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIiKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJcIiIpOworICAgIH0KKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXScpOwor
ICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhj
b250ZXh0LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKworICAgIGNhbGxUZXN0UnVubmVy
Q2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworfQor
CiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0
ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQogewogICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGMzYzEwNDUzZTkzMjhl
YmNlODk1YjZhYTJmYWE4MWMxYWRmMmJhYTIuLjcyMjhiNWIzZGYyMWIzNTUxNjg0NGZhMTUxMjFm
YjgzMmU0ZTk0ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NDgsNiArNDQ4LDggQEAgcHVibGljOgogICAgIHZvaWQg
c3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxi
YWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVl
UmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5z
KEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgY2FsbERpZFJlY2VpdmVQcmV2YWxlbnRE
b21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAogICAgIC8vIEluamVj
dGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5U
ZXh0RmllbGRDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTEwZWYzMzMxOTBhYjcxNzY1MzA4ZDNhNmJh
MDM0MjgwYjA3YzNiYy4uMGU1NDFiN2M3Yzg2YTljN2E0NTIxNmI0M2QwMmU3ZmEwZGU5N2M5MyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTExMTAsNyAr
MTExMCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGUodHJ1ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgp
OwotICAgIAorICAgIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworCiAgICAgY2xlYXJBZENsaWNr
QXR0cmlidXRpb24oKTsKIAogICAgIG1fZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7CkBAIC0zMTE0LDYgKzMxMTUsMTQgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogewogfQogCit2b2lkIFRl
c3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwogI2VuZGlmCiAKIHN0cnVj
dCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2tDb250ZXh0IHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmYTYwODgyYmUxZjU3MDIzNGIz
Mjk2MmNhOWVjYzBjOGU2NmQxNzI5Li40ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1YTFi
MWY5OTRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNTgs
NiArMjU4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKKyAgICB2
b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlu
cygpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJu
IG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVV
UkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVVUkxz
OyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDI5Yjk5
ZjhjMjMyOGQ3NjI1ZmNiYWU2NWU4ODk3ZGY0MGNhMmJjY2EuLjgxYWZiNTI5ODQwZGIyZjM4MTQ3
ZDNmZGRlMTMwNmVmNmQyNzNhMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCkBAIC04MDcsNiArODA3LDExIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFByZXZhbGVudERvbWFpbnMiKSkgewor
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0UHJldmFsZW50RG9tYWlucygp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CkBAIC0xOTQyLDYgKzE5NDcsMTcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQogICAgIFdLUGFn
ZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0
KCkpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlu
cyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpOworICAgIAorICAgIFdLUmV0YWluUHRy
PFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlD
cmVhdGUoKSk7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQorICAgICAgICBXS0Fy
cmF5QXBwZW5kSXRlbShtZXNzYWdlQm9keS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKyAgICAKKyAgICBX
S1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJlNTI2NjcxZTgzYjE0N2Q1MWNjYmI2NzFjMjE3NGYy
Yi4uNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2ZiYTRjMTNlNiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldEhh
c0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQ
cmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CiAKICAgICB2b2lkIGRp
ZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDNmOTMwNGVh
NDgwMGMwM2QxNWI0ZTBlNjNkZmJlY2U3MjAzOWZiMjMuLmIzZjk1YjVmYmZlYWM3NTgxMmRlMTg2
NTI5Y2FjYWQ4NWZkN2QyNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTMzMiw2ICszMzIsMzAgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAgIH1dOwogfQogCit2
b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKKyAgICBhdXRvKiBw
YXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNEb21haW5zKSB7CisgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOworICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21h
aW4gOiBuc0RvbWFpbnMpCisgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZChkb21h
aW4pOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlUHJldmFsZW50RG9t
YWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9XTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFp
bldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZh
bGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOworfQorCiB2b2lkIFRl
c3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAg
ICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0
aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOT10pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGI2ZDhjOGJkYWI0MWQ2ODYwZjliZjQxZWRjODM1MjVmNDFmOGY0NGQuLjM1NTYxYWNmZDZlZGMw
MWE1NWY0NmFhMzg0NzIzYTgwYjljZmY0NWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0w
Mi0xMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBFeHBvc2UgcHJldmFsZW50IGRvbWFpbnMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIzCisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzU5MjcwNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgMiBuZXcgdGVzdHMgZm9yIHRoZSByZXNvdXJjZSBsb2FkIHN0
YXRpc3RpY3MgZGF0YWJhc2UgYW5kCisgICAgICAgIG1lbW9yeSBzdG9yZXMuIEFkZGVkIGEgYmFz
aWMgaWZyYW1lIHRoYXQgYm90aCB0ZXN0cyBjYW4gdXNlIHRvIHRlc3QKKyAgICAgICAgaWYgYSBy
ZXNvdXJjZSBsb2FkIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIGdldHMgcmVwb3J0ZWQgcHJvcGVy
bHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFs
ZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWw6IEFk
ZGVkLgorCiAyMDIwLTAyLTExICBKYWNvYiBVcGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFsgbWFjT1Mgd2syIF0gaHR0cC90ZXN0cy9JbmRleGVkREIvY29sbGVjdC1J
REItb2JqZWN0cy5odHRwcy5odG1sIGlzIGZsYWt5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlu
cy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJh
c2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTFhYmJlOTNhN2YwZDczNWI3M2IzNzI1NzE0
ZjA0NmM0ZDc1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBh
IHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhp
cyBwYWdlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBEb21haW4gd2Fz
IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1k
YXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODEyZWFlZTIzNDdlYjZlZWIwOTM0OGVhNTE1N2EwZjg5NmYwN2M5MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgaWZyYW1lIGZyb20gYSBwcmV2
YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJldmFsZW50IHVuZGVyIHRoaXMgcGFn
ZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24g
ZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlz
aEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBpZnJhbWVJRCA9ICJpRnJhbWVG
cm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgZnVuY3Rpb24gYXNrRm9yUHJldmFsZW50UmVz
b3VyY2VzKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRQcmV2YWxlbnREb21haW5zKGZ1
bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgICAgICAgICAgICAgIHZhciBwYXNzZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ld
ID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBw
cmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4i
KTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAg
ICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zm
c2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIu
YWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAg
ICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOworICAgICAgICAgICAgICAgIGFj
dGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29u
c3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7CisgICAgICAgIAor
ICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAg
ICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVz
dDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxl
bnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJh
bWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJh
bWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBl
ci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2YzRkNzVlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
cmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9y
dGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMThjNmZiYTcwN2E4MTg2NzVlYWE4YjNkMjEwNjkxZTc3MjYzZTNmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZh
bGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdl
LiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlGcmFtZUZy
b21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFpbnMoZnVu
Y3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhc3NlZCA9IGZh
bHNlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ld
ID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBw
cmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4i
KTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAg
ICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zm
c2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAgICAgVUlIZWxwZXIu
YWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAg
ICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOworICAgICAgICAgICAgICAgIGFj
dGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29u
c3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7CisgICAgICAgIAor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwg
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25s
b2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gImlGcmFt
ZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3Jj
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvYmFzaWMtaWZyYW1lLmh0bWwiOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNv
dXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2
NTVmNGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3M2I0ZmJjNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2Vz
L2Jhc2ljLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390474</attachid>
            <date>2020-02-11 17:50:01 -0800</date>
            <delta_ts>2020-02-12 11:38:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200211175000.patch</filename>
            <type>text/plain</type>
            <size>42808</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3OTQ1OTg4ZTFkZDg2ZjY3
MjJhMmNiMDQ1ZTdiOTdiNzQ2NjViMDYuLmM1NDdiMGYyNTJkOTUxOTBjNDk3ZWZiNGRmNGM3MzVi
ZDU0MWRjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDItMTEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICByZGFyOi8vcHJvYmxlbS81
OTI3MDc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKworICAg
ICAgICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLiBTdWJmcmFtZSBh
bmQgc3VicmVzb3VyY2UKKyAgICAgICAgbG9hZHMgYXJlIGxvZ2dlZCBpbiB0aGUgV2ViIFByb2Nl
c3MgdG8gaW5jbHVkZSBjYWNoZWQgbG9hZHMuIFRoZW4gdGhlCisgICAgICAgIE5ldHdvcmsgUHJv
Y2VzcyBpcyBxdWVyaWVkIHRvIGRldGVybWluZSBpZiB0aGUgcmVzb3VyY2VzIGFyZQorICAgICAg
ICBwcmV2YWxlbnQgYmVmb3JlIGZpbmFsbHkgYmVpbmcgcmVwb3J0ZWQgdG8gdGhlIFVJIFByb2Nl
c3MuCisKKyAgICAgICAgVGhlIFdlYlBhZ2Uga2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5
IGxvYWRlZCBkb21haW5zIHRvIGF2b2lkCisgICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVh
dCBkb21haW5zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjaGVja0ZvclByZXZhbGVudFN1YnJl
c291cmNlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9n
ZXRQcmV2YWxlbnREb21haW5zRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZXZhbGVu
dERvbWFpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlTG9hZGVkU3ViRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyTG9h
ZGVkU3ViRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAy
MC0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIERlcHJlY2F0ZSBfV0tVc2VyQ29udGVudFdvcmxkIHJlcGxhY2VkIGJ5IFdLQ29udGVu
dFdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkMzhlZGMx
Njc2ZmEzZDY4Njk2MmRjNzg2ZWFjYmQuLmJlZjE3MzNhNTljNjFlMTJiMWYyNWIzYjBmMzI4NjAx
OTYxZTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03ODcsOCArNzg3LDE5
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikp
OwogICAgIH0KIH0KLSNlbmRpZgogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjaGVja0ZvclByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgeworICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwYWdlSUQsIGRvbWFpbl0gKGJvb2wgaXNQcmV2YWxlbnQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNQcmV2YWxlbnQpCisgICAgICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlVwZGF0ZVByZXZhbGVudERvbWFpbnMocGFnZUlELCBkb21haW4pLCAwKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucykKIHsKICAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4
NTMyYjI2MWJiY2FjYTA1YjI5OWE1Zi4uM2YyNWMwMjI3OTgwNmI5MzM4NWFkNDYwYjFmNmQyNzdm
NWY5NjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgY2hl
Y2tGb3JQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVn
aXN0cmFibGVEb21haW4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTVlOGQ3NmIxMjgzZGQ3YjcyNDZiNjYwYjE4MTJh
Yy4uYTlhMDY5Zjg0YmNhNTU1ZWYwOTdjMjQyNDYwZDE3YjdkYmFiZDM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkg
LT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBDaGVj
a0ZvclByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKIAog
ICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0
cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDg2Njc1NDIxMmRk
ZDdmYjgyODhiNmY3MjE5MjlmZDI5NjZkMzhhODYuLjYxNTUzNWI2MGY5YWZiNTA0NmJiNjc5NWE5
NDFlMDdjZGU4Yjc1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDA3LDYgKzQwNyw0NiBAQCArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwog
fQogCistICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB3
ZWJQYWdlUHJveHkgPSBbd2ViVmlldyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYXV0byYgcHJldmFs
ZW50RG9tYWlucyA9IHdlYlBhZ2VQcm94eS0+cHJldmFsZW50RG9tYWlucygpOworICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zOworICAgIGFwaURvbWFpbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwcmV2YWxlbnREb21haW5zLnNpemUoKSk7CisgICAgZm9yIChhdXRv
JiBkb21haW4gOiBwcmV2YWxlbnREb21haW5zKQorICAgICAgICBhcGlEb21haW5zLnVuY2hlY2tl
ZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKGRvbWFpbi5zdHJpbmcoKSkpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlu
cykpKSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKwor
LSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7
CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHdlYlBhZ2VQ
cm94eSA9IFt3ZWJWaWV3IF9wYWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkKKyAgICAgICAg
cmV0dXJuOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB3ZWJQ
YWdlUHJveHktPmNsZWFyUHJldmFsZW50RG9tYWlucygpOworI2VuZGlmCit9CisKKwogLSAodm9p
ZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKCF3ZWJWaWV3KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAppbmRleCA2ZTk5NjE5ZDI1MDU4Y2ZmOWY3ODI4YzU2OTUyYjRhZmNhNGUyZTE2Li43
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKQEAgLTYyLDYgKzYyLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLSAodm9pZClfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tX
ZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICopKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOworLSAodm9pZClfZ2V0UHJldmFsZW50
RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAodm9pZClfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggNGM4YzJlYjRlNDcyYTQxYzUwYWY1MDhlNWVlZDM2MjY4NGY5NGJhNC4uYWJjY2I0
MDM1YmM3MjAwMjQ1MzUzMmU4NGVjODQ1NzA5YmM3MTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MTQ3LDYgKzExNDcsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXMKIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJl
dmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBhdXRvKiBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWdlLT51cGRhdGVQcmV2YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWlu
KSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZv
clRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1NzgxOGI3N2I2MjVhZmI1YWZhOWVhYTQ0YjRhYzdj
NTI5YTYwNDQ1Li4xMTU4YTJlOTI3MjA1N2JjYjcwZWVkYzNjM2E5ZTYwNzQ0OWRiMGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERv
d25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwogI2VuZGlmCiAgICAgCiAg
ICAgdm9pZCBzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4
MzcxNjIwZTFlNTNjNS4uMDFkMGRkYjJjYmI4ODBkOGQ0MDI5OTFjNWRiZTkyNzIwNjAzYWU0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTAsNiArNTAsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
ICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCiAg
ICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRj
aE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4g
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdE
YXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlEKQorICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRF
eHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1
MjJlZjE2ZmVhZWIzYThlYTNiMjhhYTM4NmM1YmY5YWZjOTg3ZWEuLjJlYWEzYjdjOTdiMjM4ODcw
MTFiZDY4NTg5YmQ4YWU2ZGZkMjEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtOTg1Niw2ICs5ODU2LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRP
cmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKICNlbmRpZgog
fQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQor
eworICAgIG1fcHJldmFsZW50RG9tYWlucy5hZGQoV1RGTW92ZShkb21haW4pKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7CisgICAgbV9wcmV2YWxl
bnREb21haW5zLmNsZWFyKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2Fk
ZWRTdWJEb21haW5zKCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGE2NzA4NTZkNzFlYTY4YzNmNWVlZmEwOGMwZTdjMWJmNTFmZTAyMDIuLmM5YjBh
OTQwODgxODM0MzQ2MTEwODU5OGI0ZWExMDYzMGEzMGExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTQ1LDYgKzE1NDUsOSBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZh
bGVudFJlc291cmNlKCk7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4m
IHByZXZhbGVudERvbWFpbnMoKSB7IHJldHVybiBtX3ByZXZhbGVudERvbWFpbnM7IH0KKyAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7
CisgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKQEAgLTI3MjAsNiArMjcyMyw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE1vbm90b25pY1RpbWUgbV9k
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CisgICAgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKaW5kZXggYzQ3Yjg3NjUzMzQyOGJjZDEwYzA1MDU5ZjE4M2M3NzU1ZmRk
ZjY0ZC4uZDcxNTVjZmM0MWQyNjk4ODhkMmExNDI1OTNmYTc0NmIzOTE4MDllNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcApAQCAtMTA3LDYgKzEwNywxMyBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0
cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBm
cmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGll
bnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJh
bWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxw
dHI7CisgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51
bGxwdHI7CisKKyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgd2ViUGFnZS0+dXBkYXRlTG9hZGVk
U3ViRG9tYWlucyhSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSk7CisgICAgCiAgICAg
U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIFdURk1vdmUocmVxdWVz
dCksIG9wdGlvbnMsIFt0aGlzLCByZWZlcnJlclBvbGljeSA9IG9wdGlvbnMucmVmZXJyZXJQb2xp
Y3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc291
cmNlID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KCZyZXNvdXJjZSksIGZy
YW1lID0gbWFrZVJlZihmcmFtZSldIChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVy
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9h
ZCgqbG9hZGVyLCByZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xp
Y3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKQEAgLTU1Niw2ICs1NjMsOSBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgdW5zaQogICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmlk
ZW50aWZpZXIoKSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiBGcmFtZUlkZW50aWZpZXIgeyB9OwogCisgICAg
aWYgKHdlYlBhZ2UpCisgICAgICAgIHdlYlBhZ2UtPnVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMoUmVn
aXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkpOworICAgIAogICAgIFdlYlJlc291cmNlTG9h
ZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQgPSBwYWdlSUQ7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQgPSBmcmFtZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZjFiZDcx
YTI0NTE3YzQ3OWExM2Y2ZDgyMDlmYzhlOWIxNDk1NGZhNi4uM2U4YTNmOGVhNGVhNzhkM2MwMjE0
OGU3ZDdkYzBmZjMwNzU1MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC05MDUsNiArOTA1LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKIAogICAgIExPRyhMb2Fk
aW5nLCAiV2ViUHJvY2VzcyAlaSAtIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbiB0byByZXF1ZXN0IHVybCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAorICAgIHdlYlBhZ2UtPnVwZGF0ZUxvYWRl
ZFN1YkRvbWFpbnMoUmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkpOworCiAgICAgLy8g
QWx3YXlzIGlnbm9yZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMuIAogICAgIGlmIChyZXF1ZXN0
LmlzRW1wdHkoKSkgewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgcmVx
dWVzdElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYmEwMDYyMDM2YmNkYzVlODA2NjNmNjAzNGZkMGUzLi41
NWM4NDczZjM5ZGI1MDZhMjc0ZDM0ZjI0YTc3MGZiYjc3YWZmODljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjY2Niw2ICs2NjY2LDIwIEBA
IHZvaWQgV2ViUGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZSgpCiAKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2FzTG9hZGVkV2l0aERhdGFUcmFuc2Zl
ckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwogfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUxvYWRl
ZFN1YkRvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQoreworICAgIGlm
ICghbV9sb2FkZWRTdWJEb21haW5zLmNvbnRhaW5zKGRvbWFpbikpIHsKKyAgICAgICAgbV9sb2Fk
ZWRTdWJEb21haW5zLmFkZChkb21haW4pOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNoZWNrRm9yUHJldmFsZW50U3Vi
cmVzb3VyY2VMb2FkKG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciwgZG9tYWluKSwgMCk7CisgICAg
fQorfQorCit2b2lkIFdlYlBhZ2U6OmNsZWFyTG9hZGVkU3ViRG9tYWlucygpCit7CisgICAgbV9s
b2FkZWRTdWJEb21haW5zLmNsZWFyKCk7Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBmOThlOTQ2NDc2ODJjYTczNGM2MDMwZWZmN2I4MmFmM2EzOWZjNzgyLi4yNjg5ZWIy
MGVlMWM5YWY2MDg1N2FkYmUwMDg0ZTYzNjY0ZGI1OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTc2LDYgKzExNzYsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlc291cmNlRG9tYWluKSBjb25zdDsKICAgICB2b2lkIGFkZERvbWFpbldpdGhQYWdlTGV2
ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZl
bERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
KTsKICAgICB2b2lkIHdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3Vy
Y2UoKTsKKyAgICB2b2lkIHVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4pOworICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJEb21haW5zKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC0yMDQ1LDYgKzIwNDcsNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
bV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaFNldDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gbV9sb2FkZWRTdWJEb21haW5zOwogI2VuZGlmCiAKICAgICBT
dHJpbmcgbV9vdmVycmlkZGVuTWVkaWFUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYWI5N2IyYjkyNjA1OTkw
N2NjZGNmOTljZGU5ZTViZjNkMjdkN2E0OS4uYzM0MmQxMDJhNmIxMDI4NTE2OTU4ZmMxYzJiMjYz
YTc1MWNlYTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODIsNiArNTgyLDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2Fz
TG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCisgICAgQ2xlYXJM
b2FkZWRTdWJEb21haW5zKCkKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NzhkYTBl
NjJjMjJiYWM5MDcxYmI0OGY5MTg5MDAzMWQ5YzQwNTguLjg5MDFlNTMzNmYyYWNmN2E2MWUwYWUx
NmQ5MWE3NTNiNDEyZjQ3MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wMi0xMSAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICAgIEV4cG9zZSBwcmV2YWxlbnQg
ZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU5
MjcwNzU4CisKKyAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICBBZGRlZCBXZWJLaXRUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGlzIGZ1bmN0aW9uYWxpdHkg
Y2FuIGJlIHRlc3RlZC4KKyAgICAgICAgIGNsZWFyUHJldmFsZW50RG9tYWlucyBzaG91bGQgYmUg
Y2FsbGVkIGJldHdlZW4gdGVzdHMgdG8gcmVzZXQgdGhlCisgICAgICAgICBzdGF0ZS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9t
YWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50
RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50
RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERv
bWFpbnMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5z
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOgorCiAyMDIwLTAyLTEx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIFdLSFRUUENvb2tpZVN0b3JlLl9nZXRDb29raWVzRm9yVVJMIFNQSQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKaW5kZXggMTYwYzJlOWYzYmE2NDc3NTk4YWE1MmNhMmM1YTc5MjgwODkzMjg2
Ny4uYTdmZDIxZTRhMGY4Nzc2NTMwMDNiNWE4YWUxNDhhNDY3ZDllMmE4YSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDQsNiArMzQ0LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIg
ewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xlYW4g
dmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9wdGlv
bmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFuIHZh
bHVlLCBvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhvYmpl
Y3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAg
IHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKG9iamVjdCBjYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGZhZWRhZjU3NDViYmM3OGI5ZGI1Yzg3NTdkYzQ4
OWYyZjlhMDJmOTguLjk1OGE3OWJhNDM0OGE5NzkyMjgwM2VlMjM2MTkwYjUwMmZkZjNjMWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC00MDQsNiArNDA0LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNz
RW50cmllc0NhbGxiYWNrKGRvbWFpbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERp
ZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpIHsKKyAgICAgICAgQVNTRVJUKG1lc3NhZ2VCb2R5
KTsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5R2V0
VHlwZUlEKCkpOworCisgICAgICAgIFdLQXJyYXlSZWYgZG9tYWluc0FycmF5ID0gc3RhdGljX2Nh
c3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHNpemUgPSBXS0FycmF5
R2V0U2l6ZShkb21haW5zQXJyYXkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOwor
ICAgICAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBXS1R5cGVSZWYg
aXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChkb21haW5zQXJyYXksIGkpOworICAgICAgICAg
ICAgaWYgKGl0ZW0gJiYgV0tHZXRUeXBlSUQoaXRlbSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkK
KyAgICAgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZCh0b1dURlN0cmluZyhzdGF0
aWNfY2FzdDxXS1N0cmluZ1JlZj4oaXRlbSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGVz
dFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soV1RGTW92ZShk
b21haW5zKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAyNDU2OWM5OTMy
MGYwMzJiZWIxMWM4YTg4OTIzMmNjNzY1NTNkMDcyLi41MjFmNWU1NWQ2NjUzMDk5NDdmZjY0NTg4
Mjg0NDA1MmExOWEzNjVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw2ICs3NTQsNyBAQCBlbnVtIHsKICAg
ICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrSUQs
CiAgICAgU3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2Fs
bGJhY2tJRCwKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCisgICAgR2V0
UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRl
bnRpYWxzQ2FsbGJhY2tJRCwKICAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwK
ICAgICBUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFja0lELApAQCAtMjM1Miw2ICsyMzUz
LDM4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCit2
b2lkIFRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjaykK
K3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJh
Y2tJRCwgY2FsbGJhY2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFByZXZh
bGVudERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhW
ZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJh
bWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJh
bWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAgIFN0cmluZ0J1aWxk
ZXIgc3RyaW5nQnVpbGRlcjsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnWycpOworICAgIGJv
b2wgaXNGaXJzdERvbWFpbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5z
KSB7CisgICAgICAgIGlmIChpc0ZpcnN0RG9tYWluKQorICAgICAgICAgICAgaXNGaXJzdERvbWFp
biA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIi
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiIpOworICAgIH0KKyAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnXScpOworICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9t
SlNPTlN0cmluZyhjb250ZXh0LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKworICAgIGNh
bGxUZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZy
ZXN1bHQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmlu
Z1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQog
ewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGMz
YzEwNDUzZTkzMjhlYmNlODk1YjZhYTJmYWE4MWMxYWRmMmJhYTIuLjcyMjhiNWIzZGYyMWIzNTUx
Njg0NGZhMTUxMjFmYjgzMmU0ZTk0ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NDgsNiArNDQ4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3ND
YWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CisgICAgdm9pZCBnZXRQcmV2
YWxlbnREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgY2FsbERpZFJlY2Vp
dmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAog
ICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0
RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTEwZWYzMzMxOTBhYjcx
NzY1MzA4ZDNhNmJhMDM0MjgwYjA3YzNiYy4uMGU1NDFiN2M3Yzg2YTljN2E0NTIxNmI0M2QwMmU3
ZmEwZGU5N2M5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
QEAgLTExMTAsNyArMTExMCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0QWxs
b3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZSgpOwotICAgIAorICAgIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworCiAgICAg
Y2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsKIAogICAgIG1fZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7CkBAIC0zMTE0LDYgKzMxMTUsMTQg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogewog
fQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwogI2Vu
ZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2tDb250
ZXh0IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmYTYwODgy
YmUxZjU3MDIzNGIzMjk2MmNhOWVjYzBjOGU2NmQxNzI5Li40ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0
MzcxZTI5NjM1YTFiMWY5OTRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCkBAIC0yNTgsNiArMjU4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFyUHJl
dmFsZW50RG9tYWlucygpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxlVVJMcygpIGNv
bnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2b2lkIHNldE9w
ZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxlVVJM
cyA9IGZpbGVVUkxzOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CmluZGV4IDI5Yjk5ZjhjMjMyOGQ3NjI1ZmNiYWU2NWU4ODk3ZGY0MGNhMmJjY2EuLjgxYWZiNTI5
ODQwZGIyZjM4MTQ3ZDNmZGRlMTMwNmVmNmQyNzNhMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC04MDcsNiArODA3LDExIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFByZXZhbGVudERv
bWFpbnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0UHJldmFs
ZW50RG9tYWlucygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CkBAIC0xOTQyLDYgKzE5NDcsMTcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
KQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVz
c2FnZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJl
dmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpOworICAgIAorICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tN
dXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQor
ICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShtZXNzYWdlQm9keS5nZXQoKSwgYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsK
KyAgICAKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJlNTI2NjcxZTgzYjE0N2Q1MWNj
YmI2NzFjMjE3NGYyYi4uNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2ZiYTRjMTNlNiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODYsNiArODYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2
b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CiAK
ICAgICB2b2lkIGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmlu
ZGV4IDNmOTMwNGVhNDgwMGMwM2QxNWI0ZTBlNjNkZmJlY2U3MjAzOWZiMjMuLmIzZjk1YjVmYmZl
YWM3NTgxMmRlMTg2NTI5Y2FjYWQ4NWZkN2QyNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTMzMiw2ICszMzIsMzAg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAg
IH1dOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sK
KyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRm
b3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNEb21h
aW5zKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgICAgIGRvbWFpbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOworICAgICAgICBmb3IgKE5T
U3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCisgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tl
ZEFwcGVuZChkb21haW4pOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZl
UHJldmFsZW50RG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9XTsKK30KKwordm9pZCBU
ZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKKyAgICBhdXRvKiBwYXJl
bnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOwor
fQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmIHNj
cmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFs
bG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBpbmplY3Rpb25UaW1lOldL
VXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpO
T10pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGI2ZDhjOGJkYWI0MWQ2ODYwZjliZjQxZWRjODM1MjVmNDFmOGY0NGQuLjM1
NTYxYWNmZDZlZGMwMWE1NWY0NmFhMzg0NzIzYTgwYjljZmY0NWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAyMC0wMi0xMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBFeHBvc2UgcHJldmFsZW50IGRvbWFpbnMgb24gYSBwZXItcGFnZSBiYXNp
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIz
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU5MjcwNzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgMiBuZXcgdGVzdHMgZm9yIHRoZSByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MgZGF0YWJhc2UgYW5kCisgICAgICAgIG1lbW9yeSBzdG9yZXMu
IEFkZGVkIGEgYmFzaWMgaWZyYW1lIHRoYXQgYm90aCB0ZXN0cyBjYW4gdXNlIHRvIHRlc3QKKyAg
ICAgICAgaWYgYSByZXNvdXJjZSBsb2FkIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIGdldHMgcmVw
b3J0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFs
ZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZy
YW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAyLTExICBKYWNvYiBVcGhvZmYgIDxqYWNvYl91cGhv
ZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mgd2syIF0gaHR0cC90ZXN0cy9JbmRleGVk
REIvY29sbGVjdC1JREItb2JqZWN0cy5odHRwcy5odG1sIGlzIGZsYWt5IGZhaWxpbmcKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2
YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVy
LXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTFhYmJlOTNhN2YwZDcz
NWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBh
Z2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgYSBp
ZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxl
bnQgdW5kZXIgdGhpcyBwYWdlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlu
cy1wZXItcGFnZS1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODEyZWFlZTIzNDdlYjZlZWIwOTM0OGVhNTE1N2EwZjg5NmYwN2M5MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEs
NzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgaWZyYW1l
IGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJldmFsZW50IHVu
ZGVyIHRoaXMgcGFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBpZnJhbWVJ
RCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgZnVuY3Rpb24gYXNrRm9y
UHJldmFsZW50UmVzb3VyY2VzKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRQcmV2YWxl
bnREb21haW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgICAgICAgICAgICAgIHZh
ciBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
YXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5
T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwYXNz
ZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1
bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2Vk
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVt
ZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRM
ZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOworICAgICAg
ICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsK
KyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7
CisgICAgICAgIAorICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOwor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwg
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25s
b2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0gImlGcmFt
ZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3Jj
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9iYXNpYy1pZnJhbWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVu
dC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2YzRkNzVl
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3
aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtl
ZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMThjNmZiYTcwN2E4MTg2NzVlYWE4YjNkMjEwNjkxZTc3MjYz
ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKQEAgLTAsMCArMSw3
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUg
ZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5k
ZXIgdGhpcyBwYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlE
ID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVu
dERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAgICAgdmFy
IHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy
YXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5
T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwYXNz
ZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1
bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2Vk
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVt
ZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRM
ZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2VudGVyWSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICAg
ICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7CisgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOworICAgICAg
ICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsK
KyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7
CisgICAgICAgIAorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3Rh
dGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2
YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFt
ZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50
LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFt
ZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvYmFzaWMtaWZyYW1lLmh0bWwiOworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI2NTVmNGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3M2I0ZmJjNmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390524</attachid>
            <date>2020-02-12 08:11:33 -0800</date>
            <delta_ts>2020-02-12 11:38:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200212081132.patch</filename>
            <type>text/plain</type>
            <size>42937</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3OTQ1OTg4ZTFkZDg2ZjY3
MjJhMmNiMDQ1ZTdiOTdiNzQ2NjViMDYuLmM1NDdiMGYyNTJkOTUxOTBjNDk3ZWZiNGRmNGM3MzVi
ZDU0MWRjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDItMTEgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICByZGFyOi8vcHJvYmxlbS81
OTI3MDc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKworICAg
ICAgICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLiBTdWJmcmFtZSBh
bmQgc3VicmVzb3VyY2UKKyAgICAgICAgbG9hZHMgYXJlIGxvZ2dlZCBpbiB0aGUgV2ViIFByb2Nl
c3MgdG8gaW5jbHVkZSBjYWNoZWQgbG9hZHMuIFRoZW4gdGhlCisgICAgICAgIE5ldHdvcmsgUHJv
Y2VzcyBpcyBxdWVyaWVkIHRvIGRldGVybWluZSBpZiB0aGUgcmVzb3VyY2VzIGFyZQorICAgICAg
ICBwcmV2YWxlbnQgYmVmb3JlIGZpbmFsbHkgYmVpbmcgcmVwb3J0ZWQgdG8gdGhlIFVJIFByb2Nl
c3MuCisKKyAgICAgICAgVGhlIFdlYlBhZ2Uga2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5
IGxvYWRlZCBkb21haW5zIHRvIGF2b2lkCisgICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVh
dCBkb21haW5zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjaGVja0ZvclByZXZhbGVudFN1YnJl
c291cmNlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9n
ZXRQcmV2YWxlbnREb21haW5zRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZXZhbGVu
dERvbWFpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlTG9hZGVkU3ViRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyTG9h
ZGVkU3ViRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAy
MC0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIERlcHJlY2F0ZSBfV0tVc2VyQ29udGVudFdvcmxkIHJlcGxhY2VkIGJ5IFdLQ29udGVu
dFdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkMzhlZGMx
Njc2ZmEzZDY4Njk2MmRjNzg2ZWFjYmQuLmJlZjE3MzNhNTljNjFlMTJiMWYyNWIzYjBmMzI4NjAx
OTYxZTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03ODcsOCArNzg3LDE5
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzKSwgb3BlbmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikp
OwogICAgIH0KIH0KLSNlbmRpZgogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjaGVja0ZvclByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgeworICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpIHsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwYWdlSUQsIGRvbWFpbl0gKGJvb2wgaXNQcmV2YWxlbnQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNQcmV2YWxlbnQpCisgICAgICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlVwZGF0ZVByZXZhbGVudERvbWFpbnMocGFnZUlELCBkb21haW4pLCAwKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucykKIHsKICAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwg
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4
NTMyYjI2MWJiY2FjYTA1YjI5OWE1Zi4uM2YyNWMwMjI3OTgwNmI5MzM4NWFkNDYwYjFmNmQyNzdm
NWY5NjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgY2hl
Y2tGb3JQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVn
aXN0cmFibGVEb21haW4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTVlOGQ3NmIxMjgzZGQ3YjcyNDZiNjYwYjE4MTJh
Yy4uYTlhMDY5Zjg0YmNhNTU1ZWYwOTdjMjQyNDYwZDE3YjdkYmFiZDM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkg
LT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBDaGVj
a0ZvclByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKIAog
ICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0
cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDg2Njc1NDIxMmRk
ZDdmYjgyODhiNmY3MjE5MjlmZDI5NjZkMzhhODYuLjYxNTUzNWI2MGY5YWZiNTA0NmJiNjc5NWE5
NDFlMDdjZGU4Yjc1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDA3LDYgKzQwNyw0NiBAQCArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwog
fQogCistICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB3
ZWJQYWdlUHJveHkgPSBbd2ViVmlldyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYXV0byYgcHJldmFs
ZW50RG9tYWlucyA9IHdlYlBhZ2VQcm94eS0+cHJldmFsZW50RG9tYWlucygpOworICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zOworICAgIGFwaURvbWFpbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwcmV2YWxlbnREb21haW5zLnNpemUoKSk7CisgICAgZm9yIChhdXRv
JiBkb21haW4gOiBwcmV2YWxlbnREb21haW5zKQorICAgICAgICBhcGlEb21haW5zLnVuY2hlY2tl
ZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKGRvbWFpbi5zdHJpbmcoKSkpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlu
cykpKSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKwor
LSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7
CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHdlYlBhZ2VQ
cm94eSA9IFt3ZWJWaWV3IF9wYWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkKKyAgICAgICAg
cmV0dXJuOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB3ZWJQ
YWdlUHJveHktPmNsZWFyUHJldmFsZW50RG9tYWlucygpOworI2VuZGlmCit9CisKKwogLSAodm9p
ZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKCF3ZWJWaWV3KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAppbmRleCA2ZTk5NjE5ZDI1MDU4Y2ZmOWY3ODI4YzU2OTUyYjRhZmNhNGUyZTE2Li43
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKQEAgLTYyLDYgKzYyLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLSAodm9pZClfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tX
ZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICopKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOworLSAodm9pZClfZ2V0UHJldmFsZW50
RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAodm9pZClfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggNGM4YzJlYjRlNDcyYTQxYzUwYWY1MDhlNWVlZDM2MjY4NGY5NGJhNC4uYWJjY2I0
MDM1YmM3MjAwMjQ1MzUzMmU4NGVjODQ1NzA5YmM3MTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MTQ3LDYgKzExNDcsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXMKIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJl
dmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBhdXRvKiBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWdlLT51cGRhdGVQcmV2YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWlu
KSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZv
clRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1NzgxOGI3N2I2MjVhZmI1YWZhOWVhYTQ0YjRhYzdj
NTI5YTYwNDQ1Li4xMTU4YTJlOTI3MjA1N2JjYjcwZWVkYzNjM2E5ZTYwNzQ0OWRiMGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERv
d25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWlucyhXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwogI2VuZGlmCiAgICAgCiAg
ICAgdm9pZCBzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4
MzcxNjIwZTFlNTNjNS4uMDFkMGRkYjJjYmI4ODBkOGQ0MDI5OTFjNWRiZTkyNzIwNjAzYWU0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTAsNiArNTAsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
ICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCiAg
ICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRj
aE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4g
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdE
YXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlEKQorICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRF
eHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1
MjJlZjE2ZmVhZWIzYThlYTNiMjhhYTM4NmM1YmY5YWZjOTg3ZWEuLjJlYWEzYjdjOTdiMjM4ODcw
MTFiZDY4NTg5YmQ4YWU2ZGZkMjEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtOTg1Niw2ICs5ODU2LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRP
cmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKICNlbmRpZgog
fQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVQcmV2YWxlbnREb21haW5zKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQor
eworICAgIG1fcHJldmFsZW50RG9tYWlucy5hZGQoV1RGTW92ZShkb21haW4pKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7CisgICAgbV9wcmV2YWxl
bnREb21haW5zLmNsZWFyKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2Fk
ZWRTdWJEb21haW5zKCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGE2NzA4NTZkNzFlYTY4YzNmNWVlZmEwOGMwZTdjMWJmNTFmZTAyMDIuLmM5YjBh
OTQwODgxODM0MzQ2MTEwODU5OGI0ZWExMDYzMGEzMGExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTQ1LDYgKzE1NDUsOSBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZh
bGVudFJlc291cmNlKCk7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4m
IHByZXZhbGVudERvbWFpbnMoKSB7IHJldHVybiBtX3ByZXZhbGVudERvbWFpbnM7IH0KKyAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7
CisgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKQEAgLTI3MjAsNiArMjcyMyw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE1vbm90b25pY1RpbWUgbV9k
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CisgICAgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKaW5kZXggYzQ3Yjg3NjUzMzQyOGJjZDEwYzA1MDU5ZjE4M2M3NzU1ZmRk
ZjY0ZC4uZTc5ZmU4NDY5OGE3MjY2YjFkZTU1ODhiOGFmOGJmOTAxNzlkODdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcApAQCAtMTA3LDYgKzEwNywxNSBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0
cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBm
cmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGll
bnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJh
bWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxw
dHI7CisgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51
bGxwdHI7CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICh3
ZWJQYWdlKQorICAgICAgICB3ZWJQYWdlLT51cGRhdGVMb2FkZWRTdWJEb21haW5zKFJlZ2lzdHJh
YmxlRG9tYWluKHJlcXVlc3QudXJsKCkpKTsKKyNlbmRpZgorCiAgICAgU3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFt0
aGlzLCByZWZlcnJlclBvbGljeSA9IG9wdGlvbnMucmVmZXJyZXJQb2xpY3ksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc291cmNlID0gQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KCZyZXNvdXJjZSksIGZyYW1lID0gbWFrZVJlZihm
cmFtZSldIChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgqbG9hZGVyLCByZXNv
dXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJX
aGVuRG93bmdyYWRlKTsKQEAgLTU1Niw2ICs1NjUsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVu
c2kKICAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5pZGVudGlmaWVyKCkgOiBQ
YWdlSWRlbnRpZmllciB7IH07CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFt
ZS0+ZnJhbWVJRCgpIDogRnJhbWVJZGVudGlmaWVyIHsgfTsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIHdlYlBhZ2UtPnVw
ZGF0ZUxvYWRlZFN1YkRvbWFpbnMoUmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkpOwor
I2VuZGlmCisKICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNr
aW5nUGFyYW1ldGVyczsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gcGFnZUlEOwog
ICAgIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVJRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGYxYmQ3MWEyNDUxN2M0NzlhMTNmNmQ4MjA5ZmM4ZTliMTQ5
NTRmYTYuLmIzYjJjNDJmMjFlNjk0MTIxM2NjOTNlYWU4MmU2ZTNhMDRjNmExOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTA1LDYgKzkwNSw5IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0CiAKICAgICBMT0coTG9hZGluZywgIldlYlByb2Nlc3MgJWkgLSBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gdG8gcmVxdWVzdCB1cmwgJXMiLCBnZXRD
dXJyZW50UHJvY2Vzc0lEKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHdlYlBhZ2UtPnVw
ZGF0ZUxvYWRlZFN1YkRvbWFpbnMoUmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSkpOwor
I2VuZGlmCiAgICAgLy8gQWx3YXlzIGlnbm9yZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMuIAog
ICAgIGlmIChyZXF1ZXN0LmlzRW1wdHkoKSkgewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rp
b246Oklnbm9yZSwgcmVxdWVzdElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYmEwMDYyMDM2YmNkYzVlODA2
NjNmNjAzNGZkMGUzLi41NWM4NDczZjM5ZGI1MDZhMjc0ZDM0ZjI0YTc3MGZiYjc3YWZmODljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjY2
Niw2ICs2NjY2LDIwIEBAIHZvaWQgV2ViUGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSgpCiAKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2FzTG9hZGVk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwogfQorCit2b2lkIFdlYlBh
Z2U6OnVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQoreworICAgIGlmICghbV9sb2FkZWRTdWJEb21haW5zLmNvbnRhaW5zKGRvbWFpbikpIHsK
KyAgICAgICAgbV9sb2FkZWRTdWJEb21haW5zLmFkZChkb21haW4pOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNoZWNr
Rm9yUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciwgZG9t
YWluKSwgMCk7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OmNsZWFyTG9hZGVkU3ViRG9tYWlu
cygpCit7CisgICAgbV9sb2FkZWRTdWJEb21haW5zLmNsZWFyKCk7Cit9CisKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmOThlOTQ2NDc2ODJjYTczNGM2MDMwZWZmN2I4MmFmM2Ez
OWZjNzgyLi4yNjg5ZWIyMGVlMWM5YWY2MDg1N2FkYmUwMDg0ZTYzNjY0ZGI1OGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTc2LDYgKzExNzYs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKSBjb25zdDsKICAgICB2b2lkIGFkZERv
bWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluKTsKICAgICB2b2lkIHdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9t
UHJldmFsZW50UmVzb3VyY2UoKTsKKyAgICB2b2lkIHVwZGF0ZUxvYWRlZFN1YkRvbWFpbnMoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4pOworICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJEb21haW5z
KCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC0yMDQ1LDYg
KzIwNDcsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisgICAg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9sb2FkZWRTdWJEb21haW5zOwog
I2VuZGlmCiAKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVkaWFUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
YWI5N2IyYjkyNjA1OTkwN2NjZGNmOTljZGU5ZTViZjNkMjdkN2E0OS4uYzM0MmQxMDJhNmIxMDI4
NTE2OTU4ZmMxYzJiMjYzYTc1MWNlYTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODIsNiArNTgyLDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJj
ZSgpCisgICAgQ2xlYXJMb2FkZWRTdWJEb21haW5zKCkKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDU2NzhkYTBlNjJjMjJiYWM5MDcxYmI0OGY5MTg5MDAzMWQ5YzQwNTguLjg5MDFlNTMz
NmYyYWNmN2E2MWUwYWUxNmQ5MWE3NTNiNDEyZjQ3MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wMi0xMSAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICAgIEV4
cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzU5MjcwNzU4CisKKyAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICBBZGRlZCBXZWJLaXRUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGlz
IGZ1bmN0aW9uYWxpdHkgY2FuIGJlIHRlc3RlZC4KKyAgICAgICAgIGNsZWFyUHJldmFsZW50RG9t
YWlucyBzaG91bGQgYmUgY2FsbGVkIGJldHdlZW4gdGVzdHMgdG8gcmVzZXQgdGhlCisgICAgICAg
ICBzdGF0ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRS
ZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
bGVhclByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQ
cmV2YWxlbnREb21haW5zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlu
cyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMp
OgorCiAyMDIwLTAyLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIFdLSFRUUENvb2tpZVN0b3JlLl9nZXRDb29raWVzRm9yVVJMIFNQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMTYwYzJlOWYzYmE2NDc3NTk4YWE1MmNh
MmM1YTc5MjgwODkzMjg2Ny4uYTdmZDIxZTRhMGY4Nzc2NTMwMDNiNWE4YWUxNDhhNDY3ZDllMmE4
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDQsNiArMzQ0LDcgQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJl
ZmVycmVyKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3Qg
Y2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0
aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0UHJldmFs
ZW50RG9tYWlucyhvYmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZv
cm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxi
YWNrKG9iamVjdCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGZhZWRhZjU3NDViYmM3
OGI5ZGI1Yzg3NTdkYzQ4OWYyZjlhMDJmOTguLjk1OGE3OWJhNDM0OGE5NzkyMjgwM2VlMjM2MTkw
YjUwMmZkZjNjMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00MDQsNiArNDA0LDI0IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrKGRvbWFpbnMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpIHsKKyAgICAgICAgQVNT
RVJUKG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5
KSA9PSBXS0FycmF5R2V0VHlwZUlEKCkpOworCisgICAgICAgIFdLQXJyYXlSZWYgZG9tYWluc0Fy
cmF5ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRv
IHNpemUgPSBXS0FycmF5R2V0U2l6ZShkb21haW5zQXJyYXkpOworICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBkb21haW5zOworICAgICAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICBXS1R5cGVSZWYgaXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChkb21haW5zQXJyYXks
IGkpOworICAgICAgICAgICAgaWYgKGl0ZW0gJiYgV0tHZXRUeXBlSUQoaXRlbSkgPT0gV0tTdHJp
bmdHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZCh0
b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oaXRlbSkpKTsKKyAgICAgICAgfQor
CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2Fs
bGJhY2soV1RGTW92ZShkb21haW5zKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5l
ci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApp
bmRleCAyNDU2OWM5OTMyMGYwMzJiZWIxMWM4YTg4OTIzMmNjNzY1NTNkMDcyLi41MjFmNWU1NWQ2
NjUzMDk5NDdmZjY0NTg4Mjg0NDA1MmExOWEzNjVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw2ICs3NTQs
NyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0NhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxi
YWNrSUQsCisgICAgR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCwKICAgICBHZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0Q2FsbGJhY2tJRCwKICAgICBUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFja0lELApA
QCAtMjM1Miw2ICsyMzUzLDM4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxT
dG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRl
c3RSdW5uZXJDYWxsYmFjayhBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZy
ZXN1bHQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1
ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxl
bnREb21haW5zQ2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkdldFByZXZhbGVudERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBu
dWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERv
bWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tCdW5kbGVG
cmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4
dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAor
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnWycpOworICAgIGJvb2wgaXNGaXJzdERvbWFpbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBk
b21haW4gOiBkb21haW5zKSB7CisgICAgICAgIGlmIChpc0ZpcnN0RG9tYWluKQorICAgICAgICAg
ICAgaXNGaXJzdERvbWFpbiA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiXCIiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZG9tYWluKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiIpOworICAgIH0KKyAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXScpOworICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0g
SlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpLmdl
dCgpKTsKKworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0Nh
bGxiYWNrSUQsIDEsICZyZXN1bHQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRp
YURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25z
dCBjaGFyKiB0eXBlKQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtl
eXM7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCmluZGV4IGMzYzEwNDUzZTkzMjhlYmNlODk1YjZhYTJmYWE4MWMxYWRmMmJhYTIuLjcy
MjhiNWIzZGYyMWIzNTUxNjg0NGZhMTUxMjFmYjgzMmU0ZTk0ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NDgsNiAr
NDQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7Cisg
ICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZv
aWQgY2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4m
JiBkb21haW5zKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2
b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhKU1ZhbHVlUmVmIGNh
bGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
ZTEwZWYzMzMxOTBhYjcxNzY1MzA4ZDNhNmJhMDM0MjgwYjA3YzNiYy4uMGU1NDFiN2M3Yzg2YTlj
N2E0NTIxNmI0M2QwMmU3ZmEwZGU5N2M5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTExMTAsNyArMTExMCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6
OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMs
IFJlCiAgICAgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CiAKICAgICBzdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgIAorICAgIGNsZWFyUHJldmFsZW50RG9t
YWlucygpOworCiAgICAgY2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsKIAogICAgIG1fZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7CkBAIC0z
MTE0LDYgKzMxMTUsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoKQogewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21h
aW5zKCkKK3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5z
KCkKK3sKK30KKwogI2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zQ2FsbGJhY2tDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCBmYTYwODgyYmUxZjU3MDIzNGIzMjk2MmNhOWVjYzBjOGU2NmQxNzI5Li40ZTY1MTEy
OWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1YTFiMWY5OTRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNTgsNiArMjU4LDggQEAgcHVibGljOgogICAgIHZvaWQg
c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKKyAg
ICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlucygpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFu
ZWxGaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9v
cGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVVUkxzOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCmluZGV4IDI5Yjk5ZjhjMjMyOGQ3NjI1ZmNiYWU2NWU4ODk3ZGY0MGNh
MmJjY2EuLjgxYWZiNTI5ODQwZGIyZjM4MTQ3ZDNmZGRlMTMwNmVmNmQyNzNhMmMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC04MDcsNiArODA3LDExIEBA
IHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkdldFByZXZhbGVudERvbWFpbnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuZ2V0UHJldmFsZW50RG9tYWlucygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xOTQyLDYgKzE5NDcsMTcgQEAgdm9pZCBU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5z
IikpOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9k
eSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQorICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShtZXNzYWdlQm9keS5nZXQo
KSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRh
dGEoKSkpLmdldCgpKTsKKyAgICAKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVz
c2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJlNTI2
NjcxZTgzYjE0N2Q1MWNjYmI2NzFjMjE3NGYyYi4uNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3
MmExN2ZiYTRjMTNlNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApA
QCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoKTsKICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucyk7CiAKICAgICB2b2lkIGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygp
OwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCmluZGV4IDNmOTMwNGVhNDgwMGMwM2QxNWI0ZTBlNjNkZmJlY2U3MjAzOWZi
MjMuLmIzZjk1YjVmYmZlYWM3NTgxMmRlMTg2NTI5Y2FjYWQ4NWZkN2QyNGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAg
LTMzMiw2ICszMzIsMzAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoKQogICAgIH1dOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxl
bnREb21haW5zKCkKK3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAg
ICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0
cmluZyAqPiAqbnNEb21haW5zKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7Cisg
ICAgICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOwor
ICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gOiBuc0RvbWFpbnMpCisgICAgICAgICAgICBk
b21haW5zLnVuY2hlY2tlZEFwcGVuZChkb21haW4pOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5kaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9
XTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sK
KyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxh
dGZvcm1WaWV3KCldOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0
KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtb
V0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBp
bmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9y
TWFpbkZyYW1lT25seTpOT10pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI2ZDhjOGJkYWI0MWQ2ODYwZjliZjQxZWRjODM1
MjVmNDFmOGY0NGQuLjM1NTYxYWNmZDZlZGMwMWE1NWY0NmFhMzg0NzIzYTgwYjljZmY0NWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wMi0xMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgcHJldmFsZW50IGRvbWFpbnMgb24g
YSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NTIzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzU5MjcwNzU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgMiBuZXcgdGVz
dHMgZm9yIHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgZGF0YWJhc2UgYW5kCisgICAgICAg
IG1lbW9yeSBzdG9yZXMuIEFkZGVkIGEgYmFzaWMgaWZyYW1lIHRoYXQgYm90aCB0ZXN0cyBjYW4g
dXNlIHRvIHRlc3QKKyAgICAgICAgaWYgYSByZXNvdXJjZSBsb2FkIGZyb20gYSBwcmV2YWxlbnQg
ZG9tYWluIGdldHMgcmVwb3J0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1k
b21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNv
dXJjZXMvYmFzaWMtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAyLTExICBKYWNvYiBVcGhv
ZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mgd2syIF0gaHR0
cC90ZXN0cy9JbmRleGVkREIvY29sbGVjdC1JREItb2JqZWN0cy5odHRwcy5odG1sIGlzIGZsYWt5
IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFs
ZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3
ZTFhYmJlOTNhN2YwZDczNWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K1Rlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBv
cnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
cmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
LWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODEyZWFlZTIzNDdlYjZlZWIwOTM0OGVhNTE1N2Ew
Zjg5NmYwN2M5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5o
dG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQg
YXMgcHJldmFsZW50IHVuZGVyIHRoaXMgcGFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zdCBpZnJhbWVJRCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAg
ZnVuY3Rpb24gYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5nZXRQcmV2YWxlbnREb21haW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAg
ICAgICAgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFp
biB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNj
ZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2
YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0g
ZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50
aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVq
ZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIp
IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3Rp
dmF0ZWQiOworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxv
Y2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiAr
IGhvc3RVbmRlclRlc3Q7CisgICAgICAgIAorICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERh
dGFiYXNlKHRydWUpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
c3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBw
cmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlm
cmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVt
ZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlm
cmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1w
ZXItcGFnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3
MjU3MTRmMDQ2YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJl
dmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBh
Z2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3Vj
Y2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMThjNmZiYTcwN2E4MTg2NzVlYWE4
YjNkMjEwNjkxZTc3MjYzZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0
bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBh
cyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbnN0IGlmcmFtZUlEID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBm
dW5jdGlvbiBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmdldFByZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAg
ICAgICAgICAgICAgdmFyIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFp
biB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNj
ZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2
YXRlRWxlbWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0g
ZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAg
ICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQg
LyAyOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50
aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVq
ZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIp
IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3Rp
dmF0ZWQiOworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxv
Y2FsaG9zdDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiAr
IGhvc3RVbmRlclRlc3Q7CisgICAgICAgIAorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRp
c3RpY3NVcmwpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3Qg
Z2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQg
aWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAg
ICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVFbGVtZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAg
ICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9y
YWdlQWNjZXNzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYmFzaWMtaWZyYW1lLmh0bWwiOworICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2lj
LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NTVmNGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3
M2I0ZmJjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEs
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390541</attachid>
            <date>2020-02-12 11:38:30 -0800</date>
            <delta_ts>2020-02-12 11:55:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200212113829.patch</filename>
            <type>text/plain</type>
            <size>44581</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1ODA2YWRlNTZlZGQ5
NzU4OTFhOWFlNjIxNjQ1ZWQwNjk3NTY3Ny4uMjMzNmQzMjFjNDA5MzI5OGVjYzUxNDcwMjc0ZjFm
ZTg4Zjg0ZjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTEyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBw
cmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwK
KworICAgICAgICBMb2dzIHN1YnJlc291cmNlIGxvYWRzIGluIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UsCisgICAgICAgIGFuZCByZXBvcnRzIGRvbWFpbnMgdG8gdGhlIFdl
YiBQcm9jZXNzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorCiAyMDIwLTAy
LTExICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW50
cm9kdWNlIExheW91dDo6TGluZUJyZWFrQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3OTQ1OTg4ZTFkZDg2ZjY3
MjJhMmNiMDQ1ZTdiOTdiNzQ2NjViMDYuLjZlNTZlNDA4ZWQ0MjdmMWRhMDI2YzkzZDI1NzBhNzlj
OWFhYjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMDItMTIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTkyNzA3NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9t
YWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbAorCisg
ICAgICAgIEFkZGVkIGFuIEFQSSB0byByZXBvcnQgcHJldmFsZW50IGRvbWFpbnMuIFRoZSBXZWIg
UHJvY2VzcyBzZW5kcyBhbGwKKyAgICAgICAgbmV3IGxvYWRzIHRvIHRoZSBOZXR3b3JrIFByb2Nl
c3MsIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIHJlc291cmNlcyBhcmUKKyAgICAgICAgcHJldmFs
ZW50IGJlZm9yZSByZXBvcnRpbmcgcHJldmFsZW50IGRvbWFpbnMgdG8gdGhlIFVJIFByb2Nlc3Mu
CisKKyAgICAgICAgVGhlIFdlYlBhZ2Uga2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5IGxv
YWRlZCBkb21haW5zIHRvIGF2b2lkCisgICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVhdCBk
b21haW5zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXBvcnRTdWJyZXNvdXJjZUxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFsZW50RG9t
YWluc0Zvcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmFkZFByZXZhbGVudERvbWFpbkZvclBhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZXZhbGVudERvbWFpbnMgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRkUHJl
dmFsZW50RG9tYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJMb2FkZWRSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDItMTEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEZXByZWNhdGUgX1dLVXNl
ckNvbnRlbnRXb3JsZCByZXBsYWNlZCBieSBXS0NvbnRlbnRXb3JsZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlOWRlYmUxYjg3ZjVkYTExNjhiM2NmOTY2
NjAwNjU1MWIzYmUzNDU0Li44MDc4MjNmYzQ1NzJmMjg0ZDBmMzJjZjJhYmVjMjk4NGM2MDA5MDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29u
LmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURv
bWFpbi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTM3NCw2ICszNzUsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZpcnR1YWwgYm9vbCBo
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIGFkZFByZXZhbGVudERvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmKSB7IH0KICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYzNkOGUzNWRkZjJiMjE1ZTVhYzdlOTFiYTk0NDUxNmRh
YTYwODJiYy4uZTNmZWQzNWY3YWM5NTdjMTkxNzA4NzNkNzMyZjNjODQ3ODRjZDIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC03OTAsNiArNzkwLDkgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICBhdXRv
JiBmcmFtZSA9ICp0aGlzLT5mcmFtZSgpOwogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFnZSgp
OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBtX2RvY3VtZW50
TG9hZGVyLT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKS5hZGRQcmV2YWxlbnREb21haW4oUmVnaXN0
cmFibGVEb21haW4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSkpOworI2VuZGlmCiAg
ICAgcmVxdWVzdC5zZXREZXN0aW5hdGlvbklmTm90U2V0KGRlc3RpbmF0aW9uRm9yVHlwZSh0eXBl
KSk7CiAKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9y
Zy8jbWFpbi1mZXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTgxNzM0NGYx
OWQzOGVkYzE2NzZmYTNkNjg2OTYyZGM3ODZlYWNiZC4uZGQ4M2I2NjAzNDQwYzE0ZDRkODE3Zjg0
ODI5YTNmY2UxYmZjMmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc4Nyw4
ICs3ODcsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWcKICAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV1RGTW92ZShk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBvcGVuZXJQYWdlSUQsIFdURk1vdmUob3BlbmVy
RG9tYWluKSk7CiAgICAgfQogfQotI2VuZGlmCiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlcG9ydFN1YnJlc291cmNlTG9hZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
aXNQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHdlYlBhZ2VQcm94eUlELCBkb21haW5dIChib29sIGlzUHJldmFsZW50KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzUHJldmFsZW50KQorICAgICAgICAgICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpBZGRQcmV2
YWxlbnREb21haW5Gb3JQYWdlKHdlYlBhZ2VQcm94eUlELCBkb21haW4pLCAwKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKIHsKICAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4NTMy
YjI2MWJiY2FjYTA1YjI5OWE1Zi4uODk4MDQ2ODIyZTdmMGJjNDMwNGU5NjYxNGM4N2M0NTM1MGYy
N2NkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgcmVwb3J0
U3VicmVzb3VyY2VMb2FkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDQzYjVmNjc0ZTU1ZThkNzZiMTI4M2RkN2I3MjQ2YjY2MGIxODEyYWMuLjk1YTJkMzcyZGQy
NDM5Yjg0NDFlNDFiODQ5NzZkODAxOGFhNTZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsNiArNjIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSGFzU3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0
b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCisgICAgUmVwb3J0U3VicmVzb3VyY2VM
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0KaW5kZXggODY2NzU0MjEyZGRkN2ZiODI4OGI2ZjcyMTkyOWZkMjk2NmQz
OGE4Ni4uNjE1NTM1YjYwZjlhZmI1MDQ2YmI2Nzk1YTk0MWUwN2NkZThiNzVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCkBAIC00MDcsNiArNDA3LDQ2IEBAICsgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2lucwogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWxsb3dXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7CiB9CiAKKy0gKHZvaWQpX2dldFByZXZhbGVu
dERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgaWYgKCF3ZWJWaWV3KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHdlYlBhZ2VQcm94eSA9IFt3ZWJWaWV3IF9w
YWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBhdXRvJiBwcmV2YWxlbnREb21haW5zID0gd2ViUGFnZVByb3h5
LT5wcmV2YWxlbnREb21haW5zKCk7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFw
aURvbWFpbnM7CisgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByZXZhbGVu
dERvbWFpbnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHByZXZhbGVudERvbWFp
bnMpCisgICAgICAgIGFwaURvbWFpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVh
dGUoZG9tYWluLnN0cmluZygpKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6
OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkpKTsKKyNlbHNlCisgICAgY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCistICh2b2lkKV9jbGVhclByZXZhbGVudERv
bWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBpZiAoIXdlYlZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOwor
ICAgIGlmICghd2ViUGFnZVByb3h5KQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHdlYlBhZ2VQcm94eS0+Y2xlYXJQcmV2YWxlbnRE
b21haW5zKCk7CisjZW5kaWYKK30KKworCiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBp
ZiAoIXdlYlZpZXcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDZlOTk2MTlkMjUw
NThjZmY5Zjc4MjhjNTY5NTJiNGFmY2E0ZTJlMTYuLjdkM2ZkNWZkNjhjZDJjZGQ0MjAxNWI1YmFi
YTFkYjk3OWY0ODE1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjIsNiArNjIs
OCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZl
dGNoT3B0aW9ucykgewogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGlu
Z0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJp
bmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7
CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2Vi
VmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9t
YWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlv
cygxMi4wKSk7CistICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpk
b21haW5zKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9y
OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0g
KGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQpLCBpb3MoMTIuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0YzhjMmViNGU0NzJhNDFj
NTBhZjUwOGU1ZWVkMzYyNjg0Zjk0YmE0Li45YTRmMDhkMWJkNzM3ZDAyODg2MmFjNTkzYjNiMzdi
NjVkYTcyZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTExNDcsNiArMTE0NywxNSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9y
VGVzdGluZyhQQUw6OlNlcwogCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphZGRQcmV2YWxlbnREb21haW5Gb3JQYWdlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
KQoreworICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZVBy
b3h5SUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+YWRk
UHJldmFsZW50RG9tYWluKFdURk1vdmUoZG9tYWluKSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5k
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1
NzgxOGI3N2I2MjVhZmI1YWZhOWVhYTQ0YjRhYzdjNTI5YTYwNDQ1Li4wODFkMTAwODlmNWFlMzRi
YWYwNzU1ODM2NGNjZmVlMzU0NTUxNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTY2LDYgKzE2Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkUHJldmFsZW50RG9t
YWluRm9yUGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBzeW50aGVzaXplQXBwSXNC
YWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4MzcxNjIwZTFlNTNjNS4uNjIwNzIwNGQ0
NjE5ZmQxMmQyODNhMTg2ZjlkMzVlNWI3MmZjZjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNTAsNiArNTAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
Q29uZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJh
bWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAo
Ym9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJ
UHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBE
aWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJj
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQorICAgIEFkZFByZXZhbGVu
dERvbWFpbkZvclBhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6
OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1MjJlZjE2ZmVhZWIzYThlYTNiMjhh
YTM4NmM1YmY5YWZjOTg3ZWEuLjI5YjIwYzA4MThiYTdkMDBiZDViODE3ZTYzZDBiNmE5ODI0YjU4
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDUyNSw2
ICs0NTI1LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnCiAjZW5kaWYKICAgICB9CiAKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CisjZW5kaWYKKyAgICAK
ICAgICBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOwogICAgIG1fcHJv
Y2Vzcy0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAKQEAgLTk4NTYsNiArOTg2MSwxOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0
X3Qgb3JpZW50YXRpb24pCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCit2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUHJldmFsZW50RG9tYWluKFJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIG1fcHJldmFsZW50RG9tYWlucy5hZGQoV1RGTW92
ZShkb21haW4pKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9tYWlu
cygpCit7CisgICAgbV9wcmV2YWxlbnREb21haW5zLmNsZWFyKCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRSZWdpc3RyYWJsZURvbWFpbnMoKSk7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVOVFMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY3MDg1NmQ3MWVhNjhjM2Y1
ZWVmYTA4YzBlN2MxYmY1MWZlMDIwMi4uZTI0YmE2MGE3MWQ2ZTcyNTI3MDg2MzAzN2E1MDJjNmYz
ZmJhNTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDUs
NiArMTU0NSw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRl
TG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKKyAgICBjb25zdCBI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgcHJldmFsZW50RG9tYWlucygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJldmFsZW50RG9tYWluczsgfQorICAgIHZvaWQgYWRkUHJldmFsZW50
RG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIHZvaWQgY2xlYXJQcmV2
YWxlbnREb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CkBAIC0yNzIwLDYgKzI3MjMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBNb25vdG9uaWNUaW1lIG1fZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yTWFpbkZyYW1lVGltZXN0YW1wOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fcHJldmFsZW50RG9tYWluczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggZjFiZDcxYTI0NTE3YzQ3OWExM2Y2ZDgyMDlmYzhlOWIxNDk1
NGZhNi4uZmM0OWZhODU4MWEwNmZiYmNhYTYwYjIzNTVmYjc4YmZkNzA3ZTA2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTMsNiArMTUzLDE2IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3Bl
Y2lmaWNTdG9yYWdlCiAKICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmll
ciA9IFdURk1vdmUoZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyKTsKIH0KKwor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRkUHJldmFsZW50RG9tYWluKFJlZ2lzdHJhYmxl
RG9tYWluJiYgZG9tYWluKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgd2ViUGFn
ZS0+YWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4pKTsKK30KKwogI2Vu
ZGlmCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOWFhNWEwNTQ5MjQzYTgzOTQwZTVhOTUw
ZGRiYzgxN2E0NGI1MDk0My4uMmNiYTM4NmQ1YmVmYWQ2YTkzNGVlMmUyYzRhNjJhMjc2NDhiNjI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgfTsKICAgICB2
b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGFkZFByZXZhbGVudERvbWFpbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKICNlbmRpZgogICAgIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA4YmNj
MTAyZWJhMDA2MjAzNmJjZGM1ZTgwNjYzZjYwMzRmZDBlMy4uY2I3MGY1N2MyOWJjYjhmNDNhYjUx
MzRmMTU3OTQwYWQwODUyZGIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTY1ODksNiArNjU4OSw4IEBAIHZvaWQgV2ViUGFnZTo6c2V0SXNT
dXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCiAgICAgaWYgKCFzdXNwZW5kZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIG1fbG9hZGVkU3ViRG9tYWlucy5jbGVhcigpOworCiAgICAgLy8gVW5mcm96
ZW4gb24gZHJhd2luZyBhcmVhIHJlc2V0LgogICAgIGZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVG
cmVlemVSZWFzb246OlBhZ2VTdXNwZW5kZWQpOwogCkBAIC02NjY2LDYgKzY2NjgsMTkgQEAgdm9p
ZCBXZWJQYWdlOjp3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNl
KCkKIAogICAgIGZyYW1lLT5kb2N1bWVudCgpLT53YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJv
bVByZXZhbGVudFJlc291cmNlKCk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6YWRkTG9hZGVkUmVnaXN0
cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit7CisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZFN1YkRvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcG9ydFN1YnJlc291cmNlTG9hZCht
X3dlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGRvbWFpbiksIDApOworfQorCit2b2lkIFdlYlBhZ2U6
OmNsZWFyTG9hZGVkUmVnaXN0cmFibGVEb21haW5zKCkKK3sKKyAgICBtX2xvYWRlZFN1YkRvbWFp
bnMuY2xlYXIoKTsKK30KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGY5OGU5
NDY0NzY4MmNhNzM0YzYwMzBlZmY3YjgyYWYzYTM5ZmM3ODIuLjc3N2FlZWI3MjczOGU3YWM2NjNj
ZjJkNDEwYWQ3NzQyMTFhNzBkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTExNzYsNiArMTE3Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Bh
Z2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRv
cExldmVsRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VE
b21haW4pIGNvbnN0OwogICAgIHZvaWQgYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nl
c3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pOwogICAgIHZvaWQg
d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOworICAgIHZv
aWQgYWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jik7CisgICAgdm9pZCBjbGVhckxvYWRlZFJlZ2lzdHJhYmxlRG9tYWlucygpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtMjA0NSw2ICsyMDQ3LDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaE1h
cDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IG1fZG9tYWluc1dpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzOworICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fbG9hZGVkU3ViRG9tYWluczsKICNlbmRpZgogCiAgICAg
U3RyaW5nIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGFiOTdiMmI5MjYwNTk5
MDdjY2RjZjk5Y2RlOWU1YmYzZDI3ZDdhNDkuLmYzZTFiN2UxMmYyNzU4Mzc0YzNhZTUyZWMzYzI1
NTQ4YzEyN2IyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTgyLDYgKzU4Miw3IEBAIEdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdh
c0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQorICAgIENsZWFy
TG9hZGVkUmVnaXN0cmFibGVEb21haW5zKCkKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDU2NzhkYTBlNjJjMjJiYWM5MDcxYmI0OGY5MTg5MDAzMWQ5YzQwNTguLjlhMGI4MDNkODc5M2M3
ZmMxNWFlNGE2NzFlYjgwNWU3Mjg5OGNlOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wMi0xMiAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICAgRXhwb3NlIHBy
ZXZhbGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81OTI3MDc1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBXZWJLaXRUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGlzIGZ1bmN0aW9u
YWxpdHkgY2FuIGJlIHRlc3RlZC4KKyAgICAgICAgY2xlYXJQcmV2YWxlbnREb21haW5zIHNob3Vs
ZCBiZSBjYWxsZWQgYmV0d2VlbiB0ZXN0cyB0byByZXNldCB0aGUKKyAgICAgICAgc3RhdGUuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2
ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmdldFByZXZhbGVu
dERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZh
bGVudERvbWFpbnNDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZh
bGVudERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxl
bnREb21haW5zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9t
YWlucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKToKKwogMjAyMC0w
Mi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBXS0hUVFBDb29raWVTdG9yZS5fZ2V0Q29va2llc0ZvclVSTCBTUEkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCmluZGV4IDE2MGMyZTlmM2JhNjQ3NzU5OGFhNTJjYTJjNWE3OTI4MDg5
MzI4NjcuLmE3ZmQyMWU0YTBmODc3NjUzMDAzYjVhOGFlMTQ4YTQ2N2Q5ZTJhOGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzQ0LDYgKzM0NCw3IEBAIGludGVyZmFjZSBUZXN0UnVu
bmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29s
ZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBv
cHRpb25hbCBib29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVh
biB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMo
b2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4K
ICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhvYmplY3Qg
Y2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBmYWVkYWY1NzQ1YmJjNzhiOWRiNWM4NzU3
ZGM0ODlmMmY5YTAyZjk4Li45NThhNzliYTQzNDhhOTc5MjI4MDNlZTIzNjE5MGI1MDJmZGYzYzFh
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDA0LDYgKzQwNCwyNCBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNDYWxsYmFjayhkb21haW5zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNh
bGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyIpKSB7CisgICAgICAgIEFTU0VSVChtZXNzYWdl
Qm9keSk7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tBcnJh
eUdldFR5cGVJRCgpKTsKKworICAgICAgICBXS0FycmF5UmVmIGRvbWFpbnNBcnJheSA9IHN0YXRp
Y19jYXN0PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYXV0byBzaXplID0gV0tB
cnJheUdldFNpemUoZG9tYWluc0FycmF5KTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWlu
czsKKyAgICAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgV0tUeXBl
UmVmIGl0ZW0gPSBXS0FycmF5R2V0SXRlbUF0SW5kZXgoZG9tYWluc0FycmF5LCBpKTsKKyAgICAg
ICAgICAgIGlmIChpdGVtICYmIFdLR2V0VHlwZUlEKGl0ZW0pID09IFdLU3RyaW5nR2V0VHlwZUlE
KCkpCisgICAgICAgICAgICAgICAgZG9tYWlucy51bmNoZWNrZWRBcHBlbmQodG9XVEZTdHJpbmco
c3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KGl0ZW0pKSk7CisgICAgICAgIH0KKworICAgICAgICBt
X3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFdURk1v
dmUoZG9tYWlucykpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzQ2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMjQ1Njlj
OTkzMjBmMDMyYmViMTFjOGE4ODkyMzJjYzc2NTUzZDA3Mi4uNTIxZjVlNTVkNjY1MzA5OTQ3ZmY2
NDU4ODI4NDQwNTJhMTlhMzY1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NTQsNiArNzU0LDcgQEAgZW51bSB7
CiAgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFj
a0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZUNhbGxiYWNrSUQsCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELAorICAg
IEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNr
SUQsCiAgICAgVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2tJRCwKQEAgLTIzNTIsNiAr
MjM1MywzOCBAQCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZAogICAgIGNhbGxUZXN0UnVubmVyQ2Fs
bGJhY2soQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELCAxLCAmcmVzdWx0KTsKIH0K
IAordm9pZCBUZXN0UnVubmVyOjpnZXRQcmV2YWxlbnREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJh
Y2spCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0Nh
bGxiYWNrSUQsIGNhbGxiYWNrKTsKKyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJHZXRQ
cmV2YWxlbnREb21haW5zIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJh
Y2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFp
bkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRs
ZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1snKTsKKyAg
ICBib29sIGlzRmlyc3REb21haW4gPSB0cnVlOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9t
YWlucykgeworICAgICAgICBpZiAoaXNGaXJzdERvbWFpbikKKyAgICAgICAgICAgIGlzRmlyc3RE
b21haW4gPSBmYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IlwiIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGRvbWFpbik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIiKTsKKyAgICB9CisgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJ10nKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtl
RnJvbUpTT05TdHJpbmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCAx
LCAmcmVzdWx0KTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UoSlNT
dHJpbmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlw
ZSkKIHsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCBjM2MxMDQ1M2U5MzI4ZWJjZTg5NWI2YWEyZmFhODFjMWFkZjJiYWEyLi43MjI4YjViM2RmMjFi
MzU1MTY4NDRmYTE1MTIxZmI4MzJlNGU5NGQ3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOworICAgIHZvaWQgZ2V0
UHJldmFsZW50RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGNhbGxEaWRS
ZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7
CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxs
VGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUxMGVmMzMzMTkw
YWI3MTc2NTMwOGQzYTZiYTAzNDI4MGIwN2MzYmMuLjBlNTQxYjdjN2M4NmE5YzdhNDUyMTZiNDNk
MDJlN2ZhMGRlOTdjOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC0xMTEwLDcgKzExMTAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRl
VG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIHNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwogCiAgICAgc3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoKTsKLSAgICAKKyAgICBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKwog
ICAgIGNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAKICAgICBtX2RpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IGZhbHNlOwpAQCAtMzExNCw2ICszMTE1
LDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkK
IHsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucygpCit7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7Cit9CisK
ICNlbmRpZgogCiBzdHJ1Y3QgQ2xlYXJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc0NhbGxiYWNr
Q29udGV4dCB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZmE2
MDg4MmJlMWY1NzAyMzRiMzI5NjJjYTllY2MwYzhlNjZkMTcyOS4uNGU2NTExMjllYzI5NGY2ZDVh
NTljNDM3MWUyOTYzNWExYjFmOTk0YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMjU4LDYgKzI1OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzKCk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKCk7CisgICAgdm9pZCBjbGVh
clByZXZhbGVudERvbWFpbnMoKTsKIAogICAgIFdLQXJyYXlSZWYgb3BlblBhbmVsRmlsZVVSTHMo
KSBjb25zdCB7IHJldHVybiBtX29wZW5QYW5lbEZpbGVVUkxzLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRPcGVuUGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmls
ZVVSTHMgPSBmaWxlVVJMczsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCAyOWI5OWY4YzIzMjhkNzYyNWZjYmFlNjVlODg5N2RmNDBjYTJiY2NhLi44MWFm
YjUyOTg0MGRiMmYzODE0N2QzZmRkZTEzMDZlZjZkMjczYTJjIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtODA3LDYgKzgwNywxMSBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRQcmV2YWxl
bnREb21haW5zIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdldFBy
ZXZhbGVudERvbWFpbnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTk0Miw2ICsxOTQ3LDE3IEBAIHZvaWQgVGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9t
YWlucykKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZVByZXZhbGVudERvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyIpKTsKKyAgICAK
KyAgICBXS1JldGFpblB0cjxXS011dGFibGVBcnJheVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdL
KFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlu
cykKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZG9tYWluLnV0ZjgoKS5kYXRhKCkpKS5nZXQo
KSk7CisgICAgCisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGUxYzJjNWRiZTUyNjY3MWU4M2IxNDdk
NTFjY2JiNjcxYzIxNzRmMmIuLjUwMzM3ZDY3NWRlMDkwYWRkZjViNzZjODAwNzJhMTdmYmE0YzEz
ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg2LDYgKzg2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAg
ICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAg
dm9pZCBkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMp
OwogCiAgICAgdm9pZCBkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCAzZjkzMDRlYTQ4MDBjMDNkMTViNGUwZTYzZGZiZWNlNzIwMzlmYjIzLi5iM2Y5NWI1
ZmJmZWFjNzU4MTJkZTE4NjUyOWNhY2FkODVmZDdkMjRhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMzIsNiArMzMy
LDMwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkK
ICAgICB9XTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucygp
Cit7CisgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CisgICAgaWYgKCFwYXJl
bnRWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5w
bGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5z
RG9tYWlucykgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOworICAgICAgICBkb21h
aW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNvdW50KTsKKyAgICAgICAgZm9y
IChOU1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQorICAgICAgICAgICAgZG9tYWlucy51bmNo
ZWNrZWRBcHBlbmQoZG9tYWluKTsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVj
ZWl2ZVByZXZhbGVudERvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgfV07Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7CisgICAgYXV0byog
cGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CisgICAgaWYgKCFwYXJlbnRWaWV3KQorICAgICAg
ICByZXR1cm47CisKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygp
XTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5qZWN0VXNlclNjcmlwdChXS1N0cmluZ1Jl
ZiBzY3JpcHQpCiB7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlw
dCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6IHRvV1RGU3RyaW5nKHNjcmlwdCkgaW5qZWN0aW9uVGlt
ZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9u
bHk6Tk9dKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBiNmQ4YzhiZGFiNDFkNjg2MGY5YmY0MWVkYzgzNTI1ZjQxZjhmNDRk
Li4yOWEyOTllNjljYjRkNDkzNWIxYWQ5NTE4OWZjZTY1MWViODc4YWE3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMjAtMDItMTIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZhbGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2Ug
YmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkyNzA3NTg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgMiBuZXcgdGVzdHMgZm9yIHRo
ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgZGF0YWJhc2UgYW5kCisgICAgICAgIG1lbW9yeSBz
dG9yZXMuIEFkZGVkIGEgYmFzaWMgaWZyYW1lIHRoYXQgYm90aCB0ZXN0cyBjYW4gdXNlIHRvIHRl
c3QKKyAgICAgICAgaWYgYSByZXNvdXJjZSBsb2FkIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIGdl
dHMgcmVwb3J0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBl
ci1wYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFz
aWMtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAyLTExICBKYWNvYiBVcGhvZmYgIDxqYWNv
Yl91cGhvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mgd2syIF0gaHR0cC90ZXN0cy9J
bmRleGVkREIvY29sbGVjdC1JREItb2JqZWN0cy5odHRwcy5odG1sIGlzIGZsYWt5IGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTFhYmJlOTNh
N2YwZDczNWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRo
YXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBw
cmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQt
ZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODEyZWFlZTIzNDdlYjZlZWIwOTM0OGVhNTE1N2EwZjg5NmYwN2M5
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCkBAIC0w
LDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEg
aWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJldmFs
ZW50IHVuZGVyIHRoaXMgcGFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBp
ZnJhbWVJRCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgZnVuY3Rpb24g
YXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRQ
cmV2YWxlbnREb21haW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgICAgICAgICAg
ICAgIHZhciBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3Vj
Y2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkg
bWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVu
dChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5v
ZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2Vu
dGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOwor
ICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4
MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRl
clRlc3Q7CisgICAgICAgIAorICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRy
dWUpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGlj
c1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1l
bnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0g
ImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1l
bnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2
YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRv
bWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5
IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMThjNmZiYTcwN2E4MTg2NzVlYWE4YjNkMjEwNjkx
ZTc3MjYzZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKQEAgLTAs
MCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBp
ZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxl
bnQgdW5kZXIgdGhpcyBwYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlm
cmFtZUlEID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBh
c2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFBy
ZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3Vj
Y2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkg
bWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVu
dChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5v
ZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIgY2Vu
dGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
ICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOwor
ICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4
MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRl
clRlc3Q7CisgICAgICAgIAorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwp
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBh
cyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAg
IGlmcmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVF
bGVtZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAg
IGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYmFzaWMtaWZyYW1lLmh0bWwiOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI2NTVmNGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3M2I0ZmJjNmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390542</attachid>
            <date>2020-02-12 11:55:38 -0800</date>
            <delta_ts>2020-02-12 16:10:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200212115537.patch</filename>
            <type>text/plain</type>
            <size>44625</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1ODA2YWRlNTZlZGQ5
NzU4OTFhOWFlNjIxNjQ1ZWQwNjk3NTY3Ny4uMjMzNmQzMjFjNDA5MzI5OGVjYzUxNDcwMjc0ZjFm
ZTg4Zjg0ZjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTEyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBw
cmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwK
KworICAgICAgICBMb2dzIHN1YnJlc291cmNlIGxvYWRzIGluIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UsCisgICAgICAgIGFuZCByZXBvcnRzIGRvbWFpbnMgdG8gdGhlIFdl
YiBQcm9jZXNzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorCiAyMDIwLTAy
LTExICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW50
cm9kdWNlIExheW91dDo6TGluZUJyZWFrQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3OTQ1OTg4ZTFkZDg2ZjY3
MjJhMmNiMDQ1ZTdiOTdiNzQ2NjViMDYuLjZlNTZlNDA4ZWQ0MjdmMWRhMDI2YzkzZDI1NzBhNzlj
OWFhYjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMDItMTIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTkyNzA3NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9t
YWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbAorCisg
ICAgICAgIEFkZGVkIGFuIEFQSSB0byByZXBvcnQgcHJldmFsZW50IGRvbWFpbnMuIFRoZSBXZWIg
UHJvY2VzcyBzZW5kcyBhbGwKKyAgICAgICAgbmV3IGxvYWRzIHRvIHRoZSBOZXR3b3JrIFByb2Nl
c3MsIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIHJlc291cmNlcyBhcmUKKyAgICAgICAgcHJldmFs
ZW50IGJlZm9yZSByZXBvcnRpbmcgcHJldmFsZW50IGRvbWFpbnMgdG8gdGhlIFVJIFByb2Nlc3Mu
CisKKyAgICAgICAgVGhlIFdlYlBhZ2Uga2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5IGxv
YWRlZCBkb21haW5zIHRvIGF2b2lkCisgICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVhdCBk
b21haW5zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXBvcnRTdWJyZXNvdXJjZUxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFsZW50RG9t
YWluc0Zvcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmFkZFByZXZhbGVudERvbWFpbkZvclBhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZXZhbGVudERvbWFpbnMgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRkUHJl
dmFsZW50RG9tYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJMb2FkZWRSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDItMTEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEZXByZWNhdGUgX1dLVXNl
ckNvbnRlbnRXb3JsZCByZXBsYWNlZCBieSBXS0NvbnRlbnRXb3JsZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBlOWRlYmUxYjg3ZjVkYTExNjhiM2NmOTY2
NjAwNjU1MWIzYmUzNDU0Li44MDc4MjNmYzQ1NzJmMjg0ZDBmMzJjZjJhYmVjMjk4NGM2MDA5MDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29u
LmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURv
bWFpbi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTM3NCw2ICszNzUsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZpcnR1YWwgYm9vbCBo
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIGFkZFByZXZhbGVudERvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmKSB7IH0KICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYzNkOGUzNWRkZjJiMjE1ZTVhYzdlOTFiYTk0NDUxNmRh
YTYwODJiYy4uZTNmZWQzNWY3YWM5NTdjMTkxNzA4NzNkNzMyZjNjODQ3ODRjZDIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC03OTAsNiArNzkwLDkgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICBhdXRv
JiBmcmFtZSA9ICp0aGlzLT5mcmFtZSgpOwogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFnZSgp
OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBtX2RvY3VtZW50
TG9hZGVyLT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKS5hZGRQcmV2YWxlbnREb21haW4oUmVnaXN0
cmFibGVEb21haW4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSkpOworI2VuZGlmCiAg
ICAgcmVxdWVzdC5zZXREZXN0aW5hdGlvbklmTm90U2V0KGRlc3RpbmF0aW9uRm9yVHlwZSh0eXBl
KSk7CiAKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9y
Zy8jbWFpbi1mZXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTgxNzM0NGYx
OWQzOGVkYzE2NzZmYTNkNjg2OTYyZGM3ODZlYWNiZC4uZGQ4M2I2NjAzNDQwYzE0ZDRkODE3Zjg0
ODI5YTNmY2UxYmZjMmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc4Nyw4
ICs3ODcsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWcKICAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV1RGTW92ZShk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBvcGVuZXJQYWdlSUQsIFdURk1vdmUob3BlbmVy
RG9tYWluKSk7CiAgICAgfQogfQotI2VuZGlmCiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlcG9ydFN1YnJlc291cmNlTG9hZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
aXNQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHdlYlBhZ2VQcm94eUlELCBkb21haW5dIChib29sIGlzUHJldmFsZW50KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzUHJldmFsZW50KQorICAgICAgICAgICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpBZGRQcmV2
YWxlbnREb21haW5Gb3JQYWdlKHdlYlBhZ2VQcm94eUlELCBkb21haW4pLCAwKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKIHsKICAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4NTMy
YjI2MWJiY2FjYTA1YjI5OWE1Zi4uODk4MDQ2ODIyZTdmMGJjNDMwNGU5NjYxNGM4N2M0NTM1MGYy
N2NkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgcmVwb3J0
U3VicmVzb3VyY2VMb2FkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDQzYjVmNjc0ZTU1ZThkNzZiMTI4M2RkN2I3MjQ2YjY2MGIxODEyYWMuLjk1YTJkMzcyZGQy
NDM5Yjg0NDFlNDFiODQ5NzZkODAxOGFhNTZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsNiArNjIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSGFzU3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0
b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCisgICAgUmVwb3J0U3VicmVzb3VyY2VM
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0KaW5kZXggODY2NzU0MjEyZGRkN2ZiODI4OGI2ZjcyMTkyOWZkMjk2NmQz
OGE4Ni4uNjE1NTM1YjYwZjlhZmI1MDQ2YmI2Nzk1YTk0MWUwN2NkZThiNzVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCkBAIC00MDcsNiArNDA3LDQ2IEBAICsgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2lucwogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWxsb3dXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7CiB9CiAKKy0gKHZvaWQpX2dldFByZXZhbGVu
dERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgaWYgKCF3ZWJWaWV3KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHdlYlBhZ2VQcm94eSA9IFt3ZWJWaWV3IF9w
YWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBhdXRvJiBwcmV2YWxlbnREb21haW5zID0gd2ViUGFnZVByb3h5
LT5wcmV2YWxlbnREb21haW5zKCk7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFw
aURvbWFpbnM7CisgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByZXZhbGVu
dERvbWFpbnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHByZXZhbGVudERvbWFp
bnMpCisgICAgICAgIGFwaURvbWFpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVh
dGUoZG9tYWluLnN0cmluZygpKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6
OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkpKTsKKyNlbHNlCisgICAgY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCistICh2b2lkKV9jbGVhclByZXZhbGVudERv
bWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBpZiAoIXdlYlZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOwor
ICAgIGlmICghd2ViUGFnZVByb3h5KQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHdlYlBhZ2VQcm94eS0+Y2xlYXJQcmV2YWxlbnRE
b21haW5zKCk7CisjZW5kaWYKK30KKworCiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBp
ZiAoIXdlYlZpZXcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDZlOTk2MTlkMjUw
NThjZmY5Zjc4MjhjNTY5NTJiNGFmY2E0ZTJlMTYuLjdkM2ZkNWZkNjhjZDJjZGQ0MjAxNWI1YmFi
YTFkYjk3OWY0ODE1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjIsNiArNjIs
OCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZl
dGNoT3B0aW9ucykgewogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGlu
Z0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJp
bmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7
CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2Vi
VmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9t
YWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlv
cygxMi4wKSk7CistICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpk
b21haW5zKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9y
OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0g
KGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQpLCBpb3MoMTIuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0YzhjMmViNGU0NzJhNDFj
NTBhZjUwOGU1ZWVkMzYyNjg0Zjk0YmE0Li45YTRmMDhkMWJkNzM3ZDAyODg2MmFjNTkzYjNiMzdi
NjVkYTcyZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTExNDcsNiArMTE0NywxNSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9y
VGVzdGluZyhQQUw6OlNlcwogCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphZGRQcmV2YWxlbnREb21haW5Gb3JQYWdlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
KQoreworICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZVBy
b3h5SUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+YWRk
UHJldmFsZW50RG9tYWluKFdURk1vdmUoZG9tYWluKSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5k
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1
NzgxOGI3N2I2MjVhZmI1YWZhOWVhYTQ0YjRhYzdjNTI5YTYwNDQ1Li4wODFkMTAwODlmNWFlMzRi
YWYwNzU1ODM2NGNjZmVlMzU0NTUxNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTY2LDYgKzE2Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkUHJldmFsZW50RG9t
YWluRm9yUGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBzeW50aGVzaXplQXBwSXNC
YWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggNGJkYTc2OGNkNGY4Y2ZmZmYxZTkwNGU5OTA4MzcxNjIwZTFlNTNjNS4uNjIwNzIwNGQ0
NjE5ZmQxMmQyODNhMTg2ZjlkMzVlNWI3MmZjZjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNTAsNiArNTAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
Q29uZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJh
bWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAo
Ym9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJ
UHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBE
aWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJj
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQorICAgIEFkZFByZXZhbGVu
dERvbWFpbkZvclBhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6
OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1MjJlZjE2ZmVhZWIzYThlYTNiMjhh
YTM4NmM1YmY5YWZjOTg3ZWEuLjI5YjIwYzA4MThiYTdkMDBiZDViODE3ZTYzZDBiNmE5ODI0YjU4
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDUyNSw2
ICs0NTI1LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnCiAjZW5kaWYKICAgICB9CiAKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CisjZW5kaWYKKyAgICAK
ICAgICBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgPSB0cnVlOwogICAgIG1fcHJv
Y2Vzcy0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAKQEAgLTk4NTYsNiArOTg2MSwxOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0
X3Qgb3JpZW50YXRpb24pCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCit2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUHJldmFsZW50RG9tYWluKFJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIG1fcHJldmFsZW50RG9tYWlucy5hZGQoV1RGTW92
ZShkb21haW4pKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9tYWlu
cygpCit7CisgICAgbV9wcmV2YWxlbnREb21haW5zLmNsZWFyKCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRSZWdpc3RyYWJsZURvbWFpbnMoKSk7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVJHRV9XSEVFTF9FVkVOVFMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY3MDg1NmQ3MWVhNjhjM2Y1
ZWVmYTA4YzBlN2MxYmY1MWZlMDIwMi4uZTI0YmE2MGE3MWQ2ZTcyNTI3MDg2MzAzN2E1MDJjNmYz
ZmJhNTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDUs
NiArMTU0NSw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRl
TG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKKyAgICBjb25zdCBI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgcHJldmFsZW50RG9tYWlucygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJldmFsZW50RG9tYWluczsgfQorICAgIHZvaWQgYWRkUHJldmFsZW50
RG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIHZvaWQgY2xlYXJQcmV2
YWxlbnREb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CkBAIC0yNzIwLDYgKzI3MjMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBNb25vdG9uaWNUaW1lIG1fZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yTWFpbkZyYW1lVGltZXN0YW1wOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fcHJldmFsZW50RG9tYWluczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggZjFiZDcxYTI0NTE3YzQ3OWExM2Y2ZDgyMDlmYzhlOWIxNDk1
NGZhNi4uZmM0OWZhODU4MWEwNmZiYmNhYTYwYjIzNTVmYjc4YmZkNzA3ZTA2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTMsNiArMTUzLDE2IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3Bl
Y2lmaWNTdG9yYWdlCiAKICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmll
ciA9IFdURk1vdmUoZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyKTsKIH0KKwor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRkUHJldmFsZW50RG9tYWluKFJlZ2lzdHJhYmxl
RG9tYWluJiYgZG9tYWluKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgd2ViUGFn
ZS0+YWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4pKTsKK30KKwogI2Vu
ZGlmCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOWFhNWEwNTQ5MjQzYTgzOTQwZTVhOTUw
ZGRiYzgxN2E0NGI1MDk0My4uMmNiYTM4NmQ1YmVmYWQ2YTkzNGVlMmUyYzRhNjJhMjc2NDhiNjI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgfTsKICAgICB2
b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGFkZFByZXZhbGVudERvbWFpbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKICNlbmRpZgogICAgIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA4YmNj
MTAyZWJhMDA2MjAzNmJjZGM1ZTgwNjYzZjYwMzRmZDBlMy4uM2U3N2MxYmQyMzc1MmEzMTliMTZi
YTA2YzJmNzJlY2Q1NmM3NjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTY1ODksNiArNjU4OSw5IEBAIHZvaWQgV2ViUGFnZTo6c2V0SXNT
dXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCiAgICAgaWYgKCFzdXNwZW5kZWQpCiAgICAgICAgIHJl
dHVybjsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgbV9sb2Fk
ZWRTdWJEb21haW5zLmNsZWFyKCk7CisjZW5kaWYKICAgICAvLyBVbmZyb3plbiBvbiBkcmF3aW5n
IGFyZWEgcmVzZXQuCiAgICAgZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6
UGFnZVN1c3BlbmRlZCk7CiAKQEAgLTY2NjYsNiArNjY2OSwxOSBAQCB2b2lkIFdlYlBhZ2U6Ondh
c0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQogCiAgICAgZnJh
bWUtPmRvY3VtZW50KCktPndhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVz
b3VyY2UoKTsKIH0KKwordm9pZCBXZWJQYWdlOjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fbG9hZGVkU3ViRG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVwb3J0U3VicmVzb3VyY2VMb2FkKG1fd2ViUGFnZVByb3h5
SWRlbnRpZmllciwgZG9tYWluKSwgMCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJMb2FkZWRS
ZWdpc3RyYWJsZURvbWFpbnMoKQoreworICAgIG1fbG9hZGVkU3ViRG9tYWlucy5jbGVhcigpOwor
fQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk4ZTk0NjQ3NjgyY2E3MzRj
NjAzMGVmZjdiODJhZjNhMzlmYzc4Mi4uNzc3YWVlYjcyNzM4ZTdhYzY2M2NmMmQ0MTBhZDc3NDIx
MWE3MGRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTE3Niw2ICsxMTc2LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGFnZUxldmVsU3RvcmFn
ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3Q7
CiAgICAgdm9pZCBhZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbik7CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRo
RGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7CisgICAgdm9pZCBhZGRMb2FkZWRS
ZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lk
IGNsZWFyTG9hZGVkUmVnaXN0cmFibGVEb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCkBAIC0yMDQ1LDYgKzIwNDcsNyBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0
aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9sb2FkZWRTdWJEb21haW5zOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9vdmVy
cmlkZGVuTWVkaWFUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYWI5N2IyYjkyNjA1OTkwN2NjZGNmOTljZGU5
ZTViZjNkMjdkN2E0OS4uZjNlMWI3ZTEyZjI3NTgzNzRjM2FlNTJlYzNjMjU1NDhjMTI3YjI1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC01ODIsNiArNTgyLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERh
dGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCisgICAgQ2xlYXJMb2FkZWRSZWdpc3Ry
YWJsZURvbWFpbnMoKQogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTY3OGRhMGU2MmMy
MmJhYzkwNzFiYjQ4ZjkxODkwMDMxZDljNDA1OC4uOWEwYjgwM2Q4NzkzYzdmYzE1YWU0YTY3MWVi
ODA1ZTcyODk4Y2U5NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAyLTEyICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgICBFeHBvc2UgcHJldmFsZW50IGRvbWFp
bnMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MjcwNzU4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IFdlYktpdFRlc3RSdW5uZXIgZnVuY3Rpb25zIHNvIHRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYmUg
dGVzdGVkLgorICAgICAgICBjbGVhclByZXZhbGVudERvbWFpbnMgc2hvdWxkIGJlIGNhbGxlZCBi
ZXR3ZWVuIHRlc3RzIHRvIHJlc2V0IHRoZQorICAgICAgICBzdGF0ZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0Nh
bGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOgorCiAyMDIwLTAyLTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLSFRU
UENvb2tpZVN0b3JlLl9nZXRDb29raWVzRm9yVVJMIFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKaW5kZXggMTYwYzJlOWYzYmE2NDc3NTk4YWE1MmNhMmM1YTc5MjgwODkzMjg2Ny4uYTdmZDIx
ZTRhMGY4Nzc2NTMwMDNiNWE4YWUxNDhhNDY3ZDllMmE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCkBAIC0zNDQsNiArMzQ0LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZv
aWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xlYW4gdmFsdWUsIG9i
amVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xl
YW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFuIHZhbHVlLCBvYmpl
Y3QgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhvYmplY3QgY2FsbGJh
Y2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5z
dGFsbFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCmluZGV4IGZhZWRhZjU3NDViYmM3OGI5ZGI1Yzg3NTdkYzQ4OWYyZjlhMDJm
OTguLjk1OGE3OWJhNDM0OGE5NzkyMjgwM2VlMjM2MTkwYjUwMmZkZjNjMWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCkBAIC00MDQsNiArNDA0LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2Vp
dmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAg
ICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrKGRvbWFpbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVQ
cmV2YWxlbnREb21haW5zIikpIHsKKyAgICAgICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5R2V0VHlwZUlEKCkp
OworCisgICAgICAgIFdLQXJyYXlSZWYgZG9tYWluc0FycmF5ID0gc3RhdGljX2Nhc3Q8V0tBcnJh
eVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHNpemUgPSBXS0FycmF5R2V0U2l6ZShk
b21haW5zQXJyYXkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOworICAgICAgICBk
b21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBXS1R5cGVSZWYgaXRlbSA9IFdL
QXJyYXlHZXRJdGVtQXRJbmRleChkb21haW5zQXJyYXksIGkpOworICAgICAgICAgICAgaWYgKGl0
ZW0gJiYgV0tHZXRUeXBlSUQoaXRlbSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAg
ICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZCh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxX
S1N0cmluZ1JlZj4oaXRlbSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGVzdFJ1bm5lci0+
Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHND
YWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAyNDU2OWM5OTMyMGYwMzJiZWIx
MWM4YTg4OTIzMmNjNzY1NTNkMDcyLi41MjFmNWU1NWQ2NjUzMDk5NDdmZjY0NTg4Mjg0NDA1MmEx
OWEzNjVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw2ICs3NTQsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0
aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrSUQsCiAgICAgU3Rh
dGlzdGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwK
ICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCisgICAgR2V0UHJldmFsZW50
RG9tYWluc0NhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2Fs
bGJhY2tJRCwKICAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwKICAgICBUZXh0
RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFja0lELApAQCAtMjM1Miw2ICsyMzUzLDM4IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxi
YWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhBbGxTdG9y
YWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCit2b2lkIFRlc3RS
dW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBj
YWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwgY2Fs
bGJhY2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFByZXZhbGVudERvbWFp
bnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0
UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3Ry
aW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+
cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZh
U2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5n
QnVpbGRlcjsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnWycpOworICAgIGJvb2wgaXNGaXJz
dERvbWFpbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKSB7CisgICAg
ICAgIGlmIChpc0ZpcnN0RG9tYWluKQorICAgICAgICAgICAgaXNGaXJzdERvbWFpbiA9IGZhbHNl
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIiKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJcIiIpOworICAgIH0KKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXScp
OworICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmlu
Zyhjb250ZXh0LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKworICAgIGNhbGxUZXN0UnVu
bmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwor
fQorCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJz
aXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQogewogICAgIFZl
Y3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGMzYzEwNDUzZTkz
MjhlYmNlODk1YjZhYTJmYWE4MWMxYWRmMmJhYTIuLjcyMjhiNWIzZGYyMWIzNTUxNjg0NGZhMTUx
MjFmYjgzMmU0ZTk0ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NDgsNiArNDQ4LDggQEAgcHVibGljOgogICAgIHZv
aWQgc3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNh
bGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1Zh
bHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21h
aW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgY2FsbERpZFJlY2VpdmVQcmV2YWxl
bnREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAogICAgIC8vIElu
amVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdl
SW5UZXh0RmllbGRDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTEwZWYzMzMxOTBhYjcxNzY1MzA4ZDNh
NmJhMDM0MjgwYjA3YzNiYy4uMGU1NDFiN2M3Yzg2YTljN2E0NTIxNmI0M2QwMmU3ZmEwZGU5N2M5
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTExMTAs
NyArMTExMCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRW
YWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0QWxsb3dzQW55U1NM
Q2VydGlmaWNhdGUodHJ1ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZSgpOwotICAgIAorICAgIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworCiAgICAgY2xlYXJBZENs
aWNrQXR0cmlidXRpb24oKTsKIAogICAgIG1fZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7CkBAIC0zMTE0LDYgKzMxMTUsMTQgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogewogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwordm9pZCBUZXN0
Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwogI2VuZGlmCiAKIHN0
cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2tDb250ZXh0IHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmYTYwODgyYmUxZjU3MDIz
NGIzMjk2MmNhOWVjYzBjOGU2NmQxNzI5Li40ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1
YTFiMWY5OTRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0y
NTgsNiArMjU4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKKyAg
ICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9t
YWlucygpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxlVVJMcygpIGNvbnN0IHsgcmV0
dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZp
bGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVV
UkxzOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDI5
Yjk5ZjhjMjMyOGQ3NjI1ZmNiYWU2NWU4ODk3ZGY0MGNhMmJjY2EuLjgxYWZiNTI5ODQwZGIyZjM4
MTQ3ZDNmZGRlMTMwNmVmNmQyNzNhMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC04MDcsNiArODA3LDExIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFByZXZhbGVudERvbWFpbnMiKSkg
eworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0UHJldmFsZW50RG9tYWlu
cygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CkBAIC0xOTQyLDYgKzE5NDcsMTcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQogICAgIFdL
UGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9t
YWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpOworICAgIAorICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlQXJy
YXlDcmVhdGUoKSk7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQorICAgICAgICBX
S0FycmF5QXBwZW5kSXRlbShtZXNzYWdlQm9keS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKyAgICAKKyAg
ICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VC
b2R5LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJlNTI2NjcxZTgzYjE0N2Q1MWNjYmI2NzFjMjE3
NGYyYi4uNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2ZiYTRjMTNlNiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNl
dEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CiAKICAgICB2b2lk
IGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDNmOTMw
NGVhNDgwMGMwM2QxNWI0ZTBlNjNkZmJlY2U3MjAzOWZiMjMuLmIzZjk1YjVmYmZlYWM3NTgxMmRl
MTg2NTI5Y2FjYWQ4NWZkN2QyNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTMzMiw2ICszMzIsMzAgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAgIH1dOwogfQog
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKKyAgICBhdXRv
KiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNEb21haW5zKSB7Cisg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgICAgIGRvbWFpbnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOworICAgICAgICBmb3IgKE5TU3RyaW5nICpk
b21haW4gOiBuc0RvbWFpbnMpCisgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZChk
b21haW4pOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlUHJldmFsZW50
RG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9XTsKK30KKwordm9pZCBUZXN0Q29udHJv
bGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0g
bWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclBy
ZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOworfQorCiB2b2lk
IFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsK
ICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0
V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlw
dEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOT10pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGI2ZDhjOGJkYWI0MWQ2ODYwZjliZjQxZWRjODM1MjVmNDFmOGY0NGQuLjI5YTI5OWU2OWNi
NGQ0OTM1YjFhZDk1MTg5ZmNlNjUxZWI4NzhhYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAy
MC0wMi0xMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBvc2UgcHJldmFsZW50IGRvbWFpbnMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIzCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81OTI3MDc1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCAyIG5ldyB0ZXN0cyBmb3IgdGhlIHJlc291cmNlIGxv
YWQgc3RhdGlzdGljcyBkYXRhYmFzZSBhbmQKKyAgICAgICAgbWVtb3J5IHN0b3Jlcy4gQWRkZWQg
YSBiYXNpYyBpZnJhbWUgdGhhdCBib3RoIHRlc3RzIGNhbiB1c2UgdG8gdGVzdAorICAgICAgICBp
ZiBhIHJlc291cmNlIGxvYWQgZnJvbSBhIHByZXZhbGVudCBkb21haW4gZ2V0cyByZXBvcnRlZCBw
cm9wZXJseS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
cmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9t
YWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDItMTEgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9mZkBhcHBs
ZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyB3azIgXSBodHRwL3Rlc3RzL0luZGV4ZWREQi9jb2xs
ZWN0LUlEQi1vYmplY3RzLmh0dHBzLmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1k
b21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1k
YXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3
MjU3MTRmMDQ2YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRh
YmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBm
cm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRl
ciB0aGlzIHBhZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFp
biB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1w
YWdlLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MTJlYWVlMjM0N2ViNmVlYjA5MzQ4ZWE1MTU3YTBmODk2ZjA3YzkzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBh
IHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhp
cyBwYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwg
ZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlG
cmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFp
bnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhc3Nl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9t
YWlucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFp
bnNbaV0gPT09ICJsb2NhbGhvc3QiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFy
a2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFs
ZW50LiIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkg
eworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBl
bGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhl
bHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeyB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7
CisgICAgICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9j
YXRpb24uaGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgeworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7CisgICAgICAgICAgICAg
ICAgYWN0aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAg
ICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKKyAgICAg
ICAgCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsK
KworICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBy
dW5UZXN0OworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1lRnJvbVBy
ZXZhbGVudERvbWFpbiI7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2lj
LWlmcmFtZS5odG1sIjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGlmcmFtZUVsZW1lbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45N2UxYWJiZTkzYTdmMGQ3MzViNzNiMzcyNTcxNGYwNDZjNGQ3NWViCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0cyB0aGF0IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUg
cmVwb3J0ZWQgYXMgcHJldmFsZW50IHVuZGVyIHRoaXMgcGFnZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZh
bGVudC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxOGM2ZmJhNzA3YTgxODY3NWVhYThiM2QyMTA2OTFlNzcyNjNlM2YKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbApAQCAtMCwwICsxLDczIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEg
cHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlz
IHBhZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZy
YW1lRnJvbVByZXZhbGVudERvbWFpbiI7CisgICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVu
dFJlc291cmNlcygpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlu
cyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFzc2Vk
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9t
YWlucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFp
bnNbaV0gPT09ICJsb2NhbGhvc3QiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFy
a2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFs
ZW50LiIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkg
eworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBl
bGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhl
bHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeyB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7
CisgICAgICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9j
YXRpb24uaGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgeworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7CisgICAgICAgICAgICAg
ICAgYWN0aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAg
ICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKKyAgICAg
ICAgCisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNz
VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVu
dC5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAi
aUZyYW1lRnJvbVByZXZhbGVudERvbWFpbiI7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVu
dC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9iYXNpYy1pZnJhbWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjY1NWY0ZTc3OGFlOWFmYTAxZGYzNWQ2MGMyZDg3NDczYjRmYmM2ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNv
dXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390580</attachid>
            <date>2020-02-12 16:10:50 -0800</date>
            <delta_ts>2020-02-13 17:07:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200212161049.patch</filename>
            <type>text/plain</type>
            <size>41677</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1ODA2YWRlNTZlZGQ5
NzU4OTFhOWFlNjIxNjQ1ZWQwNjk3NTY3Ny4uMjMzNmQzMjFjNDA5MzI5OGVjYzUxNDcwMjc0ZjFm
ZTg4Zjg0ZjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTEyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBw
cmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwK
KworICAgICAgICBMb2dzIHN1YnJlc291cmNlIGxvYWRzIGluIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UsCisgICAgICAgIGFuZCByZXBvcnRzIGRvbWFpbnMgdG8gdGhlIFdl
YiBQcm9jZXNzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorCiAyMDIwLTAy
LTExICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gSW50
cm9kdWNlIExheW91dDo6TGluZUJyZWFrQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3OTQ1OTg4ZTFkZDg2ZjY3
MjJhMmNiMDQ1ZTdiOTdiNzQ2NjViMDYuLjVhOWUwNmI4NTcwZDU2N2VmNDBlYWQxODY2MDU3MWJm
NTdmODI4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDItMTIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZh
bGVudCBkb21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTkyNzA3NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9t
YWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbAorCisg
ICAgICAgIEFkZGVkIGFuIEFQSSB0byByZXBvcnQgcHJldmFsZW50IGRvbWFpbnMuIFRoZSBXZWIg
UHJvY2VzcyBzZW5kcyBhbGwKKyAgICAgICAgbmV3IGxvYWRzIHRvIHRoZSBOZXR3b3JrIFByb2Nl
c3MsIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIHJlc291cmNlcyBhcmUKKyAgICAgICAgcHJldmFs
ZW50LiBXaGVuIHRoZSBBUEkgaXMgcXVlcmllZCwgdGhlIFdlYiBQcm9jZXNzIHJlcG9ydHMgdGhl
c2UKKyAgICAgICAgZG9tYWlucyB0byB0aGUgVUkgUHJvY2Vzcy4KKworICAgICAgICBUaGUgV2Vi
UGFnZSBrZWVwcyBhIGhhc2ggc2V0IG9mIHByZXZpb3VzbHkgbG9hZGVkIGRvbWFpbnMgdG8gYXZv
aWQKKyAgICAgICAgc3BhbW1pbmcgSVBDIHdpdGggcmVwZWF0IGRvbWFpbnMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcG9ydFN1YnJlc291cmNlTG9hZFRvRG9tYWluKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJQ
cmV2YWxlbnREb21haW5zRm9yOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRkTG9hZGVkUmVnaXN0cmFibGVEb21h
aW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpnZXRQcmV2YWxlbnREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Y2xlYXJQcmV2YWxlbnREb21haW5zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorCiAyMDIwLTAyLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRGVwcmVjYXRlIF9XS1VzZXJDb250ZW50V29ybGQgcmVwbGFjZWQgYnkg
V0tDb250ZW50V29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggZTlkZWJlMWI4N2Y1ZGExMTY4YjNjZjk2NjYwMDY1NTFiM2JlMzQ1NC4uOThkMDJjZjll
MmFlZDgwMzA4OWQ1ODFlNjI2MjhmOTAzZDZjMTQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTkwLDYgKzkwLDcgQEAgY2xhc3MgTmF2aWdhdGlvbkFj
dGlvbjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQbHVnaW5WaWV3QmFzZTsKIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwpA
QCAtMzc0LDYgKzM3NSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkTG9hZGVkUmVnaXN0cmFi
bGVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJikgeyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGMzZDhlMzVkZGYyYjIxNWU1YWM3ZTkxYmE5NDQ1MTZkYWE2MDgyYmMuLmM4MDExMjk4NDg5
ZTk0MDkxOTk2ZWI0YzNiOTVhYzEzYTg0MWVhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkwLDYgKzc5MCw5
IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgYXV0byYgZnJhbWUgPSAqdGhpcy0+ZnJh
bWUoKTsKICAgICBhdXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKIAorI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWRkTG9h
ZGVkUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKS51cmwoKSkpOworI2VuZGlmCiAgICAgcmVxdWVzdC5zZXREZXN0aW5hdGlvbklmTm90
U2V0KGRlc3RpbmF0aW9uRm9yVHlwZSh0eXBlKSk7CiAKICAgICAvLyBFbnRyeSBwb2ludCB0byBo
dHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZTgxNzM0NGYxOWQzOGVkYzE2NzZmYTNkNjg2OTYyZGM3ODZlYWNi
ZC4uNDBkOGMxZDczOTBhMTIxNjgzZTM5YjE3MjU2ODQwYmI3ZTkwMjQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTc4Nyw4ICs3ODcsMTggQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3Jl
OjpSZWcKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBv
cGVuZXJQYWdlSUQsIFdURk1vdmUob3BlbmVyRG9tYWluKSk7CiAgICAgfQogfQotI2VuZGlmCiAK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzUHJldmFsZW50U3VicmVzb3Vy
Y2VMb2FkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxl
RG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdv
cmtTZXNzaW9uKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKK30KKyNlbmRpZgogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Q
cm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpCiB7CiAgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdp
bikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDg2Y2M2MGQx
YTk5NzVlOWI1ODUzMmIyNjFiYmNhY2EwNWIyOTlhNWYuLjMzZjk2YTM4MGRkNjQ3YWRjNGZiYWU0
YThiOWU3ZWZiOTQ4ZmIxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI1OCw2ICsy
NTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKKyAg
ICB2b2lkIGlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
I2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQz
YjVmNjc0ZTU1ZThkNzZiMTI4M2RkN2I3MjQ2YjY2MGIxODEyYWMuLjdmNTY3MGFhMGEzN2QxMmI2
ZjJkYzA0OTBkNWIxY2EyODU2OTRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtNjIsNiArNjIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSGFzU3RvcmFnZUFjY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VB
Y2Nlc3MpIEFzeW5jCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2Vi
UGFnZVByb3h5SUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCisgICAgSXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxv
YWQoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBpc1ByZXZhbGVudCkgQXN5bmMKICNlbmRpZgog
CiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwg
U3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggODY2NzU0MjEy
ZGRkN2ZiODI4OGI2ZjcyMTkyOWZkMjk2NmQzOGE4Ni4uMTBlMTEzMmQ1YWU0ODI3N2U4M2VkZmQ3
ZGQ0MDgxNmVkOTI4MzI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC00MDcsNiArNDA3LDQ3IEBAICsg
KHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucwogICAgIFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7
CiB9CiAKKy0gKHZvaWQpX2dldFByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFp
bnMpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCF3ZWJWaWV3KSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHdlYlBhZ2VQcm94eSA9IFt3ZWJWaWV3IF9wYWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgd2ViUGFn
ZVByb3h5LT5nZXRQcmV2YWxlbnREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBwcmV2YWxlbnREb21haW5zKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiBhcGlEb21haW5zOworICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocHJldmFsZW50RG9tYWlucy5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6
IHByZXZhbGVudERvbWFpbnMpCisgICAgICAgICAgICBhcGlEb21haW5zLnVuY2hlY2tlZEFwcGVu
ZChBUEk6OlN0cmluZzo6Y3JlYXRlKGRvbWFpbi5zdHJpbmcoKSkpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURvbWFpbnMp
KSkpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworI2VuZGlm
Cit9CisKKy0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2Vi
VmlldworeworICAgIGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB3
ZWJQYWdlUHJveHkgPSBbd2ViVmlldyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpCisg
ICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgd2ViUGFnZVByb3h5LT5jbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyNlbmRpZgorfQorCisK
IC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJW
aWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21h
aW5zKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmICghd2ViVmlldykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKaW5kZXggNmU5OTYxOWQyNTA1OGNmZjlmNzgyOGM1Njk1MmI0YWZjYTRl
MmUxNi4uN2QzZmQ1ZmQ2OGNkMmNkZDQyMDE1YjViYWJhMWRiOTc5ZjQ4MTVjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC02Miw2ICs2Miw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIC0gKHZvaWQp
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6KG51bGxhYmxlIHZvaWQg
KF4pKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqKSljYWxsYmFjayBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKKy0gKHZvaWQpX2dldFBy
ZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
ICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKICsgKHZv
aWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZp
Y2VXb3JrZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1MjJlZjE2ZmVhZWIz
YThlYTNiMjhhYTM4NmM1YmY5YWZjOTg3ZWEuLjIxMDJjNTFkMjE0ZjE1NDMyNjdmN2JhNjMxMzZj
ZDc3NzdjZGQzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNDU2Myw2ICs0NTYzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWcKICAgICB9CiAKICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgICAgICBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyNlbmRpZgogICAg
ICAgICBtX21haW5GcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciA9IGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyOwogCiAgICAgICAgIGlmIChtX21haW5GcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlcikgewpAQCAtOTg1Niw2ICs5ODU5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKICNlbmRp
ZgogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRQcmV2YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQcmV2YWxlbnREb21haW5zKCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNs
ZWFyUHJldmFsZW50RG9tYWlucygpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xl
YXJQcmV2YWxlbnREb21haW5zKCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjdW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGE2NzA4NTZkNzFlYTY4YzNmNWVlZmEwOGMwZTdjMWJmNTFmZTAyMDIu
LjRmNzY3NGY1ZjQyYzRhY2M0ZWJmZWIzMjdkZjU4MjZiMWViNGM2YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTQ1LDYgKzE1NDUsOCBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybShjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJv
bVByZXZhbGVudFJlc291cmNlKCk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+
JiYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBmMWJkNzFhMjQ1MTdjNDc5YTEzZjZkODIwOWZjOGU5YjE0OTU0ZmE2Li4yNDE2YmM2MjRl
M2FlYTE1OTU0YTdhNjc1MGI5ZDBjNzUzMzQzOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTE1Myw2ICsxNTMsMTYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoRnJhbWVTcGVjaWZpY1N0b3JhZ2UKIAog
ICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0gV1RGTW92ZShmcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIpOwogfQorCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbikKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHdlYlBhZ2UtPmFkZExv
YWRlZFJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7Cit9CisKICNlbmRpZgogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDlhYTVhMDU0OTI0M2E4Mzk0MGU1YTk1MGRkYmM4MTdh
NDRiNTA5NDMuLmUzNzdiODFkODQxNWY2NDRjYTgwNmUwZmQ0YzcyMjhmNWE5Y2Y2NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgIH07CiAgICAgdm9pZCBzZXRI
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcyhGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lk
ZW50aWZpZXImJik7CisgICAgdm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKICNlbmRpZgogICAgIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA4YmNj
MTAyZWJhMDA2MjAzNmJjZGM1ZTgwNjYzZjYwMzRmZDBlMy4uZDU1NzMyYjYyZGQyMGI3YWViOTYx
ZmQ5YTQwMzg0Y2NlNjNmMGYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTY1ODksNiArNjU4OSw5IEBAIHZvaWQgV2ViUGFnZTo6c2V0SXNT
dXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCiAgICAgaWYgKCFzdXNwZW5kZWQpCiAgICAgICAgIHJl
dHVybjsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgY2xlYXJQ
cmV2YWxlbnREb21haW5zKCk7CisjZW5kaWYKICAgICAvLyBVbmZyb3plbiBvbiBkcmF3aW5nIGFy
ZWEgcmVzZXQuCiAgICAgZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UGFn
ZVN1c3BlbmRlZCk7CiAKQEAgLTY2NjYsNiArNjY2OSwyOSBAQCB2b2lkIFdlYlBhZ2U6Ondhc0xv
YWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQogCiAgICAgZnJhbWUt
PmRvY3VtZW50KCktPndhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3Vy
Y2UoKTsKIH0KKwordm9pZCBXZWJQYWdlOjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fbG9hZGVkRG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OklzUHJldmFsZW50U3VicmVzb3VyY2VMb2Fk
KG1fd2ViUGFnZVByb3h5SWRlbnRpZmllciwgZG9tYWluKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKCp0aGlzKSwgZG9tYWluXSAoYm9vbCBpc1ByZXZhbGVudCkgeworICAgICAg
ICAgICAgaWYgKGlzUHJldmFsZW50KQorICAgICAgICAgICAgICAgIG1fcHJldmFsZW50RG9tYWlu
cy5hZGQoZG9tYWluKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6Omdl
dFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIobV9wcmV2YWxlbnREb21haW5zKTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclByZXZhbGVu
dERvbWFpbnMoKQoreworICAgIG1fcHJldmFsZW50RG9tYWlucy5jbGVhcigpOworICAgIG1fbG9h
ZGVkRG9tYWlucy5jbGVhcigpOworfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggZjk4ZTk0NjQ3NjgyY2E3MzRjNjAzMGVmZjdiODJhZjNhMzlmYzc4Mi4uMWJmMWQzZDg5MTM5
NTk2OTg5NWRmYWNkYzNkYWIxMmE0ZTMxZGNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE3Niw2ICsxMTc2LDkgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBhZGREb21haW5XaXRoUGFnZUxldmVsU3Rv
cmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21h
aW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbik7CiAg
ICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7
CisgICAgdm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworICAgIHZvaWQg
Z2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+KT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCkBAIC0yMDQ1LDYgKzIwNDgsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFBhZ2VM
ZXZlbFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9sb2FkZWREb21haW5zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1fcHJldmFsZW50RG9tYWluczsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fb3ZlcnJpZGRl
bk1lZGlhVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGFiOTdiMmI5MjYwNTk5MDdjY2RjZjk5Y2RlOWU1YmYz
ZDI3ZDdhNDkuLjBiNjM1MmQ0NmQwZGFkY2U3YzI4NTIxZmYzOTNlODJiMzkwMzRkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtNTgyLDYgKzU4Miw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdhc0xvYWRlZFdpdGhEYXRhVHJh
bnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQorICAgIENsZWFyUHJldmFsZW50RG9tYWlucygp
CisgICAgR2V0UHJldmFsZW50RG9tYWlucygpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zKSBBc3luYwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NTY3OGRhMGU2MmMyMmJhYzkwNzFiYjQ4ZjkxODkwMDMxZDljNDA1OC4uOWEwYjgwM2Q4NzkzYzdm
YzE1YWU0YTY3MWViODA1ZTcyODk4Y2U5NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAyLTEyICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgICBFeHBvc2UgcHJl
dmFsZW50IGRvbWFpbnMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMworICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIFdlYktpdFRlc3RSdW5uZXIgZnVuY3Rpb25zIHNvIHRoaXMgZnVuY3Rpb25h
bGl0eSBjYW4gYmUgdGVzdGVkLgorICAgICAgICBjbGVhclByZXZhbGVudERvbWFpbnMgc2hvdWxk
IGJlIGNhbGxlZCBiZXR3ZWVuIHRlc3RzIHRvIHJlc2V0IHRoZQorICAgICAgICBzdGF0ZS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZl
TWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50
RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFs
ZW50RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFs
ZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVu
dERvbWFpbnMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21h
aW5zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOgorCiAyMDIwLTAy
LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIFdLSFRUUENvb2tpZVN0b3JlLl9nZXRDb29raWVzRm9yVVJMIFNQSQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKaW5kZXggMTYwYzJlOWYzYmE2NDc3NTk4YWE1MmNhMmM1YTc5MjgwODkz
Mjg2Ny4uYTdmZDIxZTRhMGY4Nzc2NTMwMDNiNWE4YWUxNDhhNDY3ZDllMmE4YSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDQsNiArMzQ0LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5u
ZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xl
YW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9w
dGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFu
IHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhv
YmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50Lgog
ICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKG9iamVjdCBj
YWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGZhZWRhZjU3NDViYmM3OGI5ZGI1Yzg3NTdk
YzQ4OWYyZjlhMDJmOTguLjk1OGE3OWJhNDM0OGE5NzkyMjgwM2VlMjM2MTkwYjUwMmZkZjNjMWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00MDQsNiArNDA0LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrKGRvbWFpbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2Fs
bERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpIHsKKyAgICAgICAgQVNTRVJUKG1lc3NhZ2VC
b2R5KTsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5
R2V0VHlwZUlEKCkpOworCisgICAgICAgIFdLQXJyYXlSZWYgZG9tYWluc0FycmF5ID0gc3RhdGlj
X2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHNpemUgPSBXS0Fy
cmF5R2V0U2l6ZShkb21haW5zQXJyYXkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5z
OworICAgICAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBXS1R5cGVS
ZWYgaXRlbSA9IFdLQXJyYXlHZXRJdGVtQXRJbmRleChkb21haW5zQXJyYXksIGkpOworICAgICAg
ICAgICAgaWYgKGl0ZW0gJiYgV0tHZXRUeXBlSUQoaXRlbSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQo
KSkKKyAgICAgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZCh0b1dURlN0cmluZyhz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oaXRlbSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1f
dGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soV1RGTW92
ZShkb21haW5zKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAyNDU2OWM5
OTMyMGYwMzJiZWIxMWM4YTg4OTIzMmNjNzY1NTNkMDcyLi41MjFmNWU1NWQ2NjUzMDk5NDdmZjY0
NTg4Mjg0NDA1MmExOWEzNjVmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw2ICs3NTQsNyBAQCBlbnVtIHsK
ICAgICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNr
SUQsCiAgICAgU3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
Q2FsbGJhY2tJRCwKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCisgICAg
R2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzQ2FsbGJhY2tJRCwKICAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJ
RCwKICAgICBUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFja0lELApAQCAtMjM1Miw2ICsy
MzUzLDM4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNz
RW50cmllc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQog
Cit2b2lkIFRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFj
aykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2Fs
bGJhY2tJRCwgY2FsbGJhY2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFBy
ZXZhbGVudERvbWFpbnMiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFj
ayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWlu
RnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxl
RnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworICAgIAorICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnWycpOworICAg
IGJvb2wgaXNGaXJzdERvbWFpbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zKSB7CisgICAgICAgIGlmIChpc0ZpcnN0RG9tYWluKQorICAgICAgICAgICAgaXNGaXJzdERv
bWFpbiA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XCIiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiIpOworICAgIH0KKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnXScpOworICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VG
cm9tSlNPTlN0cmluZyhjb250ZXh0LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKworICAg
IGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEs
ICZyZXN1bHQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0
cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBl
KQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4
IGMzYzEwNDUzZTkzMjhlYmNlODk1YjZhYTJmYWE4MWMxYWRmMmJhYTIuLjcyMjhiNWIzZGYyMWIz
NTUxNjg0NGZhMTUxMjFmYjgzMmU0ZTk0ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NDgsNiArNDQ4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CisgICAgdm9pZCBnZXRQ
cmV2YWxlbnREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgY2FsbERpZFJl
Y2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsK
IAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxU
ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTEwZWYzMzMxOTBh
YjcxNzY1MzA4ZDNhNmJhMDM0MjgwYjA3YzNiYy4uMGU1NDFiN2M3Yzg2YTljN2E0NTIxNmI0M2Qw
MmU3ZmEwZGU5N2M5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTExMTAsNyArMTExMCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZSgpOwotICAgIAorICAgIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworCiAg
ICAgY2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsKIAogICAgIG1fZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gZmFsc2U7CkBAIC0zMTE0LDYgKzMxMTUs
MTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQog
ewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3sKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKK30KKwog
I2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2tD
b250ZXh0IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmYTYw
ODgyYmUxZjU3MDIzNGIzMjk2MmNhOWVjYzBjOGU2NmQxNzI5Li40ZTY1MTEyOWVjMjk0ZjZkNWE1
OWM0MzcxZTI5NjM1YTFiMWY5OTRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCkBAIC0yNTgsNiArMjU4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFy
UHJldmFsZW50RG9tYWlucygpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxlVVJMcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxl
VVJMcyA9IGZpbGVVUkxzOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IDI5Yjk5ZjhjMjMyOGQ3NjI1ZmNiYWU2NWU4ODk3ZGY0MGNhMmJjY2EuLjgxYWZi
NTI5ODQwZGIyZjM4MTQ3ZDNmZGRlMTMwNmVmNmQyNzNhMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC04MDcsNiArODA3LDExIEBAIHZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyAgICAKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFByZXZhbGVu
dERvbWFpbnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0UHJl
dmFsZW50RG9tYWlucygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CkBAIC0xOTQyLDYgKzE5NDcsMTcgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
UHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpOworICAgIAor
ICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0so
V0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5z
KQorICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShtZXNzYWdlQm9keS5nZXQoKSwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgp
KTsKKyAgICAKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJD
YWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggZTFjMmM1ZGJlNTI2NjcxZTgzYjE0N2Q1
MWNjYmI2NzFjMjE3NGYyYi4uNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2ZiYTRjMTNl
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODYsNiArODYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAg
ICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7
CiAKICAgICB2b2lkIGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IDNmOTMwNGVhNDgwMGMwM2QxNWI0ZTBlNjNkZmJlY2U3MjAzOWZiMjMuLjgxYzBhMDY3
YjIzNWQwMTVlYWVhZmVkMjdjYWJmOWNiM2JjOWQ3ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTMzMiw2ICszMzIs
MzAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQog
ICAgIH1dOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkK
K3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVu
dFZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3
LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4g
Km5zRG9tYWlucykgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zOworICAgICAgICBk
b21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNvdW50KTsKKyAgICAgICAg
Zm9yIChOU1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQorICAgICAgICAgICAgZG9tYWlucy51
bmNoZWNrZWRBcHBlbmQoZG9tYWluKTsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlk
UmVjZWl2ZVByZXZhbGVudERvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CisgICAgfV07Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7CisgICAgYXV0
byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CisgICAgaWYgKCFwYXJlbnRWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmll
dygpXTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5qZWN0VXNlclNjcmlwdChXS1N0cmlu
Z1JlZiBzY3JpcHQpCiB7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNj
cmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6IHRvV1RGU3RyaW5nKHNjcmlwdCkgaW5qZWN0aW9u
VGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFt
ZU9ubHk6Tk9dKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiNmQ4YzhiZGFiNDFkNjg2MGY5YmY0MWVkYzgzNTI1ZjQxZjhm
NDRkLi4yOWEyOTllNjljYjRkNDkzNWIxYWQ5NTE4OWZjZTY1MWViODc4YWE3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMjAtMDItMTIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBh
cHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHByZXZhbGVudCBkb21haW5zIG9uIGEgcGVyLXBh
Z2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkyNzA3NTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgMiBuZXcgdGVzdHMgZm9y
IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgZGF0YWJhc2UgYW5kCisgICAgICAgIG1lbW9y
eSBzdG9yZXMuIEFkZGVkIGEgYmFzaWMgaWZyYW1lIHRoYXQgYm90aCB0ZXN0cyBjYW4gdXNlIHRv
IHRlc3QKKyAgICAgICAgaWYgYSByZXNvdXJjZSBsb2FkIGZyb20gYSBwcmV2YWxlbnQgZG9tYWlu
IGdldHMgcmVwb3J0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5z
LXBlci1wYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
YmFzaWMtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAyLTExICBKYWNvYiBVcGhvZmYgIDxq
YWNvYl91cGhvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mgd2syIF0gaHR0cC90ZXN0
cy9JbmRleGVkREIvY29sbGVjdC1JREItb2JqZWN0cy5odHRwcy5odG1sIGlzIGZsYWt5IGZhaWxp
bmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRv
bWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTFhYmJl
OTNhN2YwZDczNWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3Rz
IHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBh
cyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFi
YXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODEyZWFlZTIzNDdlYjZlZWIwOTM0OGVhNTE1N2EwZjg5NmYw
N2M5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCkBA
IC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJl
dmFsZW50IHVuZGVyIHRoaXMgcGFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBjb25z
dCBpZnJhbWVJRCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgZnVuY3Rp
b24gYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5n
ZXRQcmV2YWxlbnREb21haW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgICAgICAg
ICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMg
c3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVs
bHkgbWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxl
bWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
Y2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAg
aWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQi
OworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9z
dDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RV
bmRlclRlc3Q7CisgICAgICAgIAorICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNl
KHRydWUpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlz
dGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAgICAgIGlmcmFtZUVs
ZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lmlk
ID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAgICAgIGlmcmFtZUVs
ZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFn
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRm
MDQ2YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50
IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1
bGx5IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMThjNmZiYTcwN2E4MTg2NzVlYWE4YjNkMjEw
NjkxZTc3MjYzZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKQEAg
LTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
YSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2
YWxlbnQgdW5kZXIgdGhpcyBwYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0
IGlmcmFtZUlEID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlv
biBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdl
dFByZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0IikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMg
c3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVs
bHkgbWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxl
bWVudChlbGVtZW50SWQpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgICAgICB2YXIg
Y2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICApOworICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAg
aWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQi
OworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9z
dDo4MDAwIjsKKyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RV
bmRlclRlc3Q7CisgICAgICAgIAorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NV
cmwpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNl
dCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICBsZXQgaWZyYW1l
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICAgICAg
ICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKKyAgICAgICAgICAgICAgICBpZnJh
bWVFbGVtZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICAgICAg
ICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNj
ZXNzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYmFzaWMtaWZyYW1lLmh0bWwiOworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI2NTVmNGU3NzhhZTlhZmEwMWRmMzVkNjBjMmQ4NzQ3M2I0ZmJj
NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390706</attachid>
            <date>2020-02-13 17:07:45 -0800</date>
            <delta_ts>2020-02-13 18:43:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207523-20200213170745.patch</filename>
            <type>text/plain</type>
            <size>42798</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1ODA2YWRlNTZlZGQ5
NzU4OTFhOWFlNjIxNjQ1ZWQwNjk3NTY3Ny4uZTI1NDkwMmMzYWQzNmI1N2QyOGE4NDY0YTQ0MThk
MGMyOGRjOTBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBw
cmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwK
KworICAgICAgICBMb2dzIHN1YnJlc291cmNlIGxvYWRzIGluIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UsIGFuZAorICAgICAgICByZWRpcmVjdHMgaW4gUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsLAorICAgICAgICBhbmQgcmVwb3J0cyBkb21haW5z
IHRvIHRoZSBXZWIgUHJvY2Vzcy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKwogMjAyMC0w
Mi0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIElu
dHJvZHVjZSBMYXlvdXQ6OkxpbmVCcmVha0JveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0Nzk0NTk4OGUxZGQ4NmY2
NzIyYTJjYjA0NWU3Yjk3Yjc0NjY1YjA2Li41YTllMDZiODU3MGQ1NjdlZjQwZWFkMTg2NjA1NzFi
ZjU3ZjgyODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTEyICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBwcmV2
YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRv
bWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKwor
ICAgICAgICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLiBUaGUgV2Vi
IFByb2Nlc3Mgc2VuZHMgYWxsCisgICAgICAgIG5ldyBsb2FkcyB0byB0aGUgTmV0d29yayBQcm9j
ZXNzLCB3aGljaCBkZXRlcm1pbmVzIGlmIHRoZSByZXNvdXJjZXMgYXJlCisgICAgICAgIHByZXZh
bGVudC4gV2hlbiB0aGUgQVBJIGlzIHF1ZXJpZWQsIHRoZSBXZWIgUHJvY2VzcyByZXBvcnRzIHRo
ZXNlCisgICAgICAgIGRvbWFpbnMgdG8gdGhlIFVJIFByb2Nlc3MuCisKKyAgICAgICAgVGhlIFdl
YlBhZ2Uga2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5IGxvYWRlZCBkb21haW5zIHRvIGF2
b2lkCisgICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVhdCBkb21haW5zLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZXBvcnRTdWJyZXNvdXJjZUxvYWRUb0RvbWFpbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFy
UHJldmFsZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9y
RnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9t
YWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNsZWFyUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKwogMjAyMC0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIERlcHJlY2F0ZSBfV0tVc2VyQ29udGVudFdvcmxkIHJlcGxhY2VkIGJ5
IFdLQ29udGVudFdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IGU5ZGViZTFiODdmNWRhMTE2OGIzY2Y5NjY2MDA2NTUxYjNiZTM0NTQuLjk4ZDAyY2Y5
ZTJhZWQ4MDMwODlkNTgxZTYyNjI4ZjkwM2Q2YzE0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05MCw2ICs5MCw3IEBAIGNsYXNzIE5hdmlnYXRpb25B
Y3Rpb247CiBjbGFzcyBQYWdlOwogY2xhc3MgUGx1Z2luVmlld0Jhc2U7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsK
QEAgLTM3NCw2ICszNzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIHZpcnR1YWwgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vz
cygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGFkZExvYWRlZFJlZ2lzdHJh
YmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYpIHsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhMDRlM2Q1Y2ViOGE1YmFjM2Vl
NzQ0YTIwOGI3YzlhNDY5YTBjNWZiLi43MzIxNzAwZTRjMTczZmNhYTkxODdiZDZjZmM3NDg5ODAx
ZWM2OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQx
MCw5ICs0MTAsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJu
YWwoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICNlbmRpZgogCiAgICAgYm9v
bCBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCk7Ci0gICAgaWYgKGlzUmVk
aXJlY3QpCisgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCh0aGlzLCBy
ZXF1ZXN0LnVybCgpKTsKLQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWlu
KFJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpKTsKKyNlbmRpZgorICAgIH0KICAgICBt
X3JlcXVlc3QgPSByZXF1ZXN0OwogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGMzZDhlMzVkZGYyYjIxNWU1YWM3ZTkxYmE5NDQ1MTZkYWE2MDgyYmMuLmM4MDExMjk4NDg5ZTk0
MDkxOTk2ZWI0YzNiOTVhYzEzYTg0MWVhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkwLDYgKzc5MCw5IEBA
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgYXV0byYgZnJhbWUgPSAqdGhpcy0+ZnJhbWUo
KTsKICAgICBhdXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVk
UmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKSkpOworI2VuZGlmCiAgICAgcmVxdWVzdC5zZXREZXN0aW5hdGlvbklmTm90U2V0
KGRlc3RpbmF0aW9uRm9yVHlwZSh0eXBlKSk7CiAKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRw
czovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IDkwYWVjMjUzNjQ5MTAyOGNiM2JjMTZm
NDFkODYwOTY1YTk3YzRjMDEuLjU2NWU0MjdkZGU3Y2NlNzNkZWQyOTc2M2JkNmE4ZDBmOGJjNTcx
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWlu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaApAQCAt
NDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkgfHwgbV9yZWdpc3RyYWJsZURv
bWFpbiA9PSAibnVsbE9yaWdpbiJfczsgfQorICAgIFN0cmluZyYgc3RyaW5nKCkgeyByZXR1cm4g
bV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbiAhPSBvdGhlci5tX3JlZ2lzdHJhYmxlRG9tYWluOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkMzhlZGMxNjc2ZmEzZDY4Njk2MmRjNzg2ZWFjYmQu
Ljc1ZTBiNGEyNjVjOWVlNTlhMGI0MzA3OTRmN2VmMGQyMTdjNzJmMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC03ODcsNiArNzg3LDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6
UmVnCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgb3Bl
bmVyUGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0KIH0KKwordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoUmVn
aXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2UoZG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworfQogI2VuZGlm
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDg2
Y2M2MGQxYTk5NzVlOWI1ODUzMmIyNjFiYmNhY2EwNWIyOTlhNWYuLmViNmY1NWM2ZmU5ZTNiOWQx
MjRhZjJhNzE1ZjM1YWIxM2ZlMzNlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI1
OCw2ICsyNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWlu
KTsKKyAgICB2b2lkIGlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKFJlZ2lzdHJhYmxlRG9tYWlu
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQzYjVmNjc0ZTU1ZThkNzZiMTI4
M2RkN2I3MjQ2YjY2MGIxODEyYWMuLmVjOWIwYjhmODRhODRmZmViMDU4NTFkNDkzYzU5NWYyNmE1
NDY1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NjIsNiArNjIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgSGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJh
bWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAg
UmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpIC0+IChl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51
bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVu
ZXJEb21haW4pCisgICAgSXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBpc1ByZXZhbGVudCkgQXN5bmMKICNlbmRpZgog
CiAgICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwg
U3RyaW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggODY2NzU0MjEy
ZGRkN2ZiODI4OGI2ZjcyMTkyOWZkMjk2NmQzOGE4Ni4uNzZiNzEzZTkzM2Y5ODY3Y2MxZmZhZDhl
MTRhMjEzY2E3ZjMwM2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC00MDcsNiArNDA3LDQ3IEBAICsg
KHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucwogICAgIFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7
CiB9CiAKKy0gKHZvaWQpX2dldFByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFp
bnMpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBpZiAoIXdlYlZpZXcpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmls
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dl
YlZpZXcgX3BhZ2VdOworICAgIGlmICghd2ViUGFnZVByb3h5KSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5pbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgd2ViUGFn
ZVByb3h5LT5nZXRQcmV2YWxlbnREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiYgcHJldmFsZW50RG9tYWlucykgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4gYXBpRG9tYWluczsKKyAgICAgICAgYXBpRG9tYWlucyA9IFdURjo6bWFwKHByZXZhbGVu
dERvbWFpbnMsIFtdKGF1dG8mIGRvbWFpbikgeworICAgICAgICAgICAgcmV0dXJuIFJlZlB0cjxB
UEk6Ok9iamVjdD4oQVBJOjpTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKGRvbWFpbi5zdHJpbmcoKSkp
KTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpB
cnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpRG9tYWlucykpKSk7CisgICAgfSk7CisjZWxzZQorICAg
IGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZClfY2xlYXJQcmV2
YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2Vi
UGFnZVByb3h5KQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlUHJveHktPmNsZWFyUHJl
dmFsZW50RG9tYWlucygpOworI2VuZGlmCit9CisKKwogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAgICAgaWYgKCF3ZWJWaWV3KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA2ZTk5
NjE5ZDI1MDU4Y2ZmOWY3ODI4YzU2OTUyYjRhZmNhNGUyZTE2Li43ZDNmZDVmZDY4Y2QyY2RkNDIw
MTViNWJhYmExZGI5NzlmNDgxNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTYy
LDYgKzYyLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICos
IE5TU3RyaW5nICopKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3Mo
MTEuMCkpOwogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmll
dyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTQpLCBpb3MoMTIuMCkpOworLSAodm9pZClfZ2V0UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJW
aWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAodm9pZClfYWxsb3dXZWJzaXRlRGF0YVJlY29y
ZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4z
KSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNzUyMmVmMTZmZWFlYjNhOGVhM2IyOGFhMzg2YzViZjlhZmM5ODdl
YS4uMTYzYjhmNzAxNDJiMjU1OTZhNDNkNTI2MjIzMzA4YzkwNDVlYmJlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05ODU2LDYgKzk4NTYsMTggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldE9yaWVudGF0aW9uRm9yTWVkaWFDYXB0dXJlKHVpbnQ2NF90IG9y
aWVudGF0aW9uKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UHJl
dmFsZW50RG9tYWlucygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsZWFyUHJldmFsZW50RG9tYWlucygpKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNjcwODU2ZDcxZWE2OGMzZjVlZWZhMDhj
MGU3YzFiZjUxZmUwMjAyLi4yOWM4NDQzNTcxYWZjOTVjMDZjMGRjYWE5MTY5OTVkNWQwNWZhMzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU0NSw2ICsxNTQ1
LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0
aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOworICAgIHZvaWQgZ2V0UHJldmFs
ZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJik+JiYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCBmMWJkNzFhMjQ1MTdjNDc5YTEzZjZkODIwOWZjOGU5YjE0OTU0
ZmE2Li42MzJhMjQwMmVkZDlmMDdhN2I3OWYwMjZhZTU3MTdjY2IzOTRlMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1Myw2ICsxNTMsMTYgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoRnJhbWVTcGVj
aWZpY1N0b3JhZ2UKIAogICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVy
ID0gV1RGTW92ZShmcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIpOwogfQorCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3sKKyAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHdl
YlBhZ2UtPmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7Cit9CisK
ICNlbmRpZgogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3ll
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDlhYTVhMDU0OTI0M2E4Mzk0MGU1
YTk1MGRkYmM4MTdhNDRiNTA5NDMuLmUzNzdiODFkODQxNWY2NDRjYTgwNmUwZmQ0YzcyMjhmNWE5
Y2Y2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02MSw2ICs2MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgIH07CiAg
ICAgdm9pZCBzZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcyhGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXImJik7CisgICAgdm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURv
bWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKICNlbmRpZgogICAgIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNTA4YmNjMTAyZWJhMDA2MjAzNmJjZGM1ZTgwNjYzZjYwMzRmZDBlMy4uZTMzNjc1ZGE4
MTRkOWQ3NWRjYzM2NzAzYWExODA2ZGVhNzIyNTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4MzYsNiArNTgzNiwxMCBAQCB2b2lkIFdl
YlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIGlmICghZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CisjZW5kaWYKKyAgICAK
ICAgICAvLyBJZiBwcmV2aW91cyBVUkwgaXMgaW52YWxpZCwgdGhlbiBpdCdzIG5vdCBhIHJlYWwg
cGFnZSB0aGF0J3MgYmVpbmcgbmF2aWdhdGVkIGF3YXkgZnJvbS4KICAgICAvLyBNb3N0IGxpa2Vs
eSwgdGhpcyBpcyBhY3R1YWxseSB0aGUgZmlyc3QgbG9hZCB0byBiZSBjb21taXR0ZWQgaW4gdGhp
cyBwYWdlLgogICAgIGlmIChmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByZXZpb3VzVVJM
KCkuaXNWYWxpZCgpKQpAQCAtNjY2Niw2ICs2NjcwLDMwIEBAIHZvaWQgV2ViUGFnZTo6d2FzTG9h
ZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCiAKICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJj
ZSgpOwogfQorCit2b2lkIFdlYlBhZ2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRE
b21haW5zLmFkZChkb21haW4pOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6SXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoZG9tYWluKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgZG9tYWluXSAoYm9vbCBp
c1ByZXZhbGVudCkgeworICAgICAgICAgICAgaWYgKGlzUHJldmFsZW50KQorICAgICAgICAgICAg
ICAgIG1fcHJldmFsZW50RG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCit2b2lkIFdlYlBhZ2U6OmdldFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICAKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb3B5VG9WZWN0b3IobV9wcmV2YWxlbnREb21h
aW5zKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKKyAg
ICBtX3ByZXZhbGVudERvbWFpbnMuY2xlYXIoKTsKKyAgICBtX2xvYWRlZERvbWFpbnMuY2xlYXIo
KTsKK30KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGY5OGU5NDY0NzY4MmNh
NzM0YzYwMzBlZmY3YjgyYWYzYTM5ZmM3ODIuLmI1MjdiZDE2MjI2OGE5MGUwNzJjMjNlNDNlYjcw
NTMyMTg1ZWQ1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTExNzYsNiArMTE3Niw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BhZ2VMZXZlbFN0
b3JhZ2VBY2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9t
YWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNv
bnN0OwogICAgIHZvaWQgYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pOwogICAgIHZvaWQgd2FzTG9hZGVk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOworICAgIHZvaWQgYWRkTG9h
ZGVkUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CisgICAg
dm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFp
bnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+KT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC0y
MDQ1LDYgKzIwNDgsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7
CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9sb2FkZWREb21haW5z
OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcHJldmFsZW50RG9t
YWluczsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IGFiOTdiMmI5MjYwNTk5MDdjY2RjZjk5Y2RlOWU1YmYzZDI3ZDdhNDkuLjlkNWE4Y2Zi
ZjcxZTU5ZGRlYWE4ZjNhNWJiMGU4MzM3NTk2YzUwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTgyLDYgKzU4
Miw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIFdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50
UmVzb3VyY2UoKQorICAgIENsZWFyUHJldmFsZW50RG9tYWlucygpCisgICAgR2V0UHJldmFsZW50
RG9tYWlucygpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMp
IEFzeW5jCiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1Njc4ZGEwZTYyYzIyYmFjOTA3
MWJiNDhmOTE4OTAwMzFkOWM0MDU4Li43YzJlYjMzNmIzMTk2N2Q3YTFmMTdhMTEyOGNhODlhMjdl
MTFmNTBmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMDItMTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgIEV4cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBh
IHBlci1wYWdlIGJhc2lzCisgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NTIzCisgICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkyNzA3NTg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgV2ViS2l0
VGVzdFJ1bm5lciBmdW5jdGlvbnMgc28gdGhpcyBmdW5jdGlvbmFsaXR5IGNhbiBiZSB0ZXN0ZWQu
CisgICAgICAgIGNsZWFyUHJldmFsZW50RG9tYWlucyBzaG91bGQgYmUgY2FsbGVkIGJldHdlZW4g
dGVzdHMgdG8gcmVzZXQgdGhlCisgICAgICAgIHN0YXRlLgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpnZXRQcmV2YWxlbnREb21haW5zKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2sp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucyk6CisKIDIwMjAtMDItMTEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgV0tIVFRQQ29va2ll
U3RvcmUuX2dldENvb2tpZXNGb3JVUkwgU1BJCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCAxNjBjMmU5ZjNiYTY0Nzc1OThhYTUyY2EyYzVhNzkyODA4OTMyODY3Li5hN2ZkMjFlNGEwZjg3
NzY1MzAwM2I1YThhZTE0OGE0NjdkOWUyYThhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTM0NCw2ICszNDQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNh
bGxiYWNrKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjaywgb3B0aW9uYWwgYm9vbGVhbiBvbmx5
T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxs
YmFjayk7CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAK
ICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4
dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggZmFlZGFmNTc0NWJiYzc4YjlkYjVjODc1N2RjNDg5ZjJmOWEwMmY5OC4uOTU4
YTc5YmE0MzQ4YTk3OTIyODAzZWUyMzYxOTBiNTAyZmRmM2MxYSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTQwNCw2ICs0MDQsMjQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90
ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2so
ZG9tYWlucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZVByZXZhbGVu
dERvbWFpbnMiKSkgeworICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgICAgICBBU1NF
UlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlHZXRUeXBlSUQoKSk7CisKKyAg
ICAgICAgV0tBcnJheVJlZiBkb21haW5zQXJyYXkgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPiht
ZXNzYWdlQm9keSk7CisgICAgICAgIGF1dG8gc2l6ZSA9IFdLQXJyYXlHZXRTaXplKGRvbWFpbnNB
cnJheSk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgICAgIGRvbWFpbnMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIFdLVHlwZVJlZiBpdGVtID0gV0tBcnJheUdl
dEl0ZW1BdEluZGV4KGRvbWFpbnNBcnJheSwgaSk7CisgICAgICAgICAgICBpZiAoaXRlbSAmJiBX
S0dldFR5cGVJRChpdGVtKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgICAg
IGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKHRvV1RGU3RyaW5nKHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihpdGVtKSkpOworICAgICAgICB9CisKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlk
UmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNr
IikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRl
bnRpYWxzQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDI0NTY5Yzk5MzIwZjAzMmJlYjExYzhhODg5
MjMyY2M3NjU1M2QwNzIuLjUyMWY1ZTU1ZDY2NTMwOTk0N2ZmNjQ1ODgyODQ0MDUyYTE5YTM2NWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtNzU0LDYgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRT
ZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNz
RGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwKKyAgICBHZXRQcmV2YWxlbnREb21haW5z
Q2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lE
LAogICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELAogICAgIFRleHREaWRDaGFu
Z2VJblRleHRGaWVsZENhbGxiYWNrSUQsCkBAIC0yMzUyLDYgKzIzNTMsMzggQEAgdm9pZCBUZXN0
UnVubmVyOjpjYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVj
dG9yPFN0cmluZz4mIGQKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6
Z2V0UHJldmFsZW50RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlVGVz
dFJ1bm5lckNhbGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFjayk7
CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0UHJldmFsZW50RG9tYWlucyIpKTsK
KyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6
OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYg
ZG9tYWlucykKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFn
ZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkp
OworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRD
b250ZXh0KG1haW5GcmFtZSk7CisgICAgCisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdbJyk7CisgICAgYm9vbCBpc0ZpcnN0RG9tYWlu
ID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgaWYg
KGlzRmlyc3REb21haW4pCisgICAgICAgICAgICBpc0ZpcnN0RG9tYWluID0gZmFsc2U7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiIpOworICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChkb21haW4pOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIlwiIik7CisgICAgfQorICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCddJyk7CisgICAg
CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKGNvbnRl
eHQsIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7Cit9CisKIHZv
aWQgVGVzdFJ1bm5lcjo6YWRkTW9ja01lZGlhRGV2aWNlKEpTU3RyaW5nUmVmIHBlcnNpc3RlbnRJ
ZCwgSlNTdHJpbmdSZWYgbGFiZWwsIGNvbnN0IGNoYXIqIHR5cGUpCiB7CiAgICAgVmVjdG9yPFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPj4ga2V5czsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggYzNjMTA0NTNlOTMyOGViY2U4
OTViNmFhMmZhYTgxYzFhZGYyYmFhMi4uNzIyOGI1YjNkZjIxYjM1NTE2ODQ0ZmExNTEyMWZiODMy
ZTRlOTRkNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKQEAgLTQ0OCw2ICs0NDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0
aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2so
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29u
c2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFp
bnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwogCiAgICAgLy8gSW5qZWN0ZWQg
YnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRleHRG
aWVsZENhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlMTBlZjMzMzE5MGFiNzE3NjUzMDhkM2E2YmEwMzQy
ODBiMDdjM2JjLi4wZTU0MWI3YzdjODZhOWM3YTQ1MjE2YjQzZDAyZTdmYTBkZTk3YzkzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTExMCw3ICsxMTEw
LDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZSh0cnVlKTsKIAogICAgIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7Ci0g
ICAgCisgICAgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CisKICAgICBjbGVhckFkQ2xpY2tBdHRy
aWJ1dGlvbigpOwogCiAgICAgbV9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bE5hdmlnYXRpb24gPSBmYWxzZTsKQEAgLTMxMTQsNiArMzExNSwxNCBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiB7CiB9CiAKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMoKQoreworfQorCit2b2lkIFRlc3RDb250cm9s
bGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworfQorCiAjZW5kaWYKIAogc3RydWN0IENs
ZWFyU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNDYWxsYmFja0NvbnRleHQgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGZhNjA4ODJiZTFmNTcwMjM0YjMyOTYy
Y2E5ZWNjMGM4ZTY2ZDE3MjkuLjRlNjUxMTI5ZWMyOTRmNmQ1YTU5YzQzNzFlMjk2MzVhMWIxZjk5
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI1OCw2ICsy
NTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZSgpOwogCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpOworICAgIHZvaWQg
Z2V0UHJldmFsZW50RG9tYWlucygpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7
CiAKICAgICBXS0FycmF5UmVmIG9wZW5QYW5lbEZpbGVVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9v
cGVuUGFuZWxGaWxlVVJMcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZVVSTHMo
V0tBcnJheVJlZiBmaWxlVVJMcykgeyBtX29wZW5QYW5lbEZpbGVVUkxzID0gZmlsZVVSTHM7IH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMjliOTlmOGMy
MzI4ZDc2MjVmY2JhZTY1ZTg4OTdkZjQwY2EyYmNjYS4uODFhZmI1Mjk4NDBkYjJmMzgxNDdkM2Zk
ZGUxMzA2ZWY2ZDI3M2EyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKQEAgLTgwNyw2ICs4MDcsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiR2V0UHJldmFsZW50RG9tYWlucyIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nZXRQcmV2YWxlbnREb21haW5zKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAg
LTE5NDIsNiArMTk0NywxNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCiAgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7
CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMiKSk7CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tN
dXRhYmxlQXJyYXlSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgIFdLQXJyYXlB
cHBlbmRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKGRvbWFpbi51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworICAgIAorICAgIFdLUGFn
ZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0
KCkpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHMoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaAppbmRleCBlMWMyYzVkYmU1MjY2NzFlODNiMTQ3ZDUxY2NiYjY3MWMyMTc0ZjJiLi41
MDMzN2Q2NzVkZTA5MGFkZGY1Yjc2YzgwMDcyYTE3ZmJhNGMxM2U2IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlkU2V0SGFzSGFk
VXNlckludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2ZVByZXZh
bGVudERvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAogICAgIHZvaWQgZGlkUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggM2Y5MzA0ZWE0ODAw
YzAzZDE1YjRlMGU2M2RmYmVjZTcyMDM5ZmIyMy4uODFjMGEwNjdiMjM1ZDAxNWVhZWFmZWQyN2Nh
YmY5Y2IzYmM5ZDdlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzMyLDYgKzMzMiwzMCBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgfV07CiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMoKQoreworICAgIGF1dG8qIHBhcmVu
dFZpZXcgPSBtYWluV2ViVmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNEb21haW5zKSB7CisgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnM7CisgICAgICAgIGRvbWFpbnMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShuc0RvbWFpbnMuY291bnQpOworICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21h
aW4gOiBuc0RvbWFpbnMpCisgICAgICAgICAgICBkb21haW5zLnVuY2hlY2tlZEFwcGVuZChkb21h
aW4pOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlUHJldmFsZW50RG9t
YWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9XTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFp
bldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZh
bGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOworfQorCiB2b2lkIFRl
c3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAg
ICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0
aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOT10pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGI2ZDhjOGJkYWI0MWQ2ODYwZjliZjQxZWRjODM1MjVmNDFmOGY0NGQuLmQyM2Q4NGFjMWVhYWEy
YzNlODU5YzcwMWYwZTE5YzJjYmUzYjM4OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0w
Mi0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBFeHBvc2UgcHJldmFsZW50IGRvbWFpbnMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81OTI3MDc1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCAyIG5ldyB0ZXN0cyBmb3IgdGhlIHJlc291cmNlIGxvYWQg
c3RhdGlzdGljcyBkYXRhYmFzZSBhbmQKKyAgICAgICAgbWVtb3J5IHN0b3Jlcy4gQWRkZWQgYSBi
YXNpYyBpZnJhbWUgdGhhdCBib3RoIHRlc3RzIGNhbiB1c2UgdG8gdGVzdAorICAgICAgICBpZiBh
IHJlc291cmNlIGxvYWQgZnJvbSBhIHByZXZhbGVudCBkb21haW4gZ2V0cyByZXBvcnRlZCBwcm9w
ZXJseS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2
YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlu
cy1wZXItcGFnZS1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbDog
QWRkZWQuCisKIDIwMjAtMDItMTEgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9mZkBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBtYWNPUyB3azIgXSBodHRwL3Rlc3RzL0luZGV4ZWREQi9jb2xsZWN0
LUlEQi1vYmplY3RzLmh0dHBzLmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21h
aW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRh
YmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3
MTRmMDQ2YzRkNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFz
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9t
IGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0
aGlzIHBhZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIERvbWFpbiB3
YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
LWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTJlYWVlMjM0N2ViNmVlYjA5MzQ4ZWE1MTU3YTBmODk2ZjA3YzkzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZh
bGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHBy
ZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBw
YWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlv
biBmaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmlu
aXNoSlNUZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlGcmFt
ZUZyb21QcmV2YWxlbnREb21haW4iOworICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFpbnMo
ZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAgICAgdmFyIHBhc3NlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlu
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNb
aV0gPT09ICJsb2NhbGhvc3QiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2Vk
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50
LiIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewor
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50
SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVt
ZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5v
ZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBl
ci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeyB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRp
b24uaGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgeworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7CisgICAgICAgICAgICAgICAg
YWN0aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBj
b25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKKyAgICAgICAg
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKwor
ICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBydW5U
ZXN0OworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1lRnJvbVByZXZh
bGVudERvbWFpbiI7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlm
cmFtZS5odG1sIjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlm
cmFtZUVsZW1lbnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45N2UxYWJiZTkzYTdmMGQ3MzViNzNiMzcyNTcxNGYwNDZjNGQ3NWViCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUZXN0cyB0aGF0IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVw
b3J0ZWQgYXMgcHJldmFsZW50IHVuZGVyIHRoaXMgcGFnZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVu
dC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMxOGM2ZmJhNzA3YTgxODY3NWVhYThiM2QyMTA2OTFlNzcyNjNlM2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbApAQCAtMCwwICsxLDczIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJl
dmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBh
Z2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZyYW1l
RnJvbVByZXZhbGVudERvbWFpbiI7CisgICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVudFJl
c291cmNlcygpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlucyhm
dW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFzc2VkID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlu
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNb
aV0gPT09ICJsb2NhbGhvc3QiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2Vk
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50
LiIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewor
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50
SWQpOworICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVt
ZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5v
ZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgICAgICBVSUhlbHBl
ci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeyB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRp
b24uaGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgeworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7CisgICAgICAgICAgICAgICAg
YWN0aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBj
b25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKKyAgICAgICAg
CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJs
LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNv
dXJjZS4iKTsKKworICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5v
bmxvYWQgPSBydW5UZXN0OworICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZy
YW1lRnJvbVByZXZhbGVudERvbWFpbiI7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5z
cmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9iYXNpYy1pZnJhbWUuaHRtbCI7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjY1NWY0ZTc3OGFlOWFmYTAxZGYzNWQ2MGMyZDg3NDczYjRmYmM2ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvYmFzaWMtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390715</attachid>
            <date>2020-02-13 18:43:37 -0800</date>
            <delta_ts>2020-02-13 19:41:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207523-20200213184336.patch</filename>
            <type>text/plain</type>
            <size>42689</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1ODA2YWRlNTZlZGQ5
NzU4OTFhOWFlNjIxNjQ1ZWQwNjk3NTY3Ny4uNDQ3NTU5M2RhMDlmZDg4YTdjYTQyNjk5ZDg4NzE2
MmVkMjFjNmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBw
cmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRv
bWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKwor
ICAgICAgICBMb2dzIHN1YnJlc291cmNlIGxvYWRzIGluIENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UsIGFuZAorICAgICAgICByZWRpcmVjdHMgaW4gUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsLAorICAgICAgICBhbmQgcmVwb3J0cyBkb21haW5zIHRv
IHRoZSBXZWIgUHJvY2Vzcy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKwogMjAyMC0wMi0x
MSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEludHJv
ZHVjZSBMYXlvdXQ6OkxpbmVCcmVha0JveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0Nzk0NTk4OGUxZGQ4NmY2NzIy
YTJjYjA0NWU3Yjk3Yjc0NjY1YjA2Li45M2NlYzgyYzc3ZDg2MjRiZmYwNDFlNjA0MTQ3OGIyNjA2
ZDhjYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTEyICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBwcmV2YWxl
bnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5
MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRl
c3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMt
cGVyLXBhZ2UtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKKworICAgICAg
ICBBZGRlZCBhbiBBUEkgdG8gcmVwb3J0IHByZXZhbGVudCBkb21haW5zLiBUaGUgV2ViIFByb2Nl
c3Mgc2VuZHMgYWxsCisgICAgICAgIG5ldyBsb2FkcyB0byB0aGUgTmV0d29yayBQcm9jZXNzLCB3
aGljaCBkZXRlcm1pbmVzIGlmIHRoZSByZXNvdXJjZXMgYXJlCisgICAgICAgIHByZXZhbGVudC4g
V2hlbiB0aGUgQVBJIGlzIHF1ZXJpZWQsIHRoZSBXZWIgUHJvY2VzcyByZXBvcnRzIHRoZXNlCisg
ICAgICAgIGRvbWFpbnMgdG8gdGhlIFVJIFByb2Nlc3MuCisKKyAgICAgICAgVGhlIFdlYlBhZ2Ug
a2VlcHMgYSBoYXNoIHNldCBvZiBwcmV2aW91c2x5IGxvYWRlZCBkb21haW5zIHRvIGF2b2lkCisg
ICAgICAgIHNwYW1taW5nIElQQyB3aXRoIHJlcGVhdCBkb21haW5zLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZXBvcnRTdWJyZXNvdXJjZUxvYWRUb0RvbWFpbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAg
ICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFs
ZW50RG9tYWluc0ZvcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z2V0UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFy
UHJldmFsZW50RG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwog
MjAyMC0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIERlcHJlY2F0ZSBfV0tVc2VyQ29udGVudFdvcmxkIHJlcGxhY2VkIGJ5IFdLQ29u
dGVudFdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IGU5ZGViZTFiODdmNWRhMTE2OGIzY2Y5NjY2MDA2NTUxYjNiZTM0NTQuLjk4ZDAyY2Y5ZTJhZWQ4
MDMwODlkNTgxZTYyNjI4ZjkwM2Q2YzE0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC05MCw2ICs5MCw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247
CiBjbGFzcyBQYWdlOwogY2xhc3MgUGx1Z2luVmlld0Jhc2U7CiBjbGFzcyBQcm90ZWN0aW9uU3Bh
Y2U7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKQEAgLTM3
NCw2ICszNzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIHZpcnR1YWwgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGFkZExvYWRlZFJlZ2lzdHJhYmxlRG9t
YWluKFJlZ2lzdHJhYmxlRG9tYWluJiYpIHsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhMDRlM2Q1Y2ViOGE1YmFjM2VlNzQ0YTIw
OGI3YzlhNDY5YTBjNWZiLi43MzIxNzAwZTRjMTczZmNhYTkxODdiZDZjZmM3NDg5ODAxZWM2OTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQxMCw5ICs0
MTAsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICNlbmRpZgogCiAgICAgYm9vbCBpc1Jl
ZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCk7Ci0gICAgaWYgKGlzUmVkaXJlY3Qp
CisgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0
LnVybCgpKTsKLQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgICAg
IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lz
dHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpKTsKKyNlbmRpZgorICAgIH0KICAgICBtX3JlcXVl
c3QgPSByZXF1ZXN0OwogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGMzZDhl
MzVkZGYyYjIxNWU1YWM3ZTkxYmE5NDQ1MTZkYWE2MDgyYmMuLmQ0MmVhYjRkYjQ1ZjA1NmY1ZjJl
Yzg0MGRhODZmZDQ0ZDk3NTU4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtOTgyLDYgKzk4Miw5IEBAIFJlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1CiAKICAgICBBU1NFUlQocmVzb3VyY2UtPnVybCgpID09IHVybC5z
dHJpbmcoKSk7CiAgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCBy
ZXNvdXJjZSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBmcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5hZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJs
ZURvbWFpbihyZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpKTsKKyNlbmRpZgogICAg
IHJldHVybiByZXNvdXJjZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVnaXN0cmFibGVEb21haW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJh
YmxlRG9tYWluLmgKaW5kZXggOTBhZWMyNTM2NDkxMDI4Y2IzYmMxNmY0MWQ4NjA5NjVhOTdjNGMw
MS4uNTY1ZTQyN2RkZTdjY2U3M2RlZDI5NzYzYmQ2YThkMGY4YmM1NzFmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBAIC00OSw2ICs0OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluLmlzRW1wdHkoKSB8fCBtX3JlZ2lzdHJhYmxlRG9tYWluID09ICJudWxsT3Jp
Z2luIl9zOyB9CisgICAgU3RyaW5nJiBzdHJpbmcoKSB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9t
YWluOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluOyB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluICE9IG90aGVy
Lm1fcmVnaXN0cmFibGVEb21haW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
ZTgxNzM0NGYxOWQzOGVkYzE2NzZmYTNkNjg2OTYyZGM3ODZlYWNiZC4uNzVlMGI0YTI2NWM5ZWU1
OWEwYjQzMDc5NGY3ZWYwZDIxN2M3MmYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTc4Nyw2ICs3ODcsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWcKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
V1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBvcGVuZXJQYWdlSUQsIFdURk1v
dmUob3BlbmVyRG9tYWluKSk7CiAgICAgfQogfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+aXNQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cit9CiAjZW5kaWYKIAogdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4
NTMyYjI2MWJiY2FjYTA1YjI5OWE1Zi4uZWI2ZjU1YzZmZTllM2I5ZDEyNGFmMmE3MTVmMzVhYjEz
ZmUzM2U1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgaXNQ
cmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTVlOGQ3NmIxMjgzZGQ3YjcyNDZiNjYwYjE4
MTJhYy4uZWM5YjBiOGY4NGE4NGZmZWIwNTg1MWQ0OTNjNTk1ZjI2YTU0NjVjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBJ
c1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pIC0+IChib29sIGlzUHJldmFsZW50KSBBc3luYwogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRp
b25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4NjY3NTQyMTJkZGQ3ZmI4Mjg4YjZmNzIx
OTI5ZmQyOTY2ZDM4YTg2Li40MzJjMjA3YzgxZjE0MzNlZGIzNDk1ZmNjNTdhYzU3MjVjOGUyNzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KQEAgLTQwNyw2ICs0MDcsNDYgQEAgKyAodm9pZClfYWxsb3dXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjphbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMoKTsKIH0KIAorLSAodm9pZClf
Z2V0UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICgh
d2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byB3ZWJQYWdlUHJveHkgPSBbd2ViVmlldyBfcGFnZV07Cisg
ICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB3ZWJQYWdlUHJveHktPmdldFByZXZh
bGVudERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBwcmV2YWxlbnRE
b21haW5zKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5z
ID0gV1RGOjptYXAocHJldmFsZW50RG9tYWlucywgW10oYXV0byYgZG9tYWluKSB7CisgICAgICAg
ICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0cmluZzo6Y3JlYXRlKFdURk1v
dmUoZG9tYWluLnN0cmluZygpKSkpOworICAgICAgICB9KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkpKTsK
KyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQor
CistICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcK
K3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICghd2ViVmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB3ZWJQYWdlUHJveHkgPSBbd2ViVmlldyBf
cGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHdl
YlBhZ2VQcm94eS0+Y2xlYXJQcmV2YWxlbnREb21haW5zKCk7CisjZW5kaWYKK30KKworCiAtICh2
b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykp
Y29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIXdlYlZpZXcpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oCmluZGV4IDZlOTk2MTlkMjUwNThjZmY5Zjc4MjhjNTY5NTJiNGFmY2E0ZTJlMTYu
LjdkM2ZkNWZkNjhjZDJjZGQ0MjAxNWI1YmFiYTFkYjk3OWY0ODE1Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiAtICh2b2lkKV9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShX
S1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNz
RW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CistICh2b2lkKV9nZXRQcmV2YWxl
bnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArICh2b2lkKV9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3NTIyZWYxNmZlYWViM2E4ZWEz
YjI4YWEzODZjNWJmOWFmYzk4N2VhLi4xNjNiOGY3MDE0MmIyNTU5NmE0M2Q1MjYyMjMzMDhjOTA0
NWViYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk4
NTYsNiArOTg1NiwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRp
YUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UHJldmFsZW50
RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRQcmV2YWxlbnREb21haW5zKCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9tYWlucygp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJQcmV2YWxlbnREb21haW5zKCkp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVSR0VfV0hF
RUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE2NzA4
NTZkNzFlYTY4YzNmNWVlZmEwOGMwZTdjMWJmNTFmZTAyMDIuLjI5Yzg0NDM1NzFhZmM5NWMwNmMw
ZGNhYTkxNjk5NWQ1ZDA1ZmEzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xNTQ1LDYgKzE1NDUsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGRpZENv
bW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7
CisgICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CisgICAgdm9pZCBjbGVhclBy
ZXZhbGVudERvbWFpbnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGYxYmQ3MWEyNDUxN2M0Nzlh
MTNmNmQ4MjA5ZmM4ZTliMTQ5NTRmYTYuLjYzMmEyNDAyZWRkOWYwN2E3Yjc5ZjAyNmFlNTcxN2Nj
YjM5NGUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTUzLDYgKzE1
MywxNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRIYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcyhGcmFtZVNwZWNpZmljU3RvcmFnZQogCiAgICAgbV9mcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEZNb3ZlKGZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
SWRlbnRpZmllcik7CiB9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkZExvYWRlZFJl
Z2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQoreworICAgIGF1dG8q
IHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgd2ViUGFnZS0+YWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oV1RG
TW92ZShkb21haW4pKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
OWFhNWEwNTQ5MjQzYTgzOTQwZTVhOTUwZGRiYzgxN2E0NGI1MDk0My4uZTM3N2I4MWQ4NDE1ZjY0
NGNhODA2ZTBmZDRjNzIyOGY1YTljZjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQ7CiAgICAgfTsKICAgICB2b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciYmKTsKKyAgICB2b2lkIGFk
ZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpIGZp
bmFsOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYmEwMDYyMDM2YmNkYzVlODA2NjNm
NjAzNGZkMGUzLi40NTI1OWMwOTBkNTU4NGI0YjcwOTU2NzI4ZDVjMDFhOWVlMzM5MDRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTgzNiw2
ICs1ODM2LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUp
CiAgICAgaWYgKCFmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBjbGVhclByZXZhbGVudERvbWFp
bnMoKTsKKyNlbmRpZgorICAgIAogICAgIC8vIElmIHByZXZpb3VzIFVSTCBpcyBpbnZhbGlkLCB0
aGVuIGl0J3Mgbm90IGEgcmVhbCBwYWdlIHRoYXQncyBiZWluZyBuYXZpZ2F0ZWQgYXdheSBmcm9t
LgogICAgIC8vIE1vc3QgbGlrZWx5LCB0aGlzIGlzIGFjdHVhbGx5IHRoZSBmaXJzdCBsb2FkIHRv
IGJlIGNvbW1pdHRlZCBpbiB0aGlzIHBhZ2UuCiAgICAgaWYgKGZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkucHJldmlvdXNVUkwoKS5pc1ZhbGlkKCkpCkBAIC02NjY2LDYgKzY2NzAsMjkgQEAg
dm9pZCBXZWJQYWdlOjp3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291
cmNlKCkKIAogICAgIGZyYW1lLT5kb2N1bWVudCgpLT53YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVy
RnJvbVByZXZhbGVudFJlc291cmNlKCk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6YWRkTG9hZGVkUmVn
aXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCit7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2xvYWRlZERvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgaWYgKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJc1ByZXZhbGVudFN1YnJl
c291cmNlTG9hZChkb21haW4pLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBkb21haW5dIChib29sIGlzUHJldmFsZW50KSB7CisgICAgICAgICAgICBpZiAoaXNQcmV2YWxl
bnQpCisgICAgICAgICAgICAgICAgbV9wcmV2YWxlbnREb21haW5zLmFkZChkb21haW4pOworICAg
ICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6Z2V0UHJldmFsZW50RG9tYWlucyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvcHlUb1ZlY3RvcihtX3By
ZXZhbGVudERvbWFpbnMpKTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclByZXZhbGVudERvbWFp
bnMoKQoreworICAgIG1fcHJldmFsZW50RG9tYWlucy5jbGVhcigpOworICAgIG1fbG9hZGVkRG9t
YWlucy5jbGVhcigpOworfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk4
ZTk0NjQ3NjgyY2E3MzRjNjAzMGVmZjdiODJhZjNhMzlmYzc4Mi4uYjUyN2JkMTYyMjY4YTkwZTA3
MmMyM2U0M2ViNzA1MzIxODVlZDVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTE3Niw2ICsxMTc2LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
UGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
dG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJj
ZURvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBhZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFj
Y2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbik7CiAgICAgdm9p
ZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7CisgICAg
dm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworICAgIHZvaWQgZ2V0UHJl
dmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKQEAgLTIwNDUsNiArMjA0OCw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3Rv
cmFnZUFjY2VzczsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2xv
YWRlZERvbWFpbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9w
cmV2YWxlbnREb21haW5zOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVkaWFU
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggYWI5N2IyYjkyNjA1OTkwN2NjZGNmOTljZGU5ZTViZjNkMjdkN2E0
OS4uOWQ1YThjZmJmNzFlNTlkZGVhYThmM2E1YmIwZTgzMzc1OTZjNTBmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC01ODIsNiArNTgyLDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSgpCisgICAgQ2xlYXJQcmV2YWxlbnREb21haW5zKCkKKyAgICBH
ZXRQcmV2YWxlbnREb21haW5zKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWlucykgQXN5bmMKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NzhkYTBl
NjJjMjJiYWM5MDcxYmI0OGY5MTg5MDAzMWQ5YzQwNTguLjg1NGY0YzQzMTFjMWNhY2EzZGU3NWJk
ZWRkNWViMWE3Mjg5M2QzN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wMi0xMyAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICAgRXhwb3NlIHByZXZhbGVudCBk
b21haW5zIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTI3
MDc1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGRl
ZCBXZWJLaXRUZXN0UnVubmVyIGZ1bmN0aW9ucyBzbyB0aGlzIGZ1bmN0aW9uYWxpdHkgY2FuIGJl
IHRlc3RlZC4KKyAgICAgICAgY2xlYXJQcmV2YWxlbnREb21haW5zIHNob3VsZCBiZSBjYWxsZWQg
YmV0d2VlbiB0ZXN0cyB0byByZXNldCB0aGUKKyAgICAgICAgc3RhdGUuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1Bh
Z2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnND
YWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKToKKwogMjAyMC0wMi0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS0hU
VFBDb29raWVTdG9yZS5fZ2V0Q29va2llc0ZvclVSTCBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCmluZGV4IDE2MGMyZTlmM2JhNjQ3NzU5OGFhNTJjYTJjNWE3OTI4MDg5MzI4NjcuLmE3ZmQy
MWU0YTBmODc3NjUzMDAzYjVhOGFlMTQ4YTQ2N2Q5ZTJhOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbApAQCAtMzQ0LDYgKzM0NCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sZWFuIHZhbHVlLCBv
YmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBib29s
ZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwgb2Jq
ZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMob2JqZWN0IGNhbGxi
YWNrKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGlu
c3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAppbmRleCBmYWVkYWY1NzQ1YmJjNzhiOWRiNWM4NzU3ZGM0ODlmMmY5YTAy
Zjk4Li45NThhNzliYTQzNDhhOTc5MjI4MDNlZTIzNjE5MGI1MDJmZGYzYzFhIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcApAQCAtNDA0LDYgKzQwNCwyNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAg
ICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFjayhkb21haW5zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZWNlaXZl
UHJldmFsZW50RG9tYWlucyIpKSB7CisgICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgp
KTsKKworICAgICAgICBXS0FycmF5UmVmIGRvbWFpbnNBcnJheSA9IHN0YXRpY19jYXN0PFdLQXJy
YXlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYXV0byBzaXplID0gV0tBcnJheUdldFNpemUo
ZG9tYWluc0FycmF5KTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKKyAgICAgICAg
ZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgV0tUeXBlUmVmIGl0ZW0gPSBX
S0FycmF5R2V0SXRlbUF0SW5kZXgoZG9tYWluc0FycmF5LCBpKTsKKyAgICAgICAgICAgIGlmIChp
dGVtICYmIFdLR2V0VHlwZUlEKGl0ZW0pID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAg
ICAgICAgICAgZG9tYWlucy51bmNoZWNrZWRBcHBlbmQodG9XVEZTdHJpbmcoc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KGl0ZW0pKSk7CisgICAgICAgIH0KKworICAgICAgICBtX3Rlc3RSdW5uZXIt
PmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFdURk1vdmUoZG9tYWlucykp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
Q2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMjQ1NjljOTkzMjBmMDMyYmVi
MTFjOGE4ODkyMzJjYzc2NTUzZDA3Mi4uNTIxZjVlNTVkNjY1MzA5OTQ3ZmY2NDU4ODI4NDQwNTJh
MTlhMzY1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NTQsNiArNzU0LDcgQEAgZW51bSB7CiAgICAgU3RhdGlz
dGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFja0lELAogICAgIFN0
YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrSUQs
CiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELAorICAgIEdldFByZXZhbGVu
dERvbWFpbnNDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0Nh
bGxiYWNrSUQsCiAgICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrSUQsCiAgICAgVGV4
dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2tJRCwKQEAgLTIzNTIsNiArMjM1MywzOCBAQCB2
b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxs
YmFjayhWZWN0b3I8U3RyaW5nPiYgZAogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soQWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELCAxLCAmcmVzdWx0KTsKIH0KIAordm9pZCBUZXN0
UnVubmVyOjpnZXRQcmV2YWxlbnREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAg
Y2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIGNh
bGxiYWNrKTsKKyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJHZXRQcmV2YWxlbnREb21h
aW5zIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0
cmluZz4mJiBkb21haW5zKQoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tC
dW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2
YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1snKTsKKyAgICBib29sIGlzRmly
c3REb21haW4gPSB0cnVlOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgeworICAg
ICAgICBpZiAoaXNGaXJzdERvbWFpbikKKyAgICAgICAgICAgIGlzRmlyc3REb21haW4gPSBmYWxz
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiIik7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGRvbWFpbik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiXCIiKTsKKyAgICB9CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ10n
KTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJp
bmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nQnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBjYWxsVGVzdFJ1
bm5lckNhbGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCAxLCAmcmVzdWx0KTsK
K30KKwogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UoSlNTdHJpbmdSZWYgcGVy
c2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlwZSkKIHsKICAgICBW
ZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBjM2MxMDQ1M2U5
MzI4ZWJjZTg5NWI2YWEyZmFhODFjMWFkZjJiYWEyLi43MjI4YjViM2RmMjFiMzU1MTY4NDRmYTE1
MTIxZmI4MzJlNGU5NGQ3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVD
YWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoSlNW
YWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFJl
c2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOworICAgIHZvaWQgZ2V0UHJldmFsZW50RG9t
YWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGNhbGxEaWRSZWNlaXZlUHJldmFs
ZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CiAKICAgICAvLyBJ
bmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4dERpZENoYW5n
ZUluVGV4dEZpZWxkQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGUxMGVmMzMzMTkwYWI3MTc2NTMwOGQz
YTZiYTAzNDI4MGIwN2MzYmMuLjBlNTQxYjdjN2M4NmE5YzdhNDUyMTZiNDNkMDJlN2ZhMGRlOTdj
OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMTEw
LDcgKzExMTAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIHNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlKHRydWUpOwogCiAgICAgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoKTsKLSAgICAKKyAgICBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKwogICAgIGNsZWFyQWRD
bGlja0F0dHJpYnV0aW9uKCk7CiAKICAgICBtX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbiA9IGZhbHNlOwpAQCAtMzExNCw2ICszMTE1LDE0IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKIHsKIH0KIAordm9p
ZCBUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucygpCit7Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit7Cit9CisKICNlbmRpZgogCiBz
dHJ1Y3QgQ2xlYXJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc0NhbGxiYWNrQ29udGV4dCB7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZmE2MDg4MmJlMWY1NzAy
MzRiMzI5NjJjYTllY2MwYzhlNjZkMTcyOS4uNGU2NTExMjllYzI5NGY2ZDVhNTljNDM3MWUyOTYz
NWExYjFmOTk0YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAt
MjU4LDYgKzI1OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7Cisg
ICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKCk7CisgICAgdm9pZCBjbGVhclByZXZhbGVudERv
bWFpbnMoKTsKIAogICAgIFdLQXJyYXlSZWYgb3BlblBhbmVsRmlsZVVSTHMoKSBjb25zdCB7IHJl
dHVybiBtX29wZW5QYW5lbEZpbGVVUkxzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxG
aWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmlsZVVSTHMgPSBmaWxl
VVJMczsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAy
OWI5OWY4YzIzMjhkNzYyNWZjYmFlNjVlODg5N2RmNDBjYTJiY2NhLi44MWFmYjUyOTg0MGRiMmYz
ODE0N2QzZmRkZTEzMDZlZjZkMjczYTJjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcApAQCAtODA3LDYgKzgwNywxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRQcmV2YWxlbnREb21haW5zIikp
IHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdldFByZXZhbGVudERvbWFp
bnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpAQCAtMTk0Miw2ICsxOTQ3LDE3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKICAgICBX
S1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVByZXZhbGVudERv
bWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQoreworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyIpKTsKKyAgICAKKyAgICBXS1JldGFp
blB0cjxXS011dGFibGVBcnJheVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZUFy
cmF5Q3JlYXRlKCkpOworICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKKyAgICAgICAg
V0tBcnJheUFwcGVuZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoZG9tYWluLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisgICAgCisg
ICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdl
Qm9keS5nZXQoKSk7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFscygpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oCmluZGV4IGUxYzJjNWRiZTUyNjY3MWU4M2IxNDdkNTFjY2JiNjcxYzIx
NzRmMmIuLjUwMzM3ZDY3NWRlMDkwYWRkZjViNzZjODAwNzJhMTdmYmE0YzEzZTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBkaWRT
ZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBbGxTdG9yYWdl
QWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRSZWNl
aXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwogCiAgICAgdm9p
ZCBkaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAzZjkz
MDRlYTQ4MDBjMDNkMTViNGUwZTYzZGZiZWNlNzIwMzlmYjIzLi44MWMwYTA2N2IyMzVkMDE1ZWFl
YWZlZDI3Y2FiZjljYjNiYzlkN2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMzIsNiArMzMyLDMwIEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKICAgICB9XTsKIH0K
IAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucygpCit7CisgICAgYXV0
byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CisgICAgaWYgKCFwYXJlbnRWaWV3KQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1W
aWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMp
IHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKKyAgICAgICAgZG9tYWlucy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG5zRG9tYWlucy5jb3VudCk7CisgICAgICAgIGZvciAoTlNTdHJp
bmcgKmRvbWFpbiA6IG5zRG9tYWlucykKKyAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBw
ZW5kKGRvbWFpbik7CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVQcmV2
YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWlucykpOworICAgIH1dOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQoreworICAgIGF1dG8qIHBhcmVudFZp
ZXcgPSBtYWluV2ViVmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJu
OworCisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKV07Cit9CisK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0
KQogewogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2Nd
IGluaXRXaXRoU291cmNlOiB0b1dURlN0cmluZyhzY3JpcHQpIGluamVjdGlvblRpbWU6V0tVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYjZkOGM4YmRhYjQxZDY4NjBmOWJmNDFlZGM4MzUyNWY0MWY4ZjQ0ZC4uM2RiMDdh
MGJkNzM3ZDNlNjVjOTcyN2FjNTM2N2I3YjkxOWQxNWIxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDIwLTAyLTEzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIEV4cG9zZSBwcmV2YWxlbnQgZG9tYWlucyBvbiBhIHBlci1wYWdlIGJhc2lzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MjcwNzU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IENo
cmlzIER1bWV6LgorCisgICAgICAgIEFkZGVkIDIgbmV3IHRlc3RzIGZvciB0aGUgcmVzb3VyY2Ug
bG9hZCBzdGF0aXN0aWNzIGRhdGFiYXNlIGFuZAorICAgICAgICBtZW1vcnkgc3RvcmVzLiBBZGRl
ZCBhIGJhc2ljIGlmcmFtZSB0aGF0IGJvdGggdGVzdHMgY2FuIHVzZSB0byB0ZXN0CisgICAgICAg
IGlmIGEgcmVzb3VyY2UgbG9hZCBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiBnZXRzIHJlcG9ydGVk
IHByb3Blcmx5LgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1k
b21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5o
dG1sOiBBZGRlZC4KKwogMjAyMC0wMi0xMSAgSmFjb2IgVXBob2ZmICA8amFjb2JfdXBob2ZmQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIHdrMiBdIGh0dHAvdGVzdHMvSW5kZXhlZERCL2Nv
bGxlY3QtSURCLW9iamVjdHMuaHR0cHMuaHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
LWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2UxYWJiZTkzYTdmMGQ3MzViNzNi
MzcyNTcxNGYwNDZjNGQ3NWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IGEgaWZyYW1l
IGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJldmFsZW50IHVu
ZGVyIHRoaXMgcGFnZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgRG9t
YWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVy
LXBhZ2UtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgxMmVhZWUyMzQ3ZWI2ZWViMDkzNDhlYTUxNTdhMGY4OTZmMDdjOTMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDc0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9t
IGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0
aGlzIHBhZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNl
LCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAi
aUZyYW1lRnJvbVByZXZhbGVudERvbWFpbiI7CisgICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZh
bGVudFJlc291cmNlcygpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9t
YWlucyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgcGFz
c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZE
b21haW5zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheU9mRG9t
YWluc1tpXSA9PT0gImxvY2FsaG9zdCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3Nl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocGFzc2VkKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBt
YXJrZWQgcHJldmFsZW50LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2
YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElk
KSB7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVs
ZW1lbnRJZCk7CisgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCAr
IGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVt
ZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJ
SGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7IH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOworICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudC5s
b2NhdGlvbi5oYXNoICE9PSAiI2VsZW1lbnRBY3RpdmF0ZWQiKSB7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJlbGVtZW50QWN0aXZhdGVkIjsKKyAgICAgICAgICAg
ICAgICBhY3RpdmF0ZUVsZW1lbnQoaWZyYW1lSUQpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAg
ICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0OworICAg
ICAgICAKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKyAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIp
OworCisgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9
IHJ1blRlc3Q7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJpRnJhbWVGcm9t
UHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFz
aWMtaWZyYW1lLmh0bWwiOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9t
YWlucy1wZXItcGFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3ZTFhYmJlOTNhN2YwZDczNWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBi
ZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJl
dmFsZW50LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzE4YzZmYmE3MDdhODE4Njc1ZWFhOGIzZDIxMDY5MWU3NzI2M2UzZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1sCkBAIC0wLDAgKzEsNzMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgaWZyYW1lIGZyb20g
YSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJldmFsZW50IHVuZGVyIHRo
aXMgcGFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBpZnJhbWVJRCA9ICJp
RnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgZnVuY3Rpb24gYXNrRm9yUHJldmFs
ZW50UmVzb3VyY2VzKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRQcmV2YWxlbnREb21h
aW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgICAgICAgICAgICAgIHZhciBwYXNz
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZE
b21haW5zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheU9mRG9t
YWluc1tpXSA9PT0gImxvY2FsaG9zdCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3Nl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocGFzc2VkKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBt
YXJrZWQgcHJldmFsZW50LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2
YWxlbnQuIik7CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElk
KSB7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVs
ZW1lbnRJZCk7CisgICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCAr
IGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVt
ZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgICAgIFVJ
SGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7IH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOworICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudC5s
b2NhdGlvbi5oYXNoICE9PSAiI2VsZW1lbnRBY3RpdmF0ZWQiKSB7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJlbGVtZW50QWN0aXZhdGVkIjsKKyAgICAgICAgICAg
ICAgICBhY3RpdmF0ZUVsZW1lbnQoaWZyYW1lSUQpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7CisgICAg
ICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0OworICAg
ICAgICAKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3Rp
Y3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50
IHJlc291cmNlLiIpOworCisgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVt
ZW50Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9
ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKKyAgICAgICAgICAgICAgICBpZnJhbWVFbGVt
ZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2Jhc2ljLWlmcmFtZS5odG1sIjsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNjU1ZjRlNzc4YWU5YWZhMDFkZjM1ZDYwYzJkODc0NzNiNGZiYzZmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>