<?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>189711</bug_id>
          
          <creation_ts>2018-09-18 13:54:07 -0700</creation_ts>
          <short_desc>Resource Load Statistics: Add optional cap on partitioned cache max age</short_desc>
          <delta_ts>2018-09-20 04:27:37 -0700</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=189759</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=189760</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=189761</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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</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>1460719</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 13:54:07 -0700</bug_when>
    <thetext>We should add the capability to cap the maximum time we&apos;ll use a partitioned cache entry for prevalent resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460720</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 13:54:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/39246837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460809</commentid>
    <comment_count>2</comment_count>
      <attachid>350075</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 16:50:22 -0700</bug_when>
    <thetext>Created attachment 350075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460813</commentid>
    <comment_count>3</comment_count>
      <attachid>350077</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 17:02:15 -0700</bug_when>
    <thetext>Created attachment 350077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460814</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 17:02:42 -0700</bug_when>
    <thetext>New patch to fix the non-Cocoa platform issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460816</commentid>
    <comment_count>5</comment_count>
      <attachid>350079</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 17:11:14 -0700</bug_when>
    <thetext>Created attachment 350079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460818</commentid>
    <comment_count>6</comment_count>
      <attachid>350080</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-18 17:21:23 -0700</bug_when>
    <thetext>Created attachment 350080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460939</commentid>
    <comment_count>7</comment_count>
      <attachid>350080</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-19 06:55:52 -0700</bug_when>
    <thetext>Comment on attachment 350080
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:194
&gt; +    if (maxAge &amp;&amp; hasReachedPrevalentResourceAgeCap(entry.response(), entry.timeStamp(), maxAge.value()))
&gt; +        return UseDecision::NoDueToPrevalentResourceAgeCap;

What does &apos;Prevalent&apos; signify here? It seems to be just an age cap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460979</commentid>
    <comment_count>8</comment_count>
      <attachid>350080</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-19 09:03:07 -0700</bug_when>
    <thetext>Comment on attachment 350080
Patch

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:193
&gt; +    std::optional&lt;Seconds&gt; m_cacheMaxAgeCapForPrevalentResources { std::nullopt };

nit: { std::nullopt } is not needed, this is the default behavior.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:477
&gt; +void NetworkProcess::setCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID, double seconds, uint64_t contextId)

Should use Seconds type.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:149
&gt; +    void setCacheMaxAgeCapForPrevalentResources(PAL::SessionID, double seconds, uint64_t contextId);

Should use Seconds type.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.messages.in:91
&gt; +    SetCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID, double seconds, uint64_t contextId)

Should use Seconds type, see for e.g.:
Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.messages.in:    SetFullscreenAutoHideDuration(Seconds duration)

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:343
&gt; +        std::optional&lt;Seconds&gt; maxAgeCap = std::nullopt;

= std::nullopt is not needed here.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.h:116
&gt; +    void retrieve(const WebCore::ResourceRequest&amp;, const GlobalFrameID&amp;, const PAL::SessionID, RetrieveCompletionHandler&amp;&amp;);

const is not needed here since it is not a reference.

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:96
&gt; +    typedef void (*WKWebsiteDataStoreStatisticsResetToConsistentStateFunction)(void* functionContext);

Indentation problem.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:472
&gt; +    send(Messages::NetworkProcess::SetCacheMaxAgeCapForPrevalentResources(sessionID, seconds.seconds(), contextId), 0);

seconds.seconds() -&gt; seconds

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsMemoryStore.cpp:840
&gt; +    RunLoop::main().dispatch([weakThis = makeWeakPtr(*this), store = makeRef(m_store), seconds] () {

weakThis is not needed here, it is unused.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1351
&gt; +        if (auto networkProcess = processPool-&gt;networkProcess())

nit: auto*

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1366
&gt; +        if (auto networkProcess = processPool-&gt;networkProcess())

nit: auto*

&gt; LayoutTests/http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html:26
&gt; +            setTimeout(secondFetch, 1500);

This test is likely very slow.

&gt; LayoutTests/http/tests/resourceLoadStatistics/resources/cached-permanent-redirect.php:10
&gt; +// header(&quot;Last-Modified: Wed, 21 Aug 2018 07:28:00 GMT&quot;, true);

Should this be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461023</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-19 10:24:45 -0700</bug_when>
    <thetext>In the case of resources used everyday, we would refetch them from scratch after the cap.
This is a bit suboptimal here.

Shouldn&apos;t we restrict that to only the resources that are not used at all for a given amount of time?
Or maybe, have two caps, one for revalidating the resource even if still fresh and one for fully removing the resource.
If the resource does not get revalidated, the second cap will kick in at some point and remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461033</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-19 10:36:05 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #7)
&gt; Comment on attachment 350080 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=350080&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:194
&gt; &gt; +    if (maxAge &amp;&amp; hasReachedPrevalentResourceAgeCap(entry.response(), entry.timeStamp(), maxAge.value()))
&gt; &gt; +        return UseDecision::NoDueToPrevalentResourceAgeCap;
&gt; 
&gt; What does &apos;Prevalent&apos; signify here? It seems to be just an age cap.

It is the term used by Resource Load Statistics. &quot;Prevalent&quot; == has cross-site tracking abilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461035</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-19 10:37:38 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; In the case of resources used everyday, we would refetch them from scratch
&gt; after the cap.
&gt; This is a bit suboptimal here.
&gt; 
&gt; Shouldn&apos;t we restrict that to only the resources that are not used at all
&gt; for a given amount of time?
&gt; Or maybe, have two caps, one for revalidating the resource even if still
&gt; fresh and one for fully removing the resource.
&gt; If the resource does not get revalidated, the second cap will kick in at
&gt; some point and remove it.

Yes, you and I talked about this and I got some further suggestions from Antti offline. I will land this, file follow-up bugs, and iterate until we have something we fell is worth doing perf testing on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461036</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-19 10:38:48 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 350080 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=350080&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:193
&gt; &gt; +    std::optional&lt;Seconds&gt; m_cacheMaxAgeCapForPrevalentResources { std::nullopt };
&gt; 
&gt; nit: { std::nullopt } is not needed, this is the default behavior.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:477
&gt; &gt; +void NetworkProcess::setCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID, double seconds, uint64_t contextId)
&gt; 
&gt; Should use Seconds type.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.h:149
&gt; &gt; +    void setCacheMaxAgeCapForPrevalentResources(PAL::SessionID, double seconds, uint64_t contextId);
&gt; 
&gt; Should use Seconds type.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.messages.in:91
&gt; &gt; +    SetCacheMaxAgeCapForPrevalentResources(PAL::SessionID sessionID, double seconds, uint64_t contextId)
&gt; 
&gt; Should use Seconds type, see for e.g.:
&gt; Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.messages.in:   
&gt; SetFullscreenAutoHideDuration(Seconds duration)
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:343
&gt; &gt; +        std::optional&lt;Seconds&gt; maxAgeCap = std::nullopt;
&gt; 
&gt; = std::nullopt is not needed here.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.h:116
&gt; &gt; +    void retrieve(const WebCore::ResourceRequest&amp;, const GlobalFrameID&amp;, const PAL::SessionID, RetrieveCompletionHandler&amp;&amp;);
&gt; 
&gt; const is not needed here since it is not a reference.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:96
&gt; &gt; +    typedef void (*WKWebsiteDataStoreStatisticsResetToConsistentStateFunction)(void* functionContext);
&gt; 
&gt; Indentation problem.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:472
&gt; &gt; +    send(Messages::NetworkProcess::SetCacheMaxAgeCapForPrevalentResources(sessionID, seconds.seconds(), contextId), 0);
&gt; 
&gt; seconds.seconds() -&gt; seconds
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ResourceLoadStatisticsMemoryStore.cpp:840
&gt; &gt; +    RunLoop::main().dispatch([weakThis = makeWeakPtr(*this), store = makeRef(m_store), seconds] () {
&gt; 
&gt; weakThis is not needed here, it is unused.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1351
&gt; &gt; +        if (auto networkProcess = processPool-&gt;networkProcess())
&gt; 
&gt; nit: auto*
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1366
&gt; &gt; +        if (auto networkProcess = processPool-&gt;networkProcess())
&gt; 
&gt; nit: auto*
&gt; 
&gt; &gt; LayoutTests/http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html:26
&gt; &gt; +            setTimeout(secondFetch, 1500);
&gt; 
&gt; This test is likely very slow.

I&apos;ll see if I can allow a cache cap setting of zero for testing.

&gt; &gt; LayoutTests/http/tests/resourceLoadStatistics/resources/cached-permanent-redirect.php:10
&gt; &gt; +// header(&quot;Last-Modified: Wed, 21 Aug 2018 07:28:00 GMT&quot;, true);
&gt; 
&gt; Should this be removed?

Thanks! I will address all of the above before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461058</commentid>
    <comment_count>13</comment_count>
      <attachid>350137</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-19 11:41:21 -0700</bug_when>
    <thetext>Created attachment 350137
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461074</commentid>
    <comment_count>14</comment_count>
      <attachid>350137</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-19 12:20:04 -0700</bug_when>
    <thetext>Comment on attachment 350137
Patch for landing

Clearing flags on attachment: 350137

Committed r236216: &lt;https://trac.webkit.org/changeset/236216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461075</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-19 12:20:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461077</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-09-19 12:23:15 -0700</bug_when>
    <thetext>The three follow-up bugs have been filed and related. Thanks for all the comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461299</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-09-20 04:27:37 -0700</bug_when>
    <thetext>I also had some doubts about whether this strategy will really solve any problems at all.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350075</attachid>
            <date>2018-09-18 16:50:22 -0700</date>
            <delta_ts>2018-09-18 17:02:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189711-20180918165021.patch</filename>
            <type>text/plain</type>
            <size>50847</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NjlmZjkzNWYwNDVk
ZTk3MTA4NWVmYzNkMWMxODY3NWNiZjEzMi4uMWY0OGJmMGRkYjlkNmFmOWUxNjYxNmEzNDQ5ZjJk
ZmViOTkyOWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTE4ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hl
Q2FwKToKKyAgICAgICAgICAgIENoZWNrcyBpZiBhIG1heCBhZ2UgY2FwIGlzIHNldCBhbmQgcmV0
dXJucyBpdCBpZiB0aGUgcmVxdWVzdAorICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByZXZhbGVu
dCByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKToKKyAgICAgICAgICAgIE5ldyBmdW5jdGlvbmFsaXR5IHRvIHJlY2VpdmUgYSBtYXgg
YWdlIGNhcCBzZXR0aW5nIGluIHRoZSBzZXNzaW9uLgorCiAyMDE4LTA5LTE4ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgdW51c2Vk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5jbG9zaW5nQ29tcG9zaXRvckZsdXNoaW5nTGF5ZXJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2VmNjg1YjRiODM1YWNmYTA1MWIxNjJhZGEyZDhhM2VjM2QyYWE3Zi4u
MTk4ZWFiMmIyZWQ0Y2Q3Yzk4M2MwZjIxOTlkMDM2YTMwMWViMTk3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBjYXAg
b24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTI0
NjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVzZSBjaGFuZ2VzIGFkZCB0aGUgY2FwYWJpbGl0eSB0byBzZXQgYSBtYXggYWdlIGNhcCBmb3Ig
cHJldmFsZW50IHJlc291cmNlcworICAgICAgICBhbmQgY29uc3VsdHMgaXQgd2hlbiByZXRyaWV2
aW5nIGNhY2hlIGVudHJpZXMuIElmIGFuIGVudHJ5IGlzIGNhcHBlZCBhbmQgZm91bmQKKyAgICAg
ICAgdG8gYmUgdG9vIG9sZCwgaXQgd2lsbCBub3QgYmUgdXNlZCBidXQgaW5zdGVhZCByZW1vdmVk
IGZyb20gdGhlIGNhY2hlLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvZmYgYnkg
ZGVmYXVsdCBiZWNhdXNlIG5vIGNhcCBpcyBzZXQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMpOgorICAgICAgICAgICAgSW5mcmFzdHJ1Y3R1cmUgZm9yIHRlc3RpbmcuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgICAgICBOb3cg
c2VuZHMgaW4gdGhlIHNlc3Npb24gSUQgaW4gdGhlIHJldHJpZXZlIGNhbGwuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXApOgorICAgICAg
ICAgICAgU3RhdGljIGNvbnZlbmllbmNlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBOb3cgcmVjZWl2ZXMgYW4g
b3B0aW9uYWwgbWF4QWdlIHBhcmFtZXRlciBhbmQgY2hlY2tzCisgICAgICAgICAgICBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBmaXJzdC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAgICAgTm93IHRha2VzIGEgc2Vz
c2lvbiBJRC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjYWNoZWRFbnRyeVJldXNlRmFpbHVy
ZVRvRGlhZ25vc3RpY0tleSk6CisgICAgICAgICAgICBBZGRlZCBVc2VEZWNpc2lvbjo6Tm9EdWVU
b1ByZXZhbGVudFJlc291cmNlQWdlQ2FwIHdoaWNoIGNhdXNlcyBhCisgICAgICAgICAgICByZXR1
cm4gb2YgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpvdGhlcktleSgpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAg
ICAgICAgICAgIEluZnJhc3RydWN0dXJlIGZvciB0ZXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZCk6CisgICAgICAgICAgICBOb3cgc3VwcG9ydHMgYSB1c2VyIGRlZmF1bHQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQpOiBEZWxldGVk
LgorICAgICAgICAgICAgRGVsZXRlZCB0aGlzIHRvIG1ha2UgYWxsIGNvZGUgdXNlIHRoZSBnZW5l
cmljIGdlbmVyYXRlQ2FsbGJhY2tJRCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgVXNlZCB0byB0cmFuc2ZlciB0
aGUgc2V0dGluZyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dENhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOC0wOS0xOCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM2MTM4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKaW5kZXggOTg2ZjdlNDM5Mjc5OTExYTk2NTQ3NjFjNzU2YzRjMjJiZWYwZWYyNi4uMjdmMmJl
NWRmZTFiZTA3Mjc4NDcyYWUxZGY0MTI1NjBjNWQwOTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0x
MTAsNiArMTEwLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09u
UGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKKwogI2VuZGlmCiAjZWxpZiBVU0UoU09VUCkKICAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nl
c3Npb24+JiYpOwpAQCAtMTg3LDYgKzE5MSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJp
bmc+IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERl
ZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIERlZmF1bHRIYXNoPHVpbnQ2NF90
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1f
cGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyBzdGQ6Om51bGxvcHQgfTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwCmluZGV4IGM5ZDI5NjQ0MjFlYmRkOGI0Njc0MDQ2ZGNjNGM1MDNjN2FmYjQ5OTUuLjMzZDIz
YmM5Yjg5ODdkZjFlZjBhNWE5YmQ3ZDI4NzkwOGM3YjUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXQuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywKICAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFp
bik7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpt
YXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgcmV0dXJu
IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERv
bWFpbnNUb0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgYm9v
bCBjbGVhckZpcnN0KQogewogICAgIGlmIChjbGVhckZpcnN0KSB7CkBAIC0zNzAsNiArMzc3LDE1
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCkK
ICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyA9IHNlY29uZHM7Cit9CisgICAgCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCit7CisgICAgbV9jYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHN0ZDo6bnVsbG9wdDsKK30KICNlbmRp
ZiAvLyBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIAogI2lmICFQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKaW5kZXggZGVhZWQzMjMzMDhlMjgwNTNkNzA5ZmMyNDQ4M2ZlMjc1NDk1ZDA0Zi4uYThm
ZWQ4YzFlODA4MWZmOTk1OTc2ODcxZmYwN2ZlYmJjMTczZDQ4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ3Myw2ICs0NzMsMjQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3QKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnJlbW92ZVByZXZhbGVudERvbWFpbnMo
ZG9tYWlucyk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZG91YmxlIHNlY29u
ZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0pOworICAgIGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMoY29udGV4dElkKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKGF1dG8qIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZXNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKGNvbnRleHRJZCksIDApOworfQogI2VuZGlmCiAKIGJvb2wgTmV0d29ya1By
b2Nlc3M6OnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDdkYjM5NzEyNzc3MjZhMmVhMzc3Y2Y0MGVmNjgzYTU5YmM4Yzg5ZTMuLjE3
NTk2YzBjMmZkODhhOTZhNDVlZDdiNGM1NGQ0MzBmNjg5YzFkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBjb250ZXh0SWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFp
bnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2
b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklE
LCBkb3VibGUgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAjZW5kaWYKIAogICAgIFNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5jeSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggYjk2OTc2NjAyYWI4ZDk0ZTY3MDc5NmRlM2U1YjhiMDc4YTQ2YjMyMi4uODQ1NTQ3ZGI5NWJh
NmRhYjNmMGMzYjFjN2M2MGYyNTUyZjk4M2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Nyw3ICs4
Nyw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBH
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVy
YWN0aW9uKTsKKyAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKKyAgICBTZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGRvdWJsZSBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggNWMxMWJhYjIwMWU5MmFjNjk2OGJlNjgxMTM3ODUyZWI1MDI4NDNmNC4uZjEw
OTVmNDI4MjgwNmQwM2ZlYjI5YjNjNDQ1ZjkxZjFhZWVjZWRhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MjE0LDcgKzIxNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hl
RW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChjYW5Vc2VD
YWNoZShyZXF1ZXN0KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2Fk
ZXIodGhpcyk7Ci0gICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbdGhpcywgbG9hZGVyID0gV1RG
TW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRv
IGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVl
c3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwg
c2Vzc2lvbklEKCksIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBS
ZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgbG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlz
IGxhbWJkYS4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBkYTA3ZTgyODdhYzljZWFj
YTQwMGVmY2QyYjA2ZjBiMjNlODFmYmRjLi45ZDZlZThlZjBjOWQwODI5MzAzYzFkNDM0ZDkzODM5
OWVhMDA2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsNiArMTUyLDExIEBAIHN0YXRpYyBib29sIGNhY2hl
UG9saWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBw
b2xpY3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJl
dmFsZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29uc3QgU2Vjb25kcyBtYXhBZ2UpCit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCB0aW1lc3RhbXApID4g
bWF4QWdlOworfQorCiBzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsKICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250
cm9sQ29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODMsOCArMTg4LDExIEBAIHN0YXRpYyBib29sIHJl
c3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0
YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lv
biBtYWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgVXNlRGVjaXNpb24gbWFrZVVzZURlY2lzaW9u
KGNvbnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZSkKIHsKKyAgICBpZiAobWF4QWdlICYm
IGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRy
eS50aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gVXNlRGVjaXNp
b246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDsKKyAgICAKICAgICAvLyBUaGUgcmVx
dWVzdCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0
d29yay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVw
ZGF0ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYm
ICFlbnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAgLTI3MSw3ICsyNzksNyBAQCBzdGF0aWMgU3Rv
cmVEZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBj
b25zdCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMTUsNyArMzIzLDcgQEAgdm9pZCBDYWNoZTo6cmV0
cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9i
YWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFn
ZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGlu
Zm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0
byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXks
IHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpbmZvID0g
V1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRvIHJlY29y
ZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9
IHRpbWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTMzMiwxMyArMzQwLDIxIEBA
IHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIGF1dG8gdXNlRGVjaXNpb24g
PSBlbnRyeSA/IG1ha2VVc2VEZWNpc2lvbigqZW50cnksIHJlcXVlc3QpIDogVXNlRGVjaXNpb246
Ok5vRHVlVG9EZWNvZGVGYWlsdXJlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1h
eEFnZUNhcCA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGF1dG8gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQorICAgICAgICAgICAgbWF4QWdlQ2FwID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5tYXhBZ2VDYWNoZUNhcChyZXF1ZXN0KTsKKworICAgICAgICBhdXRvIHVzZURlY2lzaW9uID0g
ZW50cnkgPyBtYWtlVXNlRGVjaXNpb24oKmVudHJ5LCByZXF1ZXN0LCBtYXhBZ2VDYXApIDogVXNl
RGVjaXNpb246Ok5vRHVlVG9EZWNvZGVGYWlsdXJlOwogICAgICAgICBzd2l0Y2ggKHVzZURlY2lz
aW9uKSB7CiAgICAgICAgIGNhc2UgVXNlRGVjaXNpb246OlVzZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpWYWxpZGF0ZToKICAgICAgICAgICAgIGVudHJ5
LT5zZXROZWVkc1ZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwOgorICAgICAg
ICAgICAgZW50cnkgPSBudWxscHRyOworICAgICAgICAgICAgbV9zdG9yYWdlLT5yZW1vdmUoc3Rv
cmFnZUtleSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGVudHJ5ID0gbnVsbHB0cjsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGNmNWI3YmJmMmE0YjNjYTQ1
YTE1YTViMzY4ODU4Njg0OTkyOTQzYzIuLjI5NzU1YjI4N2ExMjVkMzBmNTNhOTQ1ZGQxZGNiZjEz
MzY3NTA3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaApAQCAtODIsNiArODIsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsK
ICAgICBOb0R1ZVRvTWlzc2luZ1ZhbGlkYXRvckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFp
bHVyZSwKICAgICBOb0R1ZVRvRXhwaXJlZFJlZGlyZWN0LAorICAgIE5vRHVlVG9QcmV2YWxlbnRS
ZXNvdXJjZUFnZUNhcAogfTsKIAogdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50
NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CkBAIC0xMTIsNyAr
MTEzLDcgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9
OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCBy
ZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJldHJpZXZlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25z
dCBQQUw6OlNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZh
bGlkYXRpbmdSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCA4ZWU3NDUz
NTdiYzk4OGNiMWViMTllMDk5MmYxMjY0NThlYmE3MDI3Li5hMTU1ZTlmMmUzYWUxMzgxNDQzYTRh
MGNlMGIyNDA3NTdlNGE2OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI4Miw2
ICsyODIsNyBAQCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9z
dGljS2V5KFVzZURlY2lzaW9uIGRlY2lzaW9uKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjptaXNzaW5nVmFsaWRhdG9yRmllbGRzS2V5KCk7CiAgICAgY2Fz
ZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU6CiAgICAgY2FzZSBVc2VEZWNpc2lv
bjo6Tm9EdWVUb0V4cGlyZWRSZWRpcmVjdDoKKyAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRv
UHJldmFsZW50UmVzb3VyY2VBZ2VDYXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6Om90aGVyS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgog
ICAgIGNhc2UgVXNlRGVjaXNpb246OlZhbGlkYXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggN2YyM2U5
MGZmN2M2ZTJjZTRkNTQ3OTJjNjRhMGI5NjIzZjJlZmU4My4uMjQ2NGIwYmRhNDU2ZGE1YjlmZGUy
OWJlMDFiOWFlZWU1ZGI2ZTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC00NjIsNiArNDYyLDEzIEBA
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRh
UmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOwor
fQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0
YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgewpA
QCAtNDcwLDYgKzQ3Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAKICAgICBhdXRvJiBz
dG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsK
ICAgICBzdG9yZS5jbGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICBzdG9yZS5yZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogCiAgICAg
YXV0byogc3RhdGlzdGljc1N0b3JlID0gc3RvcmUucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwog
ICAgIGlmICghc3RhdGlzdGljc1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCAwMmU3YmNlNjEyZWQxNTM3
NDRkYWY5Njk4MWY5ODM1ZWQ4OTJkM2MwLi4yNzdiMWZiNzlhN2EyOThmMDQzNzJhMGJiNzFkOGQ4
Y2JlOWIxYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtOTEsNyArOTEsOSBAQCB0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZU1vZGlmaQogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
TW9kaWZpZWRTaW5jZUhvdXJzRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2Fs
bGJhY2spOwotdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK3R5cGVk
ZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbik7CisgICAgdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRs
ZXIpOwogCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hl
UmVtb3ZhbEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmVDb2NvYS5tbQppbmRleCBiZmVlZGY5NGNhYWYzZGE2ZmRiZDJh
YTYzMWZiOGZjNWU0NTY3MTlmLi44ZDlkMWJiMjYyODk2MmJmNWM1YTBmZTlmYjJiZmM1NTk3Njgy
MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmVDb2NvYS5tbQpAQCAt
NTIsNiArNTIsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJl
Z2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQogICAgICAgICBpZiAoZGVidWdNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSkKICAgICAgICAgICAgIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UpOwogICAgICAgICBzZXRTdG9yYWdlQWNj
ZXNzUHJvbXB0c0VuYWJsZWQoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
Ym9vbEZvcktleTpAIkV4cGVyaW1lbnRhbFN0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZCJdKTsK
KworICAgICAgICBTZWNvbmRzIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTpAIlJlc291
cmNlTG9hZFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCJdKTsKKyAgICAgICAgaWYgKGNhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzID4gMF9zICYmIGNhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzIDw9IDI0X2ggKiAzNjUpCisgICAgICAgICAgICBzZXRDYWNoZU1heEFn
ZUNhcChjYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk7CiAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDU2YmZjYWMzOGQxZDg0MmM3OGQyOTY4YTcwZjlmMzIxZjJlYjA1
ODIuLmQyN2U0MThmMjk3OGM3ZDEzMTE2ZjhiNjc2MTE3YzM1MjY3YzY3M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNDA0LDE1ICs0MDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVw
ZGF0ZUJsb2NrQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIG1fdXBkYXRlQmxvY2tD
b29raWVzQ2FsbGJhY2tNYXAudGFrZShjYWxsYmFja0lkKSgpOwogfQogCi1zdGF0aWMgdWludDY0
X3QgbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCkKLXsKLSAgICBzdGF0aWMgdWlu
dDY0X3QgbmV4dENvbnRleHRJZCA9IDA7Ci0gICAgcmV0dXJuICsrbmV4dENvbnRleHRJZDsKLX0K
LQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewot
ICAgIGF1dG8gY29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7
CisgICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJ
ZCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBh
cnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOwpAQCAtNDIwLDcgKzQx
NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnRleHRJ
ZCA9IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1dG8gY29udGV4
dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3Jh
Z2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Mo
c2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQzOSw3ICs0MzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBu
ZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKKyAgICBhdXRvIGNvbnRleHRJZCA9
IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdmVBbGxT
dG9yYWdlQWNjZXNzQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3Jh
Z2VBY2Nlc3Moc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ1Myw3ICs0NDcsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0
X3QgY29udGV4dElkKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8g
Y29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0
byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ2NCw2ICs0
NTgsNDQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphbGxTdG9yYWdlQWNjZXNzRW50cmll
c1Jlc3VsdChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMKICAgICBhdXRvIGNhbGxiYWNrID0gbV9h
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKICAgICBj
YWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGF1dG8gY29udGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29u
ZHMuc2Vjb25kcygpLCBjb250ZXh0SWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBj
b250ZXh0SWQpCit7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fdXBkYXRlUnVudGlt
ZVNldHRpbmdzQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJ
RCgpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFj
a01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyhzZXNzaW9uSUQsIGNvbnRleHRJZCksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWlu
dDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3VwZGF0
ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQogI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vu
ZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4MzU0MDI2ZDUy
MDYwMGZmMWQzNmRlZTRhM2ZjMWYyMjg5MWU0ZDFhLi42Zjk2NDhkYjhhMGU3MDdjMDczNGQzMzAy
MzQwNTdhZDFmYThlM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjayk7CkBAIC0xNDcsNiArMTQ5LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0
X3QgY29udGV4dElkKTsKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRp
ZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGRp
ZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CisgICAgdm9pZCBkaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KHVpbnQ2NF90IGNvbnRleHRJZCk7CiAjZW5kaWYKICAgICB2b2lkIHJldHJpZXZlQ2FjaGVTdG9y
YWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTE4Niw2ICsxOTAsOCBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1f
cmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+IG1fYWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcDsKIAorICAgIEhhc2hNYXA8dWludDY0X3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJh
Y2tNYXA7CisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hTZXQ8V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3hpZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1MTJkZmYy
MGRhMzczMmYxYjliZWE3MTFkNzNhMzQ3NDA1YWJmZmJkLi5hZTdmNTZlNGQzNjhmYThmNTlkYTg2
ODZmMmZiYzMyMWE0OWNmZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00
Niw2ICs0Niw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWlu
dDY0X3QgY29udGV4dElkKQogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3Rv
cjxTdHJpbmc+IGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBEaWRSZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBEaWRTZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgRGlkUmVzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNp
b25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDE0YzgzN2FkNTlkNWQ3ZTM5MzcyNjU5
NzMyMGI1NmFlNDUxOTg1ZmUuLjdlODg2MjNkYzZiZGUxMTczNzE4YWQ4MTBhMjBmNWUwZDdhNzUw
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtODMyLDYgKzgzMiwxNiBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1l
KFNlY29uZHMgc2Vjb25kcykKICAgICBtX3BhcmFtZXRlcnMuZ3JhbmRmYXRoZXJpbmdUaW1lID0g
c2Vjb25kczsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dENhY2hlTWF4QWdlQ2FwKFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN0b3Jl
ID0gbWFrZVJlZihtX3N0b3JlKSwgc2Vjb25kc10gKCkgeworICAgICAgICBzdG9yZS0+c2V0Q2Fj
aGVNYXhBZ2VDYXAoc2Vjb25kcywgW10geyB9KTsKKyAgICB9KTsKK30KKwogYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmgKaW5kZXggNjM0YjgyZDFmZTg0OGU0MTc1YjQwMTFkOTZjMDUzMTM4M2RkYTVhNC4uYjcwODIw
NzRlZjBkMDk5YzU3ZjQxNzcwMGExNTc3YWRmOWNlNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKFNlY29uZHMpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0
YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1l
KFNlY29uZHMpOworICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcyk7CiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIGJvb2wgaXNE
ZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9Owog
ICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgU3RyaW5nJiBk
b21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYzdkYjY5YjE1ZDFkNDhkN2E0ZGEzNzhm
OTg2YzQ0NWMwMmUzMmIzNy4uMTFiZTA0NTcyZjJlNWIxNWUzMjMwNDliZDVkZWIyMDMwNjgyMmRk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC04MzMsNiArODMzLDIwIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBz
ZWNvbmRzKQogICAgIH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBBU1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorI2lmIEhBVkUoQ0ZORVRX
T1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQorICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsK
KyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0Jsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBmMGY1MGE4Y2I1YmNiMWI4N2I1MTJi
MjRiMjlkOWMxN2ExOWU0NDY3Li44YmQxNjg1YzU3ZjExMTM2NmU2M2IzZTYwNjI3ZjdhMTZmODIw
MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cChTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWF4
U3RhdGlzdGljc0VudHJpZXMoc2l6ZV90KTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25U
byhzaXplX3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGRmMjE3NzZkYWFmNTg4MDcyZTc1ZjUx
MWM2NzFiOTRmOWRmNzBjOGMuLjY2Njk4ZjgxNzViNTBlOWYwZmMwZmMwZjI0ZTZhYWEyZTY5NmNm
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xMzQwLDYgKzEzNDAsMjYgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmEKICAgICAKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmdyYW50U3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwg
ZnJhbWVJRCwgcGFnZUlELCB1c2VyV2FzUHJvbXB0ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9
IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nl
c3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNy
ZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIAorICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAg
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICB9CisgICAgfQogI2VuZGlmCiAKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
aW5kZXggYTgwZWYxNmNlYmM5N2M0NzlmMzcwNmJkMDcwNTZhNDc3Mjc4Y2RhMi4uMTQwMjBlZmIy
NzM5ZjI4MjkzNDYzMmE1MzBmMzQ4MWE4MzMyOGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTQyLDYg
KzE0Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVu
YWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwog
ICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5n
JiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wg
dXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
ICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2goKTsKICAgICB2b2lkIHJlc29sdmVEaXJl
Y3Rvcmllc0lmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMjc2N2RiZjgyN2I2ZWI2NDg4YjMyMzljMjQwMzM3MmIyYjhmNmI0
YS4uMTc2NmNmYzk1OWZjZWZmMTA3NzJlZDNmMDEzNDNlNThhNzM2MjhjYSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDE4LTA5LTE4ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25l
ZCBjYWNoZSBtYXggYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODk3MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFk
ZHMgaW5mcmFzdHJ1Y3R1cmUgZm9yIGxheW91dCB0ZXN0cyBvZiBjYXBwZWQgY2FjaGUgbWF4IGFn
ZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NDYWNo
ZU1heEFnZUNhcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisKIDIwMTgtMDktMTggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBDbG9iYmVyaW5nIGFuZCBidWlsZGluZyBv
Y2N1cnMgbXVsdGlwbGUgdGltZXMgZm9yIGlPUyBTaW11bGF0b3IgcG9ydHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCmluZGV4IDIyN2JmMTA5MmRjY2M1YmY4OTBlNWZjZjFlNDY4NGI4NGI1OWNk
OGIuLjEzZGU3MjA2NWU2ZWFjMDliZDEwNzY3OWRhMDI2ZDk1OGU4MzM1NTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbApAQCAtMzA3LDYgKzMwNyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVy
IHsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG9i
amVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3Qg
Y2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVt
b3ZhbChvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdl
Q2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICAvLyBJbmplY3RlZCBidW5k
bGUgZm9ybSBjbGllbnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBmNzBlZTEzMTE1MTQxOTRlNjU1NzhkYTk2OGQ1
ZDdjMjU4Y2ZkMWFhLi4yYzYxNjhiMmRiMDVjODgwMjE2MWIzMGQ1YjdlZWQxNmU1OWZlY2M0IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKQEAgLTE5NDUsNiArMTk0NSwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3Rp
Y3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwIikp
OworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Rv
dWJsZUNyZWF0ZShzZWNvbmRzKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0
aXN0aWNzQ2FsbENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrKCkKIHsKICAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWxDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggOTVkNTk2YWE4ZTgyMTI4M2U2MGVkMGNm
ZDZlMTc5NjA0OWVlYjM1OC4uMTEwZWU4NWMxNzZkZjBhNDk5MGM0ZTI5ZGUwNDRkZTFhNWM2MmQ0
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTQyMSw2ICs0MjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25l
ZCBob3VycywgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQg
c3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOwor
ICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVu
dFN0YXRlQ2FsbGJhY2soKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCAzZjNiYTJhNTEyM2YzZmVhMGU1NTc0MWRlMWM0MDM5YWFmMWI2MWUwLi40NzY0
ZWM4MTg0ZThhNjhjYWE2ZjM3ODhlOWZiNWM0MGJhMWZkZDczIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzEyMiw2ICszMTIyLDE0IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKQog
ICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWwoKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0Nh
Y2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdL
Q29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFJlc291
cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZGF0YVN0b3JlLCBzZWNvbmRz
LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBy
dW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBhdXRvKiBkYXRh
U3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBhMWZlNTEwZjE4ZWRi
YmE5ZTk5NjRlOWU2NzE0MjlhMTAwZDE4ZmQ2Li43NjYxZjVlNTkwNGU0NjZhZjUwMDJmNzExZjk5
MjgzYmFkZWE0Zjk0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0yMjEsNiArMjIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKKyAgICB2b2lkIHNl
dFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCA1NTBmOWQzMzk4YzdmY2RiMzg4ZmRkODIyODE1NTNiOGVmODQ4NzNjLi5lY2ZkNmNj
NjJjMDUyM2I0NmYzNTU1NWIwMjQwNWRiNjRmODViYTY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTM1OCw2ICsxMzU4LDEzIEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3Rp
Y3NDYWNoZU1heEFnZUNhcCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLRG91YmxlUmVmIHNlY29u
ZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLRG91
YmxlR2V0VmFsdWUoc2Vjb25kcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRp
c3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgaWYgKG1fc2hvdWxkRHVt
cFJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgICAgICBtX3NhdmVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kdW1wUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRiODFiYzEzODliMTFjY2NjYzlmNDYxOTY5MjY2ZmExNTE0
MTUzYzguLjQ2ZTNlZTg4MTBmY2U4YjZiZjBkZTE2M2U1YmU3MjU3NWYwNTZhMWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBj
YXAgb24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
OTI0NjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2
YWxlbnQtcmVzb3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291
cmNlcy9lY2hvLXF1ZXJ5LnBocDogQWRkZWQuCisKIDIwMTgtMDktMTggIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBVbmlmaWVkIFBsYW4gYnkgZGVm
YXVsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1j
YWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYzYzYwNjlmNjQzNjc1ZDIwMWRkNjExODY4NzNjYWQ1MTAwNmU3Y2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2Fw
LWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMSBAQAorVGVzdHMgdGhhdCBjYWNoZSBtYXgtYWdlIGlzIGNhcHBlZCBmb3IgcHJldmFs
ZW50IHJlc291cmNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbG9h
ZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9MTIzNCIKK1BBU1MgbG9hZGVkVXJsIGlzICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNo
by1xdWVyeS5waHA/dmFsdWU9IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2Fw
LWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFh
ZGRlYjUwMWRkZDdkZTNlNjZjMDhhNDE3ZWVlZTFiZmIzNTQ0OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hl
LW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHRpdGxlPlRlc3RzIGZvciBDYXBwZWQgQ2FjaGUg
TWF4LUFnZTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgY2FjaGUgbWF4LWFnZSBpcyBjYXBwZWQgZm9yIHByZXZhbGVudCByZXNv
dXJjZXMuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgbG9hZGVkVXJs
OworICAgIGZ1bmN0aW9uIGZpcnN0RmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGNy
ZWF0ZSBhIGNhcHBlZCBjYWNoZSBlbnRyeS4KKyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50
LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FjaGU6ICJy
ZWxvYWQiLAorICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgICAgICAgICAg
IlgtV2ViS2l0IjogIjEyMzQiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBsb2FkZWRVcmwg
PSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxvYWRl
ZFVybCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNv
dXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9MTIzNCIpOworICAgICAgICAgICAgc2V0VGltZW91
dChzZWNvbmRGZXRjaCwgMTUwMCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc2Vjb25kRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5v
dCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQuCisgICAgICAgIGZldGNoKCJodHRwOi8v
bG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBl
cm1hbmVudC1yZWRpcmVjdC5waHAiLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
Y2hlOiAiZm9yY2UtY2FjaGUiLAorICAgICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVuY3Rp
b24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBo
cD92YWx1ZT0iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpT
VGVzdCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0ZWQuIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoMSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2lu
ZyhmaXJzdEZldGNoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hl
ZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNDI2ZjE5ODJjODU5MWI3ODY1
NDZiOGExY2YxZDZmN2ZjZGE5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQt
cmVkaXJlY3QucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCitoZWFkZXIoIkFjY2Vzcy1Db250
cm9sLUFsbG93LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CitoZWFkZXIoIkFjY2Vz
cy1Db250cm9sLUFsbG93LUhlYWRlcnM6IFgtV2ViS2l0Iik7CitpZiAoJF9TRVJWRVJbIlJFUVVF
U1RfTUVUSE9EIl0gPT0gIk9QVElPTlMiICYmIGlzc2V0KCRfU0VSVkVSWyJIVFRQX0FDQ0VTU19D
T05UUk9MX1JFUVVFU1RfTUVUSE9EIl0pICYmICRfU0VSVkVSWyJIVFRQX0FDQ0VTU19DT05UUk9M
X1JFUVVFU1RfTUVUSE9EIl0gPT0gIkdFVCIpIHsKKyAgZXhpdDsKK30KKyRoZWFkZXJTdHJpbmdW
YWx1ZSA9ICRfU0VSVkVSWyJIVFRQX1hfV0VCS0lUIl07CitoZWFkZXIoIkhUVFAvMS4xIDMwMSBN
b3ZlZCBQZXJtYW5lbnRseSIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwcml2YXRlLCBtYXgt
YWdlPTMxNTM2MDAwIiwgdHJ1ZSk7CisvLyBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6IFdlZCwgMjEg
QXVnIDIwMTggMDc6Mjg6MDAgR01UIiwgdHJ1ZSk7CitoZWFkZXIoJ0VUYWc6ICJXZWJLaXRUZXN0
IicsIHRydWUpOworaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIgLiAkaGVh
ZGVyU3RyaW5nVmFsdWUpOworPz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3Vy
Y2VzL2VjaG8tcXVlcnkucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjBhNTczNTI1
NGJjZTQwNGRkMjQ3YTVhYTAwZmI5OTFiYzQ2ZTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1
ZXJ5LnBocApAQCAtMCwwICsxLDkgQEAKKzw/cGhwCitoZWFkZXIoIkFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CitoZWFkZXIoIkFjY2Vzcy1Db250
cm9sLUFsbG93LUhlYWRlcnM6IFgtV2ViS2l0Iik7CitpZihpc3NldCgkX0dFVFsidmFsdWUiXSkp
IHsKKyAgZWNobyAkX0dFVFsidmFsdWUiXTsKK30gZWxzZSB7CisgIGVjaG8gIk5vIHF1ZXJ5IHBh
cmFtZXRlciBuYW1lZCAndmFsdWUuJyI7Cit9Cis/PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350077</attachid>
            <date>2018-09-18 17:02:15 -0700</date>
            <delta_ts>2018-09-18 17:11:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189711-20180918170214.patch</filename>
            <type>text/plain</type>
            <size>54011</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NjlmZjkzNWYwNDVk
ZTk3MTA4NWVmYzNkMWMxODY3NWNiZjEzMi4uMWY0OGJmMGRkYjlkNmFmOWUxNjYxNmEzNDQ5ZjJk
ZmViOTkyOWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTE4ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hl
Q2FwKToKKyAgICAgICAgICAgIENoZWNrcyBpZiBhIG1heCBhZ2UgY2FwIGlzIHNldCBhbmQgcmV0
dXJucyBpdCBpZiB0aGUgcmVxdWVzdAorICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByZXZhbGVu
dCByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKToKKyAgICAgICAgICAgIE5ldyBmdW5jdGlvbmFsaXR5IHRvIHJlY2VpdmUgYSBtYXgg
YWdlIGNhcCBzZXR0aW5nIGluIHRoZSBzZXNzaW9uLgorCiAyMDE4LTA5LTE4ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgdW51c2Vk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5jbG9zaW5nQ29tcG9zaXRvckZsdXNoaW5nTGF5ZXJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2VmNjg1YjRiODM1YWNmYTA1MWIxNjJhZGEyZDhhM2VjM2QyYWE3Zi4u
MTk4ZWFiMmIyZWQ0Y2Q3Yzk4M2MwZjIxOTlkMDM2YTMwMWViMTk3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBjYXAg
b24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTI0
NjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVzZSBjaGFuZ2VzIGFkZCB0aGUgY2FwYWJpbGl0eSB0byBzZXQgYSBtYXggYWdlIGNhcCBmb3Ig
cHJldmFsZW50IHJlc291cmNlcworICAgICAgICBhbmQgY29uc3VsdHMgaXQgd2hlbiByZXRyaWV2
aW5nIGNhY2hlIGVudHJpZXMuIElmIGFuIGVudHJ5IGlzIGNhcHBlZCBhbmQgZm91bmQKKyAgICAg
ICAgdG8gYmUgdG9vIG9sZCwgaXQgd2lsbCBub3QgYmUgdXNlZCBidXQgaW5zdGVhZCByZW1vdmVk
IGZyb20gdGhlIGNhY2hlLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvZmYgYnkg
ZGVmYXVsdCBiZWNhdXNlIG5vIGNhcCBpcyBzZXQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMpOgorICAgICAgICAgICAgSW5mcmFzdHJ1Y3R1cmUgZm9yIHRlc3RpbmcuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgICAgICBOb3cg
c2VuZHMgaW4gdGhlIHNlc3Npb24gSUQgaW4gdGhlIHJldHJpZXZlIGNhbGwuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXApOgorICAgICAg
ICAgICAgU3RhdGljIGNvbnZlbmllbmNlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBOb3cgcmVjZWl2ZXMgYW4g
b3B0aW9uYWwgbWF4QWdlIHBhcmFtZXRlciBhbmQgY2hlY2tzCisgICAgICAgICAgICBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBmaXJzdC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAgICAgTm93IHRha2VzIGEgc2Vz
c2lvbiBJRC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjYWNoZWRFbnRyeVJldXNlRmFpbHVy
ZVRvRGlhZ25vc3RpY0tleSk6CisgICAgICAgICAgICBBZGRlZCBVc2VEZWNpc2lvbjo6Tm9EdWVU
b1ByZXZhbGVudFJlc291cmNlQWdlQ2FwIHdoaWNoIGNhdXNlcyBhCisgICAgICAgICAgICByZXR1
cm4gb2YgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpvdGhlcktleSgpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAg
ICAgICAgICAgIEluZnJhc3RydWN0dXJlIGZvciB0ZXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZCk6CisgICAgICAgICAgICBOb3cgc3VwcG9ydHMgYSB1c2VyIGRlZmF1bHQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQpOiBEZWxldGVk
LgorICAgICAgICAgICAgRGVsZXRlZCB0aGlzIHRvIG1ha2UgYWxsIGNvZGUgdXNlIHRoZSBnZW5l
cmljIGdlbmVyYXRlQ2FsbGJhY2tJRCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgVXNlZCB0byB0cmFuc2ZlciB0
aGUgc2V0dGluZyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dENhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOC0wOS0xOCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM2MTM4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKaW5kZXggOTg2ZjdlNDM5Mjc5OTExYTk2NTQ3NjFjNzU2YzRjMjJiZWYwZWYyNi4uYzMwZWNh
YzM4MTk3NGQwZDgyYjhjYzkzZmEwYTExYjBkNDAwODdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0x
MTAsNiArMTEwLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25Q
YWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAjZWxpZiBVU0UoU09VUCkKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Np
b24+JiYpOwpAQCAtMTg3LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERlZmF1
bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fcGFn
ZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fY2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyBzdGQ6Om51bGxvcHQgfTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CmluZGV4IGM5ZDI5NjQ0MjFlYmRkOGI0Njc0MDQ2ZGNjNGM1MDNjN2FmYjQ5OTUuLjMzZDIzYmM5
Yjg5ODdkZjFlZjBhNWE5YmQ3ZDI4NzkwOGM3YjUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywK
ICAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFpbik7
CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhB
Z2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVz
KHJlcXVlc3QsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgcmV0dXJuIG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgYm9vbCBj
bGVhckZpcnN0KQogewogICAgIGlmIChjbGVhckZpcnN0KSB7CkBAIC0zNzAsNiArMzc3LDE1IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCkKICAg
ICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhT
ZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyA9IHNlY29uZHM7Cit9CisgICAgCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCit7CisgICAgbV9jYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHN0ZDo6bnVsbG9wdDsKK30KICNlbmRpZiAv
LyBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIAogI2lmICFQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggZGVhZWQzMjMzMDhlMjgwNTNkNzA5ZmMyNDQ4M2ZlMjc1NDk1ZDA0Zi4uYThmZWQ4
YzFlODA4MWZmOTk1OTc2ODcxZmYwN2ZlYmJjMTczZDQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ3Myw2ICs0NzMsMjQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3QKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnJlbW92ZVByZXZhbGVudERvbWFpbnMoZG9t
YWlucyk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZG91YmxlIHNlY29uZHMs
IHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0pOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoY29udGV4dElkKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKGNvbnRleHRJZCksIDApOworfQogI2VuZGlmCiAKIGJvb2wgTmV0d29ya1Byb2Nl
c3M6OnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDdkYjM5NzEyNzc3MjZhMmVhMzc3Y2Y0MGVmNjgzYTU5YmM4Yzg5ZTMuLjE3NTk2
YzBjMmZkODhhOTZhNDVlZDdiNGM1NGQ0MzBmNjg5YzFkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBj
b250ZXh0SWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lk
IHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBk
b3VibGUgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAjZW5kaWYKIAogICAgIFNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5jeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
Yjk2OTc2NjAyYWI4ZDk0ZTY3MDc5NmRlM2U1YjhiMDc4YTQ2YjMyMi4uODQ1NTQ3ZGI5NWJhNmRh
YjNmMGMzYjFjN2M2MGYyNTUyZjk4M2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Nyw3ICs4Nyw5
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVyYWN0
aW9uKTsKKyAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKKyAgICBTZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGRv
dWJsZSBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggNWMxMWJhYjIwMWU5MmFjNjk2OGJlNjgxMTM3ODUyZWI1MDI4NDNmNC4uZjEwOTVm
NDI4MjgwNmQwM2ZlYjI5YjNjNDQ1ZjkxZjFhZWVjZWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjE0
LDcgKzIxNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChjYW5Vc2VDYWNo
ZShyZXF1ZXN0KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIo
dGhpcyk7Ci0gICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92
ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVu
dHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3Qs
IHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vz
c2lvbklEKCksIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBUaGUg
bG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlzIGxh
bWJkYS4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBkYTA3ZTgyODdhYzljZWFjYTQw
MGVmY2QyYjA2ZjBiMjNlODFmYmRjLi42MzhiZjZiOWU5YjY1NTQ0OGUzNWIxZmUwZWJmOTI5NGE4
MDdmYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsNiArMTUyLDExIEBAIHN0YXRpYyBib29sIGNhY2hlUG9s
aWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xp
Y3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29uc3QgU2Vjb25kcyBtYXhBZ2UpCit7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCB0aW1lc3RhbXApID4gbWF4
QWdlOworfQorCiBzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsKICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9s
Q29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODMsOCArMTg4LDExIEBAIHN0YXRpYyBib29sIHJlc3Bv
bnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1w
LCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBt
YWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgVXNlRGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNv
bnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZSkKIHsKKyAgICBpZiAobWF4QWdlICYmIGhh
c1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50
aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246
Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDsKKyAgICAKICAgICAvLyBUaGUgcmVxdWVz
dCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29y
ay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0
ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFl
bnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAgLTI3MSw3ICsyNzksNyBAQCBzdGF0aWMgU3RvcmVE
ZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQgQ2Fj
aGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25z
dCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMTUsNyArMzIzLDcgQEAgdm9pZCBDYWNoZTo6cmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxG
cmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtl
eSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8g
PSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0byB0
aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXksIHBy
aW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpbmZvID0gV1RG
TW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRvIHJlY29yZCwg
YXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9IHRp
bWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTMzMiwxMyArMzQwLDIyIEBAIHZv
aWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIGF1dG8gdXNlRGVjaXNpb24gPSBl
bnRyeSA/IG1ha2VVc2VEZWNpc2lvbigqZW50cnksIHJlcXVlc3QpIDogVXNlRGVjaXNpb246Ok5v
RHVlVG9EZWNvZGVGYWlsdXJlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFn
ZUNhcCA9IHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKKyAgICAgICAgaWYgKGF1dG8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAg
ICAgICAgbWF4QWdlQ2FwID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChy
ZXF1ZXN0KTsKKyNlbmRpZgorICAgICAgICBhdXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtl
VXNlRGVjaXNpb24oKmVudHJ5LCByZXF1ZXN0LCBtYXhBZ2VDYXApIDogVXNlRGVjaXNpb246Ok5v
RHVlVG9EZWNvZGVGYWlsdXJlOwogICAgICAgICBzd2l0Y2ggKHVzZURlY2lzaW9uKSB7CiAgICAg
ICAgIGNhc2UgVXNlRGVjaXNpb246OlVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFVzZURlY2lzaW9uOjpWYWxpZGF0ZToKICAgICAgICAgICAgIGVudHJ5LT5zZXROZWVkc1Zh
bGlkYXRpb24odHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwOgorICAgICAgICAgICAgZW50cnkg
PSBudWxscHRyOworICAgICAgICAgICAgbV9zdG9yYWdlLT5yZW1vdmUoc3RvcmFnZUtleSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5ID0g
bnVsbHB0cjsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGNmNWI3YmJmMmE0YjNjYTQ1YTE1YTViMzY4ODU4
Njg0OTkyOTQzYzIuLjI5NzU1YjI4N2ExMjVkMzBmNTNhOTQ1ZGQxZGNiZjEzMzY3NTA3MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aApAQCAtODIsNiArODIsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1ZVRv
TWlzc2luZ1ZhbGlkYXRvckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFpbHVyZSwKICAgICBO
b0R1ZVRvRXhwaXJlZFJlZGlyZWN0LAorICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cAogfTsKIAogdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBh
Z2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CkBAIC0xMTIsNyArMTEzLDcgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBQQUw6OlNlc3Np
b25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBG
dW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25z
dCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNw
b25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCA4ZWU3NDUzNTdiYzk4OGNiMWVi
MTllMDk5MmYxMjY0NThlYmE3MDI3Li5hMTU1ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdl
NGE2OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI4Miw2ICsyODIsNyBAQCBz
dGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURl
Y2lzaW9uIGRlY2lzaW9uKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjptaXNzaW5nVmFsaWRhdG9yRmllbGRzS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lv
bjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU6CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb0V4
cGlyZWRSZWRpcmVjdDoKKyAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVz
b3VyY2VBZ2VDYXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6Om90aGVyS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgIGNhc2UgVXNl
RGVjaXNpb246OlZhbGlkYXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggN2YyM2U5MGZmN2M2ZTJjZTRk
NTQ3OTJjNjRhMGI5NjIzZjJlZmU4My4uMjQ2NGIwYmRhNDU2ZGE1YjlmZGUyOWJlMDFiOWFlZWU1
ZGI2ZTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC00NjIsNiArNDYyLDEzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dl
YnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQorCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgewpAQCAtNDcwLDYgKzQ3
Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAKICAgICBhdXRvJiBzdG9yZSA9IFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICBzdG9yZS5j
bGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5yZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogCiAgICAgYXV0byogc3RhdGlz
dGljc1N0b3JlID0gc3RvcmUucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3Rh
dGlzdGljc1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCAwMmU3YmNlNjEyZWQxNTM3NDRkYWY5Njk4MWY5
ODM1ZWQ4OTJkM2MwLi4yNzdiMWZiNzlhN2EyOThmMDQzNzJhMGJiNzFkOGQ4Y2JlOWIxYWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaApAQCAtOTEsNyArOTEsOSBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tf
RVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwotdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbik7CisgICAgdHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0
aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmVDb2NvYS5tbQppbmRleCBiZmVlZGY5NGNhYWYzZGE2ZmRiZDJhYTYzMWZiOGZjNWU0
NTY3MTlmLi44ZDlkMWJiMjYyODk2MmJmNWM1YTBmZTlmYjJiZmM1NTk3NjgyMGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmVDb2NvYS5tbQpAQCAtNTIsNiArNTIsMTAg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdGVyVXNlckRl
ZmF1bHRzSWZOZWVkZWQoKQogICAgICAgICBpZiAoZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSkKICAgICAgICAgICAgIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGRlYnVnTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UpOwogICAgICAgICBzZXRTdG9yYWdlQWNjZXNzUHJvbXB0c0Vu
YWJsZWQoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpA
IkV4cGVyaW1lbnRhbFN0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZCJdKTsKKworICAgICAgICBT
ZWNvbmRzIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTpAIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcCJdKTsKKyAgICAgICAgaWYgKGNhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzID4gMF9zICYmIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzIDw9IDI0X2ggKiAzNjUpCisgICAgICAgICAgICBzZXRDYWNoZU1heEFnZUNhcChjYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDU2YmZjYWMzOGQxZDg0MmM3OGQyOTY4YTcwZjlmMzIxZjJlYjA1ODIuLmQyN2U0MThm
Mjk3OGM3ZDEzMTE2ZjhiNjc2MTE3YzM1MjY3YzY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA0
LDE1ICs0MDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZUJsb2NrQ29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIG1fdXBkYXRlQmxvY2tDb29raWVzQ2FsbGJh
Y2tNYXAudGFrZShjYWxsYmFja0lkKSgpOwogfQogCi1zdGF0aWMgdWludDY0X3QgbmV4dFJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgbmV4dENv
bnRleHRJZCA9IDA7Ci0gICAgcmV0dXJuICsrbmV4dENvbnRleHRJZDsKLX0KLQogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29u
dGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0byBj
b250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBm
cmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOwpAQCAtNDIwLDcgKzQxNCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnRleHRJZCA9IG5leHRSZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJh
dGVDYWxsYmFja0lEKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCBy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBjb250ZXh0
SWQpLCAwKTsKQEAgLTQzOSw3ICs0MzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2Fs
bGJhY2tJRCgpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNz
Q2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vz
c2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ1Myw3ICs0NDcsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElk
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29udGV4dElkID0g
bmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ2NCw2ICs0NTgsNDQgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiYmIGRvbWFpbnMKICAgICBhdXRvIGNhbGxiYWNrID0gbV9hbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKICAgICBjYWxsYmFjayhXVEZN
b3ZlKGRvbWFpbnMpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gY29udGV4
dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VwZGF0
ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMuc2Vjb25kcygp
LCBjb250ZXh0SWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCit7
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2Fs
bGJhY2tNYXAudGFrZShjb250ZXh0SWQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29u
dGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIGNvbnRleHRJZCksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4
dElkKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0
aW5nc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQogI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4MzU0MDI2ZDUyMDYwMGZmMWQzNmRl
ZTRhM2ZjMWYyMjg5MWU0ZDFhLi42Zjk2NDhkYjhhMGU3MDdjMDczNGQzMzAyMzQwNTdhZDFmYThl
M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjayk7CkBAIC0xNDcsNiArMTQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3Jh
Z2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRpZFJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGRpZFNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCBkaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAjZW5kaWYKICAgICB2b2lkIHJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVy
cyhQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTE4Niw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fcmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXNDYWxsYmFja01hcDsKIAorICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4+IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXA7CisKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXM7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1MTJkZmYyMGRhMzczMmYxYjli
ZWE3MTFkNzNhMzQ3NDA1YWJmZmJkLi5hZTdmNTZlNGQzNjhmYThmNTlkYTg2ODZmMmZiYzMyMWE0
OWNmZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Niw2ICs0Niw4IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBEaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBEaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgRGlkUmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJL
aXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCmluZGV4IDE0YzgzN2FkNTlkNWQ3ZTM5MzcyNjU5NzMyMGI1NmFlNDUx
OTg1ZmUuLjdlODg2MjNkYzZiZGUxMTczNzE4YWQ4MTBhMjBmNWUwZDdhNzUwNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcApAQCAtODMyLDYgKzgzMiwxNiBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vj
b25kcykKICAgICBtX3BhcmFtZXRlcnMuZ3JhbmRmYXRoZXJpbmdUaW1lID0gc2Vjb25kczsKIH0K
IAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldENhY2hlTWF4QWdl
Q2FwKFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN0b3JlID0gbWFrZVJlZiht
X3N0b3JlKSwgc2Vjb25kc10gKCkgeworICAgICAgICBzdG9yZS0+c2V0Q2FjaGVNYXhBZ2VDYXAo
c2Vjb25kcywgW10geyB9KTsKKyAgICB9KTsKK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNjM0
YjgyZDFmZTg0OGU0MTc1YjQwMTFkOTZjMDUzMTM4M2RkYTVhNC4uYjcwODIwNzRlZjBkMDk5YzU3
ZjQxNzcwMGExNTc3YWRmOWNlNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTExMyw2
ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKFNlY29uZHMpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwor
ICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIGJvb2wgaXNEZWJ1Z01vZGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9OwogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgU3RyaW5nJiBkb21haW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggYzdkYjY5YjE1ZDFkNDhkN2E0ZGEzNzhmOTg2YzQ0NWMwMmUz
MmIzNy4uMTFiZTA0NTcyZjJlNWIxNWUzMjMwNDliZDVkZWIyMDMwNjgyMmRkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC04MzMsNiArODMzLDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQogICAg
IH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Q2FjaGVN
YXhBZ2VDYXAoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBB
U1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQorICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKKyAgICAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhz
ZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBT
aG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCBmMGY1MGE4Y2I1YmNiMWI4N2I1MTJiMjRiMjlkOWMxN2Ex
OWU0NDY3Li44YmQxNjg1YzU3ZjExMTM2NmU2M2IzZTYwNjI3ZjdhMTZmODIwMGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoU2Vjb25kcyk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWF4U3RhdGlzdGljc0Vu
dHJpZXMoc2l6ZV90KTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IGRmMjE3NzZkYWFmNTg4MDcyZTc1ZjUxMWM2NzFiOTRmOWRm
NzBjOGMuLjY2Njk4ZjgxNzViNTBlOWYwZmMwZmMwZjI0ZTZhYWEyZTY5NmNmNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xMzQwLDYgKzEzNDAsMjYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmEK
ICAgICAKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmdyYW50U3RvcmFnZUFjY2VzcyhX
VEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFn
ZUlELCB1c2VyV2FzUHJvbXB0ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8gbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhtX3Nlc3Npb25JRCwgc2Vjb25kcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgYXV0
byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIAorICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
bV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgICAgICB9CisgICAgfQogI2VuZGlmCiAKIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYTgwZWYx
NmNlYmM5N2M0NzlmMzcwNmJkMDcwNTZhNDc3Mjc4Y2RhMi4uMTQwMjBlZmIyNzM5ZjI4MjkzNDYz
MmE1MzBmMzQ4MWE4MzMyOGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTQyLDYgKzE0Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwogICAgIHZvaWQgZ3Jh
bnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVI
b3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21w
dGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKICAgICB2b2lkIG5l
dHdvcmtQcm9jZXNzRGlkQ3Jhc2goKTsKICAgICB2b2lkIHJlc29sdmVEaXJlY3Rvcmllc0lmTmVj
ZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMjc2N2RiZjgyN2I2ZWI2NDg4YjMyMzljMjQwMzM3MmIyYjhmNmI0YS4uMTc2NmNmYzk1
OWZjZWZmMTA3NzJlZDNmMDEzNDNlNThhNzM2MjhjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA5LTE4ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXgg
YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3
MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgaW5mcmFzdHJ1
Y3R1cmUgZm9yIGxheW91dCB0ZXN0cyBvZiBjYXBwZWQgY2FjaGUgbWF4IGFnZS4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdl
Q2FwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisKIDIwMTgtMDktMTggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIHdlYmtpdHB5OiBDbG9iYmVyaW5nIGFuZCBidWlsZGluZyBvY2N1cnMgbXVsdGlw
bGUgdGltZXMgZm9yIGlPUyBTaW11bGF0b3IgcG9ydHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CmluZGV4IDIyN2JmMTA5MmRjY2M1YmY4OTBlNWZjZjFlNDY4NGI4NGI1OWNkOGIuLjEzZGU3MjA2
NWU2ZWFjMDliZDEwNzY3OWRhMDI2ZDk1OGU4MzM1NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbApAQCAtMzA3LDYgKzMwNyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lk
IHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG9iamVjdCBjYWxsYmFj
ayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1v
ZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBsb25nIGhvdXJzLCBvYmplY3QgY2FsbGJhY2spOwog
ICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChvYmplY3Qg
Y2FsbGJhY2spOworICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBz
ZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKG9iamVj
dCBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGll
bnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCBmNzBlZTEzMTE1MTQxOTRlNjU1NzhkYTk2OGQ1ZDdjMjU4Y2ZkMWFh
Li4yYzYxNjhiMmRiMDVjODgwMjE2MWIzMGQ1YjdlZWQxNmU1OWZlY2M0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTE5NDUsNiArMTk0NSwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDbGVhclRocm91
Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgMCwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwIikpOworICAgIFdLUmV0
YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0RvdWJsZUNyZWF0ZShz
ZWNvbmRzKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpLCBudWxscHRyKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbENs
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrKCkKIHsKICAgICBjYWxsVGVzdFJ1
bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxD
YWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmgKaW5kZXggOTVkNTk2YWE4ZTgyMTI4M2U2MGVkMGNmZDZlMTc5NjA0OWVl
YjM1OC4uMTEwZWU4NWMxNzZkZjBhNDk5MGM0ZTI5ZGUwNDRkZTFhNWM2MmQ0NiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAg
LTQyMSw2ICs0MjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycywgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0
ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0Nh
bGxDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIp
OwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJh
Y2soKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAz
ZjNiYTJhNTEyM2YzZmVhMGU1NTc0MWRlMWM0MDM5YWFmMWI2MWUwLi40NzY0ZWM4MTg0ZThhNjhj
YWE2ZjM3ODhlOWZiNWM0MGJhMWZkZDczIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtMzEyMiw2ICszMTIyLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKQogICAgIG1fY3VycmVu
dEludm9jYXRpb24tPmRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwo
KTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
KGRvdWJsZSBzZWNvbmRzKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdl
YnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIFJlc291cmNlU3RhdGlzdGlj
c0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZGF0YVN0b3JlLCBzZWNvbmRzLCAmY29udGV4dCwg
cmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250
ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0Nv
bnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBhMWZlNTEwZjE4ZWRiYmE5ZTk5NjRlOWU2
NzE0MjlhMTAwZDE4ZmQ2Li43NjYxZjVlNTkwNGU0NjZhZjUwMDJmNzExZjk5MjgzYmFkZWE0Zjk0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yMjEsNiArMjIx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmUoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkKTsKICAgICB2b2lkIHN0YXRpc3RpY3ND
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3ND
YWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZSgpOwogCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmll
cygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA1NTBm
OWQzMzk4YzdmY2RiMzg4ZmRkODIyODE1NTNiOGVmODQ4NzNjLi5lY2ZkNmNjNjJjMDUyM2I0NmYz
NTU1NWIwMjQwNWRiNjRmODViYTY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcApAQCAtMTM1OCw2ICsxMzU4LDEzIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4g
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NDYWNoZU1heEFn
ZUNhcCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tE
b3VibGVHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLRG91YmxlUmVmIHNlY29uZHMgPSBzdGF0aWNf
Y2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLRG91YmxlR2V0VmFsdWUo
c2Vjb25kcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NSZXNldFRv
Q29uc2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgaWYgKG1fc2hvdWxkRHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpCiAgICAgICAgICAgICBtX3NhdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDRiODFiYzEzODliMTFjY2NjYzlmNDYxOTY5MjY2ZmExNTE0MTUzYzguLmE0MjMz
ZWM3OWY4ZGVkYjYxZTc1YjdlYzJlZDFiMGM3ZGYxOWVmZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBjYXAgb24gcGFydGl0
aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTI0NjgzNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3Vy
Y2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1
ZXJ5LnBocDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICAgICBOZXcgdGVzdCBtYXJrZWQgYXMgWyBQYXNzIF0uCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3QgbWFy
a2VkIGFzIFsgUGFzcyBdLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAgICAgTmV3IHRlc3QgbWFya2VkIGFzIFsgU2tpcCBdIGJlY2F1c2UgaXQncyBu
b3Qgc3VwcG9ydGVkIG9uIG5vbi1Db2NvYSBwbGF0Zm9ybXMuCisKIDIwMTgtMDktMTggIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBVbmlmaWVkIFBs
YW4gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzYzYwNjlmNjQzNjc1ZDIwMWRkNjExODY4NzNjYWQ1MTAwNmU3Y2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdGhhdCBjYWNoZSBtYXgtYWdlIGlzIGNhcHBlZCBm
b3IgcHJldmFsZW50IHJlc291cmNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgbG9hZGVkVXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9MTIzNCIKK1BBU1MgbG9hZGVk
VXJsIGlzICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNv
dXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50
LXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFhZGRlYjUwMWRkZDdkZTNlNjZjMDhhNDE3ZWVlZTFiZmIzNTQ0OTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEs
NjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHRpdGxlPlRlc3RzIGZvciBDYXBw
ZWQgQ2FjaGUgTWF4LUFnZTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgY2FjaGUgbWF4LWFnZSBpcyBjYXBwZWQgZm9yIHByZXZh
bGVudCByZXNvdXJjZXMuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIg
bG9hZGVkVXJsOworICAgIGZ1bmN0aW9uIGZpcnN0RmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMg
c2hvdWxkIGNyZWF0ZSBhIGNhcHBlZCBjYWNoZSBlbnRyeS4KKyAgICAgICAgZmV0Y2goImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FjaGU6ICJyZWxvYWQiLAorICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAg
ICAgICAgICAgIlgtV2ViS2l0IjogIjEyMzQiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBs
b2FkZWRVcmwgPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImxvYWRlZFVybCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9MTIzNCIpOworICAgICAgICAgICAg
c2V0VGltZW91dChzZWNvbmRGZXRjaCwgMTUwMCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9u
KGVycm9yKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc2Vjb25kRmV0Y2goKSB7CisgICAgICAgIC8vIFRoaXMg
c2hvdWxkIG5vdCB0cmlnZ2VyIGEgc3VjY2Vzc2Z1bCBjYWNoZSBoaXQuCisgICAgICAgIGZldGNo
KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
Y2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAiLAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhY2hlOiAiZm9yY2UtY2FjaGUiLAorICAgICAgICAgICAgfQorICAgICAgICApLnRo
ZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNl
LnVybDsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hv
LXF1ZXJ5LnBocD92YWx1ZT0iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKGVycm9yLm1lc3NhZ2UpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3QiKSkKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0ZWQuIik7CisKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoMSk7CisgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29r
aWVCbG9ja2luZyhmaXJzdEZldGNoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5w
aHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3Vy
Y2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNDI2ZjE5ODJj
ODU5MWI3ODY1NDZiOGExY2YxZDZmN2ZjZGE5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1w
ZXJtYW5lbnQtcmVkaXJlY3QucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCitoZWFkZXIoIkFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CitoZWFk
ZXIoIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnM6IFgtV2ViS2l0Iik7CitpZiAoJF9TRVJW
RVJbIlJFUVVFU1RfTUVUSE9EIl0gPT0gIk9QVElPTlMiICYmIGlzc2V0KCRfU0VSVkVSWyJIVFRQ
X0FDQ0VTU19DT05UUk9MX1JFUVVFU1RfTUVUSE9EIl0pICYmICRfU0VSVkVSWyJIVFRQX0FDQ0VT
U19DT05UUk9MX1JFUVVFU1RfTUVUSE9EIl0gPT0gIkdFVCIpIHsKKyAgZXhpdDsKK30KKyRoZWFk
ZXJTdHJpbmdWYWx1ZSA9ICRfU0VSVkVSWyJIVFRQX1hfV0VCS0lUIl07CitoZWFkZXIoIkhUVFAv
MS4xIDMwMSBNb3ZlZCBQZXJtYW5lbnRseSIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwcml2
YXRlLCBtYXgtYWdlPTMxNTM2MDAwIiwgdHJ1ZSk7CisvLyBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6
IFdlZCwgMjEgQXVnIDIwMTggMDc6Mjg6MDAgR01UIiwgdHJ1ZSk7CitoZWFkZXIoJ0VUYWc6ICJX
ZWJLaXRUZXN0IicsIHRydWUpOworaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVl
PSIgLiAkaGVhZGVyU3RyaW5nVmFsdWUpOworPz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZjBhNTczNTI1NGJjZTQwNGRkMjQ3YTVhYTAwZmI5OTFiYzQ2ZTBhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9lY2hvLXF1ZXJ5LnBocApAQCAtMCwwICsxLDkgQEAKKzw/cGhwCitoZWFkZXIoIkFjY2Vzcy1D
b250cm9sLUFsbG93LU9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CitoZWFkZXIoIkFj
Y2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnM6IFgtV2ViS2l0Iik7CitpZihpc3NldCgkX0dFVFsi
dmFsdWUiXSkpIHsKKyAgZWNobyAkX0dFVFsidmFsdWUiXTsKK30gZWxzZSB7CisgIGVjaG8gIk5v
IHF1ZXJ5IHBhcmFtZXRlciBuYW1lZCAndmFsdWUuJyI7Cit9Cis/PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNThkNjhiMWZkZGQ0MzlmNDM2NWM4MDBlZGVlYzg1YzQ2M2RlMzE4YS4uMWViNjZmMWEyNjhh
NTdkZjA4ZTdiMzkzYjEwOTJlZDI3NzQ2NWJlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI4MzAsNiArMjgzMCw3IEBAIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXByZXZhbGVudC1z
dWJyZXNvCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXIt
dG8tb3JpZ2luLWZvci1wcmV2YWxlbnQtc3VicmVzb3VyY2UtcmVxdWVzdHMuaHRtbCBbIFBhc3Mg
XQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3Bl
bmVyLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC1zdG9yYWdl
LWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRt
bCBbIFBhc3MgXQogCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMgc2luY2UgdGhl
eSBvbmx5IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Ry
aXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMtaW4tcHJpdmF0
ZS1tb2RlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhNzRkNDc1ZDY4NDk4OGZjNzQ4YThhODhlMjJkOWNkOGQwZjEw
YzAzLi42YmE2NGM4OThlYmU2MjRhNjlhZGI3M2UxMmNjM2U5OTEyNjRmNTAxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03NjMsNiArNzYz
LDcgQEAgd2Via2l0Lm9yZy9iLzE4NTk5NCBbIERlYnVnIF0gZmFzdC90ZXh0L3VzZXItaW5zdGFs
bGVkLWZvbnRzL3NoYWRvdy1wb3N0c2NyaXB0LWYKIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQogWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZl
cnJlci10by1vcmlnaW4tZm9yLXByZXZhbGVudC1zdWJyZXNvdXJjZS1yZWRpcmVjdHMuaHRtbCBb
IFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXByZXZhbGVudC1zdWJyZXNvdXJjZS1yZXF1
ZXN0cy5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRt
bCBbIFBhc3MgXQogCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMgc2luY2UgdGhl
eSBvbmx5IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Ry
aXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMtaW4tcHJpdmF0
ZS1tb2RlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggODkyNzBhMTU3ZWZjNzcwYTg3NzgzM2U0OGNmNjMyZDhmMmM2MWYzZi4uNDBi
ZjUzNzE0Y2Q1ZTIyMWE2ZjlhZmE1ZTQ0NDdhNGMwNzQxNDczMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTczMCw2ICs3MzAsNyBAQCBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci1wcmV2
YWxlbnQtc3VicmVzbwogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9j
a2luZy10by1yZWRpcmVjdC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwgWyBTa2lwIF0KIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ub24tcHJldmFsZW50LXJlc291cmNlcy1jYW4t
YWNjZXNzLWNvb2tpZXMtaW4tYS10aGlyZC1wYXJ0eS1jb250ZXh0Lmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJl
dmFsZW50LXJlc291cmNlLmh0bWwgWyBTa2lwIF0KIAogIyBQcm9jZXNzIHN3YXBwaW5nIGlzIG9u
bHkgaW1wbGVtZW50ZWQgb24gV2ViS2l0Mi4KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNz
LXN3YXAtd2luZG93LW9wZW4uaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350079</attachid>
            <date>2018-09-18 17:11:14 -0700</date>
            <delta_ts>2018-09-18 17:21:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189711-20180918171113.patch</filename>
            <type>text/plain</type>
            <size>54057</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NjlmZjkzNWYwNDVk
ZTk3MTA4NWVmYzNkMWMxODY3NWNiZjEzMi4uMWY0OGJmMGRkYjlkNmFmOWUxNjYxNmEzNDQ5ZjJk
ZmViOTkyOWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTE4ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hl
Q2FwKToKKyAgICAgICAgICAgIENoZWNrcyBpZiBhIG1heCBhZ2UgY2FwIGlzIHNldCBhbmQgcmV0
dXJucyBpdCBpZiB0aGUgcmVxdWVzdAorICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByZXZhbGVu
dCByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKToKKyAgICAgICAgICAgIE5ldyBmdW5jdGlvbmFsaXR5IHRvIHJlY2VpdmUgYSBtYXgg
YWdlIGNhcCBzZXR0aW5nIGluIHRoZSBzZXNzaW9uLgorCiAyMDE4LTA5LTE4ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgdW51c2Vk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5jbG9zaW5nQ29tcG9zaXRvckZsdXNoaW5nTGF5ZXJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2VmNjg1YjRiODM1YWNmYTA1MWIxNjJhZGEyZDhhM2VjM2QyYWE3Zi4u
MTk4ZWFiMmIyZWQ0Y2Q3Yzk4M2MwZjIxOTlkMDM2YTMwMWViMTk3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBjYXAg
b24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTI0
NjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVzZSBjaGFuZ2VzIGFkZCB0aGUgY2FwYWJpbGl0eSB0byBzZXQgYSBtYXggYWdlIGNhcCBmb3Ig
cHJldmFsZW50IHJlc291cmNlcworICAgICAgICBhbmQgY29uc3VsdHMgaXQgd2hlbiByZXRyaWV2
aW5nIGNhY2hlIGVudHJpZXMuIElmIGFuIGVudHJ5IGlzIGNhcHBlZCBhbmQgZm91bmQKKyAgICAg
ICAgdG8gYmUgdG9vIG9sZCwgaXQgd2lsbCBub3QgYmUgdXNlZCBidXQgaW5zdGVhZCByZW1vdmVk
IGZyb20gdGhlIGNhY2hlLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvZmYgYnkg
ZGVmYXVsdCBiZWNhdXNlIG5vIGNhcCBpcyBzZXQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMpOgorICAgICAgICAgICAgSW5mcmFzdHJ1Y3R1cmUgZm9yIHRlc3RpbmcuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgICAgICBOb3cg
c2VuZHMgaW4gdGhlIHNlc3Npb24gSUQgaW4gdGhlIHJldHJpZXZlIGNhbGwuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXApOgorICAgICAg
ICAgICAgU3RhdGljIGNvbnZlbmllbmNlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBOb3cgcmVjZWl2ZXMgYW4g
b3B0aW9uYWwgbWF4QWdlIHBhcmFtZXRlciBhbmQgY2hlY2tzCisgICAgICAgICAgICBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBmaXJzdC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAgICAgTm93IHRha2VzIGEgc2Vz
c2lvbiBJRC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjYWNoZWRFbnRyeVJldXNlRmFpbHVy
ZVRvRGlhZ25vc3RpY0tleSk6CisgICAgICAgICAgICBBZGRlZCBVc2VEZWNpc2lvbjo6Tm9EdWVU
b1ByZXZhbGVudFJlc291cmNlQWdlQ2FwIHdoaWNoIGNhdXNlcyBhCisgICAgICAgICAgICByZXR1
cm4gb2YgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpvdGhlcktleSgpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAg
ICAgICAgICAgIEluZnJhc3RydWN0dXJlIGZvciB0ZXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZCk6CisgICAgICAgICAgICBOb3cgc3VwcG9ydHMgYSB1c2VyIGRlZmF1bHQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQpOiBEZWxldGVk
LgorICAgICAgICAgICAgRGVsZXRlZCB0aGlzIHRvIG1ha2UgYWxsIGNvZGUgdXNlIHRoZSBnZW5l
cmljIGdlbmVyYXRlQ2FsbGJhY2tJRCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgVXNlZCB0byB0cmFuc2ZlciB0
aGUgc2V0dGluZyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dENhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOC0wOS0xOCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM2MTM4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKaW5kZXggOTg2ZjdlNDM5Mjc5OTExYTk2NTQ3NjFjNzU2YzRjMjJiZWYwZWYyNi4uYzMwZWNh
YzM4MTk3NGQwZDgyYjhjYzkzZmEwYTExYjBkNDAwODdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0x
MTAsNiArMTEwLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25Q
YWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAjZWxpZiBVU0UoU09VUCkKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Np
b24+JiYpOwpAQCAtMTg3LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERlZmF1
bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fcGFn
ZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fY2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyBzdGQ6Om51bGxvcHQgfTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CmluZGV4IGM5ZDI5NjQ0MjFlYmRkOGI0Njc0MDQ2ZGNjNGM1MDNjN2FmYjQ5OTUuLjMzZDIzYmM5
Yjg5ODdkZjFlZjBhNWE5YmQ3ZDI4NzkwOGM3YjUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywK
ICAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFpbik7
CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhB
Z2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVz
KHJlcXVlc3QsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgcmV0dXJuIG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgYm9vbCBj
bGVhckZpcnN0KQogewogICAgIGlmIChjbGVhckZpcnN0KSB7CkBAIC0zNzAsNiArMzc3LDE1IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCkKICAg
ICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhT
ZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyA9IHNlY29uZHM7Cit9CisgICAgCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCit7CisgICAgbV9jYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHN0ZDo6bnVsbG9wdDsKK30KICNlbmRpZiAv
LyBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIAogI2lmICFQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggZGVhZWQzMjMzMDhlMjgwNTNkNzA5ZmMyNDQ4M2ZlMjc1NDk1ZDA0Zi4uYThmZWQ4
YzFlODA4MWZmOTk1OTc2ODcxZmYwN2ZlYmJjMTczZDQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ3Myw2ICs0NzMsMjQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3QKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnJlbW92ZVByZXZhbGVudERvbWFpbnMoZG9t
YWlucyk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZG91YmxlIHNlY29uZHMs
IHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0pOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoY29udGV4dElkKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKGNvbnRleHRJZCksIDApOworfQogI2VuZGlmCiAKIGJvb2wgTmV0d29ya1Byb2Nl
c3M6OnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDdkYjM5NzEyNzc3MjZhMmVhMzc3Y2Y0MGVmNjgzYTU5YmM4Yzg5ZTMuLjE3NTk2
YzBjMmZkODhhOTZhNDVlZDdiNGM1NGQ0MzBmNjg5YzFkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBj
b250ZXh0SWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lk
IHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBk
b3VibGUgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAjZW5kaWYKIAogICAgIFNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5jeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
Yjk2OTc2NjAyYWI4ZDk0ZTY3MDc5NmRlM2U1YjhiMDc4YTQ2YjMyMi4uODQ1NTQ3ZGI5NWJhNmRh
YjNmMGMzYjFjN2M2MGYyNTUyZjk4M2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Nyw3ICs4Nyw5
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVyYWN0
aW9uKTsKKyAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKKyAgICBTZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGRv
dWJsZSBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggNWMxMWJhYjIwMWU5MmFjNjk2OGJlNjgxMTM3ODUyZWI1MDI4NDNmNC4uZjEwOTVm
NDI4MjgwNmQwM2ZlYjI5YjNjNDQ1ZjkxZjFhZWVjZWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjE0
LDcgKzIxNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChjYW5Vc2VDYWNo
ZShyZXF1ZXN0KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIo
dGhpcyk7Ci0gICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92
ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVu
dHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3Qs
IHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vz
c2lvbklEKCksIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBUaGUg
bG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlzIGxh
bWJkYS4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBkYTA3ZTgyODdhYzljZWFjYTQw
MGVmY2QyYjA2ZjBiMjNlODFmYmRjLi42MzhiZjZiOWU5YjY1NTQ0OGUzNWIxZmUwZWJmOTI5NGE4
MDdmYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsNiArMTUyLDExIEBAIHN0YXRpYyBib29sIGNhY2hlUG9s
aWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xp
Y3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29uc3QgU2Vjb25kcyBtYXhBZ2UpCit7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCB0aW1lc3RhbXApID4gbWF4
QWdlOworfQorCiBzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsKICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9s
Q29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODMsOCArMTg4LDExIEBAIHN0YXRpYyBib29sIHJlc3Bv
bnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1w
LCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBt
YWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgVXNlRGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNv
bnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZSkKIHsKKyAgICBpZiAobWF4QWdlICYmIGhh
c1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50
aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246
Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDsKKyAgICAKICAgICAvLyBUaGUgcmVxdWVz
dCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29y
ay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0
ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFl
bnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAgLTI3MSw3ICsyNzksNyBAQCBzdGF0aWMgU3RvcmVE
ZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQgQ2Fj
aGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25z
dCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMTUsNyArMzIzLDcgQEAgdm9pZCBDYWNoZTo6cmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxG
cmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtl
eSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8g
PSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0byB0
aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXksIHBy
aW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpbmZvID0gV1RG
TW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRvIHJlY29yZCwg
YXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9IHRp
bWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTMzMiwxMyArMzQwLDIyIEBAIHZv
aWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIGF1dG8gdXNlRGVjaXNpb24gPSBl
bnRyeSA/IG1ha2VVc2VEZWNpc2lvbigqZW50cnksIHJlcXVlc3QpIDogVXNlRGVjaXNpb246Ok5v
RHVlVG9EZWNvZGVGYWlsdXJlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFn
ZUNhcCA9IHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKKyAgICAgICAgaWYgKGF1dG8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAg
ICAgICAgbWF4QWdlQ2FwID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChy
ZXF1ZXN0KTsKKyNlbmRpZgorICAgICAgICBhdXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtl
VXNlRGVjaXNpb24oKmVudHJ5LCByZXF1ZXN0LCBtYXhBZ2VDYXApIDogVXNlRGVjaXNpb246Ok5v
RHVlVG9EZWNvZGVGYWlsdXJlOwogICAgICAgICBzd2l0Y2ggKHVzZURlY2lzaW9uKSB7CiAgICAg
ICAgIGNhc2UgVXNlRGVjaXNpb246OlVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFVzZURlY2lzaW9uOjpWYWxpZGF0ZToKICAgICAgICAgICAgIGVudHJ5LT5zZXROZWVkc1Zh
bGlkYXRpb24odHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwOgorICAgICAgICAgICAgZW50cnkg
PSBudWxscHRyOworICAgICAgICAgICAgbV9zdG9yYWdlLT5yZW1vdmUoc3RvcmFnZUtleSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5ID0g
bnVsbHB0cjsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGNmNWI3YmJmMmE0YjNjYTQ1YTE1YTViMzY4ODU4
Njg0OTkyOTQzYzIuLjI5NzU1YjI4N2ExMjVkMzBmNTNhOTQ1ZGQxZGNiZjEzMzY3NTA3MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aApAQCAtODIsNiArODIsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1ZVRv
TWlzc2luZ1ZhbGlkYXRvckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFpbHVyZSwKICAgICBO
b0R1ZVRvRXhwaXJlZFJlZGlyZWN0LAorICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cAogfTsKIAogdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBh
Z2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CkBAIC0xMTIsNyArMTEzLDcgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBQQUw6OlNlc3Np
b25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBG
dW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25z
dCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNw
b25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCA4ZWU3NDUzNTdiYzk4OGNiMWVi
MTllMDk5MmYxMjY0NThlYmE3MDI3Li5hMTU1ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdl
NGE2OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI4Miw2ICsyODIsNyBAQCBz
dGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURl
Y2lzaW9uIGRlY2lzaW9uKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjptaXNzaW5nVmFsaWRhdG9yRmllbGRzS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lv
bjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU6CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb0V4
cGlyZWRSZWRpcmVjdDoKKyAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVz
b3VyY2VBZ2VDYXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6Om90aGVyS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgIGNhc2UgVXNl
RGVjaXNpb246OlZhbGlkYXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggN2YyM2U5MGZmN2M2ZTJjZTRk
NTQ3OTJjNjRhMGI5NjIzZjJlZmU4My4uMjQ2NGIwYmRhNDU2ZGE1YjlmZGUyOWJlMDFiOWFlZWU1
ZGI2ZTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC00NjIsNiArNDYyLDEzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dl
YnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQorCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgewpAQCAtNDcwLDYgKzQ3
Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAKICAgICBhdXRvJiBzdG9yZSA9IFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICBzdG9yZS5j
bGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5yZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogCiAgICAgYXV0byogc3RhdGlz
dGljc1N0b3JlID0gc3RvcmUucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3Rh
dGlzdGljc1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCAwMmU3YmNlNjEyZWQxNTM3NDRkYWY5Njk4MWY5
ODM1ZWQ4OTJkM2MwLi4yNzdiMWZiNzlhN2EyOThmMDQzNzJhMGJiNzFkOGQ4Y2JlOWIxYWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaApAQCAtOTEsNyArOTEsOSBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tf
RVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwotdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbik7CisgICAgdHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0
aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmVDb2NvYS5tbQppbmRleCBiZmVlZGY5NGNhYWYzZGE2ZmRiZDJhYTYzMWZiOGZjNWU0
NTY3MTlmLi44ZDlkMWJiMjYyODk2MmJmNWM1YTBmZTlmYjJiZmM1NTk3NjgyMGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmVDb2NvYS5tbQpAQCAtNTIsNiArNTIsMTAg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdGVyVXNlckRl
ZmF1bHRzSWZOZWVkZWQoKQogICAgICAgICBpZiAoZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSkKICAgICAgICAgICAgIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGRlYnVnTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UpOwogICAgICAgICBzZXRTdG9yYWdlQWNjZXNzUHJvbXB0c0Vu
YWJsZWQoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpA
IkV4cGVyaW1lbnRhbFN0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZCJdKTsKKworICAgICAgICBT
ZWNvbmRzIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTpAIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcCJdKTsKKyAgICAgICAgaWYgKGNhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzID4gMF9zICYmIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzIDw9IDI0X2ggKiAzNjUpCisgICAgICAgICAgICBzZXRDYWNoZU1heEFnZUNhcChjYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDU2YmZjYWMzOGQxZDg0MmM3OGQyOTY4YTcwZjlmMzIxZjJlYjA1ODIuLmQyN2U0MThm
Mjk3OGM3ZDEzMTE2ZjhiNjc2MTE3YzM1MjY3YzY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA0
LDE1ICs0MDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZUJsb2NrQ29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIG1fdXBkYXRlQmxvY2tDb29raWVzQ2FsbGJh
Y2tNYXAudGFrZShjYWxsYmFja0lkKSgpOwogfQogCi1zdGF0aWMgdWludDY0X3QgbmV4dFJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgbmV4dENv
bnRleHRJZCA9IDA7Ci0gICAgcmV0dXJuICsrbmV4dENvbnRleHRJZDsKLX0KLQogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29u
dGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0byBj
b250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBm
cmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOwpAQCAtNDIwLDcgKzQxNCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnRleHRJZCA9IG5leHRSZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJh
dGVDYWxsYmFja0lEKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCBy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBjb250ZXh0
SWQpLCAwKTsKQEAgLTQzOSw3ICs0MzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2Fs
bGJhY2tJRCgpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNz
Q2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vz
c2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ1Myw3ICs0NDcsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElk
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29udGV4dElkID0g
bmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ2NCw2ICs0NTgsNDQgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiYmIGRvbWFpbnMKICAgICBhdXRvIGNhbGxiYWNrID0gbV9hbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKICAgICBjYWxsYmFjayhXVEZN
b3ZlKGRvbWFpbnMpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gY29udGV4
dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VwZGF0
ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMuc2Vjb25kcygp
LCBjb250ZXh0SWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCit7
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2Fs
bGJhY2tNYXAudGFrZShjb250ZXh0SWQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29u
dGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIGNvbnRleHRJZCksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4
dElkKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0
aW5nc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQogI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4MzU0MDI2ZDUyMDYwMGZmMWQzNmRl
ZTRhM2ZjMWYyMjg5MWU0ZDFhLi42Zjk2NDhkYjhhMGU3MDdjMDczNGQzMzAyMzQwNTdhZDFmYThl
M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjayk7CkBAIC0xNDcsNiArMTQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3Jh
Z2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRpZFJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGRpZFNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCBkaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAjZW5kaWYKICAgICB2b2lkIHJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVy
cyhQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTE4Niw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fcmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXNDYWxsYmFja01hcDsKIAorICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4+IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXA7CisKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXM7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1MTJkZmYyMGRhMzczMmYxYjli
ZWE3MTFkNzNhMzQ3NDA1YWJmZmJkLi5hZTdmNTZlNGQzNjhmYThmNTlkYTg2ODZmMmZiYzMyMWE0
OWNmZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Niw2ICs0Niw4IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBEaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBEaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgRGlkUmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJL
aXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCmluZGV4IDE0YzgzN2FkNTlkNWQ3ZTM5MzcyNjU5NzMyMGI1NmFlNDUx
OTg1ZmUuLjdlODg2MjNkYzZiZGUxMTczNzE4YWQ4MTBhMjBmNWUwZDdhNzUwNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcApAQCAtODMyLDYgKzgzMiwxNiBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vj
b25kcykKICAgICBtX3BhcmFtZXRlcnMuZ3JhbmRmYXRoZXJpbmdUaW1lID0gc2Vjb25kczsKIH0K
IAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldENhY2hlTWF4QWdl
Q2FwKFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN0b3JlID0gbWFrZVJlZiht
X3N0b3JlKSwgc2Vjb25kc10gKCkgeworICAgICAgICBzdG9yZS0+c2V0Q2FjaGVNYXhBZ2VDYXAo
c2Vjb25kcywgW10geyB9KTsKKyAgICB9KTsKK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNjM0
YjgyZDFmZTg0OGU0MTc1YjQwMTFkOTZjMDUzMTM4M2RkYTVhNC4uYjcwODIwNzRlZjBkMDk5YzU3
ZjQxNzcwMGExNTc3YWRmOWNlNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTExMyw2
ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKFNlY29uZHMpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwor
ICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIGJvb2wgaXNEZWJ1Z01vZGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9OwogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgU3RyaW5nJiBkb21haW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggYzdkYjY5YjE1ZDFkNDhkN2E0ZGEzNzhmOTg2YzQ0NWMwMmUz
MmIzNy4uMTFiZTA0NTcyZjJlNWIxNWUzMjMwNDliZDVkZWIyMDMwNjgyMmRkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC04MzMsNiArODMzLDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQogICAg
IH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Q2FjaGVN
YXhBZ2VDYXAoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBB
U1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQorICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKKyAgICAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhz
ZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBT
aG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCBmMGY1MGE4Y2I1YmNiMWI4N2I1MTJiMjRiMjlkOWMxN2Ex
OWU0NDY3Li44YmQxNjg1YzU3ZjExMTM2NmU2M2IzZTYwNjI3ZjdhMTZmODIwMGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoU2Vjb25kcyk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWF4U3RhdGlzdGljc0Vu
dHJpZXMoc2l6ZV90KTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IGRmMjE3NzZkYWFmNTg4MDcyZTc1ZjUxMWM2NzFiOTRmOWRm
NzBjOGMuLjZmYzhmOGMwOGIzODdhMTMxZmMxNTJkZGEwN2VmYWVlOGUzMzBiNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xMzQyLDYgKzEzNDIsMzUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmEK
IH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQorICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIAorICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0
byBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9CisjZWxzZWlmCisgICAgVU5VU0VEX1BB
UkFNKHNlY29uZHMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bv
b2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+
bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKG1fc2Vzc2lvbklELCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9CisjZWxz
ZWlmCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6Om5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2goKQogewogI2lmIEhBVkUoQ0ZORVRXT1JL
X1NUT1JBR0VfUEFSVElUSU9OSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGE4MGVmMTZjZWJjOTdjNDc5
ZjM3MDZiZDA3MDU2YTQ3NzI3OGNkYTIuLjE0MDIwZWZiMjczOWYyODI5MzQ2MzJhNTMwZjM0ODFh
ODMzMjhhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE0Miw2ICsxNDIsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9w
RnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZv
clByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vz
c0RpZENyYXNoKCk7CiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI3Njdk
YmY4MjdiNmViNjQ4OGIzMjM5YzI0MDMzNzJiMmI4ZjZiNGEuLjE3NjZjZmM5NTlmY2VmZjEwNzcy
ZWQzZjAxMzQzZTU4YTczNjI4Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3Rp
Y3M6IEFkZCBvcHRpb25hbCBjYXAgb24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zOTI0NjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGluZnJhc3RydWN0dXJlIGZvciBs
YXlvdXQgdGVzdHMgb2YgY2FwcGVkIGNhY2hlIG1heCBhZ2UuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE4
LTA5LTE4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3
ZWJraXRweTogQ2xvYmJlcmluZyBhbmQgYnVpbGRpbmcgb2NjdXJzIG11bHRpcGxlIHRpbWVzIGZv
ciBpT1MgU2ltdWxhdG9yIHBvcnRzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAyMjdi
ZjEwOTJkY2NjNWJmODkwZTVmY2YxZTQ2ODRiODRiNTljZDhiLi4xM2RlNzIwNjVlNmVhYzA5YmQx
MDc2NzlkYTAyNmQ5NThlODMzNTU3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMw
Nyw2ICszMDcsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShvYmplY3QgY2FsbGJhY2spOwogICAgIHZv
aWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNl
SG91cnModW5zaWduZWQgbG9uZyBob3Vycywgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0
YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwob2JqZWN0IGNhbGxiYWNrKTsK
KyAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAg
ICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlv
bkhhbmRsZXIpOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggZjcwZWUxMzExNTE0MTk0ZTY1NTc4ZGE5NjhkNWQ3YzI1OGNmZDFhYS4uMmM2MTY4YjJk
YjA1Yzg4MDIxNjFiMzBkNWI3ZWVkMTZlNTlmZWNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xOTQ1LDYgKzE5
NDUsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURh
dGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3Rp
Y3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Rv
dWJsZVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tEb3VibGVDcmVhdGUoc2Vjb25kcykpOwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hX
ZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpCiB7CiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhTdGF0aXN0aWNzRGlkQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2tJRCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCmluZGV4IDk1ZDU5NmFhOGU4MjEyODNlNjBlZDBjZmQ2ZTE3OTYwNDllZWIzNTguLjExMGVl
ODVjMTc2ZGYwYTQ5OTBjNGUyOWRlMDQ0ZGUxYTVjNjJkNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MjEsNiArNDIx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgaG91cnMsIEpTVmFsdWVSZWYgY2Fs
bGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bChKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3ND
YWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggM2YzYmEyYTUxMjNm
M2ZlYTBlNTU3NDFkZTFjNDAzOWFhZjFiNjFlMC4uNDc2NGVjODE4NGU4YTY4Y2FhNmYzNzg4ZTlm
YjVjNDBiYTFmZGQ3MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTMxMjIsNiArMzEyMiwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNz
Q2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5kaWRDbGVhclN0YXRpc3RpY3NUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CiB9CiAKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vj
b25kcykKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0
b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0Nv
bnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0NhY2hlTWF4QWdlQ2FwKGRhdGFTdG9yZSwgc2Vjb25kcywgJmNvbnRleHQsIHJlc291cmNlU3Rh
dGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBu
b1RpbWVvdXQpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgYXV0byogZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vi
c2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKaW5kZXggYTFmZTUxMGYxOGVkYmJhOWU5OTY0ZTllNjcxNDI5YTEwMGQx
OGZkNi4uNzY2MWY1ZTU5MDRlNDY2YWY1MDAyZjcxMWY5OTI4M2JhZGVhNGY5NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjIxLDYgKzIyMSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlm
aWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsKCk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VD
YXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNTUwZjlkMzM5OGM3ZmNk
YjM4OGZkZDgyMjgxNTUzYjhlZjg0ODczYy4uZWNmZDZjYzYyYzA1MjNiNDZmMzU1NTViMDI0MDVk
YjY0Zjg1YmE2OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
QEAgLTEzNTgsNiArMTM1OCwxMyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSkgewor
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlw
ZUlEKCkpOworICAgICAgICBXS0RvdWJsZVJlZiBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3Vi
bGVSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS0RvdWJsZUdldFZhbHVlKHNlY29uZHMpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSIpKSB7CiAgICAgICAgIGlmIChtX3Nob3VsZER1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KQogICAgICAgICAgICAgbV9zYXZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0
YjgxYmMxMzg5YjExY2NjY2M5ZjQ2MTk2OTI2NmZhMTUxNDE1M2M4Li5hNDIzM2VjNzlmOGRlZGI2
MWU3NWI3ZWMyZWQxYjBjN2RmMTllZmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMDkt
MTggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3Vy
Y2UgTG9hZCBTdGF0aXN0aWNzOiBBZGQgb3B0aW9uYWwgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hl
IG1heCBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTcxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkyNDY4Mzc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAg
ICAgTmV3IHRlc3QgbWFya2VkIGFzIFsgUGFzcyBdLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0IG1hcmtlZCBhcyBbIFBh
c3MgXS4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
ICAgIE5ldyB0ZXN0IG1hcmtlZCBhcyBbIFNraXAgXSBiZWNhdXNlIGl0J3Mgbm90IHN1cHBvcnRl
ZCBvbiBub24tQ29jb2EgcGxhdGZvcm1zLgorCiAyMDE4LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgVW5pZmllZCBQbGFuIGJ5IGRlZmF1
bHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2Fj
aGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42M2M2MDY5ZjY0MzY3NWQyMDFkZDYxMTg2ODczY2FkNTEwMDZlN2NiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1j
YWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTEgQEAKK1Rlc3RzIHRoYXQgY2FjaGUgbWF4LWFnZSBpcyBjYXBwZWQgZm9yIHByZXZhbGVu
dCByZXNvdXJjZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGxvYWRl
ZFVybCBpcyAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTEyMzQiCitQQVNTIGxvYWRlZFVybCBpcyAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8t
cXVlcnkucGhwP3ZhbHVlPSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1j
YWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWRk
ZWI1MDFkZGQ3ZGUzZTY2YzA4YTQxN2VlZWUxYmZiMzU0NDkyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1t
YXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbApAQCAtMCwwICsxLDYwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDx0aXRsZT5UZXN0cyBmb3IgQ2FwcGVkIENhY2hlIE1h
eC1BZ2U8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IGNhY2hlIG1heC1hZ2UgaXMgY2FwcGVkIGZvciBwcmV2YWxlbnQgcmVzb3Vy
Y2VzLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIGxvYWRlZFVybDsK
KyAgICBmdW5jdGlvbiBmaXJzdEZldGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBjcmVh
dGUgYSBjYXBwZWQgY2FjaGUgZW50cnkuCisgICAgICAgIGZldGNoKCJodHRwOi8vbG9jYWxob3N0
OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1y
ZWRpcmVjdC5waHAiLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhY2hlOiAicmVs
b2FkIiwKKyAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgICAgICJY
LVdlYktpdCI6ICIxMjM0IiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgbG9hZGVkVXJsID0g
cmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2FkZWRV
cmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3Vy
Y2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPTEyMzQiKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
c2Vjb25kRmV0Y2gsIDE1MDApOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHNlY29uZEZldGNoKCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3Qg
dHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0LgorICAgICAgICBmZXRjaCgiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJt
YW5lbnQtcmVkaXJlY3QucGhwIiwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYWNo
ZTogImZvcmNlLWNhY2hlIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKS50aGVuKGZ1bmN0aW9u
KHJlc3BvbnNlKSB7CisgICAgICAgICAgICBsb2FkZWRVcmwgPSByZXNwb25zZS51cmw7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxvYWRlZFVybCIsICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/
dmFsdWU9Iik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rl
c3QpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgdGVz
dEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFs
c2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8vbG9jYWxob3N0IikpCisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNl
IGJlZm9yZSB0aGUgdGVzdCBzdGFydGVkLiIpOworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKDEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmco
Zmlyc3RGZXRjaCk7CisgICAgICAgIH0pOworICAgIH0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQt
cGVybWFuZW50LXJlZGlyZWN0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjQyNmYxOTgyYzg1OTFiNzg2NTQ2
YjhhMWNmMWQ2ZjdmY2RhOWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJl
ZGlyZWN0LnBocApAQCAtMCwwICsxLDEzIEBACis8P3BocAoraGVhZGVyKCJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1PcmlnaW46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworaGVhZGVyKCJBY2Nlc3Mt
Q29udHJvbC1BbGxvdy1IZWFkZXJzOiBYLVdlYktpdCIpOworaWYgKCRfU0VSVkVSWyJSRVFVRVNU
X01FVEhPRCJdID09ICJPUFRJT05TIiAmJiBpc3NldCgkX1NFUlZFUlsiSFRUUF9BQ0NFU1NfQ09O
VFJPTF9SRVFVRVNUX01FVEhPRCJdKSAmJiAkX1NFUlZFUlsiSFRUUF9BQ0NFU1NfQ09OVFJPTF9S
RVFVRVNUX01FVEhPRCJdID09ICJHRVQiKSB7CisgIGV4aXQ7Cit9CiskaGVhZGVyU3RyaW5nVmFs
dWUgPSAkX1NFUlZFUlsiSFRUUF9YX1dFQktJVCJdOworaGVhZGVyKCJIVFRQLzEuMSAzMDEgTW92
ZWQgUGVybWFuZW50bHkiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogcHJpdmF0ZSwgbWF4LWFn
ZT0zMTUzNjAwMCIsIHRydWUpOworLy8gaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiBXZWQsIDIxIEF1
ZyAyMDE4IDA3OjI4OjAwIEdNVCIsIHRydWUpOworaGVhZGVyKCdFVGFnOiAiV2ViS2l0VGVzdCIn
LCB0cnVlKTsKK2hlYWRlcigiTG9jYXRpb246IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iIC4gJGhlYWRl
clN0cmluZ1ZhbHVlKTsKKz8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9lY2hvLXF1ZXJ5LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYwYTU3MzUyNTRi
Y2U0MDRkZDI0N2E1YWEwMGZiOTkxYmM0NmUwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVy
eS5waHAKQEAgLTAsMCArMSw5IEBACis8P3BocAoraGVhZGVyKCJBY2Nlc3MtQ29udHJvbC1BbGxv
dy1PcmlnaW46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworaGVhZGVyKCJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1IZWFkZXJzOiBYLVdlYktpdCIpOworaWYoaXNzZXQoJF9HRVRbInZhbHVlIl0pKSB7
CisgIGVjaG8gJF9HRVRbInZhbHVlIl07Cit9IGVsc2UgeworICBlY2hvICJObyBxdWVyeSBwYXJh
bWV0ZXIgbmFtZWQgJ3ZhbHVlLiciOworfQorPz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU4ZDY4YjFm
ZGRkNDM5ZjQzNjVjODAwZWRlZWM4NWM0NjNkZTMxOGEuLjFlYjY2ZjFhMjY4YTU3ZGYwOGU3YjM5
M2IxMDkyZWQyNzc0NjViZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0yODMwLDYgKzI4MzAsNyBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci1wcmV2YWxlbnQtc3VicmVzbwogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1m
b3ItcHJldmFsZW50LXN1YnJlc291cmNlLXJlcXVlc3RzLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sIFsg
UGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtdW5k
ZXItb3BlbmVyLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwgWyBQYXNzIF0K
IAogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3Jr
IG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0cmlwLXJlZmVycmVy
LXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLWluLXByaXZhdGUtbW9kZS5odG1s
IFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggYTc0ZDQ3NWQ2ODQ5ODhmYzc0OGE4YTg4ZTIyZDljZDhkMGYxMGMwMy4uNmJhNjRj
ODk4ZWJlNjI0YTY5YWRiNzNlMTJjYzNlOTkxMjY0ZjUwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzYzLDYgKzc2Myw3IEBAIHdlYmtp
dC5vcmcvYi8xODU5OTQgWyBEZWJ1ZyBdIGZhc3QvdGV4dC91c2VyLWluc3RhbGxlZC1mb250cy9z
aGFkb3ctcG9zdHNjcmlwdC1mCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3Jp
Z2luLWZvci1wcmV2YWxlbnQtc3VicmVzb3VyY2UtcmVkaXJlY3RzLmh0bWwgWyBQYXNzIF0KIFsg
SGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVm
ZXJyZXItdG8tb3JpZ2luLWZvci1wcmV2YWxlbnQtc3VicmVzb3VyY2UtcmVxdWVzdHMuaHRtbCBb
IFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwgWyBQYXNzIF0K
IAogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3Jr
IG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0cmlwLXJlZmVycmVy
LXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLWluLXByaXZhdGUtbW9kZS5odG1s
IFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDg5MjcwYTE1N2VmYzc3MGE4Nzc4MzNlNDhjZjYzMmQ4ZjJjNjFmM2YuLjQwYmY1MzcxNGNkNWUy
MjFhNmY5YWZhNWU0NDQ3YTRjMDc0MTQ3MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC03MzAsNiArNzMwLDcgQEAgaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItcHJldmFsZW50LXN1YnJl
c28KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVk
aXJlY3QuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
bW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJjZXMtY2FuLWFjY2Vzcy1jb29r
aWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNv
dXJjZS5odG1sIFsgU2tpcCBdCiAKICMgUHJvY2VzcyBzd2FwcGluZyBpcyBvbmx5IGltcGxlbWVu
dGVkIG9uIFdlYktpdDIuCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRv
dy1vcGVuLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350080</attachid>
            <date>2018-09-18 17:21:23 -0700</date>
            <delta_ts>2018-09-19 11:41:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189711-20180918172122.patch</filename>
            <type>text/plain</type>
            <size>54034</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NjlmZjkzNWYwNDVk
ZTk3MTA4NWVmYzNkMWMxODY3NWNiZjEzMi4uMWY0OGJmMGRkYjlkNmFmOWUxNjYxNmEzNDQ5ZjJk
ZmViOTkyOWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTE4ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hl
Q2FwKToKKyAgICAgICAgICAgIENoZWNrcyBpZiBhIG1heCBhZ2UgY2FwIGlzIHNldCBhbmQgcmV0
dXJucyBpdCBpZiB0aGUgcmVxdWVzdAorICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByZXZhbGVu
dCByZXNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKToKKyAgICAgICAgICAgIE5ldyBmdW5jdGlvbmFsaXR5IHRvIHJlY2VpdmUgYSBtYXgg
YWdlIGNhcCBzZXR0aW5nIGluIHRoZSBzZXNzaW9uLgorCiAyMDE4LTA5LTE4ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgdW51c2Vk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5jbG9zaW5nQ29tcG9zaXRvckZsdXNoaW5nTGF5ZXJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2VmNjg1YjRiODM1YWNmYTA1MWIxNjJhZGEyZDhhM2VjM2QyYWE3Zi4u
MTk4ZWFiMmIyZWQ0Y2Q3Yzk4M2MwZjIxOTlkMDM2YTMwMWViMTk3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxOC0wOS0xOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBjYXAg
b24gcGFydGl0aW9uZWQgY2FjaGUgbWF4IGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTI0
NjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVzZSBjaGFuZ2VzIGFkZCB0aGUgY2FwYWJpbGl0eSB0byBzZXQgYSBtYXggYWdlIGNhcCBmb3Ig
cHJldmFsZW50IHJlc291cmNlcworICAgICAgICBhbmQgY29uc3VsdHMgaXQgd2hlbiByZXRyaWV2
aW5nIGNhY2hlIGVudHJpZXMuIElmIGFuIGVudHJ5IGlzIGNhcHBlZCBhbmQgZm91bmQKKyAgICAg
ICAgdG8gYmUgdG9vIG9sZCwgaXQgd2lsbCBub3QgYmUgdXNlZCBidXQgaW5zdGVhZCByZW1vdmVk
IGZyb20gdGhlIGNhY2hlLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvZmYgYnkg
ZGVmYXVsdCBiZWNhdXNlIG5vIGNhcCBpcyBzZXQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMpOgorICAgICAgICAgICAgSW5mcmFzdHJ1Y3R1cmUgZm9yIHRlc3RpbmcuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgICAgICBOb3cg
c2VuZHMgaW4gdGhlIHNlc3Npb24gSUQgaW4gdGhlIHJldHJpZXZlIGNhbGwuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpoYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXApOgorICAgICAg
ICAgICAgU3RhdGljIGNvbnZlbmllbmNlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgICAgICBOb3cgcmVjZWl2ZXMgYW4g
b3B0aW9uYWwgbWF4QWdlIHBhcmFtZXRlciBhbmQgY2hlY2tzCisgICAgICAgICAgICBoYXNSZWFj
aGVkUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAoKSBmaXJzdC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAgICAgTm93IHRha2VzIGEgc2Vz
c2lvbiBJRC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjYWNoZWRFbnRyeVJldXNlRmFpbHVy
ZVRvRGlhZ25vc3RpY0tleSk6CisgICAgICAgICAgICBBZGRlZCBVc2VEZWNpc2lvbjo6Tm9EdWVU
b1ByZXZhbGVudFJlc291cmNlQWdlQ2FwIHdoaWNoIGNhdXNlcyBhCisgICAgICAgICAgICByZXR1
cm4gb2YgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpvdGhlcktleSgpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAg
ICAgICAgICAgIEluZnJhc3RydWN0dXJlIGZvciB0ZXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZCk6CisgICAgICAgICAgICBOb3cgc3VwcG9ydHMgYSB1c2VyIGRlZmF1bHQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQpOiBEZWxldGVk
LgorICAgICAgICAgICAgRGVsZXRlZCB0aGlzIHRvIG1ha2UgYWxsIGNvZGUgdXNlIHRoZSBnZW5l
cmljIGdlbmVyYXRlQ2FsbGJhY2tJRCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgVXNlZCB0byB0cmFuc2ZlciB0
aGUgc2V0dGluZyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dENhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaDoKKwogMjAxOC0wOS0xOCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM2MTM4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKaW5kZXggOTg2ZjdlNDM5Mjc5OTExYTk2NTQ3NjFjNzU2YzRjMjJiZWYwZWYyNi4uYzMwZWNh
YzM4MTk3NGQwZDgyYjhjYzkzZmEwYTExYjBkNDAwODdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0x
MTAsNiArMTEwLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25Q
YWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAjZWxpZiBVU0UoU09VUCkKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Np
b24+JiYpOwpAQCAtMTg3LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpI
YXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERlZmF1
bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fcGFn
ZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fY2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyBzdGQ6Om51bGxvcHQgfTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CmluZGV4IGM5ZDI5NjQ0MjFlYmRkOGI0Njc0MDQ2ZGNjNGM1MDNjN2FmYjQ5OTUuLjMzZDIzYmM5
Yjg5ODdkZjFlZjBhNWE5YmQ3ZDI4NzkwOGM3YjUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCkBAIC0yNjYsNiArMjY2LDEzIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywK
ICAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFpbik7
CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhB
Z2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVz
KHJlcXVlc3QsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgcmV0dXJuIG1f
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgYm9vbCBj
bGVhckZpcnN0KQogewogICAgIGlmIChjbGVhckZpcnN0KSB7CkBAIC0zNzAsNiArMzc3LDE1IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCkKICAg
ICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhT
ZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyA9IHNlY29uZHM7Cit9CisgICAgCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCit7CisgICAgbV9jYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHN0ZDo6bnVsbG9wdDsKK30KICNlbmRpZiAv
LyBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIAogI2lmICFQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggZGVhZWQzMjMzMDhlMjgwNTNkNzA5ZmMyNDQ4M2ZlMjc1NDk1ZDA0Zi4uYThmZWQ4
YzFlODA4MWZmOTk1OTc2ODcxZmYwN2ZlYmJjMTczZDQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQ3Myw2ICs0NzMsMjQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3QKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnJlbW92ZVByZXZhbGVudERvbWFpbnMoZG9t
YWlucyk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZG91YmxlIHNlY29uZHMs
IHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0pOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoY29udGV4dElkKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKGNvbnRleHRJZCksIDApOworfQogI2VuZGlmCiAKIGJvb2wgTmV0d29ya1Byb2Nl
c3M6OnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDdkYjM5NzEyNzc3MjZhMmVhMzc3Y2Y0MGVmNjgzYTU5YmM4Yzg5ZTMuLjE3NTk2
YzBjMmZkODhhOTZhNDVlZDdiNGM1NGQ0MzBmNjg5YzFkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBj
b250ZXh0SWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lk
IHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBk
b3VibGUgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAjZW5kaWYKIAogICAgIFNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5jeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
Yjk2OTc2NjAyYWI4ZDk0ZTY3MDc5NmRlM2U1YjhiMDc4YTQ2YjMyMi4uODQ1NTQ3ZGI5NWJhNmRh
YjNmMGMzYjFjN2M2MGYyNTUyZjk4M2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Nyw3ICs4Nyw5
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBHcmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKQotICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zV2l0aEludGVyYWN0
aW9uKTsKKyAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbikKKyAgICBTZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGRv
dWJsZSBzZWNvbmRzLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgUmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggNWMxMWJhYjIwMWU5MmFjNjk2OGJlNjgxMTM3ODUyZWI1MDI4NDNmNC4uZjEwOTVm
NDI4MjgwNmQwM2ZlYjI5YjNjNDQ1ZjkxZjFhZWVjZWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjE0
LDcgKzIxNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChjYW5Vc2VDYWNo
ZShyZXF1ZXN0KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIo
dGhpcyk7Ci0gICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbdGhpcywgbG9hZGVyID0gV1RGTW92
ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVu
dHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3Qs
IHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgc2Vz
c2lvbklEKCksIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBUaGUg
bG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlzIGxh
bWJkYS4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBkYTA3ZTgyODdhYzljZWFjYTQw
MGVmY2QyYjA2ZjBiMjNlODFmYmRjLi42MzhiZjZiOWU5YjY1NTQ0OGUzNWIxZmUwZWJmOTI5NGE4
MDdmYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCkBAIC0xNTIsNiArMTUyLDExIEBAIHN0YXRpYyBib29sIGNhY2hlUG9s
aWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xp
Y3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBoYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgY29uc3QgU2Vjb25kcyBtYXhBZ2UpCit7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCB0aW1lc3RhbXApID4gbWF4
QWdlOworfQorCiBzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHRpbWVzdGFtcCwgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtYXhTdGFsZSkKIHsKICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9s
Q29udGFpbnNOb0NhY2hlKCkpCkBAIC0xODMsOCArMTg4LDExIEBAIHN0YXRpYyBib29sIHJlc3Bv
bnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0YW1w
LCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CiAKLXN0YXRpYyBVc2VEZWNpc2lvbiBt
YWtlVXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgVXNlRGVjaXNpb24gbWFrZVVzZURlY2lzaW9uKGNv
bnN0IEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZSkKIHsKKyAgICBpZiAobWF4QWdlICYmIGhh
c1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChlbnRyeS5yZXNwb25zZSgpLCBlbnRyeS50
aW1lU3RhbXAoKSwgbWF4QWdlLnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246
Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDsKKyAgICAKICAgICAvLyBUaGUgcmVxdWVz
dCBpcyBjb25kaXRpb25hbCBzbyB3ZSBmb3JjZSByZXZhbGlkYXRpb24gZnJvbSB0aGUgbmV0d29y
ay4gV2UgbWVyZWx5IGNoZWNrIHRoZSBkaXNrIGNhY2hlCiAgICAgLy8gc28gd2UgY2FuIHVwZGF0
ZSB0aGUgY2FjaGUgZW50cnkuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpICYmICFl
bnRyeS5yZWRpcmVjdFJlcXVlc3QoKSkKQEAgLTI3MSw3ICsyNzksNyBAQCBzdGF0aWMgU3RvcmVE
ZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUgogICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpZZXM7CiB9CiAKLXZvaWQgQ2Fj
aGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25z
dCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zMTUsNyArMzIzLDcgQEAgdm9pZCBDYWNoZTo6cmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxG
cmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtl
eSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8g
PSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlEXShhdXRvIHJlY29yZCwgYXV0byB0
aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXksIHBy
aW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0LCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpbmZvID0gV1RG
TW92ZShpbmZvKSwgc3RvcmFnZUtleSwgZnJhbWVJRCwgc2Vzc2lvbklEXShhdXRvIHJlY29yZCwg
YXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9IHRp
bWluZ3M7CiAKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTMzMiwxMyArMzQwLDIyIEBAIHZv
aWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwogCi0gICAgICAgIGF1dG8gdXNlRGVjaXNpb24gPSBl
bnRyeSA/IG1ha2VVc2VEZWNpc2lvbigqZW50cnksIHJlcXVlc3QpIDogVXNlRGVjaXNpb246Ok5v
RHVlVG9EZWNvZGVGYWlsdXJlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFn
ZUNhcCA9IHN0ZDo6bnVsbG9wdDsKKyNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKKyAgICAgICAgaWYgKGF1dG8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAg
ICAgICAgbWF4QWdlQ2FwID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChy
ZXF1ZXN0KTsKKyNlbmRpZgorICAgICAgICBhdXRvIHVzZURlY2lzaW9uID0gZW50cnkgPyBtYWtl
VXNlRGVjaXNpb24oKmVudHJ5LCByZXF1ZXN0LCBtYXhBZ2VDYXApIDogVXNlRGVjaXNpb246Ok5v
RHVlVG9EZWNvZGVGYWlsdXJlOwogICAgICAgICBzd2l0Y2ggKHVzZURlY2lzaW9uKSB7CiAgICAg
ICAgIGNhc2UgVXNlRGVjaXNpb246OlVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFVzZURlY2lzaW9uOjpWYWxpZGF0ZToKICAgICAgICAgICAgIGVudHJ5LT5zZXROZWVkc1Zh
bGlkYXRpb24odHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VEZWNp
c2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwOgorICAgICAgICAgICAgZW50cnkg
PSBudWxscHRyOworICAgICAgICAgICAgbV9zdG9yYWdlLT5yZW1vdmUoc3RvcmFnZUtleSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGVudHJ5ID0g
bnVsbHB0cjsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGNmNWI3YmJmMmE0YjNjYTQ1YTE1YTViMzY4ODU4
Njg0OTkyOTQzYzIuLjI5NzU1YjI4N2ExMjVkMzBmNTNhOTQ1ZGQxZGNiZjEzMzY3NTA3MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aApAQCAtODIsNiArODIsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1ZVRv
TWlzc2luZ1ZhbGlkYXRvckZpZWxkcywKICAgICBOb0R1ZVRvRGVjb2RlRmFpbHVyZSwKICAgICBO
b0R1ZVRvRXhwaXJlZFJlZGlyZWN0LAorICAgIE5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cAogfTsKIAogdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBh
Z2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CkBAIC0xMTIsNyArMTEzLDcgQEAgcHVi
bGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICB9OwogICAgIHVzaW5n
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBQQUw6OlNlc3Np
b25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBG
dW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25z
dCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNw
b25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCA4ZWU3NDUzNTdiYzk4OGNiMWVi
MTllMDk5MmYxMjY0NThlYmE3MDI3Li5hMTU1ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdl
NGE2OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI4Miw2ICsyODIsNyBAQCBz
dGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURl
Y2lzaW9uIGRlY2lzaW9uKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjptaXNzaW5nVmFsaWRhdG9yRmllbGRzS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lv
bjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU6CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb0V4
cGlyZWRSZWRpcmVjdDoKKyAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVz
b3VyY2VBZ2VDYXA6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6Om90aGVyS2V5KCk7CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgIGNhc2UgVXNl
RGVjaXNpb246OlZhbGlkYXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggN2YyM2U5MGZmN2M2ZTJjZTRk
NTQ3OTJjNjRhMGI5NjIzZjJlZmU4My4uMjQ2NGIwYmRhNDU2ZGE1YjlmZGUyOWJlMDFiOWFlZWU1
ZGI2ZTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC00NjIsNiArNDYyLDEzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dl
YnNpdGVEYXRhU3RvCiAgICAgfSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAgIH0pOworfQorCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgewpAQCAtNDcwLDYgKzQ3
Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAKICAgICBhdXRvJiBzdG9yZSA9IFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICBzdG9yZS5j
bGVhclJlc291cmNlTG9hZFN0YXRpc3RpY3NJbldlYlByb2Nlc3NlcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICBzdG9yZS5yZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogCiAgICAgYXV0byogc3RhdGlz
dGljc1N0b3JlID0gc3RvcmUucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3Rh
dGlzdGljc1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCAwMmU3YmNlNjEyZWQxNTM3NDRkYWY5Njk4MWY5
ODM1ZWQ4OTJkM2MwLi4yNzdiMWZiNzlhN2EyOThmMDQzNzJhMGJiNzFkOGQ4Y2JlOWIxYWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaApAQCAtOTEsNyArOTEsOSBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaQogV0tf
RVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdW5zaWduZWQgaG91cnMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzRnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spOwotdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbik7CisgICAgdHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NS
ZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0
aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmVDb2NvYS5tbQppbmRleCBiZmVlZGY5NGNhYWYzZGE2ZmRiZDJhYTYzMWZiOGZjNWU0
NTY3MTlmLi44ZDlkMWJiMjYyODk2MmJmNWM1YTBmZTlmYjJiZmM1NTk3NjgyMGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmVDb2NvYS5tbQpAQCAtNTIsNiArNTIsMTAg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlZ2lzdGVyVXNlckRl
ZmF1bHRzSWZOZWVkZWQoKQogICAgICAgICBpZiAoZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSkKICAgICAgICAgICAgIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGRlYnVnTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UpOwogICAgICAgICBzZXRTdG9yYWdlQWNjZXNzUHJvbXB0c0Vu
YWJsZWQoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpA
IkV4cGVyaW1lbnRhbFN0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZCJdKTsKKworICAgICAgICBT
ZWNvbmRzIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTpAIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcCJdKTsKKyAgICAgICAgaWYgKGNhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzID4gMF9zICYmIGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzIDw9IDI0X2ggKiAzNjUpCisgICAgICAgICAgICBzZXRDYWNoZU1heEFnZUNhcChjYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDU2YmZjYWMzOGQxZDg0MmM3OGQyOTY4YTcwZjlmMzIxZjJlYjA1ODIuLmQyN2U0MThm
Mjk3OGM3ZDEzMTE2ZjhiNjc2MTE3YzM1MjY3YzY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA0
LDE1ICs0MDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZUJsb2NrQ29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lkKQogICAgIG1fdXBkYXRlQmxvY2tDb29raWVzQ2FsbGJh
Y2tNYXAudGFrZShjYWxsYmFja0lkKSgpOwogfQogCi1zdGF0aWMgdWludDY0X3QgbmV4dFJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgbmV4dENv
bnRleHRJZCA9IDA7Ci0gICAgcmV0dXJuICsrbmV4dENvbnRleHRJZDsKLX0KLQogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29u
dGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0byBj
b250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBm
cmFtZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOwpAQCAtNDIwLDcgKzQxNCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnRleHRJZCA9IG5leHRSZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1dG8gY29udGV4dElkID0gZ2VuZXJh
dGVDYWxsYmFja0lEKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHcmFudFN0b3JhZ2VBY2Nlc3Moc2Vzc2lvbklELCBy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBjb250ZXh0
SWQpLCAwKTsKQEAgLTQzOSw3ICs0MzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2Fs
bGJhY2tJRCgpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdmVBbGxTdG9yYWdlQWNjZXNz
Q2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Moc2Vz
c2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ1Myw3ICs0NDcsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElk
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29udGV4dElkID0g
bmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0byBjb250ZXh0SWQg
PSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKQEAgLTQ2NCw2ICs0NTgsNDQgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjphbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiYmIGRvbWFpbnMKICAgICBhdXRvIGNhbGxiYWNrID0gbV9hbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKICAgICBjYWxsYmFjayhXVEZN
b3ZlKGRvbWFpbnMpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gY29udGV4
dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VwZGF0
ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQsIHNlY29uZHMuc2Vjb25kcygp
LCBjb250ZXh0SWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCit7
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2Fs
bGJhY2tNYXAudGFrZShjb250ZXh0SWQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV91cGRhdGVSdW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC5hZGQoY29u
dGV4dElkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNz
aW9uSUQsIGNvbnRleHRJZCksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4
dElkKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3VwZGF0ZVJ1bnRpbWVTZXR0
aW5nc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQogI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4MzU0MDI2ZDUyMDYwMGZmMWQzNmRl
ZTRhM2ZjMWYyMjg5MWU0ZDFhLi42Zjk2NDhkYjhhMGU3MDdjMDczNGQzMzAyMzQwNTdhZDFmYThl
M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICNlbmRpZgogCiAgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjayk7CkBAIC0xNDcsNiArMTQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3Jh
Z2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIGRpZFJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3ModWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIGRpZFNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCBkaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAjZW5kaWYKICAgICB2b2lkIHJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVy
cyhQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTE4Niw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fcmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzc0NhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4+IG1fYWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXNDYWxsYmFja01hcDsKIAorICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4+IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXA7CisKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXM7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1MTJkZmYyMGRhMzczMmYxYjli
ZWE3MTFkNzNhMzQ3NDA1YWJmZmJkLi5hZTdmNTZlNGQzNjhmYThmNTlkYTg2ODZmMmZiYzMyMWE0
OWNmZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00Niw2ICs0Niw4IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBEaWRSZW1vdmVBbGxTdG9yYWdlQWNjZXNz
KHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBEaWRTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgRGlkUmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQpCiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJL
aXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCmluZGV4IDE0YzgzN2FkNTlkNWQ3ZTM5MzcyNjU5NzMyMGI1NmFlNDUx
OTg1ZmUuLjdlODg2MjNkYzZiZGUxMTczNzE4YWQ4MTBhMjBmNWUwZDdhNzUwNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcApAQCAtODMyLDYgKzgzMiwxNiBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vj
b25kcykKICAgICBtX3BhcmFtZXRlcnMuZ3JhbmRmYXRoZXJpbmdUaW1lID0gc2Vjb25kczsKIH0K
IAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldENhY2hlTWF4QWdl
Q2FwKFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN0b3JlID0gbWFrZVJlZiht
X3N0b3JlKSwgc2Vjb25kc10gKCkgeworICAgICAgICBzdG9yZS0+c2V0Q2FjaGVNYXhBZ2VDYXAo
c2Vjb25kcywgW10geyB9KTsKKyAgICB9KTsKK30KKwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNjM0
YjgyZDFmZTg0OGU0MTc1YjQwMTFkOTZjMDUzMTM4M2RkYTVhNC4uYjcwODIwNzRlZjBkMDk5YzU3
ZjQxNzcwMGExNTc3YWRmOWNlNGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTExMyw2
ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKFNlY29uZHMpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwor
ICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIGJvb2wgaXNEZWJ1Z01vZGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9OwogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgU3RyaW5nJiBkb21haW4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggYzdkYjY5YjE1ZDFkNDhkN2E0ZGEzNzhmOTg2YzQ0NWMwMmUz
MmIzNy4uMTFiZTA0NTcyZjJlNWIxNWUzMjMwNDliZDVkZWIyMDMwNjgyMmRkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC04MzMsNiArODMzLDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQogICAg
IH0pOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Q2FjaGVN
YXhBZ2VDYXAoU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBB
U1NFUlQoc2Vjb25kcyA+PSAwX3MpOworICAgIAorI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQorICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKKyAgICAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhz
ZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBT
aG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCBmMGY1MGE4Y2I1YmNiMWI4N2I1MTJiMjRiMjlkOWMxN2Ex
OWU0NDY3Li44YmQxNjg1YzU3ZjExMTM2NmU2M2IzZTYwNjI3ZjdhMTZmODIwMGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoU2Vjb25kcyk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWF4U3RhdGlzdGljc0Vu
dHJpZXMoc2l6ZV90KTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IGRmMjE3NzZkYWFmNTg4MDcyZTc1ZjUxMWM2NzFiOTRmOWRm
NzBjOGMuLjg5MWUyYzMwNzI0ZTczMzA4NzUwNGRiNDIwZGY3MTgzMWQwNGNiNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0xMzQyLDYgKzEzNDIsMzUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmEK
IH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQorICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIAorICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0
byBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKG1fc2Vzc2lvbklELCBzZWNvbmRzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzZWNvbmRzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlmCit9CisKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhtX3Nlc3Npb25JRCwgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorI2Vsc2UK
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlmCit9CisKIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpCiB7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RP
UkFHRV9QQVJUSVRJT05JTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYTgwZWYxNmNlYmM5N2M0NzlmMzcw
NmJkMDcwNTZhNDc3Mjc4Y2RhMi4uNTU2OWM5YzVkZTQ4MGFkMDkwNjMwYjFiMjc5Y2YzOGIwNTk1
ODQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTQzLDYgKzE0Myw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9w
RnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgcHJvbXB0
RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJik7
CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9v
bCB1c2VyV2FzUHJvbXB0ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2Vu
ZGlmCisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgcmVzb2x2ZURp
cmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNzY3ZGJmODI3YjZlYjY0ODhiMzIzOWMyNDAz
MzcyYjJiOGY2YjRhLi4xNzY2Y2ZjOTU5ZmNlZmYxMDc3MmVkM2YwMTM0M2U1OGE3MzYyOGNhIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTgtMDktMTggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBZGQgb3B0aW9uYWwgY2FwIG9u
IHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTcxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkyNDY4
Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWRkcyBpbmZyYXN0cnVjdHVyZSBmb3IgbGF5b3V0IHRlc3RzIG9mIGNhcHBlZCBj
YWNoZSBtYXggYWdlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOC0wOS0xOCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IENsb2JiZXJpbmcgYW5k
IGJ1aWxkaW5nIG9jY3VycyBtdWx0aXBsZSB0aW1lcyBmb3IgaU9TIFNpbXVsYXRvciBwb3J0cwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMjI3YmYxMDkyZGNjYzViZjg5MGU1ZmNmMWU0
Njg0Yjg0YjU5Y2Q4Yi4uMTNkZTcyMDY1ZTZlYWMwOWJkMTA3Njc5ZGEwMjZkOTU4ZTgzMzU1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zMDcsNiArMzA3LDcgQEAgaW50ZXJmYWNl
IFRlc3RSdW5uZXIgewogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmUob2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkIGxvbmcgaG91
cnMsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsKG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNz
Q2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUob2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIC8vIElu
amVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGY3MGVlMTMxMTUxNDE5NGU2
NTU3OGRhOTY4ZDVkN2MyNThjZmQxYWEuLjJjNjE2OGIyZGIwNWM4ODAyMTYxYjMwZDViN2VlZDE2
ZTU5ZmVjYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTk0NSw2ICsxOTQ1LDEzIEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChKU1ZhbHVlUmVmIGNh
bGxiYWNrKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCBudWxscHRyKTsK
IH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91Ymxl
IHNlY29uZHMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzQ2FjaGVN
YXhBZ2VDYXAiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IG1lc3NhZ2VCb2R5KEFk
b3B0V0ssIFdLRG91YmxlQ3JlYXRlKHNlY29uZHMpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJv
bm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJh
Y2soKQogewogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZENsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA5NWQ1OTZhYThlODIx
MjgzZTYwZWQwY2ZkNmUxNzk2MDQ5ZWViMzU4Li4xMTBlZTg1YzE3NmRmMGE0OTkwYzRlMjlkZTA0
NGRlMWE1YzYyZDQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDIxLDYgKzQyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhv
dXJzKHVuc2lnbmVkIGhvdXJzLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoSlNWYWx1ZVJlZiBjYWxsYmFjayk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENh
bGxiYWNrKCk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNl
Y29uZHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFJlc2V0
VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDNmM2JhMmE1MTIzZjNmZWEwZTU1NzQxZGUxYzQwMzlhYWYx
YjYxZTAuLjQ3NjRlYzgxODRlOGE2OGNhYTZmMzc4OGU5ZmI1YzQwYmExZmRkNzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMTIyLDYgKzMxMjIsMTQg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRh
UmVtb3ZhbCgpCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkQ2xlYXJTdGF0aXN0aWNzVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpCit7CisgICAgYXV0byogZGF0
YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkYXRhU3Rv
cmUsIHNlY29uZHMsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJh
Y2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKK30KKwogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewogICAg
IGF1dG8qIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1D
b250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGEx
ZmU1MTBmMThlZGJiYTllOTk2NGU5ZTY3MTQyOWExMDBkMThmZDYuLjc2NjFmNWU1OTA0ZTQ2NmFm
NTAwMmY3MTFmOTkyODNiYWRlYTRmOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKQEAgLTIyMSw2ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogICAgIHZvaWQgc3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQp
OwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwor
ICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDU1MGY5ZDMzOThjN2ZjZGIzODhmZGQ4MjI4MTU1M2I4ZWY4NDg3
M2MuLmVjZmQ2Y2M2MmMwNTIzYjQ2ZjM1NTU1YjAyNDA1ZGI2NGY4NWJhNjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMzU4LDYgKzEzNTgsMTMgQEAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
U2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RvdWJsZUdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tEb3Vi
bGVSZWYgc2Vjb25kcyA9IHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPihtZXNzYWdlQm9keSk7Cisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzQ2FjaGVNYXhB
Z2VDYXAoV0tEb3VibGVHZXRWYWx1ZShzZWNvbmRzKSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBpZiAo
bV9zaG91bGREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgICAgIG1fc2F2ZWRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmR1bXBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGI4MWJjMTM4OWIxMWNjY2NjOWY0NjE5
NjkyNjZmYTE1MTQxNTNjOC4uYTQyMzNlYzc5ZjhkZWRiNjFlNzViN2VjMmVkMWIwYzdkZjE5ZWZk
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTE4ICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQWRk
IG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3MTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNo
ZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1h
Z2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVk
aXJlY3QucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0IG1hcmtlZCBhcyBb
IFBhc3MgXS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICAgICBOZXcgdGVzdCBtYXJrZWQgYXMgWyBQYXNzIF0uCisgICAgICAgICogcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdCBtYXJrZWQgYXMg
WyBTa2lwIF0gYmVjYXVzZSBpdCdzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLUNvY29hIHBsYXRmb3Jt
cy4KKwogMjAxOC0wOS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRW5hYmxlIFVuaWZpZWQgUGxhbiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2Ut
Zm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVu
dC1yZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjNjA2OWY2NDM2NzVkMjAxZGQ2
MTE4Njg3M2NhZDUxMDA2ZTdjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IGNh
Y2hlIG1heC1hZ2UgaXMgY2FwcGVkIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92
YWx1ZT0xMjM0IgorUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1ZT0iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNo
ZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFs
ZW50LXJlc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFkZGViNTAxZGRkN2RlM2U2NmMwOGE0MTdl
ZWVlMWJmYjM1NDQ5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJl
c291cmNlLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAg
ICA8dGl0bGU+VGVzdHMgZm9yIENhcHBlZCBDYWNoZSBNYXgtQWdlPC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBjYWNoZSBtYXgt
YWdlIGlzIGNhcHBlZCBmb3IgcHJldmFsZW50IHJlc291cmNlcy4iKTsKKyAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgIHZhciBsb2FkZWRVcmw7CisgICAgZnVuY3Rpb24gZmlyc3RGZXRj
aCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgY3JlYXRlIGEgY2FwcGVkIGNhY2hlIGVudHJ5
LgorICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIiwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYWNoZTogInJlbG9hZCIsCisgICAgICAgICAgICAgICAg
aGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiMTIzNCIsCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVuY3Rpb24ocmVz
cG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1
ZT0xMjM0Iik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHNlY29uZEZldGNoLCAxNTAwKTsKKyAg
ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
ZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZWNvbmRGZXRj
aCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBzdWNjZXNzZnVsIGNh
Y2hlIGhpdC4KKyAgICAgICAgZmV0Y2goImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCIsCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FjaGU6ICJmb3JjZS1jYWNoZSIsCisgICAg
ICAgICAgICB9CisgICAgICAgICkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAg
ICAgbG9hZGVkVXJsID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJsb2FkZWRVcmwiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwP3ZhbHVlPSIpOworICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSkuY2F0Y2go
ZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoZXJyb3IubWVzc2FnZSk7
CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgi
aHR0cDovL2xvY2FsaG9zdCIpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdh
cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRl
ZC4iKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCgx
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoImh0
dHA6Ly9sb2NhbGhvc3QiLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKGZpcnN0RmV0Y2gpOworICAgICAgICB9
KTsKKyAgICB9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9jYWNo
ZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWI0MjZmMTk4MmM4NTkxYjc4NjU0NmI4YTFjZjFkNmY3ZmNkYTliZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9yZXNvdXJjZXMvY2FjaGVkLXBlcm1hbmVudC1yZWRpcmVjdC5waHAKQEAgLTAsMCArMSwx
MyBAQAorPD9waHAKK2hlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAiKTsKK2hlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyczog
WC1XZWJLaXQiKTsKK2lmICgkX1NFUlZFUlsiUkVRVUVTVF9NRVRIT0QiXSA9PSAiT1BUSU9OUyIg
JiYgaXNzZXQoJF9TRVJWRVJbIkhUVFBfQUNDRVNTX0NPTlRST0xfUkVRVUVTVF9NRVRIT0QiXSkg
JiYgJF9TRVJWRVJbIkhUVFBfQUNDRVNTX0NPTlRST0xfUkVRVUVTVF9NRVRIT0QiXSA9PSAiR0VU
IikgeworICBleGl0OworfQorJGhlYWRlclN0cmluZ1ZhbHVlID0gJF9TRVJWRVJbIkhUVFBfWF9X
RUJLSVQiXTsKK2hlYWRlcigiSFRUUC8xLjEgMzAxIE1vdmVkIFBlcm1hbmVudGx5Iik7CitoZWFk
ZXIoIkNhY2hlLUNvbnRyb2w6IHByaXZhdGUsIG1heC1hZ2U9MzE1MzYwMDAiLCB0cnVlKTsKKy8v
IGhlYWRlcigiTGFzdC1Nb2RpZmllZDogV2VkLCAyMSBBdWcgMjAxOCAwNzoyODowMCBHTVQiLCB0
cnVlKTsKK2hlYWRlcignRVRhZzogIldlYktpdFRlc3QiJywgdHJ1ZSk7CitoZWFkZXIoIkxvY2F0
aW9uOiBodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9IiAuICRoZWFkZXJTdHJpbmdWYWx1ZSk7Cis/PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHAgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8t
cXVlcnkucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMGE1NzM1MjU0YmNlNDA0ZGQyNDdhNWFhMDBmYjk5MWJj
NDZlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwCkBAIC0wLDAgKzEsOSBAQAor
PD9waHAKK2hlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAiKTsKK2hlYWRlcigiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyczogWC1XZWJL
aXQiKTsKK2lmKGlzc2V0KCRfR0VUWyJ2YWx1ZSJdKSkgeworICBlY2hvICRfR0VUWyJ2YWx1ZSJd
OworfSBlbHNlIHsKKyAgZWNobyAiTm8gcXVlcnkgcGFyYW1ldGVyIG5hbWVkICd2YWx1ZS4nIjsK
K30KKz8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1OGQ2OGIxZmRkZDQzOWY0MzY1YzgwMGVkZWVjODVj
NDYzZGUzMThhLi4xZWI2NmYxYTI2OGE1N2RmMDhlN2IzOTNiMTA5MmVkMjc3NDY1YmVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjgzMCw2ICsyODMw
LDcgQEAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRv
LW9yaWdpbi1mb3ItcHJldmFsZW50LXN1YnJlc28KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXByZXZhbGVudC1zdWJyZXNvdXJj
ZS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS1z
dG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXIuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2dyYW50LXN0b3JhZ2UtYWNjZXNzLXVuZGVyLW9wZW5lci5odG1sIFsgUGFzcyBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9y
LXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFzcyBdCiAKICMgU2tpcHBlZCBpbiBnZW5lcmFs
IGV4cGVjdGF0aW9ucyBzaW5jZSB0aGV5IG9ubHkgd29yayBvbiBpT1MgYW5kIE1hYywgV0syLgog
aHR0cC90ZXN0cy9zZWN1cml0eS9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBh
cnR5LXJlZGlyZWN0cy1pbi1wcml2YXRlLW1vZGUuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE3NGQ0NzVkNjg0OTg4
ZmM3NDhhOGE4OGUyMmQ5Y2Q4ZDBmMTBjMDMuLjZiYTY0Yzg5OGViZTYyNGE2OWFkYjczZTEyY2Mz
ZTk5MTI2NGY1MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTc2Myw2ICs3NjMsNyBAQCB3ZWJraXQub3JnL2IvMTg1OTk0IFsgRGVidWcg
XSBmYXN0L3RleHQvdXNlci1pbnN0YWxsZWQtZm9udHMvc2hhZG93LXBvc3RzY3JpcHQtZgogWyBI
aWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhl
cmluZy5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItcHJldmFsZW50LXN1YnJl
c291cmNlLXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCiBbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItcHJl
dmFsZW50LXN1YnJlc291cmNlLXJlcXVlc3RzLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9y
LXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgUGFzcyBdCiAKICMgU2tpcHBlZCBpbiBnZW5lcmFs
IGV4cGVjdGF0aW9ucyBzaW5jZSB0aGV5IG9ubHkgd29yayBvbiBpT1MgYW5kIE1hYywgV0syLgog
aHR0cC90ZXN0cy9zZWN1cml0eS9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBh
cnR5LXJlZGlyZWN0cy1pbi1wcml2YXRlLW1vZGUuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4OTI3MGExNTdlZmM3NzBhODc3ODMz
ZTQ4Y2Y2MzJkOGYyYzYxZjNmLi40MGJmNTM3MTRjZDVlMjIxYTZmOWFmYTVlNDQ0N2E0YzA3NDE0
NzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMw
LDYgKzczMCw3IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZl
cnJlci10by1vcmlnaW4tZm9yLXByZXZhbGVudC1zdWJyZXNvCiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0Lmh0bWwgWyBTa2lwIF0KIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJl
Y3QuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL25vbi1w
cmV2YWxlbnQtcmVzb3VyY2VzLWNhbi1hY2Nlc3MtY29va2llcy1pbi1hLXRoaXJkLXBhcnR5LWNv
bnRleHQuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nh
cC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFNraXAgXQogCiAj
IFByb2Nlc3Mgc3dhcHBpbmcgaXMgb25seSBpbXBsZW1lbnRlZCBvbiBXZWJLaXQyLgogaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350137</attachid>
            <date>2018-09-19 11:41:21 -0700</date>
            <delta_ts>2018-09-19 12:20:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189711-20180919114121.patch</filename>
            <type>text/plain</type>
            <size>53733</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ3NjlmZjkzNWYwNDVk
ZTk3MTA4NWVmYzNkMWMxODY3NWNiZjEzMi4uOGNjZTJmOWU1NWIyY2Y0OWQwNTIxODg5NzZhMzRi
MDFlODU0OTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTE4ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXggYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3MTEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvIGFuZCBDaHJpcyBEdW1lei4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9yLXByZXZhbGVu
dC1yZXNvdXJjZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjptYXhBZ2VDYWNoZUNhcCk6CisgICAgICAgICAgICBDaGVja3MgaWYgYSBtYXggYWdlIGNh
cCBpcyBzZXQgYW5kIHJldHVybnMgaXQgaWYgdGhlIHJlcXVlc3QKKyAgICAgICAgICAgIHJlcHJl
c2VudHMgYSBwcmV2YWxlbnQgcmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb25hbGl0eSB0
byByZWNlaXZlIGEgbWF4IGFnZSBjYXAgc2V0dGluZyBpbiB0aGUgc2Vzc2lvbi4KKwogMjAxOC0w
OS0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdGhlIHVudXNlZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuY2xvc2luZ0NvbXBvc2l0
b3JGbHVzaGluZ0xheWVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlZjY4NWI0YjgzNWFjZmEwNTFiMTYyYWRh
MmQ4YTNlYzNkMmFhN2YuLjQ5MjBlNmUxMjJmNDZmY2MxZDFhZTRlN2E2ODlkODIzZTIwYzZlY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTgtMDktMTggIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBB
ZGQgb3B0aW9uYWwgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTcxMQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzkyNDY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8gYW5kIENocmlzIER1bWV6LgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgYWRkIHRoZSBjYXBh
YmlsaXR5IHRvIHNldCBhIG1heCBhZ2UgY2FwIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzCisgICAg
ICAgIGFuZCBjb25zdWx0cyBpdCB3aGVuIHJldHJpZXZpbmcgY2FjaGUgZW50cmllcy4gSWYgYW4g
ZW50cnkgaXMgY2FwcGVkIGFuZCBmb3VuZAorICAgICAgICB0byBiZSB0b28gb2xkLCBpdCB3aWxs
IG5vdCBiZSB1c2VkIGJ1dCBpbnN0ZWFkIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuCisKKyAgICAg
ICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG9mZiBieSBkZWZhdWx0IGJlY2F1c2Ugbm8gY2FwIGlz
IHNldCBieSBkZWZhdWx0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgICAg
ICBJbmZyYXN0cnVjdHVyZSBmb3IgdGVzdGluZy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmll
dmVDYWNoZUVudHJ5KToKKyAgICAgICAgICAgIE5vdyBzZW5kcyBpbiB0aGUgc2Vzc2lvbiBJRCBp
biB0aGUgcmV0cmlldmUgY2FsbC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Omhhc1JlYWNoZWRQ
cmV2YWxlbnRSZXNvdXJjZUFnZUNhcCk6CisgICAgICAgICAgICBTdGF0aWMgY29udmVuaWVuY2Ug
ZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVVzZURlY2lzaW9u
KToKKyAgICAgICAgICAgIE5vdyByZWNlaXZlcyBhbiBvcHRpb25hbCBtYXhBZ2UgcGFyYW1ldGVy
IGFuZCBjaGVja3MKKyAgICAgICAgICAgIGhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNh
cCgpIGZpcnN0LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2
ZSk6CisgICAgICAgICAgICBOb3cgdGFrZXMgYSBzZXNzaW9uIElELgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OmNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KToKKyAgICAg
ICAgICAgIEFkZGVkIFVzZURlY2lzaW9uOjpOb0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXAg
d2hpY2ggY2F1c2VzIGEKKyAgICAgICAgICAgIHJldHVybiBvZiBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6Om90aGVyS2V5KCkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzQ2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAgICAgSW5mcmFzdHJ1Y3R1cmUg
Zm9yIHRlc3RpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKToKKyAgICAgICAg
ICAgIE5vdyBzdXBwb3J0cyBhIHVzZXIgZGVmYXVsdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2Fj
aGVNYXhBZ2VDYXAuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkU2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Om5leHRSZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICAgICBEZWxldGVkIHRo
aXMgdG8gbWFrZSBhbGwgY29kZSB1c2UgdGhlIGdlbmVyaWMgZ2VuZXJhdGVDYWxsYmFja0lEKCku
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICAgICBVc2VkIHRvIHRyYW5zZmVyIHRoZSBzZXR0aW5nIGZyb20gdGhlIFVJIHBy
b2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXApOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRDYWNoZU1heEFn
ZUNhcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE4LTA5LTE4ICBS
eWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzYxMzguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA5ODZmN2U0MzkyNzk5MTFh
OTY1NDc2MWM3NTZjNGMyMmJlZjBlZjI2Li44MWRhY2ZmOTdkOTAxZmVlYzU1YmRjODJmOGExODA2
NzNhNDgzYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTExMCw2ICsxMTAsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNl
Y29uZHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKICNl
bGlmIFVTRShTT1VQKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwg
c3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4mJik7CkBAIC0xODcsNiArMTkwLDcg
QEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV90b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluc1RvQmxvY2s7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50NjRfdCwg
U3RyaW5nLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9mcmFtZXNHcmFu
dGVkU3RvcmFnZUFjY2VzczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyB7IH07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBjOWQyOTY0NDIxZWJkZDhiNDY3NDA0NmRjYzRjNTAz
YzdhZmI0OTk1Li4zM2QyM2JjOWI4OTg3ZGYxZWYwYTVhOWJkN2QyODc5MDhjN2I1MWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtMjY2LDYgKzI2NiwxMyBAQCBib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsCiAgICAgcmV0dXJuIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXMocmVzb3VyY2VEb21haW4pOwogfQogCitzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYm
IHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkp
CisgICAgICAgIHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnMsIGJvb2wgY2xlYXJGaXJzdCkKIHsKICAgICBpZiAoY2xlYXJGaXJzdCkgewpA
QCAtMzcwLDYgKzM3NywxNSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcygpCiAgICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigp
OwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fY2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBzZWNvbmRzOworfQorICAgIAordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
KQoreworICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBzdGQ6Om51
bGxvcHQ7Cit9CiAjZW5kaWYgLy8gSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGRlYWVkMzIzMzA4ZTI4MDUzZDcwOWZjMjQ0ODNm
ZTI3NTQ5NWQwNGYuLmI0NTBhODg2ZjJhMTYwZDg4MDJiMzk1ZDkwYTM1Y2UwZjk0YTFmNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC00NzMsNiArNDczLDI0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERv
bWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0CiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVQ
cmV2YWxlbnREb21haW5zKGRvbWFpbnMpOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFNlY29uZHMgc2Vjb25kcywgdWludDY0X3QgY29udGV4dElkKQoreworICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSk7Cisg
ICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRTZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhjb250ZXh0SWQpLCAwKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3sKKyAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoY29udGV4dElkKSwgMCk7Cit9CiAjZW5kaWYK
IAogYm9vbCBOZXR3b3JrUHJvY2Vzczo6c2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggN2RiMzk3MTI3NzcyNmEyZWEzNzdjZjQwZWY2
ODNhNTliYzhjODllMy4uOTJkNmQwMzQ0YjYyMGY5ZGZlZWQ2MjBiODQ1YTVjMDQ3MzNjMzIyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
MTQ2LDYgKzE0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgcmVt
b3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnMpOworICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBjb250ZXh0SWQpOwogI2VuZGlmCiAKICAgICBTZWNvbmRzIGxvYWRUaHJvdHRs
ZUxhdGVuY3koKSBjb25zdCB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGI5Njk3NjYwMmFiOGQ5NGU2NzA3OTZkZTNlNWI4YjA3OGE0NmIzMjIuLjRk
MGM4YjFlNjBiNjNiZDdkNDIzM2E4ZjhmYTk2MTFjYjYzODQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtODcsNyArODcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgR3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0
eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgUmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBSZW1vdmVQcmV2YWxl
bnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1dpdGhJbnRlcmFjdGlvbik7CisgICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24pCisg
ICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBSZXNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY29udGV4dElkKQogI2VuZGlmCiAKICAgICBTZXRTZXNzaW9uSXNDb250
cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBjb250cm9s
bGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCA1YzExYmFiMjAxZTkyYWM2OTY4YmU2ODExMzc4NTJlYjUw
Mjg0M2Y0Li5mMTA5NWY0MjgyODA2ZDAzZmViMjliM2M0NDVmOTFmMWFlZWNlZGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJl
dHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNT
RVJUKGNhblVzZUNhY2hlKHJlcXVlc3QpKTsKIAogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VM
b2FkZXI+IGxvYWRlcih0aGlzKTsKLSAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7IG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEIH0sIFt0aGlzLCBs
b2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1
ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+cmV0
cmlldmUocmVxdWVzdCwgeyBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCB9LCBzZXNzaW9uSUQoKSwgW3RoaXMsIGxvYWRlciA9IFdURk1vdmUobG9hZGVyKSwg
cmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBp
bmZvKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGxvYWRlci0+aGFzT25lUmVmKCkpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBsb2FkZXIgaGFzIGJlZW4gYWJvcnRlZCBhbmQgaXMgb25seSBoZWxkIGFs
aXZlIGJ5IHRoaXMgbGFtYmRhLgogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGRhMDdl
ODI4N2FjOWNlYWNhNDAwZWZjZDJiMDZmMGIyM2U4MWZiZGMuLjBkODBiZjdjOGMyNTcwZmI4MGRh
NTY0OGI5MWVjZGRmOGI1NjU1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTE1Miw2ICsxNTIsMTEgQEAgc3RhdGlj
IGJvb2wgY2FjaGVQb2xpY3lBbGxvd3NFeHBpcmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IHBvbGljeSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBib29sIGhh
c1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0YW1wLCBjb25zdCBTZWNvbmRzIG1heEFn
ZSkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHRp
bWVzdGFtcCkgPiBtYXhBZ2U7Cit9CisKIHN0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0
YW1wLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25z
ZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKQEAgLTE4Myw4ICsxODgsMTEgQEAgc3Rh
dGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3Bv
bnNlLCB0aW1lc3RhbXAsIHJlcXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0KIAotc3RhdGlj
IFVzZURlY2lzaW9uIG1ha2VVc2VEZWNpc2lvbihjb25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3N0YXRpYyBVc2VEZWNpc2lvbiBtYWtl
VXNlRGVjaXNpb24oY29uc3QgRW50cnkmIGVudHJ5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlKQogeworICAgIGlm
IChtYXhBZ2UgJiYgaGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKGVudHJ5LnJlc3Bv
bnNlKCksIGVudHJ5LnRpbWVTdGFtcCgpLCBtYXhBZ2UudmFsdWUoKSkpCisgICAgICAgIHJldHVy
biBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwOworICAgIAogICAg
IC8vIFRoZSByZXF1ZXN0IGlzIGNvbmRpdGlvbmFsIHNvIHdlIGZvcmNlIHJldmFsaWRhdGlvbiBm
cm9tIHRoZSBuZXR3b3JrLiBXZSBtZXJlbHkgY2hlY2sgdGhlIGRpc2sgY2FjaGUKICAgICAvLyBz
byB3ZSBjYW4gdXBkYXRlIHRoZSBjYWNoZSBlbnRyeS4KICAgICBpZiAocmVxdWVzdC5pc0NvbmRp
dGlvbmFsKCkgJiYgIWVudHJ5LnJlZGlyZWN0UmVxdWVzdCgpKQpAQCAtMjcxLDcgKzI3OSw3IEBA
IHN0YXRpYyBTdG9yZURlY2lzaW9uIG1ha2VTdG9yZURlY2lzaW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSCiAgICAgcmV0dXJuIFN0b3JlRGVjaXNpb246OlllczsK
IH0KIAotdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXF1ZXN0LnVybCgpLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKQEAgLTMxNSw3ICszMjMsNyBAQCB2b2lkIENhY2hl
OjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IEdsb2JhbEZyYW1lSQogICAgIH0KICNlbmRpZgogCi0gICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShz
dG9yYWdlS2V5LCBwcmlvcml0eSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgaW5mbyA9IFdURk1vdmUoaW5mbyksIHN0b3JhZ2VLZXksIGZyYW1lSURdKGF1dG8gcmVjb3Jk
LCBhdXRvIHRpbWluZ3MpIG11dGFibGUgeworICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFn
ZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGlu
Zm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlELCBzZXNzaW9uSURdKGF1dG8g
cmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11dGFibGUgewogICAgICAgICBpbmZvLnN0b3JhZ2VUaW1p
bmdzID0gdGltaW5nczsKIAogICAgICAgICBpZiAoIXJlY29yZCkgewpAQCAtMzMyLDEzICszNDAs
MjIgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkKIAogICAgICAgICBhdXRvIGVudHJ5ID0gRW50
cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7CiAKLSAgICAgICAgYXV0byB1c2VEZWNp
c2lvbiA9IGVudHJ5ID8gbWFrZVVzZURlY2lzaW9uKCplbnRyeSwgcmVxdWVzdCkgOiBVc2VEZWNp
c2lvbjo6Tm9EdWVUb0RlY29kZUZhaWx1cmU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gbWF4QWdlQ2FwOworI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQor
ICAgICAgICBpZiAoYXV0byBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICBt
YXhBZ2VDYXAgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3Qp
OworI2VuZGlmCisgICAgICAgIGF1dG8gdXNlRGVjaXNpb24gPSBlbnRyeSA/IG1ha2VVc2VEZWNp
c2lvbigqZW50cnksIHJlcXVlc3QsIG1heEFnZUNhcCkgOiBVc2VEZWNpc2lvbjo6Tm9EdWVUb0Rl
Y29kZUZhaWx1cmU7CiAgICAgICAgIHN3aXRjaCAodXNlRGVjaXNpb24pIHsKICAgICAgICAgY2Fz
ZSBVc2VEZWNpc2lvbjo6VXNlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVXNl
RGVjaXNpb246OlZhbGlkYXRlOgogICAgICAgICAgICAgZW50cnktPnNldE5lZWRzVmFsaWRhdGlv
bih0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVzZURlY2lzaW9uOjpO
b0R1ZVRvUHJldmFsZW50UmVzb3VyY2VBZ2VDYXA6CisgICAgICAgICAgICBlbnRyeSA9IG51bGxw
dHI7CisgICAgICAgICAgICBtX3N0b3JhZ2UtPnJlbW92ZShzdG9yYWdlS2V5KTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZW50cnkgPSBudWxscHRy
OwogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKaW5kZXggY2Y1YjdiYmYyYTRiM2NhNDVhMTVhNWIzNjg4NTg2ODQ5OTI5
NDNjMi4uZjE1YWQ2YmQwYWRjOGM3MzU4YzFhOTQ5OTgwZDg0MDllNjI4MzNhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC04
Miw2ICs4Miw3IEBAIGVudW0gY2xhc3MgVXNlRGVjaXNpb24gewogICAgIE5vRHVlVG9NaXNzaW5n
VmFsaWRhdG9yRmllbGRzLAogICAgIE5vRHVlVG9EZWNvZGVGYWlsdXJlLAogICAgIE5vRHVlVG9F
eHBpcmVkUmVkaXJlY3QsCisgICAgTm9EdWVUb1ByZXZhbGVudFJlc291cmNlQWdlQ2FwCiB9Owog
CiB1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPHVpbnQ2NF90IC8qd2ViUGFnZUlEKi8s
IHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKQEAgLTExMiw3ICsxMTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIH07CiAgICAgdXNpbmcgUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKLSAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIFBBTDo6U2Vzc2lvbklELCBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQg
KE1hcHBlZEJvZHkmKT4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGly
ZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IEVudHJ5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IDhlZTc0NTM1N2JjOTg4Y2IxZWIxOWUwOTkyZjEyNjQ1
OGViYTcwMjcuLmExNTVlOWYyZTNhZTEzODE0NDNhNGEwY2UwYjI0MDc1N2U0YTY5ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtMjgyLDYgKzI4Miw3IEBAIHN0YXRpYyBTdHJpbmcg
Y2FjaGVkRW50cnlSZXVzZUZhaWx1cmVUb0RpYWdub3N0aWNLZXkoVXNlRGVjaXNpb24gZGVjaXNp
b24pCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1pc3Np
bmdWYWxpZGF0b3JGaWVsZHNLZXkoKTsKICAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVj
b2RlRmFpbHVyZToKICAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvRXhwaXJlZFJlZGlyZWN0
OgorICAgIGNhc2UgVXNlRGVjaXNpb246Ok5vRHVlVG9QcmV2YWxlbnRSZXNvdXJjZUFnZUNhcDoK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6b3RoZXJLZXko
KTsKICAgICBjYXNlIFVzZURlY2lzaW9uOjpVc2U6CiAgICAgY2FzZSBVc2VEZWNpc2lvbjo6VmFs
aWRhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA3ZjIzZTkwZmY3YzZlMmNlNGQ1NDc5MmM2NGEwYjk2
MjNmMmVmZTgzLi4yNDY0YjBiZGE0NTZkYTViOWZkZTI5YmUwMWI5YWVlZTVkYjZlMDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKQEAgLTQ2Miw2ICs0NjIsMTMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG8K
ICAgICB9KTsKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVN
YXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29u
ZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcEZ1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlcyhTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICAg
ICAgY2FsbGJhY2soY29udGV4dCk7CisgICAgfSk7Cit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFtj
b250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CkBAIC00NzAsNiArNDc3LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGEKIAogICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogICAgIHN0b3JlLmNsZWFyUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAKICAgICBhdXRvKiBzdGF0aXN0aWNzU3RvcmUgPSBz
dG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFzdGF0aXN0aWNzU3RvcmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCmluZGV4IDAyZTdiY2U2MTJlZDE1Mzc0NGRhZjk2OTgxZjk4MzVlZDg5MmQzYzAu
LmQ3ZDg5OWU0M2Y3NWFjMGQ0N2IyY2M4ZWQwMDc1ZGI4OWFkYTU3NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBA
IC05MSw2ICs5MSw4IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpCiBXS19FWFBPUlQgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1
bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNGdW5jdGlv
biBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJU
aHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91
Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZUNvY29hLm1tCmluZGV4IGJmZWVkZjk0Y2FhZjNk
YTZmZGJkMmFhNjMxZmI4ZmM1ZTQ1NjcxOWYuLjhkOWQxYmIyNjI4OTYyYmY1YzVhMGZlOWZiMmJm
YzU1OTc2ODIwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZUNvY29h
Lm1tCkBAIC01Miw2ICs1MiwxMCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAgICAgIGlmIChkZWJ1Z01h
bnVhbFByZXZhbGVudFJlc291cmNlKQogICAgICAgICAgICAgc2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUoZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSk7CiAgICAgICAgIHNldFN0
b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZChbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBib29sRm9yS2V5OkAiRXhwZXJpbWVudGFsU3RvcmFnZUFjY2Vzc1Byb21wdHNFbmFi
bGVkIl0pOworCisgICAgICAgIFNlY29uZHMgY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5
OkAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwIl0pOworICAgICAgICBpZiAo
Y2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPiAwX3MgJiYgY2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPD0gMjRfaCAqIDM2NSkKKyAgICAgICAgICAgIHNldENh
Y2hlTWF4QWdlQ2FwKGNhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNTZiZmNhYzM4ZDFkODQyYzc4ZDI5NjhhNzBmOWYz
MjFmMmViMDU4Mi4uZjg5YzQxYzA3YjAxNDNhN2Y0YmQwMDA2ZDQyMGY3MmMxYzlkOGNlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC00MDQsMTUgKzQwNCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkVXBkYXRlQmxvY2tDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSWQpCiAgICAgbV91cGRh
dGVCbG9ja0Nvb2tpZXNDYWxsYmFja01hcC50YWtlKGNhbGxiYWNrSWQpKCk7CiB9CiAKLXN0YXRp
YyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKQotewotICAgIHN0
YXRpYyB1aW50NjRfdCBuZXh0Q29udGV4dElkID0gMDsKLSAgICByZXR1cm4gKytuZXh0Q29udGV4
dElkOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250
ZXh0SWQoKTsKKyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5hZGQo
Y29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6SGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSwgMCk7CkBAIC00
MjAsNyArNDE0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8g
Y29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CisgICAgYXV0
byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92
ZShjYWxsYmFjaykpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdyYW50U3RvcmFn
ZUFjY2VzcyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFt
ZUlELCBwYWdlSUQsIGNvbnRleHRJZCksIDApOwpAQCAtNDM5LDcgKzQzMyw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvbnRl
eHRJZCA9IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1dG8gY29u
dGV4dElkID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcC5hZGQoY29udGV4dElkLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3Zl
QWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQsIGNvbnRleHRJZCksIDApOwpAQCAtNDUzLDcgKzQ0
Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVtb3ZlQWxsU3RvcmFnZUFjY2Vz
cyh1aW50NjRfdCBjb250ZXh0SWQpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsK
KyAgICBhdXRvIGNvbnRleHRJZCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrTWFwLmFkZChjb250ZXh0
SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpH
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhzZXNzaW9uSUQsIGNvbnRleHRJZCksIDApOwpAQCAt
NDY0LDYgKzQ1OCw0NCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucwogICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX2FsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQp
OwogICAgIGNhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOwogfQorCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tNYXAuYWRkKGNvbnRl
eHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlc3Npb25J
RCwgc2Vjb25kcywgY29udGV4dElkKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29u
dGV4dElkKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3VwZGF0ZVJ1bnRpbWVT
ZXR0aW5nc0NhbGxiYWNrTWFwLnRha2UoY29udGV4dElkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5k
TWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgYXV0byBjb250ZXh0SWQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQo
KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXBkYXRlUnVudGltZVNldHRpbmdzQ2FsbGJhY2tN
YXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoc2Vzc2lvbklELCBjb250ZXh0SWQpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWRSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHVpbnQ2
NF90IGNvbnRleHRJZCkKK3sKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbV91cGRhdGVS
dW50aW1lU2V0dGluZ3NDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKK30KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQ
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggODM1NDAyNmQ1MjA2
MDBmZjFkMzZkZWU0YTNmYzFmMjI4OTFlNGQxYS4uNmY5NjQ4ZGI4YTBlNzA3YzA3MzRkMzMwMjM0
MDU3YWQxZmE4ZTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spOwpAQCAtMTQ3LDYgKzE0OSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAgICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0
b3I8U3RyaW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBkaWRS
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgdm9pZCBkaWRT
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1aW50NjRfdCBjb250ZXh0SWQp
OworICAgIHZvaWQgZGlkUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyh1
aW50NjRfdCBjb250ZXh0SWQpOwogI2VuZGlmCiAgICAgdm9pZCByZXRyaWV2ZUNhY2hlU3RvcmFn
ZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0xODYsNiArMTkwLDggQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3Jl
bW92ZUFsbFN0b3JhZ2VBY2Nlc3NDYWxsYmFja01hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+PiBtX2FsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tNYXA7CiAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3VwZGF0ZVJ1bnRpbWVTZXR0aW5nc0NhbGxiYWNr
TWFwOworCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNoU2V0PFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
aWVzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTEyZGZmMjBk
YTM3MzJmMWI5YmVhNzExZDczYTM0NzQwNWFiZmZiZC4uYWU3ZjU2ZTRkMzY4ZmE4ZjU5ZGE4Njg2
ZjJmYmMzMjFhNDljZmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDYs
NiArNDYsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8
U3RyaW5nPiBkb21haW5zLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgRGlkUmVtb3ZlQWxsU3Rv
cmFnZUFjY2Vzcyh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgRGlkU2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElkKQorICAgIERpZFJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXModWludDY0X3QgY29udGV4dElkKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9u
UnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAxNGM4MzdhZDU5ZDVkN2UzOTM3MjY1OTcz
MjBiNTZhZTQ1MTk4NWZlLi40Nzc0ZWIxOTkxYjBlZmVhNmQ4ZWY5MTY5NzgyMTJmNWQzMjAwMjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTgzMiw2ICs4MzIsMTYgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldEdyYW5kZmF0aGVyaW5nVGltZShT
ZWNvbmRzIHNlY29uZHMpCiAgICAgbV9wYXJhbWV0ZXJzLmdyYW5kZmF0aGVyaW5nVGltZSA9IHNl
Y29uZHM7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzZXRD
YWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgQVNTRVJUKHNlY29uZHMgPj0gMF9zKTsKKworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKG1fc3RvcmUpLCBzZWNvbmRzXSAoKSB7Cisg
ICAgICAgIHN0b3JlLT5zZXRDYWNoZU1heEFnZUNhcChzZWNvbmRzLCBbXSB7IH0pOworICAgIH0p
OworfQorCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2hvdWxkUmVt
b3ZlRGF0YVJlY29yZHMoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA2MzRiODJkMWZlODQ4ZTQxNzViNDAxMWQ5NmMw
NTMxMzgzZGRhNWE0Li5iNzA4MjA3NGVmMGQwOTljNTdmNDE3NzAwYTE1NzdhZGY5Y2U0Yzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CisgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cChTZWNvbmRzKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
Ym9vbCk7CiAgICAgYm9vbCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnTW9kZUVuYWJsZWQ7IH07CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVn
TW9kZShjb25zdCBTdHJpbmcmIGRvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBjN2Ri
NjliMTVkMWQ0OGQ3YTRkYTM3OGY5ODZjNDQ1YzAyZTMyYjM3Li4xMWJlMDQ1NzJmMmU1YjE1ZTMy
MzA0OWJkNWRlYjIwMzA2ODIyZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTgzMyw2ICs4
MzMsMjAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0
aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVChzZWNvbmRzID49IDBfcyk7Cisg
ICAgCisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisgICAgaWYgKG1f
d2Vic2l0ZURhdGFTdG9yZSkgeworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
YWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xl
YXJGaXJzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGYw
ZjUwYThjYjViY2IxYjg3YjUxMmIyNGIyOWQ5YzE3YTE5ZTQ0NjcuLjhiZDE2ODVjNTdmMTExMzY2
ZTYzYjNlNjA2MjdmN2ExNmY4MjAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xMjUsNiArMTI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNv
bmRzKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChT
ZWNvbmRzKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKKyAgICB2
b2lkIHNldENhY2hlTWF4QWdlQ2FwKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhzaXplX3QpOwogICAgIHZvaWQg
c2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggZGYy
MTc3NmRhYWY1ODgwNzJlNzVmNTExYzY3MWI5NGY5ZGY3MGM4Yy4uMzA4NzE4YWE0YWEzNWEwYjJm
NzIxMmVkMDFiNzM3MWZkMmJmNzQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEzNDIsNiArMTM0
MiwzNSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYQogfQogI2VuZGlmCiAKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNl
dENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKG1fc2Vzc2lvbklELCBzZWNvbmRz
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWNvbmRzKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworI2VuZGlmCit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgCisgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMobV9zZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgIH0KKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Om5ldHdvcmtQcm9jZXNzRGlk
Q3Jhc2goKQogewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCmluZGV4IGE4MGVmMTZjZWJjOTdjNDc5ZjM3MDZiZDA3MDU2YTQ3NzI3OGNkYTIuLjU1
NjljOWM1ZGU0ODBhZDA5MDYzMGIxYjI3OWNmMzhiMDU5NTg0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAg
LTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgorICAgIHZvaWQgc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIG5ldHdvcmtQcm9j
ZXNzRGlkQ3Jhc2goKTsKICAgICB2b2lkIHJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7
CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMjc2N2RiZjgyN2I2ZWI2NDg4YjMyMzljMjQwMzM3MmIyYjhmNmI0YS4uN2ZjMzgzNDNm
NGU4OGJkYTkxNmUzOWQwYjk1NjVmNDg5OGM0MTNlNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA5LTE4ICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljczogQWRkIG9wdGlvbmFsIGNhcCBvbiBwYXJ0aXRpb25lZCBjYWNoZSBtYXgg
YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk3
MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5MjQ2ODM3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFudHRpIEtvaXZpc3RvIGFuZCBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBhZGRzIGluZnJhc3RydWN0dXJlIGZvciBsYXlvdXQgdGVzdHMgb2YgY2FwcGVkIGNhY2hlIG1h
eCBhZ2UuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
Q2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE4LTA5LTE4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogQ2xvYmJlcmluZyBhbmQgYnVpbGRp
bmcgb2NjdXJzIG11bHRpcGxlIHRpbWVzIGZvciBpT1MgU2ltdWxhdG9yIHBvcnRzCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAppbmRleCAyMjdiZjEwOTJkY2NjNWJmODkwZTVmY2YxZTQ2ODRiODRi
NTljZDhiLi4xM2RlNzIwNjVlNmVhYzA5YmQxMDc2NzlkYTAyNmQ5NThlODMzNTU3IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMwNyw2ICszMDcsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZShvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgbG9uZyBob3Vycywgb2Jq
ZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0
YVJlbW92YWwob2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgLy8gSW5qZWN0ZWQg
YnVuZGxlIGZvcm0gY2xpZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZjcwZWUxMzExNTE0MTk0ZTY1NTc4ZGE5
NjhkNWQ3YzI1OGNmZDFhYS4uMmM2MTY4YjJkYjA1Yzg4MDIxNjFiMzBkNWI3ZWVkMTZlNTlmZWNj
NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCkBAIC0xOTQ1LDYgKzE5NDUsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0
aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKEpTVmFsdWVSZWYgY2FsbGJhY2sp
CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQogCit2
b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25k
cykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tEb3VibGVDcmVhdGUoc2Vjb25kcykpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc0NhbGxDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFjaygpCiB7
CiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkQ2xlYXJUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDk1ZDU5NmFhOGU4MjEyODNlNjBl
ZDBjZmQ2ZTE3OTYwNDllZWIzNTguLjExMGVlODVjMTc2ZGYwYTQ5OTBjNGUyOWRlMDQ0ZGUxYTVj
NjJkNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCkBAIC00MjEsNiArNDIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlz
dGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5z
aWduZWQgaG91cnMsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0Ns
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2so
KTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggM2YzYmEyYTUxMjNmM2ZlYTBlNTU3NDFkZTFjNDAzOWFhZjFiNjFlMC4u
NDc2NGVjODE4NGU4YTY4Y2FhNmYzNzg4ZTlmYjVjNDBiYTFmZGQ3MyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMxMjIsNiArMzEyMiwxNCBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFs
KCkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRDbGVhclN0YXRpc3RpY3NUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUg
PSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBS
ZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRhdGFTdG9yZSwgc2Vj
b25kcywgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7Cisg
ICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworfQorCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgYXV0byog
ZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYTFmZTUxMGYx
OGVkYmJhOWU5OTY0ZTllNjcxNDI5YTEwMGQxOGZkNi4uNzY2MWY1ZTU5MDRlNDY2YWY1MDAyZjcx
MWY5OTI4M2JhZGVhNGY5NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aApAQCAtMjIxLDYgKzIyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCk7CiAgICAg
dm9pZCBzdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKCk7CisgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQg
c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKaW5kZXggNTUwZjlkMzM5OGM3ZmNkYjM4OGZkZDgyMjgxNTUzYjhlZjg0ODczYy4uZWNm
ZDZjYzYyYzA1MjNiNDZmMzU1NTViMDI0MDVkYjY0Zjg1YmE2OCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEzNTgsNiArMTM1OCwxMyBAQCBXS1JldGFp
blB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0
aXN0aWNzQ2FjaGVNYXhBZ2VDYXAiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVz
c2FnZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOworICAgICAgICBXS0RvdWJsZVJlZiBz
ZWNvbmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChX
S0RvdWJsZUdldFZhbHVlKHNlY29uZHMpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAgICAgIGlmIChtX3Nob3Vs
ZER1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICAgICAgbV9zYXZlZFJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YjgxYmMxMzg5YjExY2NjY2M5ZjQ2MTk2OTI2NmZh
MTUxNDE1M2M4Li43Y2Q1NDU0NjlhZjNkMzMzYmI3YjVkOTBhYzcyYjViMTVlYTFiYTRmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMDktMTggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBZGQgb3B0aW9u
YWwgY2FwIG9uIHBhcnRpdGlvbmVkIGNhY2hlIG1heCBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTcxMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzkyNDY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8gYW5kIENo
cmlzIER1bWV6LgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNh
Y2hlLW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJt
YW5lbnQtcmVkaXJlY3QucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2VjaG8tcXVlcnkucGhwOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0IG1h
cmtlZCBhcyBbIFBhc3MgXS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdCBtYXJrZWQgYXMgWyBQYXNzIF0uCisgICAgICAg
ICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdCBt
YXJrZWQgYXMgWyBTa2lwIF0gYmVjYXVzZSBpdCdzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLUNvY29h
IHBsYXRmb3Jtcy4KKwogMjAxOC0wOS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgRW5hYmxlIFVuaWZpZWQgUGxhbiBieSBkZWZhdWx0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hl
LW1heC1hZ2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2UtZm9y
LXByZXZhbGVudC1yZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjNjA2OWY2NDM2
NzVkMjAxZGQ2MTE4Njg3M2NhZDUxMDA2ZTdjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0
cyB0aGF0IGNhY2hlIG1heC1hZ2UgaXMgY2FwcGVkIGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1
ZXJ5LnBocD92YWx1ZT0xMjM0IgorUEFTUyBsb2FkZWRVcmwgaXMgImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocD92YWx1
ZT0iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiODJiYmZiNTQ3NTAwNTcy
MWRmODNkYWY3ZGQ4MzJhZmRjODk1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJl
dmFsZW50LXJlc291cmNlLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKyAgICA8dGl0bGU+VGVzdHMgZm9yIENhcHBlZCBDYWNoZSBNYXgtQWdlPC90aXRsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBj
YWNoZSBtYXgtYWdlIGlzIGNhcHBlZCBmb3IgcHJldmFsZW50IHJlc291cmNlcy4iKTsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBsb2FkZWRVcmw7CisgICAgZnVuY3Rpb24g
Zmlyc3RGZXRjaCgpIHsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgY3JlYXRlIGEgY2FwcGVkIGNh
Y2hlIGVudHJ5LgorICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIiwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYWNoZTogInJlbG9hZCIsCisgICAgICAg
ICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICAgICAiWC1XZWJLaXQiOiAiMTIz
NCIsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApLnRoZW4oZnVu
Y3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvYWRlZFVybCA9IHJlc3BvbnNlLnVybDsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibG9hZGVkVXJsIiwgImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5
LnBocD92YWx1ZT0xMjM0Iik7CisgICAgICAgICAgICBzZWNvbmRGZXRjaCgpOworICAgICAgICB9
KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5t
ZXNzYWdlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVz
dCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNlY29uZEZldGNoKCkgewor
ICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIHN1Y2Nlc3NmdWwgY2FjaGUgaGl0
LgorICAgICAgICBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJtYW5lbnQtcmVkaXJlY3QucGhwIiwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYWNoZTogImZvcmNlLWNhY2hlIiwKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBsb2Fk
ZWRVcmwgPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImxvYWRlZFVybCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHA/dmFsdWU9Iik7CisgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9KS5jYXRjaChmdW5jdGlv
bihlcnJvcikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChlcnJvci5tZXNzYWdlKTsKKyAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJodHRwOi8v
bG9jYWxob3N0IikpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNz
aWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydGVkLiIpOwor
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKDApOworICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0cDovL2xv
Y2FsaG9zdCIsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoZmlyc3RGZXRjaCk7CisgICAgICAgIH0pOworICAg
IH0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2NhY2hlZC1wZXJt
YW5lbnQtcmVkaXJlY3QucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NDdlZDNiOWY4NGIwOWY5OWI2MDY4YmRmZTU0MjUwMzFmMDNmYjdkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy9jYWNoZWQtcGVybWFuZW50LXJlZGlyZWN0LnBocApAQCAtMCwwICsxLDEyIEBACis8
P3BocAoraGVhZGVyKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIpOworaGVhZGVyKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzOiBYLVdlYktp
dCIpOworaWYgKCRfU0VSVkVSWyJSRVFVRVNUX01FVEhPRCJdID09ICJPUFRJT05TIiAmJiBpc3Nl
dCgkX1NFUlZFUlsiSFRUUF9BQ0NFU1NfQ09OVFJPTF9SRVFVRVNUX01FVEhPRCJdKSAmJiAkX1NF
UlZFUlsiSFRUUF9BQ0NFU1NfQ09OVFJPTF9SRVFVRVNUX01FVEhPRCJdID09ICJHRVQiKSB7Cisg
IGV4aXQ7Cit9CiskaGVhZGVyU3RyaW5nVmFsdWUgPSAkX1NFUlZFUlsiSFRUUF9YX1dFQktJVCJd
OworaGVhZGVyKCJIVFRQLzEuMSAzMDEgTW92ZWQgUGVybWFuZW50bHkiKTsKK2hlYWRlcigiQ2Fj
aGUtQ29udHJvbDogcHJpdmF0ZSwgbWF4LWFnZT0zMTUzNjAwMCIsIHRydWUpOworaGVhZGVyKCdF
VGFnOiAiV2ViS2l0VGVzdCInLCB0cnVlKTsKK2hlYWRlcigiTG9jYXRpb246IGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBo
cD92YWx1ZT0iIC4gJGhlYWRlclN0cmluZ1ZhbHVlKTsKKz8+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcy9lY2hvLXF1ZXJ5LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvZWNoby1xdWVyeS5waHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmYwYTU3MzUyNTRiY2U0MDRkZDI0N2E1YWEwMGZiOTkxYmM0NmUwYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMvZWNoby1xdWVyeS5waHAKQEAgLTAsMCArMSw5IEBACis8P3BocAoraGVhZGVyKCJB
Y2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworaGVh
ZGVyKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzOiBYLVdlYktpdCIpOworaWYoaXNzZXQo
JF9HRVRbInZhbHVlIl0pKSB7CisgIGVjaG8gJF9HRVRbInZhbHVlIl07Cit9IGVsc2UgeworICBl
Y2hvICJObyBxdWVyeSBwYXJhbWV0ZXIgbmFtZWQgJ3ZhbHVlLiciOworfQorPz4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDU4ZDY4YjFmZGRkNDM5ZjQzNjVjODAwZWRlZWM4NWM0NjNkZTMxOGEuLjFlYjY2
ZjFhMjY4YTU3ZGYwOGU3YjM5M2IxMDkyZWQyNzc0NjViZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yODMwLDYgKzI4MzAsNyBAQCBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci1wcmV2
YWxlbnQtc3VicmVzbwogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJl
ZmVycmVyLXRvLW9yaWdpbi1mb3ItcHJldmFsZW50LXN1YnJlc291cmNlLXJlcXVlc3RzLmh0bWwg
WyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9kZW55LXN0b3JhZ2UtYWNjZXNzLXVu
ZGVyLW9wZW5lci5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQt
c3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291
cmNlLmh0bWwgWyBQYXNzIF0KIAogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25zIHNp
bmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLWlu
LXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTc0ZDQ3NWQ2ODQ5ODhmYzc0OGE4YTg4ZTIyZDlj
ZDhkMGYxMGMwMy4uNmJhNjRjODk4ZWJlNjI0YTY5YWRiNzNlMTJjYzNlOTkxMjY0ZjUwMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzYz
LDYgKzc2Myw3IEBAIHdlYmtpdC5vcmcvYi8xODU5OTQgWyBEZWJ1ZyBdIGZhc3QvdGV4dC91c2Vy
LWluc3RhbGxlZC1mb250cy9zaGFkb3ctcG9zdHNjcmlwdC1mCiBbIEhpZ2hTaWVycmErIF0gaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNz
IF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3Ry
aXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci1wcmV2YWxlbnQtc3VicmVzb3VyY2UtcmVkaXJlY3Rz
Lmh0bWwgWyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci1wcmV2YWxlbnQtc3VicmVzb3Vy
Y2UtcmVxdWVzdHMuaHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291
cmNlLmh0bWwgWyBQYXNzIF0KIAogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25zIHNp
bmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLWlu
LXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDg5MjcwYTE1N2VmYzc3MGE4Nzc4MzNlNDhjZjYzMmQ4ZjJjNjFm
M2YuLjQwYmY1MzcxNGNkNWUyMjFhNmY5YWZhNWU0NDQ3YTRjMDc0MTQ3MzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03MzAsNiArNzMwLDcgQEAgaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1m
b3ItcHJldmFsZW50LXN1YnJlc28KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9h
ZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvbm9uLXByZXZhbGVudC1yZXNvdXJj
ZXMtY2FuLWFjY2Vzcy1jb29raWVzLWluLWEtdGhpcmQtcGFydHktY29udGV4dC5odG1sIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1hZ2Ut
Zm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgU2tpcCBdCiAKICMgUHJvY2VzcyBzd2FwcGlu
ZyBpcyBvbmx5IGltcGxlbWVudGVkIG9uIFdlYktpdDIuCiBodHRwL3Rlc3RzL25hdmlnYXRpb24v
cHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>