<?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>204389</bug_id>
          
          <creation_ts>2019-11-19 17:36:08 -0800</creation_ts>
          <short_desc>Resource Load Statistics: Allow multiple third-party cookie blocking settings</short_desc>
          <delta_ts>2019-11-23 19:05:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591801</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-19 17:36:08 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=203017 and https://bugs.webkit.org/show_bug.cgi?id=203195 introduced two different third-party cookie blocking settings. We should support and regression test both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591803</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-19 17:36:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/57344054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592041</commentid>
    <comment_count>2</comment_count>
      <attachid>383969</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-20 10:12:04 -0800</bug_when>
    <thetext>Created attachment 383969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592438</commentid>
    <comment_count>3</comment_count>
      <attachid>384071</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-21 10:54:51 -0800</bug_when>
    <thetext>Created attachment 384071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592440</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-21 10:55:35 -0800</bug_when>
    <thetext>Updated enum naming and default settings to make it more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592480</commentid>
    <comment_count>5</comment_count>
      <attachid>384071</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-11-21 12:07:29 -0800</bug_when>
    <thetext>Comment on attachment 384071
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        NetworkStorageSession::shouldBlockCookies().

I think it would be helpful to explain why we need three modes instead of two, otherwise it is difficult to reason about the rest of the patch.

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:125
&gt; +    }

Add an &quot;ASSERT_NOT_REACHED&quot; here. We should never move past the switch (unless we someday add another blocking mode and forget to add a case!)

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:205
&gt; +    ThirdPartyCookieBlockingMode m_thirdPartyCookieBlockingMode = ThirdPartyCookieBlockingMode::AllOnSitesWithoutUserInteraction;

Weird that this isn&apos;t using normal init syntax (and wasn&apos;t before):

ThirdPartyCookieBlockingMode m_thirdPartyCookieBlockingMode { ThirdPartyCookieBlockingMode::AllOnSitesWithoutUserInteraction };

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1829
&gt; +    if (!isPrevalent &amp;&amp; thirdPartyCookieBlockingMode() != ThirdPartyCookieBlockingMode::All)

Is this correct? What if the setting is &apos;AllOnSitesWithoutUserInteraction&apos; and there was no user interaction? It seems like that should return &quot;OnlyIfGranted&apos;?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:217
&gt; +    if (thirdPartyCookieBlockingMode() != ThirdPartyCookieBlockingMode::All &amp;&amp; !resourceStatistic.isPrevalentResource)

In the Database path we return early here (with OnlyIfGranted) when we set blocking mode to all. What if blocking mode is &quot;AllOnSitesWithoutUserInteraction&quot; and the user did not interact?

One of the two code paths seem wrong; at the very least they are inconsistent and we are about to switch to the database case full time!

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1791
&gt; +void WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting(bool enabled, bool onlyOnSitesWithoutUserInteraction, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

Why don&apos;t we use the ThirdPartyCookieBlockingMode enum as the argument here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592487</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-21 12:24:41 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #5)
&gt; Comment on attachment 384071 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384071&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        NetworkStorageSession::shouldBlockCookies().
&gt; 
&gt; I think it would be helpful to explain why we need three modes instead of
&gt; two, otherwise it is difficult to reason about the rest of the patch.

OK, I&apos;ll explain in the change log entry.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:125
&gt; &gt; +    }
&gt; 
&gt; Add an &quot;ASSERT_NOT_REACHED&quot; here. We should never move past the switch
&gt; (unless we someday add another blocking mode and forget to add a case!)

We have build checks to make sure we never miss an enum. That&apos;s why we don&apos;t use a default clause in the end. And since this function requires a return value, we&apos;d also get a build error for code path with no return. But I can add the assertion if you feel it helps.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:205
&gt; &gt; +    ThirdPartyCookieBlockingMode m_thirdPartyCookieBlockingMode = ThirdPartyCookieBlockingMode::AllOnSitesWithoutUserInteraction;
&gt; 
&gt; Weird that this isn&apos;t using normal init syntax (and wasn&apos;t before):

Agreed.

&gt; ThirdPartyCookieBlockingMode m_thirdPartyCookieBlockingMode {
&gt; ThirdPartyCookieBlockingMode::AllOnSitesWithoutUserInteraction };

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1829
&gt; &gt; +    if (!isPrevalent &amp;&amp; thirdPartyCookieBlockingMode() != ThirdPartyCookieBlockingMode::All)
&gt; 
&gt; Is this correct? What if the setting is &apos;AllOnSitesWithoutUserInteraction&apos;
&gt; and there was no user interaction? It seems like that should return
&gt; &quot;OnlyIfGranted&apos;?

I&apos;ll have a look.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:217
&gt; &gt; +    if (thirdPartyCookieBlockingMode() != ThirdPartyCookieBlockingMode::All &amp;&amp; !resourceStatistic.isPrevalentResource)
&gt; 
&gt; In the Database path we return early here (with OnlyIfGranted) when we set
&gt; blocking mode to all. What if blocking mode is
&gt; &quot;AllOnSitesWithoutUserInteraction&quot; and the user did not interact?
&gt; 
&gt; One of the two code paths seem wrong; at the very least they are
&gt; inconsistent and we are about to switch to the database case full time!

Good catch. I&apos;ll have a look.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1791
&gt; &gt; +void WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting(bool enabled, bool onlyOnSitesWithoutUserInteraction, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Why don&apos;t we use the ThirdPartyCookieBlockingMode enum as the argument here?

The function is called by the C API layer and I didn&apos;t want to expose the enum in the C API code. We&apos;re currently not pulling anything from WebCore into WKWebsiteDataStoreRef.cpp. Should I?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592490</commentid>
    <comment_count>7</comment_count>
      <attachid>384071</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-11-21 12:27:07 -0800</bug_when>
    <thetext>Comment on attachment 384071
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:125
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; Add an &quot;ASSERT_NOT_REACHED&quot; here. We should never move past the switch (unless we someday add another blocking mode and forget to add a case!)
&gt; 
&gt; We have build checks to make sure we never miss an enum. That&apos;s why we don&apos;t use a default clause in the end. And since this function requires a return value, we&apos;d also get a build error for code path with no return. But I can add the assertion if you feel it helps.

Okay-- leave as is.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1791
&gt;&gt;&gt; +void WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting(bool enabled, bool onlyOnSitesWithoutUserInteraction, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt;&gt; 
&gt;&gt; Why don&apos;t we use the ThirdPartyCookieBlockingMode enum as the argument here?
&gt; 
&gt; The function is called by the C API layer and I didn&apos;t want to expose the enum in the C API code. We&apos;re currently not pulling anything from WebCore into WKWebsiteDataStoreRef.cpp. Should I?
&gt; 
&gt; Thanks!

Nah. That makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593087</commentid>
    <comment_count>8</comment_count>
      <attachid>384210</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-22 16:04:37 -0800</bug_when>
    <thetext>Created attachment 384210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593182</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-22 22:54:25 -0800</bug_when>
    <thetext>The mac-debug-wk1 test failure is an unrelated assert crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593248</commentid>
    <comment_count>10</comment_count>
      <attachid>384210</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-11-23 17:15:11 -0800</bug_when>
    <thetext>Comment on attachment 384210
Patch

Thank you for making the database and memory stores match. Everything else looks fine.

I don’t understand the Mac-debug-wk1 failures, but they do not seem related to your patch. Please keep an eye on the test bits after you land the patch and confirm they are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593249</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-11-23 18:20:58 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #10)
&gt; Comment on attachment 384210 [details]
&gt; Patch
&gt; 
&gt; Thank you for making the database and memory stores match. Everything else
&gt; looks fine.

Thank you for pointing it out. It was a good enhancement. That logic is not simple.

&gt; I don’t understand the Mac-debug-wk1 failures, but they do not seem related
&gt; to your patch. Please keep an eye on the test bits after you land the patch
&gt; and confirm they are unrelated.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593259</commentid>
    <comment_count>12</comment_count>
      <attachid>384210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-23 19:05:56 -0800</bug_when>
    <thetext>Comment on attachment 384210
Patch

Clearing flags on attachment: 384210

Committed r252840: &lt;https://trac.webkit.org/changeset/252840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593260</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-23 19:05:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383969</attachid>
            <date>2019-11-20 10:12:04 -0800</date>
            <delta_ts>2019-11-21 10:54:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204389-20191120101203.patch</filename>
            <type>text/plain</type>
            <size>64558</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg4ZGVhYTk4NzNkNjg4
NDQ0YmY4ZWI0ODFlNzcyMDBmZTk5MzIyNy4uZDJmODYzMWU0ZTc0YWYzMDg2Y2Y3ZDliM2JkYmU3
YjA2NWM3MWEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTExLTIwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNl
dHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzQ0MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMg
YW4gZW51bSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGZvciBob3cgdGhpcmQtcGFydHkK
KyAgICAgICAgY29va2llIGJsb2NraW5nIHNob3VsZCBiZSBjYXJyaWVkIG91dC4gSXQgdGhlbiB1
c2VzIHRoZSBzZXQgbW9kZSBpbiAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91
bGRCbG9ja0Nvb2tpZXMoKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1z
aXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRJc1RoaXJk
UGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQpOiBEZWxldGVkLgorCiAyMDE5LTExLTE5ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0luZGV4ZWREQl0gSW5k
ZXhlZERCJ3MgdGhyZWFkaW5nIGFzc2VydGlvbiBzaG91bGQgcmVzcGVjdCBXZWIgdGhyZWFkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGU2NjA2NzMzYjIzZTZkMzJkMDJhNTZkMjFhYTgxYjUyODI5Y2Q4OWEuLjNiYjUx
MmI4ODg1ZTRiNTliMjI4ZWZjYTZhZjdlOWUzNTk2MjkzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjQgQEAKKzIwMTktMTEtMjAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBbGxvdyBtdWx0aXBsZSB0aGlyZC1w
YXJ0eSBjb29raWUgYmxvY2tpbmcgc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDM4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcz
NDQwNTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgbWFrZSB0aGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNldHRpbmcg
Z28gZnJvbSBhIGJvb2xlYW4gdG8KKyAgICAgICAgdGhlIG5ldyBlbnVtIFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgd2l0aCB0aHJlZSBkaWZmZXJlbnQgc2V0dGluZ3MuCisg
ICAgICAgIEZ1bmN0aW9ucyBhbmQgbWVtYmVyIHZhcmlhYmxlcyBhcmUgcmVuYW1lZCBhY2NvcmRp
bmdseS4KKworICAgICAgICBJdCBhbHNvIHVwZGF0ZXMgdGhlIHRlc3QgQVBJIHRvIG1hcCB0aGUg
VGVzdFJ1bm5lciBjYWxsIHRvIHRoZSBlbnVtLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OmNvb2tpZUFjY2VzcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0Vu
YWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldElzVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgICAgIFRoZSBTZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyBtZXNzYWdlIG5vdyB1c2VzIGFu
IGVudW0KKyAgICAgICAgICAgIGluc3RlYWQgb2YgYSBib29sZWFuLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgICAgIE5v
dyBmb3J3YXJkcyB0aGUgZW51bSB2YWx1ZSBpbnN0ZWFkIG9mIGEgYm9vbGVhbi4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0SXNUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmcp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAgICAgTWFrZXMgdXNlIG9mIHRoZSBlbnVtIGluIHRoZSBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaDoKKwogMjAxOS0xMS0xOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gRml4IHN5c2N0bC1yZWFkIHNhbmRib3ggdmlvbGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5jcHAKaW5kZXggMzY5ZDExOTYyMTBhMDllMTBkMWQ5NGJmYjk2MjJiY2RlNDE5NWMy
MS4uNzFlZGRlZjQyM2RkYmUzNTllZDNkNDE4MTZkZTE3ZGZlNTgwZDhiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcApAQCAtMTEzLDEwICsxMTMsMTYgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogICAg
IGlmIChwYWdlSUQgJiYgaGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0
eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAobV9pc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQpCisgICAgc3dp
dGNoIChtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpIHsKKyAgICBjYXNlIFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFpbik7CisgICAg
Y2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpPbmx5T25TaXRlc1dpdGhvdXRVc2Vy
SW50ZXJhY3Rpb246CisgICAgICAgIGlmICghaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBh
cnR5KGZpcnN0UGFydHlEb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWNj
b3JkaW5nVG9QZXJEb21haW5Qb2xpY3k6CisgICAgICAgIHJldHVybiBzaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzKHJlc291cmNlRG9tYWluKTsKKyAgICB9CiB9CiAKIE9wdGlvbmFsPFNlY29u
ZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMjY5LDYgKzI3NSwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmco
KQogICAgIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvblRlc3RNb2RlID0gdHJ1ZTsKIH0K
IAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpCit7CisgICAg
bV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gYmxvY2tpbmdNb2RlOworfQorCiBPcHRp
b25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29r
aWVzIHx8ICFwYWdlSUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFs
ZW50UmVzb3VyY2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggMTc0MTBiYTdjNjNiN2I4
NjUzNjg2OTUwMmQzNzkxNWM2YjE2MDQwNS4uNmQ3MDA5OTM2NjdmYjQ1MmRhMjg5MTc1MDc0YWMw
ZDVmNWFhZTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC03NCw2ICs3NCw3IEBAIHN0cnVjdCBTYW1l
U2l0ZUluZm87CiAKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51
bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKK2VudW0gY2xhc3MgVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIE9ubHlPblNpdGVzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgQWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kgfTsKIAogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3Jr
U3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2NSw3ICsxNjYs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdl
Q2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCk7Ci0gICAgdm9pZCBzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFi
bGVkID0gZW5hYmxlZDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgog
CiBwcml2YXRlOgpAQCAtMjAxLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8U2Vj
b25kcz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llc1Nob3J0IHsgfTsKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRU
b1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmln
YXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwotICAgIGJvb2wgbV9pc1Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQgPSBmYWxzZTsKKyAgICBUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6Ok9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMTksMyArMjIwLDE2IEBAIFdFQkNP
UkVfRVhQT1JUIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU3RyaW5nUmVmIGlkCiAjZW5kaWYKIAogfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsLAorICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpPbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sCisg
ICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFjY29yZGluZ1Rv
UGVyRG9tYWluUG9saWN5CisgICAgPjsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDI0ZGIyMGJjNTM2MDQz
ZGIzNzc0ODFlNDA4NzM5MTM5ZmY4Y2YyMGQuLjRiMjYyMjE4OGM4NmQ2ZTY4NDdlMDBjODYyZDYw
Mjg4ZjZkYmFiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTgyMCwxMyArMTgyMCwxMyBAQCBDb29raWVBY2Nlc3Mg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyhjb25zdCBS
ZWdpc3RyYWJsZQogICAgIAogICAgIGJvb2wgaGFzTm9FbnRyeSA9IHN0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX1JPVzsKICAgICBpZiAoaGFzTm9FbnRyeSkgewotICAgICAgICBpZiAoaXNUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKCkpCisgICAgICAgIGlmICh0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKCkgPT0gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsKQog
ICAgICAgICAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRlZDsKICAgICAgICAg
cmV0dXJuIENvb2tpZUFjY2Vzczo6QmFzZWRPbkNvb2tpZVBvbGljeTsKICAgICB9CiAKICAgICBi
b29sIGlzUHJldmFsZW50ID0gISFzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwotICAgIGlmICgh
aXNQcmV2YWxlbnQgJiYgIWlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCgpKQorICAg
IGlmICghaXNQcmV2YWxlbnQgJiYgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCkKICAgICAgICAgcmV0dXJuIENvb2tpZUFj
Y2Vzczo6QmFzZWRPbkNvb2tpZVBvbGljeTsKIAogICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
ID0gc3RhdGVtZW50LmdldENvbHVtbkludCgxKSA/IHRydWUgOiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggMDMwYjFm
MTcwYWUxY2JlN2JjOWMxMjdjMTE1OWFkYTQ2MDEyZDAzNy4uODA4NTQ0YWU0NzAzZTQ0ZmMwZTcz
MDk4NzZmNjJjMDk0MGNlMDk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAKIENv
b2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNvb2tpZUFjY2Vz
cyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QK
IHsKLSAgICBpZiAoIWlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCgpICYmICFyZXNv
dXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQorICAgIGlmICh0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKCkgIT0gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsICYm
ICFyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQogICAgICAgICByZXR1cm4g
Q29va2llQWNjZXNzOjpCYXNlZE9uQ29va2llUG9saWN5OwogCiAgICAgaWYgKCFyZXNvdXJjZVN0
YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKaW5kZXggNjRiZWU1Yjg0ZWU1ZTFjZDM3MDJjZDZmNjZlYTkzMGM4OTM5ODdi
Ni4uYzRkZTAyZGJiNThmN2ZmOTQxMTAzZWRiNDgwMmYyZTkxOTc0MjY3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtMTYxLDggKzE2Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCk7CiAgICAgYm9v
bCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7
IH07CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgc2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQg
PSBlbmFibGVkOyB9OwotICAgIGJvb2wgaXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkOyB9Owor
ICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlIG1vZGUpIHsgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gbW9kZTsgfTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU7IH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgPSAwOwpAQCAtMjcwLDcgKzI3
MSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4gbV9kZWJ1Z1N0YXRp
Y1ByZXZhbGVudFJlc291cmNlIHsgVVJMIHsgVVJMKCksICJodHRwczovLzNyZHBhcnR5dGVzdHdl
YmtpdC5vcmciX3MgfSB9OwogICAgIGJvb2wgbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6T25seU9uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uIH07CiAgICAgYm9vbCBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVk
IHsgZmFsc2UgfTsKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1fc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggODhhNDdmNmFjZjM0
M2I2ZmVjYzVlYmFhYmRmZTlmMDg5OGMyNjk1Yi4uMDg2MWQ0NGVmZDA1MDRjM2Q4ZmU5NTE4OGQ1
NGE5OGViYWU5YzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTQ2MiwyMiArNDYyLDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxv
Y2tpbmdNb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
bV9uZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBt
X25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgIHN0
b3JhZ2VTZXNzaW9uLT5zZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShibG9ja2luZ01vZGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZW5hYmxlZF0oKSB7
CisgICAgcG9zdFRhc2soW3RoaXMsIGJsb2NraW5nTW9kZV0oKSB7CiAgICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUtPnNldElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChlbmFibGVkKTsK
KyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoYmxvY2tpbmdNb2RlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGNiMzMxZTE4ZmM1NDY1MzBiZjBiMzliZTYwYzUw
NTE1ODExMmY5NmEuLjBjYTQyNmEwNjI4OWYyODgyMTJmMDM4YTk2ZDhhNzIyYmMxOTNkNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTUyLDYg
KzUyLDcgQEAgZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBjbGFzcyBJbmNs
dWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBi
b29sOworZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdDsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNzksNyArMTgwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogCiAgICAgdm9pZCBoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRJc1RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogICAgIHZv
aWQgZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1ZjIzY2M2NmFhMTFmN2QyOGU3NjE1Y2NiODUx
MzY3YzIwMzE1YmUzLi4xM2ZjZTJlN2M1OWM0YTQ0MjNmYWY3MmE2MzVjOWM5ZGU0OWE0ZTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMTI1MywxMCArMTI1MywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9v
bCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNl
dElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgbmV0
d29ya1Nlc3Npb24tPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdNb2Rl
KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggZjYyZjAxZDM4MGY0MDEwNTUyYWFkMzg4OWE0OTdkNTEyNmY4YTM1My4uZjA4
MDZiMjc5OGVmODkzOTEwY2E3OTUzNmM0YWJiMDE2YjU1MjczZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYwLDcgKzI2MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBjb25zdDsKICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMzY3NzY3NzQ4MGI4MmE0NDMzZjg1ZDI4MmIzZTVmYjgwNmE5MWU2My4uYWUwMzYxOWMzNDQ1
M2FiOGYyMTBiMjFmZDZkN2E3MjUwMDFmMDFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzYsNyAr
MTM2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMp
IC0+ICgpIEFzeW5jCiAgICAgSGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBoYXNJc29s
YXRlZFNlc3Npb24pIEFzeW5jCiAgICAgU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKLSAgICBTZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxl
ZCkgLT4gKCkgQXN5bmMKKyAgICBTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICNlbmRp
ZgogCiAgICAgU2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGJkMjFhM2M2NzdhMGMxN2ZkNTEwNDA4
ZGQ1OTBmYjI4NDBmMGZhZWMuLjhlMzRmZjg1MmMzMTY3ZTFjNDkxZjcwNWI5YTVlZGMxNWExMDA1
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVKYXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTE3NSw3ICsxNzQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkKICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMg
YmUgZm9yd2FyZGVkIHNpbmNlIGRlYnVnIG1vZGUgbWF5IGJlIGVuYWJsZWQgYXQgcnVudGltZS4K
ICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNl
LmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSwgW10geyB9KTsKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChtX3RoaXJkUGFydHlDb29raWVCbG9j
a2luZ0VuYWJsZWQpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZShtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogfQog
CiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3Jl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyNSwx
MiArMjI0LDEyIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246OnNob3VsZERvd25ncmFkZVJlZmVycmVy
KCkgY29uc3QKICAgICByZXR1cm4gbV9kb3duZ3JhZGVSZWZlcnJlcjsKIH0KIAotdm9pZCBOZXR3
b3JrU2Vzc2lvbjo6c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpCiB7CiAgICAgQVNT
RVJUKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyk7Ci0gICAgbV90aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdFbmFibGVkID0gZW5hYmxlZDsKKyAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgPSBibG9ja2luZ01vZGU7CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKLSAg
ICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRJc1RoaXJkUGFydHlDb29raWVCbG9j
a2luZ0VuYWJsZWQobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKTsKKyAgICAgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KGJsb2NraW5nTW9kZSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CmluZGV4IGYyNWRkNjU1YmI3OGU5ZTg2ZjZjNjRhOWFiMjYxY2M2ZTQwOTNhZDYuLmY2YTA2ZTZh
ZmNjYTRhZjQyZGY4MzY4YzlhMzg2ZTRjYzY5OWMyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fk
Q2xpY2tBdHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygpIHsgfQogICAgIHZvaWQgc2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wpOwogICAgIGJvb2wgc2hvdWxkRG93
bmdyYWRlUmVmZXJyZXIoKSBjb25zdDsKLSAgICB2b2lkIHNldElzVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAjZW5kaWYKICAg
ICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
biYmKTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb24oV2ViQ29y
ZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwpAQCAt
MTQ0LDcgKzE0NSw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBi
b29sIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudDsKICAgICBi
b29sIG1fZG93bmdyYWRlUmVmZXJyZXIgeyB0cnVlIH07Ci0gICAgYm9vbCBtX3RoaXJkUGFydHlD
b29raWVCbG9ja2luZ0VuYWJsZWQgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6T25seU9uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uIH07CiAjZW5kaWYKICAgICBib29sIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVu
YWJsZWQgeyBmYWxzZSB9OwogICAgIFVuaXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2Vy
PiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
aW5kZXggM2U4NWJlYTk0MzJmNzg2MGY4Mzg1Yzk3ZjdjMWVlODA0ZTc1OTkxZS4uMTIyYTFhOGY0
OGIzNDc3NmY2Y2RhMWUyYTVhZGUzNDJiODNkMTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAg
ICAgZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAg
IGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNl
OwotICAgIGVuY29kZXIgPDwgZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOworICAgIGVu
Y29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKIAogICAgIGVuY29kZXIgPDwg
bmV0d29ya0NhY2hlRGlyZWN0b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKIApAQCAtMjAwLDkgKzIwMCw5IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAg
aWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBlbmFibGVUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc7Ci0gICAgZGVjb2RlciA+PiBlbmFibGVUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmc7Ci0gICAgaWYgKCFlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7CisgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuZXR3b3Jr
Q2FjaGVEaXJlY3Rvcnk7CkBAIC0yODgsNyArMjg4LDcgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWMKICAgICAgICAgLCBXVEZNb3ZlKCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVz
dGluZ0V2ZW50KQogICAgICAgICAsIFdURk1vdmUoKnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJl
c291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgICwgV1RGTW92ZSgqZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSkKLSAgICAgICAgLCBXVEZNb3ZlKCplbmFibGVUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgICwgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSkKICAgICAgICAgLCBXVEZNb3ZlKCpkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rp
b25zRW5hYmxlZCkKICAgICAgICAgLCBXVEZNb3ZlKCphbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKQogICAgICAgICAsIFdURk1vdmUoKnJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCBhYzQzNmEzZDM4MTgwYTE3MDE5ZmI5NTI5NTliYzQ2Y2NhYzdi
MmVkLi4yYzBlYzFlNzk3NjA5YWUxNzUyNDQzMTgxZTYyM2I5YzYyOGZlODExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KQEAg
LTg1LDcgKzg2LDcgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyB7IHRydWUgfTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlOjpBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9OwogICAgIGJvb2wgZGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxs
TG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZh
bHNlIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBj
Mjc2NWYxNmZiNzdlNWUwMTJjYmJhZGZjNWEyYWIzZTcwZmNmYzRiLi42ZGM1ODBkMjVkYTdhOWUy
YTc0Y2NjNzRlMWU2ZjQyYjA3NmNmNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTM1LDcg
KzExMzUsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMuc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZEluY2x1ZGVMb2NhbGhv
c3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOwogICAgIG1fZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vOwogICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gcGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7Ci0gICAg
bV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkID0gcGFyYW1ldGVycy5lbmFibGVUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc7CisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
ID0gcGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggMjFkZTY4NTZlMDc5NDRmOGIxNzZlZDhiN2I5Mzk2YzY1YzAzNmRiNi4uNmY3NDE1
OWI5MjY2ZGRhZGFlMTUwN2MwM2EzYjA3NTdjNzZlMTM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01ODcsNiArNTg3LDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQnOiBbJzxX
ZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlJzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhJzogWyc8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+J10sCisg
ICAgICAgICdXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlJzogWyc8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvblJlY3QnOiBbJyJFZGl0b3JTdGF0
ZS5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggN2ViNzU3NzY0ZTk0OGY1YTRkZDU3N2VhYmJjNjIz
MWEyNzM4Y2FhNi4uMjRjYzFhZmM3ZWI3NzJkMDYwNDgyNjFlZGZjZjJmNTdhZGExYTZmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCkBAIC01MzgsMTAgKzUzOCwxMCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rp
bgogI2VuZGlmCiB9CiAKLXZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhlbmFibGVkLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rp
bmcoZW5hYmxlZCwgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhCiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
ICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKICAgICBzdG9yZS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKHRydWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwotICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhmYWxzZSwgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgc3Rv
cmUuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKGZhbHNlLCBmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRQYXJhbWV0ZXJzVG9EZWZh
dWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
V2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5zZXRV
c2VJVFBEYXRhYmFzZShmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDk1MjM5YTNiMGIzYWQ2MGMyZjc4
MzdmZTZmNWExMDc3MzYxYWZkZTAuLjEwYmFmN2VlMzM2ZDQ0ZmRkZTI0MTE5ODRlMThkNjEyNjkz
ZmM2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMjAsNyArMTIwLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRh
U3RvcmUKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93
bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7
CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5n
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVu
Y3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBhZDU3OTkxZTNjYWM3YzVhZmJlZmM4YTY1ZjlhZmY5YjQwOWNhOTI0Li4xNzJiYjMzMDUw
YmMzNWYxMWI1MWU5M2U5NzE1NTU2OWNmOWQxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEwNTcs
MTQgKzEwNTcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20KICAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcoZW5hYmxlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tp
bmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBlbmFibGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNl
dFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgYmxvY2tp
bmdNb2RlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmIC8vIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzJjZTQyNTZiYWFl
MDdjOTJlZmNkNDk4ZTEzMjA2YmEyOTk0M2I1YS4uYjEzMjJiYmM2NmE1ODhhYmJhYWI1MDBiZDUz
YTJiZTllN2JkMjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5z
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
KTsKICAgICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2
b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQg
c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDQwNjhlZTQxZmZjZDZkZjk1YTNk
M2I1MTZiYmMyNTMwZTJjOTk4OTEuLjA2NjE3N2Y2Y2Y3Y2M5MGI1ZDI0ZGUyZTA1MTE0ZjQ2M2U2
ODIzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU2Miw3ICs1NjIsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIGJvb2wgZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGZhbHNlOwogICAgIGJvb2wg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA9IHRydWU7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7Ci0gICAgYm9vbCBlbmFibGVUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgPSBmYWxzZTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeTsKICAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAg
ICAgaWYgKHdpdGhXZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSB3aXRoV2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKTsKQEAgLTU3Myw3ICs1NzMsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAog
ICAgICAgICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSB3aXRoV2Vic2l0ZURh
dGFTdG9yZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICAgICAg
ICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICAgICAgICAg
IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKLSAgICAgICAg
ICAgIGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5lbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CisgICAgICAgICAgICB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNTk0LDcgKzU5NCw3IEBAIE5ldHdv
cmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgICAgICBhdXRvIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVyczsKICAgICAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKICAgICAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZTsKLSAgICAgICAgICAgIGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7Cisg
ICAgICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgICAgICBtYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjE4
LDcgKzYxOCw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVO
ZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQ7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3Jl
UGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7Ci0gICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nID0gZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOworICAgIHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSA9IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9y
bSBzcGVjaWZpYyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
aW5kZXggMGZmM2VhMDk2MzFiNTc3ZDFlYTc5MDgyNWUzMDVlZTkzMjNmYmRjNy4uMTdhNGQxNDRm
MDUyOWNmYzE2OTUxMDAxNDExMTQ1ZmU3NTljMDZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNL
ZXlzLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBv
cnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgpAQCAtNjksMTQgKzcwLDE3IEBAIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQog
ICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c107CiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNl
OwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNl
OwotICAgIGJvb2wgZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gZmFsc2U7CisgICAg
YXV0byB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3k7CiAgICAgYm9vbCBl
bmFibGVMZWdhY3lUTFMgPSB0cnVlOwogICAgIGlmIChpZCB2YWx1ZSA9IFtkZWZhdWx0cyBvYmpl
Y3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKICAgICAgICAgZW5hYmxlTGVnYWN5
VExTID0gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIklUUERlYnVnTW9kZSJd
OwotICAgIGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IFtkZWZhdWx0cyBib29sRm9y
S2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVm
ZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkS2V5KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKV1dOworICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6
OmlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCldXSkKKyAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKKyAgICBlbHNlCisgICAgICAgIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpPbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247CiAgICAgYXV0byog
bWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBbZGVmYXVsdHMgc3RyaW5nRm9yS2V5OkAiSVRQTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UiXTsKICAgICBpZiAobWFudWFsUHJldmFsZW50UmVzb3VyY2Up
IHsKICAgICAgICAgVVJMIHVybCB7IFVSTCgpLCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB9OwpA
QCAtMTQwLDcgKzE0NCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBoYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNr
KCksCiAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsCiAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUsCi0gICAg
ICAgIGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZywKKyAgICAgICAgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExv
YWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAg
ICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3Vy
Y2UpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBiYjk4NDE2NjQ1NGI1NmFlYTRjOGRiZDQ4NWI3MjE0
MDBiYjE4NmNhLi5hZDU1MjI1NjJmNDE0MmRmN2JiZTljYzY2NWJlZmU0MTRmMTAwNmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVu
dGlhbFN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE3ODcsMTMgKzE3ODgsMTYgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJG
b3JUZXN0aW4KICAgICBBU1NFUlQoIWNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhi
b29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgCisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSBibG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOjpBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeTsKKyAgICBpZiAoZW5hYmxlZCkKKyAg
ICAgICAgYmxvY2tpbmdNb2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8g
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6T25seU9uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uIDogV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsOworCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJv
Y2VzcygpKSB7Ci0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKG1fc2Vzc2lvbklELCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgQVNTRVJUKHByb2Nl
c3NQb29scygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggMjc4NGZlMzdlM2VhNGE4YTE4ZTU1NTFkMzliMmNhMzk5MjA3ZmFhYS4u
ZWI5NjA0ZTNhZjMyYzU0NWI1YmNkZjA4MjI2ZGJmY2QyNjJlOWVlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRl
c3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7
CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBib29s
IG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBlNTQzNGFhYjQ3YWJlZDZlMGIyZWU1NjU4ZDRlYzgyNTZkNTg3YjdmLi5hOGI4
MjkxN2UzODBjZmQ4NWZjYTdhYTFhY2MwMmMyNTY1YTcxOGIxIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTEt
MjAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3Vy
Y2UgTG9hZCBTdGF0aXN0aWNzOiBBbGxvdyBtdWx0aXBsZSB0aGlyZC1wYXJ0eSBjb29raWUgYmxv
Y2tpbmcgc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDM4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTczNDQwNTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxs
b3dzIHRoZSBleGlzdGluZyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAgICAgIHNldFN0YXRpc3Rp
Y3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCkgdG8gc2V0IGFuIG9wdGlvbmFsIGJvb2xl
YW4KKyAgICAgICAgcGFyYW1ldGVyIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiB0
byBvcHQgaW4gdG8gdGhhdCBiZWhhdmlvci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorCiAyMDE5LTExLTE5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gQWRkIFdLVUlEZWxlZ2F0ZSBTUEkgdG8gaW5mb3JtIGNsaWVudHMg
d2hlbiBhIF9XS0luc3BlY3RvciBhdHRhY2hlcyB0byBhIFdLV2ViVmlldwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKaW5kZXggYjJlYzhjNmI3NjA2YThmMDg4ZDdlNDkzM2U1MjdkMjcwZWE3MDAy
NS4uMDg5ODliZjc0ZmU2NWU1MTAzZTViNGFkZDUxMDhlNThkNGVjMDY3ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDIsNyArMzQyLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIg
ewogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUob2JqZWN0IGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICBib29sZWFuIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNlc3Npb24o
RE9NU3RyaW5nIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcihib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwotICAgIHZvaWQgc2V0
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2Jq
ZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjaywgb3B0aW9uYWwgYm9vbGVh
biBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogCiAgICAgLy8gSW5qZWN0ZWQg
YnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRleHRG
aWVsZENhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAzMDI1YjlhNWRlZjlm
NGY5MzhhZjM1NjM5NjU4MWZhOThlY2ZiMTNlLi4yODRiYjg4OWFjYTgyNTBkYTgyY2YyNzFlYjc3
MDczZThhZmQ4NTJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTdHJp
bmdGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ1Rlc3RSdW5uZXJVdGlscy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZS5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oPgpAQCAtMjIyMywxMyArMjIyNCwxNSBAQCB2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJDYWxs
YmFjaygpCiAgICAgbV9oYXNTZXREb3duZ3JhZGVSZWZlcnJlckNhbGxiYWNrID0gZmFsc2U7CiB9
CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXMoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2
YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlciwgYm9vbCBvbmx5T25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24pCiB7CiAgICAgaWYgKG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5Q29v
a2llc0NhbGxiYWNrKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBjYWNoZVRlc3RSdW5u
ZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Nh
bGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
ZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyIpKTsKKyAgICBpZiAob25s
eU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKQorICAgICAgICBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24iKSk7CiAg
ICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29s
ZWFuQ3JlYXRlKHZhbHVlKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKICAgICBtX2hhc1NldEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNDYWxsYmFjayA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDY0MmM1OWRiZWUyM2Q5ZGU3OWVlMTg3NzZi
MjVjZWEzMTVmYTFlNjQuLjVmM2NiZTg3M2EzYjE1YWNhZGI2YmUzMGRmNWFkYzYzMWE3MGFkNTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU3RhdGlzdGlj
c0lzb2xhdGVkU2Vzc2lvbihKU1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9vbCwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7
CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyQ2Fs
bGJhY2soKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKGJvb2wsIEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjYWxsYmFj
aywgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQgc3Rh
dGlzdGljc0NhbGxEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2soKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lz
dGVudFN0YXRlQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggM2EwN2MxMzk4MWRkYzMwNTU5ZmVhODRiZDI4ZmEyZmJhZGRlNTZkYy4uODA1
ODJjNGNiYWZhMWJlNTFhZDNlMTQ2OGFlZTMyMjE5NmQzZWE1NiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1NjcsMTAgKzM1NjcsMTAgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2wg
dmFsdWUpCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXIoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIGJvb2wg
b25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKQogewogICAgIFJlc291cmNlU3RhdGlz
dGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKLSAgICBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgdmFsdWUsICZjb250
ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzRm9yVGVzdGluZyhUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1
ZSwgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAmY29udGV4dCwgcmVzb3VyY2VT
dGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKICAgICBydW5VbnRpbChjb250ZXh0LmRvbmUs
IG5vVGltZW91dCk7CiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcygpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCmluZGV4IDFiMjYxYmNkYTFiYTBmMjFmMTc4NDkwOTJhMDI2YzYwZWFiYTk4NDQuLmU5OWQ4
M2Y5NTYzYjBiMzViMDM1ZTA3M2RkODllMTNkZjg2NzRjZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI1Myw3ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoZG91YmxlIHNlY29uZHMpOwogICAgIGJvb2wg
aGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihXS1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9vbCB2YWx1ZSk7Ci0g
ICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZh
bHVlKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGJvb2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDViYmViNTc3ZGZkYjUwNDI1NGFhZjY4MGE5YjhmNDkyZTQ4NTc1
MzMuLjdiMjdkYTE3NTZjNmZkZmQ1ZTdmYzQ4NmM1ZWVhN2I5Y2M1ZWI0ZTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNTQ5LDEwICsxNTQ5LDE3IEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzT25TaXRlc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb24iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIHRydWUpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
cyIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29s
ZWFuR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2Fz
dDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKFdLQm9v
bGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRW
YWx1ZSh2YWx1ZSksIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDlmZjZiYThhOTczMWYyM2Q5M2U4NGYwZWMwM2YzZjFlY2U2ODMyMmIuLjI1MWE4
ZTM2YTVhZmViYTVjMjUyMGQ2YjQ3MjdjYTg2Yzg5OWRmYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxOS0xMS0yMCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFsbG93IG11bHRpcGxlIHRoaXJkLXBhcnR5
IGNvb2tpZSBibG9ja2luZyBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Mzg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzM0NDA1
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVz
ZSB0ZXN0cyBleGlzdGVkIGJlZm9yZSBhbmQgYXJlIG5vdCByZS1pbnRyb2R1Y2VkLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tp
ZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1p
bnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVz
LXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWw6IEFkZGVkLgorCiAy
MDE5LTExLTE5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQ291bnQgdGhpcmQtcGFydHkgc2NyaXB0IGxvYWRz
IHVuZGVyIHRvcCBmcmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13
aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1i
bG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE5MDhjOGU0YmRmY2Y5OWZmYzA1OWI3NzBjYmUzM2EzMDFlZGJm
NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQt
dXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAor
VGVzdHMgdGhhdCBhbGwgdGhpcmQtcGFydHkgY29va2llcyBhcmUgYmxvY2tlZCB1bmRlciB3ZWJz
aXRlcyB0aGF0IGhhdmUgbm90IHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKyAgCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTEtLT4nCist
LS0tLS0tLQorQmVmb3JlIHVzZXIgaW50ZXJhY3Rpb24sIHNob3VsZCByZWNlaXZlIG5vIGNvb2tp
ZXMuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0Ns
aWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
Mi0tPicKKy0tLS0tLS0tCitBZnRlciB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBm
aXJzdC1wYXJ0eSBjb29raWUuCitSZWNlaXZlZCBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29r
aWUnLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQuY29va2llOiBmaXJzdFBhcnR5Q29va2llPXZhbHVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRl
cmFjdGlvbi1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2FlMDczNWY0MDU2
MDJjM2QwNTdhNzYwMzY0OWY0MzY3ZGIxMTkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1i
bG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbApA
QCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQg
dW5kZXIgd2Vic2l0ZXMgdGhhdCBoYXZlIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLiIp
OworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgcGFydGl0aW9uSG9zdCA9
ICIxMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgcGFydGl0aW9uT3JpZ2luID0gImh0dHA6Ly8i
ICsgcGFydGl0aW9uSG9zdDsKKyAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3Jlc291cmNlcyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUJhc2VVcmwgPSB0aGly
ZFBhcnR5T3JpZ2luICsgcmVzb3VyY2VQYXRoOworICAgIGNvbnN0IGZpcnN0UGFydHlDb29raWVO
YW1lID0gImZpcnN0UGFydHlDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFy
dHlDb29raWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIGZpcnN0UGFydHlDb29raWVOYW1l
ICsgIiZ2YWx1ZT12YWx1ZSI7CisgICAgY29uc3QgcmV0dXJuVXJsID0gcGFydGl0aW9uT3JpZ2lu
ICsgIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1v
bi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbCI7CisgICAgY29u
c3Qgc3ViUGF0aFRvR2V0Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJz
dFBhcnR5Q29va2llTmFtZTsKKworICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRI
YW5kbGVyKSB7CisgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbkxv
YWRIYW5kbGVyKSB7CisgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7
CisgICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6CisgICAgICAg
ICAgICAgICAgLy8gU2V0IGZpcnN0LXBhcnR5IGNvb2tpZSBmb3IgbG9jYWxob3N0LgorICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB0aGlyZFBhcnR5QmFzZVVybCArIHN1
YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgKyAiIyIgKyByZXR1cm5VcmwgKyAiI3N0ZXAyIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29va2llIGlzIGJsb2NrZWQgZm9yIGxvY2FsaG9zdCB1
bmRlciAxMjcuMC4wLjEgZXZlbiB0aG91Z2ggbG9jYWxob3N0IGlzIG5vdCBwcmV2YWxlbnQuCisg
ICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb0dl
dENvb2tpZXMgKyAiJm1lc3NhZ2U9QmVmb3JlIHVzZXIgaW50ZXJhY3Rpb24sIHNob3VsZCByZWNl
aXZlIG5vIGNvb2tpZXMuIiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlICIjc3RlcDMiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggPSAic3RlcDQiOworICAgICAgICAgICAgICAgIC8vIFByb2R1Y2UgdXNlciBpbnRlcmFj
dGlvbiBmb3IgdGhlIGZpcnN0LXBhcnR5IHRvIGFsbG93IHRoaXJkLXBhcnR5IGNvb2tpZSBhY2Nl
c3MuCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKHBhcnRpdGlvbk9yaWdpbiwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29va2ll
IGlzIG5vIGxvbmdlciBibG9ja2VkIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xLgorICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBh
dGhUb0dldENvb2tpZXMgKyAgIiZtZXNzYWdlPUFmdGVyIHVzZXIgaW50ZXJhY3Rpb24sIHNob3Vs
ZCByZWNlaXZlIGZpcnN0LXBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoZmFsc2UsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rl
c3QpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQYXJ0eU9yaWdpbikpCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZh
bGVudCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0cnVlLCBydW5UZXN0LCB0cnVlKTsKKyAg
ICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGly
ZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWlu
dGVyYWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTA4YzhlNGJkZmNmOTlmZmMwNTli
NzcwY2JlMzNhMzAxZWRiZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1v
bi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjMgQEAKK1Rlc3RzIHRoYXQgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQgdW5k
ZXIgd2Vic2l0ZXMgdGhhdCBoYXZlIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUx
LS0+JworLS0tLS0tLS0KK0JlZm9yZSB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBu
byBjb29raWVzLgorRGlkIG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tp
ZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6CisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZTItLT4nCistLS0tLS0tLQorQWZ0ZXIgdXNlciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJl
Y2VpdmUgZmlyc3QtcGFydHkgY29va2llLgorUmVjZWl2ZWQgY29va2llIG5hbWVkICdmaXJzdFBh
cnR5Q29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZTogZmlyc3RQYXJ0eUNvb2tp
ZT12YWx1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEyMTE0YTkzMTc4NDY5MTM0Y2ZhOTY3
ZTllYTZkMmFhZmJhMzE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVuZGVyIHdlYnNpdGVzIHRoYXQg
aGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgIGNvbnN0IHBhcnRpdGlvbkhvc3QgPSAiMTI3LjAuMC4xOjgwMDAiOwor
ICAgIGNvbnN0IHBhcnRpdGlvbk9yaWdpbiA9ICJodHRwOi8vIiArIHBhcnRpdGlvbkhvc3Q7Cisg
ICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAg
IGNvbnN0IHJlc291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMi
OworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJsID0gdGhpcmRQYXJ0eU9yaWdpbiArIHJlc291
cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJzdFBhcnR5Q29v
a2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gIi9zZXQtY29v
a2llLnBocD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9dmFsdWUiOwor
ICAgIGNvbnN0IHJldHVyblVybCA9IHBhcnRpdGlvbk9yaWdpbiArICIvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2Vy
LWludGVyYWN0aW9uLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAiL2dl
dC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWU7CisKKyAgICBmdW5j
dGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQu
c3JjID0gdXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxl
bWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAg
ICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBj
b29raWUgZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5o
cmVmID0gdGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llICsg
IiMiICsgcmV0dXJuVXJsICsgIiNzdGVwMiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlICIjc3RlcDIiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9u
Lmhhc2ggPSAic3RlcDMiOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tp
ZSBpcyBibG9ja2VkIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIGV2ZW4gdGhvdWdoIGxv
Y2FsaG9zdCBpcyBub3QgcHJldmFsZW50LgorICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhp
cmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPUJlZm9yZSB1
c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBubyBjb29raWVzLiIsIHJ1blRlc3QpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAg
ICAgICAvLyBQcm9kdWNlIHVzZXIgaW50ZXJhY3Rpb24gZm9yIHRoZSBmaXJzdC1wYXJ0eSB0byBh
bGxvdyB0aGlyZC1wYXJ0eSBjb29raWUgYWNjZXNzLgorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihwYXJ0aXRpb25PcmlnaW4sIHRy
dWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NVcGRhdGVDb29raWVCbG9ja2luZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBpcyBubyBsb25nZXIgYmxvY2tlZCBmb3IgbG9j
YWxob3N0IHVuZGVyIDEyNy4wLjAuMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5JZnJh
bWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgICImbWVzc2FnZT1B
ZnRlciB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBmaXJzdC1wYXJ0eSBjb29raWUu
IiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVm
b3JlIHRoZSB0ZXN0IHN0YXJ0cy4iKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0
ZXAxIjsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXModHJ1ZSwgcnVuVGVzdCwgdHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384071</attachid>
            <date>2019-11-21 10:54:51 -0800</date>
            <delta_ts>2019-11-22 16:04:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204389-20191121105451.patch</filename>
            <type>text/plain</type>
            <size>64604</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ4OTA0NDNjMTJhY2I1
MWQ2NTBlYjY1MWFmYzNlMjFjYzRlZDUwOS4uMmQ5ODMxMjMxMDE3NzhlNzFmOTE2OWU1MjU2MmMw
ZTU5M2QwYTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTExLTIxICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNl
dHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzQ0MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMg
YW4gZW51bSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGZvciBob3cgdGhpcmQtcGFydHkK
KyAgICAgICAgY29va2llIGJsb2NraW5nIHNob3VsZCBiZSBjYXJyaWVkIG91dC4gSXQgdGhlbiB1
c2VzIHRoZSBzZXQgbW9kZSBpbiAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91
bGRCbG9ja0Nvb2tpZXMoKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1z
aXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRJc1RoaXJk
UGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQpOiBEZWxldGVkLgorCiAyMDE5LTExLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uIChyMjUy
NjYwKTogTGF5b3V0IFRlc3QgcGxhdGZvcm0vaW9zL21lZGlhc3RyZWFtL2F1ZGlvLW11dGVkLWlu
LWJhY2tncm91bmQtdGFiLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5OWZjYzA2MjYzZTc4
Y2EyNzZhYWM0NjEwNGQ3Njc4NmRjMDBhODRkLi5iZjAyZGI5M2U5Yzk3OWEwOGMyZWYxNjMxNjQy
MTMyNjczYWZhZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTExLTIxICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNl
dHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzQ0MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2UgdGhlIHRo
aXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBzZXR0aW5nIGdvIGZyb20gYSBib29sZWFuIHRvCisg
ICAgICAgIHRoZSBuZXcgZW51bSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IHdpdGggdGhyZWUgZGlmZmVyZW50IHNldHRpbmdzLgorICAgICAgICBGdW5jdGlvbnMgYW5kIG1l
bWJlciB2YXJpYWJsZXMgYXJlIHJlbmFtZWQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgSXQgYWxz
byB1cGRhdGVzIHRoZSB0ZXN0IEFQSSB0byBtYXAgdGhlIFRlc3RSdW5uZXIgY2FsbCB0byB0aGUg
ZW51bS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjb29raWVBY2Nlc3Mg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICAgICBUaGUgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcgbWVzc2FnZSBub3cgdXNlcyBhbiBlbnVtCisgICAgICAgICAgICBpbnN0
ZWFkIG9mIGEgYm9vbGVhbi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgICAgICBOb3cgZm9yd2FyZHMgdGhlIGVudW0gdmFs
dWUgaW5zdGVhZCBvZiBhIGJvb2xlYW4uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OnNldElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgICAgIE1ha2Vz
IHVzZSBvZiB0aGUgZW51bSBpbiB0aGUgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTktMTEtMjAgIENo
YW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtHVEtdIEFkZCBB
TkdMRSBiYWNrZW5kIHRvIEdUSyBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggMzY5ZDExOTYy
MTBhMDllMTBkMWQ5NGJmYjk2MjJiY2RlNDE5NWMyMS4uOTNmMjU0ZWVkNDJkNjZmN2JiNDRlMmQ3
MTFmNzcyYmRkMDc2Y2I3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMTEzLDEwICsxMTMsMTYg
QEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogICAgIGlmIChwYWdlSUQgJiYgaGFzU3RvcmFnZUFj
Y2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELnZh
bHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9pc1RoaXJkUGFydHlD
b29raWVCbG9ja2luZ0VuYWJsZWQpCisgICAgc3dpdGNoIChtX3RoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUpIHsKKyAgICBjYXNlIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDoK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llcyhyZXNvdXJjZURvbWFpbik7CisgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjoKKyAgICAgICAgaWYgKCFo
YXNIYWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3k6
CisgICAgICAgIHJldHVybiBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHJlc291cmNlRG9t
YWluKTsKKyAgICB9CiB9CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMjY5
LDYgKzI3NSwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDcm9zc1NpdGVM
b2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoKQogICAgIG1fbmF2aWdhdGlvbldpdGhM
aW5rRGVjb3JhdGlvblRlc3RNb2RlID0gdHJ1ZTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSBibG9ja2luZ01vZGUpCit7CisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gYmxvY2tpbmdNb2RlOworfQorCiBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdlSUQgfHwgbV9uYXZp
Z2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKaW5kZXggMTc0MTBiYTdjNjNiN2I4NjUzNjg2OTUwMmQzNzkxNWM2YjE2MDQw
NS4uMDRjNTFhOGQ3NGUwMTY4ODhlNTAxMmIxNDgxMTAxNjBkNDVhNGJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC03NCw2ICs3NCw3IEBAIHN0cnVjdCBTYW1lU2l0ZUluZm87CiAKIGVudW0gY2xhc3Mg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlD
b29raWVzIDogYm9vbDsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6
IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNj
b3JkaW5nVG9QZXJEb21haW5Qb2xpY3kgfTsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2NSw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVM
b2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7Ci0g
ICAgdm9pZCBzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1faXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkID0gZW5hYmxlZDsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMjAxLDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9hZ2VDYXBGb3JDbGll
bnRTaWRlQ29va2llc1Nob3J0IHsgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRp
b25UZXN0TW9kZSA9IGZhbHNlOwotICAgIGJvb2wgbV9pc1RoaXJkUGFydHlDb29raWVCbG9ja2lu
Z0VuYWJsZWQgPSBmYWxzZTsKKyAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTIxOSwzICsyMjAsMTYgQEAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWQKICNl
bmRpZgogCiB9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHsKKyAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlLAorICAgICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kKKyAg
ICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMjRkYjIwYmM1MzYwNDNkYjM3NzQ4MWU0MDg3MzkxMzlm
ZjhjZjIwZC4uNGIyNjIyMTg4Yzg2ZDZlNjg0N2UwMGM4NjJkNjAyODhmNmRiYWJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CkBAIC0xODIwLDEzICsxODIwLDEzIEBAIENvb2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y29va2llQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgCiAg
ICAgYm9vbCBoYXNOb0VudHJ5ID0gc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XOwogICAg
IGlmIChoYXNOb0VudHJ5KSB7Ci0gICAgICAgIGlmIChpc1RoaXJkUGFydHlDb29raWVCbG9ja2lu
Z0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSA9
PSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwpCiAgICAgICAgICAgICByZXR1cm4g
Q29va2llQWNjZXNzOjpPbmx5SWZHcmFudGVkOwogICAgICAgICByZXR1cm4gQ29va2llQWNjZXNz
OjpCYXNlZE9uQ29va2llUG9saWN5OwogICAgIH0KIAogICAgIGJvb2wgaXNQcmV2YWxlbnQgPSAh
IXN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgaWYgKCFpc1ByZXZhbGVudCAmJiAhaXNU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFpc1ByZXZhbGVudCAm
JiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gVGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZTo6QWxsKQogICAgICAgICByZXR1cm4gQ29va2llQWNjZXNzOjpCYXNlZE9uQ29va2ll
UG9saWN5OwogCiAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSBzdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDEpID8gdHJ1ZSA6IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwMzBiMWYxNzBhZTFjYmU3YmM5YzEyN2Mx
MTU5YWRhNDYwMTJkMDM3Li44MDg1NDRhZTQ3MDNlNDRmYzBlNzMwOTg3NmY2MmMwOTQwY2UwOTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKIAogQ29va2llQWNjZXNzIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y29va2llQWNjZXNzKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25zdAogewotICAgIGlmICghaXNUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKCkgJiYgIXJlc291cmNlU3RhdGlzdGljLmlzUHJl
dmFsZW50UmVzb3VyY2UpCisgICAgaWYgKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSAh
PSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgJiYgIXJlc291cmNlU3RhdGlzdGlj
LmlzUHJldmFsZW50UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2Vk
T25Db29raWVQb2xpY3k7CiAKICAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRl
cmFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA2
NGJlZTViODRlZTVlMWNkMzcwMmNkNmY2NmVhOTMwYzg5Mzk4N2I2Li40ZTNmY2MzM2I2MGM5Mzk4
N2ZlNjY2ODNhZmUyNTBhMzU2ZGViOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CkBAIC0xNjEsOCArMTYyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsKICAgICBib29sIGlzRGVidWdNb2RlRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfTsKICAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Ci0g
ICAgdm9pZCBzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH07Ci0gICAg
Ym9vbCBpc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQ7IH07CisgICAgdm9pZCBzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgbW9kZSkgeyBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBtb2RlOyB9OworICAg
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CkBAIC0yNzAsNyArMjcxLDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiBtX2RlYnVnU3RhdGljUHJldmFsZW50UmVzb3VyY2Ug
eyBVUkwgeyBVUkwoKSwgImh0dHBzOi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyJfcyB9IH07CiAg
ICAgYm9vbCBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWJ1
Z01vZGVFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nRW5hYmxlZCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiB9
OwogICAgIGJvb2wgbV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCB7IGZhbHNlIH07CiAgICAgU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3QgeyBTaG91bGRJbmNs
dWRlTG9jYWxob3N0OjpZZXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg4YTQ3ZjZhY2YzNDNiNmZlY2M1ZWJhYWJkZmU5ZjA4
OThjMjY5NWIuLjA4NjFkNDRlZmQwNTA0YzNkOGZlOTUxODhkNTRhOThlYmFlOWMyYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00NjIs
MjIgKzQ2MiwyMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzQ29v
a2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsK
ICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0SXNU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKGVuYWJsZWQpOworICAgICAgICAgICAgc3Rv
cmFnZVNlc3Npb24tPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdNb2Rl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgcG9zdFRhc2soW3RoaXMsIGVuYWJsZWRdKCkgeworICAgIHBvc3RUYXNrKFt0aGlz
LCBibG9ja2luZ01vZGVdKCkgewogICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRJc1RoaXJk
UGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG1fc3RhdGlzdGlj
c1N0b3JlLT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGJsb2NraW5nTW9kZSk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAppbmRleCBjYjMzMWUxOGZjNTQ2NTMwYmYwYjM5YmU2MGM1MDUxNTgxMTJmOTZhLi4wY2E0MjZh
MDYyODlmMjg4MjEyZjAzOGE5NmQ4YTcyMmJjMTkzZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3Mg
U2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3MgSW5jbHVkZUh0dHBPbmx5Q29va2llcyA6
IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CiBl
bnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKK2VudW0gY2xhc3MgVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMTc5LDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgaGFzQ29v
a2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgc2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKGJv
b2wpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNz
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggNWYyM2NjNjZhYTExZjdkMjhlNzYxNWNjYjg1MTM2N2MyMDMxNWJlMy4uMTNmY2Uy
ZTdjNTljNGE0NDIzZmFmNzJhNjM1YzljOWRlNDlhNGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEyNTMsMTAgKzEyNTMsMTAg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGkKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2Nr
aW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRJc1RoaXJkUGFydHlDb29raWVC
bG9ja2luZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKGJsb2NraW5nTW9kZSk7CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGY2MmYwMWQz
ODBmNDAxMDU1MmFhZDM4ODlhNDk3ZDUxMjZmOGEzNTMuLmYwODA2YjI3OThlZjg5MzkxMGNhNzk1
MzZjNGFiYjAxNmI1NTI3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKQEAgLTI2MCw3ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYXNJ
c29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAgICAgYm9v
bCBpc0lUUERhdGFiYXNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJVFBEYXRhYmFzZUVu
YWJsZWQ7IH0KICAgICB2b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgog
CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDM2Nzc2Nzc0ODBiODJhNDQz
M2Y4NWQyODJiM2U1ZmI4MDZhOTFlNjMuLmFlMDM2MTljMzQ0NTNhYjhmMjEwYjIxZmQ2ZDdhNzI1
MDAxZjAxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTM2LDcgKzEzNiw3IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVDb29raWVzRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3luYwogICAgIEhh
c0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSBBc3luYwog
ICAgIFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+
ICgpIEFzeW5jCi0gICAgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCisgICAg
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25J
c0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNv
bnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAppbmRleCBiZDIxYTNjNjc3YTBjMTdmZDUxMDQwOGRkNTkwZmIyODQwZjBmYWVjLi44
ZTM0ZmY4NTJjMzE2N2UxYzQ5MWY3MDViOWE1ZWRjMTVhMTAwNTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzksNyArMzksNiBA
QAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xpY2tB
dHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNzUsNyArMTc0LDcgQEAg
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGUpCiAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIGJlIGZvcndhcmRlZCBzaW5jZSBk
ZWJ1ZyBtb2RlIG1heSBiZSBlbmFibGVkIGF0IHJ1bnRpbWUuCiAgICAgaWYgKCFtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UsIFtdIHsg
fSk7Ci0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRJc1RoaXJkUGFydHlDb29raWVC
bG9ja2luZ0VuYWJsZWQobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKTsKKyAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUo
bV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lv
bjo6cmVjcmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMjUsMTIgKzIyNCwxMiBAQCBib29sIE5l
dHdvcmtTZXNzaW9uOjpzaG91bGREb3duZ3JhZGVSZWZlcnJlcigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZG93bmdyYWRlUmVmZXJyZXI7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246OnNldElzVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MpOwotICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCA9IGVuYWJs
ZWQ7CisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gYmxvY2tpbmdNb2RlOwog
ICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKG1fdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01vZGUpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBmMjVkZDY1NWJiNzhl
OWU4NmY2YzY0YTlhYjI2MWNjNmU0MDkzYWQ2Li42OThjZTBkNzQyMmNmMTU0M2RkMmYzYTQ2MTJk
ZTg0N2M0MmFhYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhcklz
b2xhdGVkU2Vzc2lvbnMoKSB7IH0KICAgICB2b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhib29sKTsKICAgICBib29sIHNob3VsZERvd25ncmFkZVJlZmVycmVyKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoYm9vbCk7
CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogI2VuZGlmCiAgICAgdm9pZCBzdG9yZUFkQ2xpY2tB
dHRyaWJ1dGlvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBoYW5k
bGVBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
bjo6Q29udmVyc2lvbiYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTE0NCw3ICsxNDUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX2VuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQ7CiAgICAgYm9vbCBtX2Rvd25ncmFkZVJlZmVy
cmVyIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVk
IHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1f
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIH07CiAjZW5kaWYK
ICAgICBib29sIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IFVuaXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiBtX2FkQ2xpY2tBdHRyaWJ1dGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggM2U4NWJlYTk0MzJmNzg2
MGY4Mzg1Yzk3ZjdjMWVlODA0ZTc1OTkxZS4uMTIyYTFhOGY0OGIzNDc3NmY2Y2RhMWUyYTVhZGUz
NDJiODNkMTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZEluY2x1ZGVM
b2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgZW5jb2RlciA8PCBlbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwotICAgIGVuY29kZXIgPDwgZW5h
YmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOworICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTsKIAogICAgIGVuY29kZXIgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5
IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMjAwLDkgKzIw
MCw5IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICBPcHRpb25hbDxib29sPiBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7
Ci0gICAgZGVjb2RlciA+PiBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7Ci0gICAgaWYg
KCFlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKKyAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgaWYg
KCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CkBAIC0y
ODgsNyArMjg4LDcgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBXVEZNb3Zl
KCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KQogICAgICAgICAs
IFdURk1vdmUoKnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
CiAgICAgICAgICwgV1RGTW92ZSgqZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZSkKLSAgICAgICAgLCBXVEZNb3ZlKCplbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisg
ICAgICAgICwgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKICAgICAgICAg
LCBXVEZNb3ZlKCpkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCkKICAgICAgICAg
LCBXVEZNb3ZlKCphbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNG
b3JUZXN0aW5nKQogICAgICAgICAsIFdURk1vdmUoKnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBh
YzQzNmEzZDM4MTgwYTE3MDE5ZmI5NTI5NTliYzQ2Y2NhYzdiMmVkLi5mN2UwNWY4ZDY2NGZhNzZl
Njc1ZDdkMTJlNDY2MmU2MzY3MzIwNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KQEAgLTg1LDcgKzg2LDcgQEAgc3RydWN0
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7IHRydWUgfTsKICAg
ICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgeyBmYWxzZSB9Owot
ICAgIGJvb2wgZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKKyAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNp
dGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiB9OwogICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJl
c3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlE
ZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZh
bGVudFJlc291cmNlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBjMjc2NWYxNmZiNzdlNWUw
MTJjYmJhZGZjNWEyYWIzZTcwZmNmYzRiLi42ZGM1ODBkMjVkYTdhOWUyYTc0Y2NjNzRlMWU2ZjQy
YjA3NmNmNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTM1LDcgKzExMzUsNyBAQCBOZXR3
b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOwogICAgIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vOwogICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7Ci0gICAgbV90aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdFbmFibGVkID0gcGFyYW1ldGVycy5lbmFibGVUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc7CisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gcGFyYW1ldGVycy50
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMDYwMTNh
NTk3OWI4ZDY5NGQ3YjY2N2M2NDk3MzJkM2U3Y2ZhZGEyZC4uYTJjNWE2YTRmOTM1ZjdhMzhjZjYx
YmRiNGZhMmIyY2RmNGZjYzZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC01ODgsNiArNTg4LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAg
ICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQnOiBbJzxXZWJDb3JlL1RleHRDaGVj
a2VyQ2xpZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlJzogWyc8
V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlRleHRJbmRpY2F0
b3JEYXRhJzogWyc8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+J10sCisgICAgICAgICdXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlJzogWyc8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyc6IFsn
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OldpbGxD
b250aW51ZUxvYWRpbmcnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OlNlbGVjdGlvblJlY3QnOiBbJyJFZGl0b3JTdGF0ZS5oIiddLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKaW5kZXggN2ViNzU3NzY0ZTk0OGY1YTRkZDU3N2VhYmJjNjIzMWEyNzM4Y2FhNi4uMjRj
YzFhZmM3ZWI3NzJkMDYwNDgyNjFlZGZjZjJmNTdhZGExYTZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBA
IC01MzgsMTAgKzUzOCwxMCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbgogI2VuZGlmCiB9CiAK
LXZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQs
IGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhlbmFibGVkLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoZW5hYmxlZCwgb25s
eU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxz
ZQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAgICAgc3RvcmUu
cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNl
dENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5n
KHRydWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwotICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgc3RvcmUuc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGZhbHNl
LCBmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAg
IHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5zZXRVc2VJVFBEYXRhYmFzZShm
YWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCmluZGV4IDk1MjM5YTNiMGIzYWQ2MGMyZjc4MzdmZTZmNWExMDc3MzYx
YWZkZTAuLjEwYmFmN2VlMzM2ZDQ0ZmRkZTI0MTE5ODRlMThkNjEyNjkzZmM2MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCkBAIC0xMjAsNyArMTIwLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmUKIHR5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJG
b3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7Ci1X
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CitXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgYm9vbCBlbmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlv
biwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhZDU3OTkxZTNj
YWM3YzVhZmJlZmM4YTY1ZjlhZmY5YjQwOWNhOTI0Li4xNzJiYjMzMDUwYmMzNWYxMWI1MWU5M2U5
NzE1NTU2OWNmOWQxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEwNTcsMTQgKzEwNTcsMTQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRl
c3RpbmcoYm9vbCBlbmFibGVkLCBDb20KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoZW5h
YmxlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5T
ZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmcoc2Vz
c2lvbklELCBlbmFibGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzJjZTQyNTZiYWFlMDdjOTJlZmNkNDk4ZTEz
MjA2YmEyOTk0M2I1YS4uYjEzMjJiYmM2NmE1ODhhYmJhYWI1MDBiZDUzYTJiZTllN2JkMjlmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGhh
c0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZERv
d25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogICAgIAogICAgIHZvaWQgc3ludGhlc2l6ZUFwcElz
QmFja2dyb3VuZChib29sIGJhY2tncm91bmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDQwNjhlZTQxZmZjZDZkZjk1YTNkM2I1MTZiYmMyNTMwZTJj
OTk4OTEuLjQwMjU1NTZiYzljZjBhN2JhNDM3MGMzMjFiYzZjMTFhZjJkNjJhY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU2Miw3ICs1NjIsNyBA
QCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGZhbHNlOwogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCA9IHRydWU7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlID0gZmFsc2U7Ci0gICAgYm9vbCBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
PSBmYWxzZTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsKICAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgaWYgKHdp
dGhXZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSB3aXRoV2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
KTsKQEAgLTU3Myw3ICs1NzMsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAgICAg
ICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSB3aXRoV2Vic2l0ZURhdGFTdG9yZS0+
cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICAgICAgICAgIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICAgICAgICAgIGVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKLSAgICAgICAgICAgIGVuYWJs
ZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFi
bGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CisgICAgICAgICAgICB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50
UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNTk0LDcgKzU5NCw3IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0
b3JlKiB3aXRoCiAgICAgICAgICAgICBhdXRvIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IG1f
d2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsK
ICAgICAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAg
ICAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsK
LSAgICAgICAgICAgIGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IG5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5lbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CisgICAgICAgICAg
ICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIApAQCAtNjE4LDcgKzYxOCw3
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dUZXN0aW5nRXZlbnQ7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGU7Ci0gICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nID0gZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOworICAgIHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgPSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG1h
bnVhbFByZXZhbGVudFJlc291cmNlOwogCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZp
YyBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggMGZm
M2VhMDk2MzFiNTc3ZDFlYTc5MDgyNWUzMDVlZTkzMjNmYmRjNy4uYjFmNTQwMWI3YmEzNzkyYjU4
YWU4MTFjNGU0OTE1NjQ0NzcxZDM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAj
aW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgpAQCAtNjksMTQgKzcwLDE3IEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIE5TVXNl
ckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c107CiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJv
b2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwotICAgIGJv
b2wgZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gZmFsc2U7CisgICAgYXV0byB0aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZTo6T25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5OwogICAgIGJvb2wgZW5hYmxl
TGVnYWN5VExTID0gdHJ1ZTsKICAgICBpZiAoaWQgdmFsdWUgPSBbZGVmYXVsdHMgb2JqZWN0Rm9y
S2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCiAgICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9
IFt2YWx1ZSBib29sVmFsdWVdOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJJVFBEZWJ1Z01vZGUiXTsKLSAg
ICBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5j
ZXNLZXk6OmlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZEtleSgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCldXTsKKyAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc1Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XV0pCisgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisgICAgZWxzZQorICAgICAgICB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247CiAgICAgYXV0byogbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBbZGVmYXVsdHMgc3RyaW5nRm9yS2V5OkAiSVRQTWFudWFsUHJl
dmFsZW50UmVzb3VyY2UiXTsKICAgICBpZiAobWFudWFsUHJldmFsZW50UmVzb3VyY2UpIHsKICAg
ICAgICAgVVJMIHVybCB7IFVSTCgpLCBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB9OwpAQCAtMTQw
LDcgKzE0NCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6
OnBhcmFtZXRlcnMoKQogICAgICAgICBoYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCksCiAg
ICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsCiAg
ICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUsCi0gICAgICAgIGVu
YWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZywKKyAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxv
Y2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAgICAgICAg
V1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAppbmRleCBiYjk4NDE2NjQ1NGI1NmFlYTRjOGRiZDQ4NWI3MjE0MDBiYjE4
NmNhLi42YjRiMDJjNzRjYzllMDE2MDc1MzAwODFiZGIxZWNkZGI1M2VjYTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbFN0
b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KQEAgLTE3ODcsMTMgKzE3ODgsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW4KICAgICBBU1NFUlQoIWNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhib29sIGVu
YWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgCisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSBibG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3k7CisgICAgaWYgKGVuYWJsZWQpCisgICAg
ICAgIGJsb2NraW5nTW9kZSA9IG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA/IFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uIDogV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxs
OworCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKSB7Ci0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQ
b29scygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggMjc4NGZlMzdlM2VhNGE4YTE4ZTU1NTFkMzliMmNhMzk5MjA3ZmFhYS4uZWI5
NjA0ZTNhZjMyYzU0NWI1YmNkZjA4MjI2ZGJmY2QyNjJlOWVlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAt
MTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhc0xvY2FsU3RvcmFnZUZvclRlc3Rp
bmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAg
ICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBib29sIG9u
bHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICNlbmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJl
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAyYTE5OWExNzdjY2RlMDZiYjE1NDZhNjc4ZDU5ZjVhODY1MmZmMjY0Li5jOTc3YzRh
MmMyMWVhZTFiYmRjYmFmMDFlYWJkMzhhZDA1YzVlNzY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTEtMjEg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2Ug
TG9hZCBTdGF0aXN0aWNzOiBBbGxvdyBtdWx0aXBsZSB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tp
bmcgc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNDM4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTczNDQwNTQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxsb3dz
IHRoZSBleGlzdGluZyBUZXN0UnVubmVyIGZ1bmN0aW9uCisgICAgICAgIHNldFN0YXRpc3RpY3NT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCkgdG8gc2V0IGFuIG9wdGlvbmFsIGJvb2xlYW4K
KyAgICAgICAgcGFyYW1ldGVyIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiB0byBv
cHQgaW4gdG8gdGhhdCBiZWhhdmlvci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorCiAyMDE5LTExLTIxICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IHRyaWdnZXJzIGZvciBjYXRhbGluYSBkZWJ1ZyBhbmQgd2ViZ2wgdGVzdGVy
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGIyZWM4YzZiNzYwNmE4ZjA4OGQ3ZTQ5
MzNlNTI3ZDI3MGVhNzAwMjUuLjA4OTg5YmY3NGZlNjVlNTEwM2U1YjRhZGQ1MTA4ZTU4ZDRlYzA2
N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzQyLDcgKzM0Miw3IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0
YXRlKG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgYm9vbGVhbiBoYXNTdGF0aXN0aWNz
SXNvbGF0ZWRTZXNzaW9uKERPTVN0cmluZyBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0
aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNr
KTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJv
b2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ss
IG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKIAog
ICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0
RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggMzAyNWI5YTVkZWY5ZjRmOTM4YWYzNTYzOTY1ODFmYTk4ZWNmYjEzZS4uMjg0YmI4ODlhY2E4
MjUwZGE4MmNmMjcxZWI3NzA3M2U4YWZkODUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NUZXN0UnVubmVyVXRpbHMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGUuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaD4KQEAgLTIyMjMsMTMgKzIy
MjQsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZERvd25n
cmFkZVJlZmVycmVyQ2FsbGJhY2soKQogICAgIG1faGFzU2V0RG93bmdyYWRlUmVmZXJyZXJDYWxs
YmFjayA9IGZhbHNlOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzKGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIsIGJvb2wg
b25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKQogewogICAgIGlmIChtX2hhc1NldEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMi
KSk7CisgICAgaWYgKG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbikKKyAgICAgICAg
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRT
dGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc09uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uIikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkg
PSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiAgICAgbV9oYXNTZXRC
bG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA2NDJjNTlkYmVl
MjNkOWRlNzllZTE4Nzc2YjI1Y2VhMzE1ZmExZTY0Li41ZjNjYmU4NzNhM2IxNWFjYWRiNmJlMzBk
ZjVhZGM2MzFhNzBhZDUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNlc3Npb24oSlNTdHJpbmdSZWYgaG9zdE5hbWUpOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2wsIEpTVmFs
dWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGREb3du
Z3JhZGVSZWZlcnJlckNhbGxiYWNrKCk7Ci0gICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llcyhib29sLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIEpT
VmFsdWVSZWYgY2FsbGJhY2ssIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9u
KTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxs
RGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDNhMDdjMTM5ODFkZGMzMDU1OWZlYTg0YmQyOGZh
MmZiYWRkZTU2ZGMuLjgwNTgyYzRjYmFmYTFiZTUxYWQzZTE0NjhhZWUzMjIxOTZkM2VhNTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNTY3LDEwICsz
NTY3LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcihib29sIHZhbHVlKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFNo
b3VsZERvd25ncmFkZVJlZmVycmVyKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUpCit2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhi
b29sIHZhbHVlLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbikKIHsKICAg
ICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Ci0gICAg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3Jl
KCksIHZhbHVlLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNr
KTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVE
YXRhU3RvcmUoKSwgdmFsdWUsIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgJmNv
bnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CiAgICAgcnVuVW50
aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRp
ZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAxYjI2MWJjZGExYmEwZjIxZjE3ODQ5MDkyYTAyNmM2
MGVhYmE5ODQ0Li5lOTlkODNmOTU2M2IwYjM1YjAzNWUwNzNkZDg5ZTEzZGY4Njc0Y2Q3IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNTMsNyArMjUzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKGRvdWJsZSBzZWNv
bmRzKTsKICAgICBib29sIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNlc3Npb24oV0tTdHJpbmdSZWYg
aG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVy
KGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXMoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbik7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgp
OwogCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA1YmJlYjU3N2RmZGI1MDQyNTRhYWY2
ODBhOWI4ZjQ5MmU0ODU3NTMzLi43YjI3ZGExNzU2YzZmZGZkNWU3ZmM0ODZjNWVlYTdiOWNjNWVi
NGUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTU0
OSwxMCArMTU0OSwxNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkp
OworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCB0cnVlKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2Fn
ZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHZh
bHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOworICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OTcwOGUxODk0ZWQzOTMxNGFmOGExNjcyNmRjNGM1
MmY2OGI0MDE1Li5hNTZiOWIzOWM1MjRjMzlmNDM4ZDZmOTM5ZjkyOTI3YWMxZjAyYzc3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMTEtMjEgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBbGxvdyBtdWx0
aXBsZSB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDM4OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTczNDQwNTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlc2UgdGVzdHMgZXhpc3RlZCBiZWZvcmUgYW5kIGFyZSBub3QgcmUtaW50
cm9kdWNlZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRl
cy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1i
bG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5o
dG1sOiBBZGRlZC4KKwogMjAxOS0xMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVncmVzc2lvbiAocjI1MjY2MCk6IExheW91dCBUZXN0IHBsYXRmb3Jt
L2lvcy9tZWRpYXN0cmVhbS9hdWRpby1tdXRlZC1pbi1iYWNrZ3JvdW5kLXRhYi5odG1sIGlzIGZh
aWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2Vy
LWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOTA4YzhlNGJkZmNmOTlmZmMwNTliNzcwY2JlMzNhMzAxZWRiZjY5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3RzIHRoYXQg
YWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQgdW5kZXIgd2Vic2l0ZXMgdGhhdCBo
YXZlIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0KK0Jl
Zm9yZSB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBubyBjb29raWVzLgorRGlkIG5v
dCByZWNlaXZlIGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tpZScuCitDbGllbnQtc2lkZSBk
b2N1bWVudC5jb29raWU6CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTItLT4nCistLS0t
LS0tLQorQWZ0ZXIgdXNlciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgZmlyc3QtcGFydHkg
Y29va2llLgorUmVjZWl2ZWQgY29va2llIG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0NsaWVu
dC1zaWRlIGRvY3VtZW50LmNvb2tpZTogZmlyc3RQYXJ0eUNvb2tpZT12YWx1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBh
cnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0
YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVy
YWN0aW9uLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdhZTA3MzVmNDA1NjAyYzNkMDU3YTc2
MDM2NDlmNDM2N2RiMTE5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0
YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVuZGVyIHdlYnNp
dGVzIHRoYXQgaGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IHBhcnRpdGlvbkhvc3QgPSAiMTI3LjAuMC4x
OjgwMDAiOworICAgIGNvbnN0IHBhcnRpdGlvbk9yaWdpbiA9ICJodHRwOi8vIiArIHBhcnRpdGlv
bkhvc3Q7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiOworICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMiOworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJsID0gdGhpcmRQYXJ0eU9yaWdp
biArIHJlc291cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJz
dFBhcnR5Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0g
Ii9zZXQtY29va2llLnBocD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9
dmFsdWUiOworICAgIGNvbnN0IHJldHVyblVybCA9IHBhcnRpdGlvbk9yaWdpbiArICIvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhU
b0dldENvb2tpZXMgPSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tp
ZU5hbWU7CisKKyAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgewor
ICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7
CisgICAgICAgIGVsZW1lbnQuc3JjID0gdXJsOworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikg
eworICAgICAgICAgICAgZWxlbWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9
CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlv
bi5oYXNoKSB7CisgICAgICAgICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8v
IFNldCBmaXJzdC1wYXJ0eSBjb29raWUgZm9yIGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9TZXRG
aXJzdFBhcnR5Q29va2llICsgIiMiICsgcmV0dXJuVXJsICsgIiNzdGVwMiI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDIiOgorICAgICAgICAgICAgICAg
IGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDMiOworICAgICAgICAgICAgICAgIC8vIENo
ZWNrIHRoYXQgdGhlIGNvb2tpZSBpcyBibG9ja2VkIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAu
MC4xIGV2ZW4gdGhvdWdoIGxvY2FsaG9zdCBpcyBub3QgcHJldmFsZW50LgorICAgICAgICAgICAg
ICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsg
IiZtZXNzYWdlPUJlZm9yZSB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBubyBjb29r
aWVzLiIsIHJ1blRlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0
ZXA0IjsKKyAgICAgICAgICAgICAgICAvLyBQcm9kdWNlIHVzZXIgaW50ZXJhY3Rpb24gZm9yIHRo
ZSBmaXJzdC1wYXJ0eSB0byBhbGxvdyB0aGlyZC1wYXJ0eSBjb29raWUgYWNjZXNzLgorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihw
YXJ0aXRpb25PcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBpcyBubyBsb25n
ZXIgYmxvY2tlZCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29r
aWVzICsgICImbWVzc2FnZT1BZnRlciB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBm
aXJzdC1wYXJ0eSBjb29raWUuIiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAiI3N0ZXA0IjoKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiIikgeworICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cy4iKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gInN0ZXAxIjsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXModHJ1ZSwgcnVuVGVzdCwgdHJ1ZSk7CisgICAgICAgIH0pOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29v
a2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkwOGM4ZTRiZGZjZjk5ZmZjMDU5Yjc3MGNiZTMzYTMw
MWVkYmY2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitUZXN0
cyB0aGF0IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVuZGVyIHdlYnNpdGVz
IHRoYXQgaGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0t
LS0tCitCZWZvcmUgdXNlciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgbm8gY29va2llcy4K
K0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorQ2xpZW50
LXNpZGUgZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+
JworLS0tLS0tLS0KK0FmdGVyIHVzZXIgaW50ZXJhY3Rpb24sIHNob3VsZCByZWNlaXZlIGZpcnN0
LXBhcnR5IGNvb2tpZS4KK1JlY2VpdmVkIGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tpZScu
CitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6IGZpcnN0UGFydHlDb29raWU9dmFsdWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
dGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFj
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhMjExNGE5MzE3ODQ2OTEzNGNmYTk2N2U5ZWE2ZDJhYWZi
YTMxNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhv
dXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhbGwgdGhpcmQt
cGFydHkgY29va2llcyBhcmUgYmxvY2tlZCB1bmRlciB3ZWJzaXRlcyB0aGF0IGhhdmUgbm90IHJl
Y2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBw
YXJ0aXRpb25PcmlnaW4gPSAiaHR0cDovLyIgKyBwYXJ0aXRpb25Ib3N0OworICAgIGNvbnN0IHRo
aXJkUGFydHlPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCByZXNv
dXJjZVBhdGggPSAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKyAgICBjb25z
dCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFydHlPcmlnaW4gKyByZXNvdXJjZVBhdGg7Cisg
ICAgY29uc3QgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgPSAiZmlyc3RQYXJ0eUNvb2tpZSI7CisgICAg
Y29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICIvc2V0LWNvb2tpZS5waHA/bmFt
ZT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlIjsKKyAgICBjb25zdCBy
ZXR1cm5VcmwgPSBwYXJ0aXRpb25PcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhp
cmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlv
bi5odG1sIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29raWVzID0gIi9nZXQtY29va2llcy5w
aHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lOworCisgICAgZnVuY3Rpb24gb3Blbklm
cmFtZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsK
KyAgICAgICAgaWYgKG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgICAgIGVsZW1lbnQub25sb2Fk
ID0gb25Mb2FkSGFuZGxlcjsKKyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
ICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAi
I3N0ZXAxIjoKKyAgICAgICAgICAgICAgICAvLyBTZXQgZmlyc3QtcGFydHkgY29va2llIGZvciBs
b2NhbGhvc3QuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRoaXJk
UGFydHlCYXNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIjIiArIHJldHVy
blVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0
ZXAzIjsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb29raWUgaXMgYmxvY2tl
ZCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBldmVuIHRob3VnaCBsb2NhbGhvc3QgaXMg
bm90IHByZXZhbGVudC4KKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNl
VXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1CZWZvcmUgdXNlciBpbnRlcmFj
dGlvbiwgc2hvdWxkIHJlY2VpdmUgbm8gY29va2llcy4iLCBydW5UZXN0KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwNCI7CisgICAgICAgICAgICAgICAgLy8gUHJv
ZHVjZSB1c2VyIGludGVyYWN0aW9uIGZvciB0aGUgZmlyc3QtcGFydHkgdG8gYWxsb3cgdGhpcmQt
cGFydHkgY29va2llIGFjY2Vzcy4KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ocGFydGl0aW9uT3JpZ2luLCB0cnVlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29v
a2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBjb29raWUgaXMgbm8gbG9uZ2VyIGJsb2NrZWQgZm9yIGxvY2FsaG9zdCB1bmRl
ciAxMjcuMC4wLjEuCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFy
dHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICAiJm1lc3NhZ2U9QWZ0ZXIgdXNlciBp
bnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgZmlyc3QtcGFydHkgY29va2llLiIsIHJ1blRlc3Qp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
YWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
aGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nh
bGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVz
dCBzdGFydHMuIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKHRydWUsIHJ1blRlc3QsIHRydWUpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBydW5UZXN0KCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384210</attachid>
            <date>2019-11-22 16:04:37 -0800</date>
            <delta_ts>2019-11-23 19:05:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204389-20191122160437.patch</filename>
            <type>text/plain</type>
            <size>115687</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYwYzA1ZmFjN2VjYTky
NjgxNzdhYWEyN2E5Yzk1ZjRmZWI3MmQ1Yy4uMDNiYzcyMDkwOTRmOGYxMjZjMDZmZGY0Y2ViMWIw
YzM0NDQ0YWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTExLTIyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNl
dHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzQ0MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMg
YW4gZW51bSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGZvciBob3cgdGhpcmQtcGFydHkK
KyAgICAgICAgY29va2llIGJsb2NraW5nIHNob3VsZCBiZSBjYXJyaWVkIG91dC4gSXQgdGhlbiB1
c2VzIHRoZSBzZXQgbW9kZSBpbiAKKyAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91
bGRCbG9ja0Nvb2tpZXMoKS4KKworICAgICAgICBUaGUgcmVhc29uIGZvciBzdXBwb3J0aW5nIHRo
cmVlIGRpZmZlcmVudCBtb2RlcyBpcyB0aGF0IHdoYXQgaXMgbm93IG5hbWVkCisgICAgICAgIE9u
bHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSBpcyBzaGlwcGluZywgQWxsT25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24gaXMKKyAgICAgICAgaW4gYmV0YSwgYW5kIEFsbCBpcyBiZWhpbmQg
YW4gZXhwZXJpbWVudGFsIGZsYWcuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmct
b24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgICAgIEZsaXBwZWQgdGhlIGlzVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nRW5hYmxlZCBmbGFnIHRvIG9uIGJ5IGRlZmF1bHQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRJc1Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQpOiBEZWxldGVkLgorCiAyMDE5LTExLTIyICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBNZXJn
ZSAiaW5zZXJ0IGlubGluZSBydW5zIiBhbmQgInNldHVwIGRpc3BsYXkgcnVucyIgbG9vcHMgaW4g
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNTM1ZDJkMDdiZjE1YzZkMWMyMjAzMjFjNWE4ZmNiZWFjOWUwNGUzNC4uZjc5M2MzMTQ1ZWU5
ODQ1YzkwNTU0NTFmZmMyNWNhNTRlMzZlOGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDUgQEAK
KzIwMTktMTEtMjIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBbGxvdyBtdWx0aXBsZSB0aGlyZC1wYXJ0eSBj
b29raWUgYmxvY2tpbmcgc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNDM4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTczNDQwNTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgbWFrZSB0aGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNldHRpbmcgZ28gZnJv
bSBhIGJvb2xlYW4gdG8KKyAgICAgICAgdGhlIG5ldyBlbnVtIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgd2l0aCB0aHJlZSBkaWZmZXJlbnQgc2V0dGluZ3MuCisgICAgICAg
IEZ1bmN0aW9ucyBhbmQgbWVtYmVyIHZhcmlhYmxlcyBhcmUgcmVuYW1lZCBhY2NvcmRpbmdseS4K
KworICAgICAgICBUaGUgcmVhc29uIGZvciBzdXBwb3J0aW5nIHRocmVlIGRpZmZlcmVudCBtb2Rl
cyBpcyB0aGF0IHdoYXQgaXMgbm93IG5hbWVkCisgICAgICAgIE9ubHlBY2NvcmRpbmdUb1BlckRv
bWFpblBvbGljeSBpcyBzaGlwcGluZywgQWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24g
aXMKKyAgICAgICAgaW4gYmV0YSwgYW5kIEFsbCBpcyBiZWhpbmQgYW4gZXhwZXJpbWVudGFsIGZs
YWcuCisKKyAgICAgICAgVGhlIGNoYW5nZSBhbHNvIHVwZGF0ZXMgdGhlIHRlc3QgQVBJIHRvIG1h
cCB0aGUgVGVzdFJ1bm5lciBjYWxsIHRvIHRoZSBlbnVtLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpo
YXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgICAgIE5vdyBtYWtlcyB1c2Ugb2YgYSBjb21wbGV0aW9uIGhhbmRsZXIgYW5k
IHVwZGF0ZXMgdGhlIGNvb2tpZSBibG9ja2luZyBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjph
cmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcik6CisgICAgICAgICAgICBOZXcgY29u
dmVuaWVuY2UgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGNvb2tpZSBibG9ja2luZyBzdGF0dXMgcGVy
IGZpcnN0LXBhcnR5IGRvbWFpbi4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAgICAgICBSZXN0cnVjdHVy
ZWQgdGhlIGNvZGUgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQgdGhlIGxvZ2ljIGlzIHRoZSBz
YW1lIGFzIHRoZQorICAgICAgICAgICAgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuCisgICAgICAgICAgICBDYW4gbm8gbG9uZ2VyIGJl
IGNvbnN0IHNpbmNlIGl0IGNhbGxzIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVy
KCkgd2hpY2gKKyAgICAgICAgICAgIGluIHR1cm4gY2FsbHMgaGFzSGFkVXNlckludGVyYWN0aW9u
KCkgYW5kIHRoYXQgZnVuY3Rpb24gbWF5IGNsZWFyIHVzZXIgaW50ZXJhY3Rpb24gZGF0YS4KKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc0hh
ZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVBY2Nlc3MgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAgICAgU2VlIGNvbW1lbnQgYWJvdmUgb24gdGhlIG5vbi1jb25zdCB2ZXJz
aW9uIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjph
cmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcik6CisgICAgICAgICAgICBOZXcgY29u
dmVuaWVuY2UgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGNvb2tpZSBibG9ja2luZyBzdGF0dXMgcGVy
IGZpcnN0LXBhcnR5IGRvbWFpbi4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpjb29raWVBY2Nlc3MpOgorICAgICAgICAgICAgUmVzdHJ1Y3R1cmVk
IHRoZSBjb2RlIHRvIG1ha2UgaXQgdmVyeSBjbGVhciB0aGF0IHRoZSBsb2dpYyBpcyB0aGUgc2Ft
ZSBhcyB0aGUKKyAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaW4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuCisgICAgICAgICAgICBDYW4gbm8gbG9uZ2VyIGJl
IGNvbnN0IHNpbmNlIGl0IGNhbGxzIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVy
KCkgd2hpY2gKKyAgICAgICAgICAgIGluIHR1cm4gY2FsbHMgaGFzSGFkVXNlckludGVyYWN0aW9u
KCkgYW5kIHRoYXQgZnVuY3Rpb24gbWF5IGNsZWFyIHVzZXIgaW50ZXJhY3Rpb24gZGF0YS4KKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAg
ICAgICAgTm93IG1ha2VzIHVzZSBvZiBhIGNvbXBsZXRpb24gaGFuZGxlciBhbmQgdXBkYXRlcyB0
aGUgY29va2llIGJsb2NraW5nIHN0YXRlLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNvb2tpZUFjY2VzcyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICAgICBTZWUgY29tbWVudCBhYm92ZSBvbiB0aGUgbm9uLWNvbnN0IHZlcnNpb24gb2YgdGhp
cyBmdW5jdGlvbi4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFi
bGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjppc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgICAgICBOb3cgZm9yd2FyZHMgdGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRJc1RoaXJkUGFy
dHlDb29raWVCbG9ja2luZ0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmcp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICAgICBU
aGUgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcgbWVzc2FnZSBub3cg
dXNlcyBhbiBlbnVtIGluc3RlYWQgb2YgYQorICAgICAgICAgICAgYm9vbGVhbi4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAg
ICAgICBOb3cgZm9yd2FyZHMgdGhlIGVudW0gdmFsdWUgaW5zdGVhZCBvZiBhIGJvb2xlYW4uCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY1N0b3JlKToKKyAgICAgICAgICAgIE5vdyBtYWtlcyBzdXJlIHRoZSBjb29raWUgYmxvY2tp
bmcgc2V0dGluZyBpcyBmb3J3YXJkZWQgdG8gdGhlIHJlY3JlYXRlZCBzdG9yZS4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0SXNUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAgICAgU3VwcG9ydCBm
b3IgdGhlIG5ldyBlbnVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2Nv
YTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHk6CisgICAgICAgICAgICBUZWxscyB0aGUgSVBDIGNvZGUgZ2VuZXJhdG9yIHdoZXJlIHRv
IGZpbmQgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZS4KKyAgICAgICAgKiBT
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgICAgIEZsaXBwZWQgdGhlIElzVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCBmbGFnIHRvIG9uIGJ5IGRlZmF1bHQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAgICAgTWFrZXMgdXNlIG9m
IHRoZSBlbnVtIGluIHRoZSBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxOS0xMS0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE51bGwgY2hlY2sg
Y2FsbGJhY2sgaW4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZERlbGl2ZXJNZXNz
YWdlUG9ydE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggZDY2OWM0YTA5
MTQ4YWFjMjY5Njc5NzE1YjcxYTZmNTI0Yjk4YTI2Mi4uNTY2YWNjMWZmZWJjMzJlYjRlMzJmNGEz
ZmFjMTZiY2ZhZjhkMmJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtODgxLDcg
Kzg4MSw3IEBAIHdlYlJUQ0VuY3J5cHRpb25FbmFibGVkOgogICBpbnNwZWN0b3JPdmVycmlkZTog
dHJ1ZQogCiBpc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQ6Ci0gIGluaXRpYWw6IGZh
bHNlCisgIGluaXRpYWw6IHRydWUKIAogaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAgIGluaXRpYWw6
IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggMzY5ZDExOTYyMTBhMDllMTBkMWQ5NGJmYjk2
MjJiY2RlNDE5NWMyMS4uOTNmMjU0ZWVkNDJkNjZmN2JiNDRlMmQ3MTFmNzcyYmRkMDc2Y2I3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMTEzLDEwICsxMTMsMTYgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLAogICAgIGlmIChwYWdlSUQgJiYgaGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFp
biwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELnZhbHVlKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9pc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJs
ZWQpCisgICAgc3dpdGNoIChtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpIHsKKyAgICBj
YXNlIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDoKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURv
bWFpbik7CisgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVz
V2l0aG91dFVzZXJJbnRlcmFjdGlvbjoKKyAgICAgICAgaWYgKCFoYXNIYWRVc2VySW50ZXJhY3Rp
b25Bc0ZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOjpPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3k6CisgICAgICAgIHJldHVybiBz
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHJlc291cmNlRG9tYWluKTsKKyAgICB9CiB9CiAK
IE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMjY5LDYgKzI3NSwxMSBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3Jh
dGlvbkZvclRlc3RpbmcoKQogICAgIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvblRlc3RN
b2RlID0gdHJ1ZTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2lu
Z01vZGUpCit7CisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gYmxvY2tpbmdN
b2RlOworfQorCiBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVu
dFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZv
ckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdlSUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVj
b3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXgg
MTc0MTBiYTdjNjNiN2I4NjUzNjg2OTUwMmQzNzkxNWM2YjE2MDQwNS4uYWE3N2MzYTQ4MzA3ZTY3
YTgyYjliZjMxNDkxMmUyNmY0NTY5YWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC03NCw2ICs3NCw3
IEBAIHN0cnVjdCBTYW1lU2l0ZUluZm87CiAKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKK2Vu
dW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5nVG9QZXJEb21haW5Q
b2xpY3kgfTsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTE2NSw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
ckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4s
IFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRl
TG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7Ci0gICAgdm9pZCBzZXRJc1RoaXJk
UGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMjAxLDcgKzIwMiw3IEBAIHByaXZhdGU6
CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llc1Nob3J0
IHsgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURv
bWFpbj4gbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7
CiAgICAgYm9vbCBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNl
OwotICAgIGJvb2wgbV9pc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQgPSBmYWxzZTsK
KyAgICBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSB7IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uIH07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjE5
LDMgKzIyMCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZAogI2VuZGlmCiAKIH0KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsCisgICAg
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCwKKyAgICAgICAg
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb24sCisgICAgICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6Ok9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeQorICAgID47Cit9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCAyNGRiMjBiYzUzNjA0M2RiMzc3NDgxZTQwODczOTEzOWZmOGNmMjBkLi5hYzUwMTY5
ZWJhNjJiNDUwZjRmNTk1NzA4MWQ0MjM1YjI4ZGFkMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEyMTIsNyArMTIx
Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAKICAgICBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7CiAKLSAgICBzd2l0Y2gg
KGNvb2tpZUFjY2VzcyhzdWJGcmFtZURvbWFpbikpIHsKKyAgICBzd2l0Y2ggKGNvb2tpZUFjY2Vz
cyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSB7CiAgICAgY2FzZSBDb29raWVBY2Nl
c3M6OkNhbm5vdFJlcXVlc3Q6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4m
JgogCiAgICAgYXV0byBzdWJGcmFtZVN0YXR1cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHN1YkZyYW1lRG9tYWluKTsKICAgICAKLSAgICBzd2l0Y2ggKGNv
b2tpZUFjY2VzcyhzdWJGcmFtZURvbWFpbikpIHsKKyAgICBzd2l0Y2ggKGNvb2tpZUFjY2Vzcyhz
dWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSB7CiAgICAgY2FzZSBDb29raWVBY2Nlc3M6
OkNhbm5vdFJlcXVlc3Q6CiAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5n
RW5hYmxlZCgpLCBJVFBEZWJ1ZywgIkNhbm5vdCBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3By
aXZhdGV9cyBzaW5jZSBpdHMgY29va2llcyBhcmUgYmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250
ZXh0cyBhbmQgaXQgaGFzIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uIGFzIGZpcnN0LXBh
cnR5LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNz
KTsKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpCiAgICAgdXBk
YXRlQ29va2llQmxvY2tpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNDY4LDYg
KzE0NjgsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xl
YXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGUKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbiBmYWlsZWQgdG8gYmluZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQorCisgICAgLy8gVXBkYXRlIGNv
b2tpZSBibG9ja2luZyB1bmNvbmRpdGlvbmFsbHkgc2luY2UgYSBjYWxsIHRvIGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbigpCisgICAgLy8gdG8gY2hlY2sgdGhlIHByZXZpb3VzIHVzZXIgaW50ZXJhY3Rp
b24gc3RhdHVzIGNvdWxkIGNhbGwgY2xlYXJVc2VySW50ZXJhY3Rpb24oKSwKKyAgICAvLyBibG93
aW5nIHRoZSBjYWxsIHN0YWNrLgorICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KQpAQCAtMTQ5
Niw3ICsxNTAxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmwKICAgICAgICAgLy8gRHJvcCBw
cml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgaXQuCiAgICAg
ICAgIC8vIFNldCB0aW1lc3RhbXAgdG8gMCBzbyB0aGF0IHN0YXRpc3RpY3MgbWVyZ2Ugd2lsbCBr
bm93CiAgICAgICAgIC8vIGl0IGhhcyBiZWVuIHJlc2V0IGFzIG9wcG9zZWQgdG8gaXRzIGRlZmF1
bHQgLTEuCi0gICAgICAgIGNsZWFyVXNlckludGVyYWN0aW9uKGRvbWFpbik7CisgICAgICAgIGNs
ZWFyVXNlckludGVyYWN0aW9uKGRvbWFpbiwgW10geyB9KTsKICAgICAgICAgaGFkVXNlckludGVy
YWN0aW9uID0gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMTgwNywyOSArMTgxMiwzNSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcAogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhk
b21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CiB9CiAKLUNvb2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y29va2llQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pIGNvbnN0Citib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcmVB
bGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9w
RnJhbWVEb21haW4pCit7CisgICAgaWYgKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSA9
PSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSA9PSBUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiAmJiAh
aGFzSGFkVXNlckludGVyYWN0aW9uKHRvcEZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRv
dzo6TG9uZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitDb29raWVBY2Nlc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tp
ZUFjY2Vzcyhjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgc3VicmVzb3VyY2VEb21haW4sIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IlNFTEVDVCBpc1ByZXZhbGVudCwgaGFkVXNlckludGVyYWN0aW9uIEZST00gT2JzZXJ2ZWREb21h
aW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9t
YWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRU
ZXh0KDEsIHN1YnJlc291cmNlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2VzcyBmYWlsZWQgdG8gYmlu
ZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIAorCiAg
ICAgYm9vbCBoYXNOb0VudHJ5ID0gc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XOwotICAg
IGlmIChoYXNOb0VudHJ5KSB7Ci0gICAgICAgIGlmIChpc1RoaXJkUGFydHlDb29raWVCbG9ja2lu
Z0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6Ok9ubHlJZkdyYW50
ZWQ7Ci0gICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k7Ci0g
ICAgfQorICAgIGJvb2wgaXNQcmV2YWxlbnQgPSAhaGFzTm9FbnRyeSAmJiAhIXN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCk7CisgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24gPSAhaGFzTm9FbnRy
eSAmJiBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpID8gdHJ1ZSA6IGZhbHNlOwogCi0gICAgYm9v
bCBpc1ByZXZhbGVudCA9ICEhc3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKLSAgICBpZiAoIWlz
UHJldmFsZW50ICYmICFpc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoKSkKKyAgICBp
ZiAoIWFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKHRvcEZyYW1lRG9tYWluKSAm
JiAhaXNQcmV2YWxlbnQpCiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29r
aWVQb2xpY3k7CiAKLSAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9IHN0YXRlbWVudC5nZXRD
b2x1bW5JbnQoMSkgPyB0cnVlIDogZmFsc2U7CiAgICAgaWYgKCFoYWRVc2VySW50ZXJhY3Rpb24p
CiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkNhbm5vdFJlcXVlc3Q7CiAKQEAgLTIwMTcs
NyArMjAyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24oY29uc3QgRG9tYWluRGF0YSYgcmVzb3VyY2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2lu
ZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KQogewogICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5o
YWRVc2VySW50ZXJhY3Rpb24gJiYgaGFzU3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0
aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KSkg
ewotICAgICAgICBjbGVhclVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYy5yZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgICAgIGNsZWFyVXNlckludGVyYWN0aW9uKHJlc291cmNlU3RhdGlz
dGljLnJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7IH0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oCmluZGV4IDdjYmZhOGNmYTZmZjIxNzgxOGMwNzQ1MTA0NmY2MTgzNDgwNzc1MTUuLmY1
MDVhNzBlY2JjODM0YTgzM2Q3YTU5MzAyMWZiZTVjMjhiNzQyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNs
ZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBPcGVyYXRpbmdEYXRlc1dpbmRv
dykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgU2Vjb25kcykgb3ZlcnJpZGU7CkBAIC0xOTMsOCArMTkzLDkgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgcHJlZGljYXRlVmFsdWVGb3JEb21haW4oV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
JiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKIAotICAgIENvb2tpZUFjY2VzcyBj
b29raWVBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKLSAgICAKKyAgICBi
b29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CisgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBTdWJS
ZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7CisKICAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUmVzb3VyY2VMb2FkUHJl
dmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWlu
c1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluKHVuc2lnbmVkIHByaW1hcnlEb21haW5JRCwgU3Rk
U2V0PHVuc2lnbmVkPiYgbm9uUHJldmFsZW50UmVkaXJlY3Rpb25Tb3VyY2VzLCB1bnNpZ25lZCBu
dW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKTsKICAgICB2b2lkIHNldERvbWFpbnNBc1ByZXZhbGVudChT
dGRTZXQ8dW5zaWduZWQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwMzBiMWYxNzBhZTFjYmU3YmM5YzEyN2MxMTU5YWRh
NDYwMTJkMDM3Li5jNGU3ZDRhZjI3YjExYzBjMTBjOWI4N2FhYTBmNjFhNDQ5ZjYwZTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApA
QCAtMjEyLDEyICsyMTIsMjYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKQogICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
LT5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2U6OkZvcmNlSW1tZWRpYXRlV3JpdGU6Olllcyk7CiB9CiAKLUNvb2tpZUFjY2Vz
cyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNvb2tpZUFjY2Vzcyhjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKK2Jvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjphcmVBbGxUaGlyZFBhcnR5Q29va2llc0Js
b2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCiB7Ci0gICAg
aWYgKCFpc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQoKSAmJiAhcmVzb3VyY2VTdGF0
aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKKyAgICBpZiAodGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSgpID09IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBpZiAodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpID09
IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVy
YWN0aW9uICYmICFoYXNIYWRVc2VySW50ZXJhY3Rpb24odG9wRnJhbWVEb21haW4sIE9wZXJhdGlu
Z0RhdGVzV2luZG93OjpMb25nKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK0Nvb2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OmNvb2tpZUFjY2Vzcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0
YXRpc3RpYywgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQoreworICAgIGJv
b2wgaXNQcmV2YWxlbnQgPSByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlOwor
ICAgIGJvb2wgaGFkVXNlckludGVyYWN0aW9uID0gcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNlcklu
dGVyYWN0aW9uOworCisgICAgaWYgKCFhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRl
cih0b3BGcmFtZURvbWFpbikgJiYgIWlzUHJldmFsZW50KQogICAgICAgICByZXR1cm4gQ29va2ll
QWNjZXNzOjpCYXNlZE9uQ29va2llUG9saWN5OwogCi0gICAgaWYgKCFyZXNvdXJjZVN0YXRpc3Rp
Yy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAgaWYgKCFoYWRVc2VySW50ZXJhY3Rpb24pCiAgICAg
ICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkNhbm5vdFJlcXVlc3Q7CiAgICAgCiAgICAgcmV0dXJu
IENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRlZDsKQEAgLTIyOCw3ICsyNDIsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYgcwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
YXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihzdWJGcmFtZURvbWFpbik7Ci0gICAgc3dpdGNoIChjb29raWVBY2Nlc3Mo
c3ViRnJhbWVTdGF0aXN0aWMpKSB7CisgICAgc3dpdGNoIChjb29raWVBY2Nlc3Moc3ViRnJhbWVT
dGF0aXN0aWMsIHRvcEZyYW1lRG9tYWluKSkgewogICAgIGNhc2UgQ29va2llQWNjZXNzOjpDYW5u
b3RSZXF1ZXN0OgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI2MCw3ICsyNzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byYgc3ViRnJhbWVTdGF0aXN0aWMg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzdWJGcmFtZURv
bWFpbik7Ci0gICAgc3dpdGNoIChjb29raWVBY2Nlc3Moc3ViRnJhbWVTdGF0aXN0aWMpKSB7Cisg
ICAgc3dpdGNoIChjb29raWVBY2Nlc3Moc3ViRnJhbWVTdGF0aXN0aWMsIHRvcEZyYW1lRG9tYWlu
KSkgewogICAgIGNhc2UgQ29va2llQWNjZXNzOjpDYW5ub3RSZXF1ZXN0OgogICAgICAgICBSRUxF
QVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJDYW5ub3Qg
Z3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwdWJsaWN9cyBzaW5jZSBpdHMgY29va2llcyBhcmUg
YmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250ZXh0cyBhbmQgaXQgaGFzIG5vdCByZWNlaXZlZCB1
c2VyIGludGVyYWN0aW9uIGFzIGZpcnN0LXBhcnR5LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNz
U3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKQEAgLTQzOSwxMyArNDUzLDE5IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpsb2dDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uKGNvbnN0CiAgICAgICAgIHRvU3RhdGlzdGljcy5nb3RMaW5rRGVjb3JhdGlv
bkZyb21QcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgIGJvb2wg
ZGlkSGF2ZVByZXZpb3VzVXNlckludGVyYWN0aW9uID0gc3RhdGlzdGljcy5oYWRVc2VySW50ZXJh
Y3Rpb247CiAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKICAgICBz
dGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OworICAgIGlmICgh
ZGlkSGF2ZVByZXZpb3VzVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdXBkYXRlQ29va2llQmxvY2tpbmco
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmlu
ZGV4IGMxOGM1MWQxZjNlODMxYjZmYWI5NDQ0ZWI4N2ViMDgyY2IwMWJjZDguLmM4ZmM2ODU4MDMz
NmM4ZGQyYzc4ZGRlZjI2NDQ0MzNmN2FjN2YzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTk3LDcgKzk3LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIENvb2tpZUFjY2VzcyBjb29raWVBY2Nlc3MoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYpIGNvbnN0OworICAgIGJvb2wgYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5k
ZXIoY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKKyAgICBDb29raWVBY2Nlc3MgY29v
a2llQWNjZXNzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJikgb3ZlcnJpZGU7CkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9n
VXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0Rl
Y29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9t
YWluJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNl
dExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcykgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNjRiZWU1Yjg0ZWU1
ZTFjZDM3MDJjZDZmNjZlYTkzMGM4OTM5ODdiNi4uYmZhNGQ3MGIyNjlhY2FiZDllNTU4OThmZTdk
YzdmMzgxYmFhMzlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAt
MTYxLDkgKzE2MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlKGJvb2wpOwogICAgIGJvb2wgaXNEZWJ1Z01vZGVFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9OwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIHNl
dElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkID0gZW5hYmxlZDsgfTsKLSAgICBib29sIGlzVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nRW5hYmxlZDsgfTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtb2RlKSB7
IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG1vZGU7IH07CisgICAgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOyB9OwogCisg
ICAgdmlydHVhbCBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0
IFRvcEZyYW1lRG9tYWluJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CkBAIC0xNzIsNyArMTc0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9w
RnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgbG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBOYXZpZ2F0
ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIE9w
ZXJhdGluZ0RhdGVzV2luZG93KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNlZW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHByaW1hcnlEb21haW4sIFNlY29uZHMpID0gMDsKQEAg
LTI3MCw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluIG1f
ZGVidWdTdGF0aWNQcmV2YWxlbnRSZXNvdXJjZSB7IFVSTCB7IFVSTCgpLCAiaHR0cHM6Ly8zcmRw
YXJ0eXRlc3R3ZWJraXQub3JnIl9zIH0gfTsKICAgICBib29sIG1fZGVidWdMb2dnaW5nRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RlYnVnTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwotICAg
IGJvb2wgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9u
U2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIH07CiAgICAgYm9vbCBtX2RhdGFSZWNvcmRzQmVp
bmdSZW1vdmVkIHsgZmFsc2UgfTsKICAgICBTaG91bGRJbmNsdWRlTG9jYWxob3N0IG1fc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCB7IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggODhh
NDdmNmFjZjM0M2I2ZmVjYzVlYmFhYmRmZTlmMDg5OGMyNjk1Yi4uNGQ2Njk5N2Y0OWU5ZmI4MDk4
MjJmMzg1MmQ2OGNkZDliODQ5OTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTQ2MiwyMiArNDYyLDIyIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgYmxvY2tpbmdNb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNl
c3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01vZGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZW5h
YmxlZF0oKSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGJsb2NraW5nTW9kZV0oKSB7CiAgICAgICAg
IGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPnNldElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChl
bmFibGVkKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoYmxvY2tpbmdNb2RlKTsKICAgICB9KTsKIH0KIApAQCAtNjExLDkgKzYxMSwx
NCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgCiAgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgbV9z
dGF0aXN0aWNzU3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKGRvbWFpbik7Ci0gICAgICAgIHBv
c3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBhdXRvIGlu
bmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9OworICAgICAgICBpZiAobV9zdGF0
aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclVzZXJJ
bnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoaW5uZXJDb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlubmVyQ29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCmluZGV4IGNiMzMxZTE4ZmM1NDY1MzBiZjBiMzliZTYwYzUwNTE1ODExMmY5NmEu
LjBjYTQyNmEwNjI4OWYyODgyMTJmMDM4YTk2ZDhhNzIyYmMxOTNkNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51
bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlD
b29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDog
Ym9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOworZW51bSBj
bGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xNzksNyArMTgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FsbEhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9p
ZCBoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0Vu
YWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogICAgIHZvaWQgZGlkQ3JlYXRl
TmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Byb2Nlc3NlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCBiNTRkNjJhZmY4ZDljMDJmNjc0YThmNWM5OTRjODIwZGIyNDM4Y2Y0
Li44YzEzMGEyZGY5MzRhODMzMzk1ZjA4Y2RjZTFjYmQ4NWUxOTZkNWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTI2NywxMCAr
MTI2NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aQogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBlbmFibGVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldElzVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24t
PnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdNb2RlKTsKICAgICBlbHNl
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
MGM2MzcxODVlZjc2NjdjOTdhNWYxMDUyYWE3ODBlNTMzZTgwMmNiNy4uZDM0NmFiNTc3MTljNTMz
NGUxZDhkNDEwZjE2YzY0YjQ1OWM1YmZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYyLDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsK
ICAgICBib29sIGlzSVRQRGF0YWJhc2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERh
dGFiYXNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JU
ZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgYm9v
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjcyYTU1MDEy
MjRjM2VjZmEwNjZlNDlmZTZkYzk5Y2ExYTYyMGVlMS4uMGVlMmZkNmQyZGNjNWUyNTMxMDM5YmY5
MTdhYzc2NzM4ZGNkMjZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzcsNyArMTM3LDcgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERlbGV0ZUNvb2tp
ZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5j
CiAgICAgSGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24p
IEFzeW5jCiAgICAgU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5h
YmxlZCkgLT4gKCkgQXN5bmMKLSAgICBTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5
bmMKKyAgICBTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0
U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGJvb2wgY29udHJvbGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IGJkMjFhM2M2NzdhMGMxN2ZkNTEwNDA4ZGQ1OTBmYjI4NDBm
MGZhZWMuLmJmZjliYTdlM2RhMDZhMDE5NDcyMzU5MjdmNDYzNjZjN2YxZjQ4N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zOSw3
ICszOSw2IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE3NSw3ICsx
NzQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sIGVuYWJsZSkKICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgYmUgZm9yd2FyZGVk
IHNpbmNlIGRlYnVnIG1vZGUgbWF5IGJlIGVuYWJsZWQgYXQgcnVudGltZS4KICAgICBpZiAoIW1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZv
ckRlYnVnTW9kZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSwgW10geyB9KTsKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldElzVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nRW5hYmxlZChtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQp
OworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogfQogCiB2b2lkIE5ldHdv
cmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4Myw2ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKICAg
ICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5zZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSk7CiB9CiAKIGJvb2wgTmV0d29ya1Nlc3Npb246OmlzUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKSBjb25zdApAQCAtMjI1LDEyICsyMjUsMTIgQEAgYm9vbCBOZXR3b3JrU2Vz
c2lvbjo6c2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKSBjb25zdAogICAgIHJldHVybiBtX2Rvd25n
cmFkZVJlZmVycmVyOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRJc1RoaXJkUGFydHlD
b29raWVCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6
c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIGJsb2NraW5nTW9kZSkKIHsKICAgICBBU1NFUlQobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KTsKLSAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQgPSBlbmFibGVkOworICAg
IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IGJsb2NraW5nTW9kZTsKICAgICBpZiAo
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnNldElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZChtX3RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ0VuYWJsZWQpOworICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdNb2RlKTsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggZjI1ZGQ2NTViYjc4ZTllODZmNmM2
NGE5YWIyNjFjYzZlNDA5M2FkNi4uNjk4Y2UwZDc0MjJjZjE1NDNkZDJmM2E0NjEyZGU4NDdjNDJh
YWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJbXBsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJc29sYXRlZFNl
c3Npb25zKCkgeyB9CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rp
bmcoYm9vbCk7CiAgICAgYm9vbCBzaG91bGREb3duZ3JhZGVSZWZlcnJlcigpIGNvbnN0OwotICAg
IHZvaWQgc2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdFbmFibGVkKGJvb2wpOworICAgIHZv
aWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgogICAgIHZvaWQgc3RvcmVBZENsaWNrQXR0cmlidXRp
b24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uJiYpOwogICAgIHZvaWQgaGFuZGxlQWRDbGlj
a0F0dHJpYnV0aW9uQ29udmVyc2lvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OkNvbnZl
cnNpb24mJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CkBAIC0xNDQsNyArMTQ1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIGJvb2wgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTG9nVGVzdGluZ0V2ZW50OwogICAgIGJvb2wgbV9kb3duZ3JhZGVSZWZlcnJlciB7IHRy
dWUgfTsKLSAgICBib29sIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZCB7IGZhbHNl
IH07CisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtX3RoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiB9OwogI2VuZGlmCiAgICAgYm9v
bCBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkIHsgZmFsc2UgfTsKICAgICBVbmlxdWVS
ZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4gbV9hZENsaWNrQXR0cmlidXRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDNlODViZWE5NDMyZjc4NjBmODM4NWM5
N2Y3YzFlZTgwNGU3NTk5MWUuLjEyMmExYThmNDhiMzQ3NzZmNmNkYTFlMmE1YWRlMzQyYjgzZDE5
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIGVuY29kZXIgPDwgZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKLSAgICBlbmNvZGVyIDw8IGVuYWJsZVRoaXJk
UGFydHlDb29raWVCbG9ja2luZzsKKyAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU7CiAKICAgICBlbmNvZGVyIDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeSA8PCBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTIwMCw5ICsyMDAsOSBAQCBP
cHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwotICAgIGRl
Y29kZXIgPj4gZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwotICAgIGlmICghZW5hYmxl
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAg
ZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworICAgIGlmICghdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPFN0cmluZz4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwpAQCAtMjg4LDcgKzI4
OCw3IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCkKICAgICAgICAgLCBXVEZNb3Zl
KCpzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAg
ICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUpCi0gICAg
ICAgICwgV1RGTW92ZSgqZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgICAgICAs
IFdURk1vdmUoKnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpCiAgICAgICAgICwgV1RGTW92
ZSgqZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAgICAgICAgICwgV1RGTW92
ZSgqYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGlu
ZykKICAgICAgICAgLCBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFs
ZW50UmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYWM0MzZhM2Qz
ODE4MGExNzAxOWZiOTUyOTU5YmM0NmNjYWM3YjJlZC4uZjdlMDVmOGQ2NjRmYTc2ZTY3NWQ3ZDEy
ZTQ2NjJlNjM2NzMyMDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CkBAIC04NSw3ICs4Niw3IEBAIHN0cnVjdCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyB0cnVlIH07CiAgICAgYm9vbCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24gfTsKICAgICBib29sIGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlv
bnNFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFu
YWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZGVhYmViYjZmOTkwYmE5NzRiMWRhYWUx
YWViMWIwOWQzYzQ5ODU3Yy4uODI1N2QxZmQxNmViNTIzMWZiMjc0ZjkwN2E2MGU3ZjUyYWQ5NGEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMTEzNSw3ICsxMTM1LDcgQEAgTmV0d29ya1Nlc3Np
b25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIE5ldHdvcmsKICAgICBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBwYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRl
TG9jYWxob3N0OjpObzsKICAgICBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUgPSBwYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPyBF
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpZZXMgOiBFbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpObzsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwotICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nRW5hYmxlZCA9IHBhcmFtZXRlcnMuZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwor
ICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHBhcmFtZXRlcnMudGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDA2MDEzYTU5NzliOGQ2
OTRkN2I2NjdjNjQ5NzMyZDNlN2NmYWRhMmQuLmEyYzVhNmE0ZjkzNWY3YTM4Y2Y2MWJkYjRmYTJi
MmNkZjRmY2M2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtNTg4LDYgKzU4OCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0JzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVu
dC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSc6IFsnPFdlYkNvcmUv
VGV4dENoZWNraW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6
IFsnPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPiddLAorICAgICAgICAnV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMnOiBbJzxXZWJDb3Jl
L1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29udGludWVM
b2FkaW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGRjZWE4YTMwYmUxYTkxNTY0YjBjNzQxYTIz
ODE2ZjM5ZDI3YzlkZjcuLjE4ZGI4Y2Y0M2Q2MDhlZTcxMDdiZDVkZWQxYjIxNTQxNmQ4NzYyMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTc5NSw3ICsx
Nzk1LDcgQEAgTGF6eUltYWdlTG9hZGluZ0VuYWJsZWQ6CiAKIElzVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nRW5hYmxlZDoKICAgdHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIGRl
ZmF1bHRWYWx1ZTogdHJ1ZQogICBodW1hblJlYWRhYmxlTmFtZTogIkJsb2NrIEFsbCAzcmQtUGFy
dHkgQ29va2llcyAoSVRQKSIKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiQmxvY2sgYWxs
IHRoaXJkLXBhcnR5IGNvb2tpZXMgd2hlbiBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9u
IGlzIGVuYWJsZWQiCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4
IDk5YTQwODZlMjNmZDYwMTYxZGMwNDFiMDg4ZjcxZDBjMDc1ZjVjNzAuLjZmNWE5MDdkZGRjMjg3
YTM4ZjRmYTBiODgzMDM4ODdkOTgzM2Q2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNTM4LDEwICs1
MzgsMTAgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW4KICNlbmRpZgogfQogCi12b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBi
b29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZ0Z1bmN0
aW9uIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCBib29sIG9ubHlP
blNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoZW5hYmxlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGVuYWJsZWQsIG9ubHlPblNpdGVzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2MSw3
ICs1NjEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYQogICAgIHN0b3JlLnJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDcm9zc1NpdGVM
b2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUuc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyh0cnVlLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKLSAg
ICBzdG9yZS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc0ZvclRlc3RpbmcoZmFsc2UsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhmYWxzZSwgZmFsc2UsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwog
ICAgIHN0b3JlLnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzOjpObywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUuc2V0VXNlSVRQRGF0YWJhc2UoZmFsc2UsIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaAppbmRleCAyM2ZjMmU3MjZmOTIwZjFhYjNkZjllZDBkMjdmZDA2MWFjMjk3MTRhLi4xMjEx
OWE1NDI4OWRmMWVlMWU3ZDNhZTZjY2NjNWE3ZWVjNjc4N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTIw
LDcgKzEyMCw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlCiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
RG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1
bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
Rm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwotV0tfRVhQT1JUIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wg
ZW5hYmxlZCwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHZvaWQqIGNv
bnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVy
KTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNGM0MWM5MzhhODY3ZGFjNjAyMjdl
ZTQwZDY3NWM5NmY0ZDRmMTgzNS4uNDVhZWJhNDAyMzI1MTJhMzlhOWE3NjRjZDJhZjM0MzU1ZjA2
YTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDU3LDE0ICsxMDU3LDE0IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wg
ZW5hYmxlZCwgQ29tCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2Uo
KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZW5h
YmxlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGJsb2NraW5nTW9kZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCmluZGV4IGI3N2NlN2QzZTZhZmVlMTFhZTYyMDA5Y2Y2OWVjZjRiNzAwY2Q1
N2EuLjBjNjlhNzZiNzY1ODdlOTVhNmNlN2Y0YTg4MjNiNWNiYzk4M2Y5MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJ
blVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNl
c3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZl
cnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQo
Ym9vbCBiYWNrZ3JvdW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBlOGFjNjdkNGIwMzBkMzVlM2E4NjIzZGVhNjNlNzFhMTdjNzhlNjk5Li5mZjFm
OWQ1ZDUyMmU0MmJkOWEwYjQ5YjdlOGIzZjc2OGQ2OTljYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NzMsNyArNTczLDcgQEAgTmV0d29ya1By
b2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVE
YXRhU3RvcmUqIHdpdGgKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dU
ZXN0aW5nRXZlbnQgPSBmYWxzZTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSB0
cnVlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZh
bHNlOwotICAgIGJvb2wgZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gZmFsc2U7Cisg
ICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxs
T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIGlmICh3aXRoV2Vic2l0ZURh
dGFTdG9yZSkgewogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gd2l0aFdl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CkBAIC01ODQs
NyArNTg0LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5l
dHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgICAgIGF1dG8gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gd2l0aFdlYnNpdGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMo
KS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgICAgICAgICBzaG91bGRJbmNsdWRlTG9j
YWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJ
blJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7Ci0gICAgICAgICAgICBlbmFibGVUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nOworICAgICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwog
ICAgICAgICB9CiAKQEAgLTYwNSw3ICs2MDUsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAog
ICAgICAgICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgICAgICAg
ICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAgICAgICBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7Ci0gICAgICAgICAg
ICBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMuZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOworICAgICAgICAgICAgdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2Ug
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFBy
ZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKQEAgLTYyOSw3ICs2MjksNyBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2l0aAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dUZXN0aW5nRXZlbnQgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2
ZW50OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBzaG91bGRJbmNsdWRlTG9jYWxob3N0OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOwotICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IGVuYWJs
ZVRoaXJkUGFydHlDb29raWVCbG9ja2luZzsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlID0gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBtYW51YWxQcmV2YWxl
bnRSZXNvdXJjZTsKIAogICAgIC8vIEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDA3MTk5ZWNhY2RjYjQ3
NjQ5MDc0MzMyOGU5ODljYmFjNWJhYjRjYWIuLjI5MDRiMDdlMjFkYjVkMzdlNGNiY2M5MDRlYTI5
Y2QyYTgyNWFmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTMy
LDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2ltcG9ydCAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaD4KQEAgLTY5LDE0ICs3MCwxNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBOU1VzZXJEZWZhdWx0cyAq
ZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIGJv
b2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKLSAgICBib29sIGVuYWJsZVRo
aXJkUGFydHlDb29raWVCbG9ja2luZyA9IGZhbHNlOworICAgIGF1dG8gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6Ok9u
bHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeTsKICAgICBib29sIGVuYWJsZUxlZ2FjeVRMUyA9
IHRydWU7CiAgICAgaWYgKGlkIHZhbHVlID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpAIldlYktp
dEVuYWJsZUxlZ2FjeVRMUyJdKQogICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9v
bFZhbHVlXTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZSA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiSVRQRGVidWdNb2RlIl07Ci0gICAgZW5hYmxlVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc1Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XV07CisgICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdFbmFibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQorICAgICAg
ICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTo6QWxsOworICAgIGVsc2UKKyAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9u
U2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOwogICAgIGF1dG8qIG1hbnVhbFByZXZhbGVudFJl
c291cmNlID0gW2RlZmF1bHRzIHN0cmluZ0ZvcktleTpAIklUUE1hbnVhbFByZXZhbGVudFJlc291
cmNlIl07CiAgICAgaWYgKG1hbnVhbFByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIFVSTCB1
cmwgeyBVUkwoKSwgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgfTsKQEAgLTE0MCw3ICsxNDQsNyBA
QCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJz
KCkKICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpLAogICAgICAgICBzaG91
bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLAogICAgICAgICBlbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlLAotICAgICAgICBlbmFibGVUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcsCisgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
CiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Vu
YWJsZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRCeURldmlj
ZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCiAgICAgICAgIFdURk1vdmUocmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggYWMyZjM4ZDdlZGI1NGY3YTI0YWJhZDNkYTQ0ZTU2ZDhlZDM2MTc5ZC4uZTY1NGU3
NDMxODE3YmRlMjk5MzQxMDE1Y2E4YjM3YTcxMGMyYzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxNZWRpYUVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CkBAIC0xNzg3LDEzICsxNzg4LDE2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluCiAgICAgQVNT
RVJUKCFjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBib29s
IG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgIAorICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tp
bmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6T25seUFjY29y
ZGluZ1RvUGVyRG9tYWluUG9saWN5OworICAgIGlmIChlbmFibGVkKQorICAgICAgICBibG9ja2lu
Z01vZGUgPSBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPyBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlv
biA6IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKKwogICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0
byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgewotICAg
ICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKG1fc2Vzc2lvbklELCBlbmFibGVkLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9j
ZXNzLT5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25J
RCwgYmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKICAgICAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMoKS5zaXpl
KCkgPT0gMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4
IGY1ZWU0MjIwN2RhMjBmOTI3NjFhZGIxMDI1Mzk2Y2QxY2E4MWVmOTAuLjQ0ZjRmZGQ3MGQyZDc3
ZTNmZWJiYThhOWFiNDVkYWU4Yzk3Mjc0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE5NCw3ICsxOTQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKGNvbnN0IFVS
TCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgaGFz
SXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBjb25zdDsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
aG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgYm9vbCBvbmx5T25TaXRlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5k
aWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzI1
ZGE2ZGVmMWU0YjFmNzJlYTJmOWFmMzY1Y2ExNTBlZWZmMzQzZC4uN2NkNjFkMDFiNmYwY2EzMDA5
Yjg5Nzg1OTgxM2M4YTk0NmY0MzQ5YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTExLTIyICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNldHRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQzODkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzQ0MDU0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsbG93cyB0aGUgZXhpc3Rp
bmcgVGVzdFJ1bm5lciBmdW5jdGlvbgorICAgICAgICBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcygpIHRvIHNldCBhbiBvcHRpb25hbCBib29sZWFuCisgICAgICAgIHBh
cmFtZXRlciBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gdG8gb3B0IGluIHRvIHRo
YXQgYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwog
MjAxOS0xMS0yMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBD
cm9zcy10aHJlYWQgdmVyc2lvbiBTdG9yYWdlUXVvdGFNYW5hZ2VyCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAppbmRleCBiMmVjOGM2Yjc2MDZhOGYwODhkN2U0OTMzZTUyN2QyNzBlYTcwMDI1Li4w
ODk4OWJmNzRmZTY1ZTUxMDNlNWI0YWRkNTEwOGU1OGQ0ZWMwNjdlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKQEAgLTM0Miw3ICszNDIsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAg
ICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlv
bkhhbmRsZXIpOwogICAgIGJvb2xlYW4gaGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihET01T
dHJpbmcgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJl
ZmVycmVyKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7Ci0gICAgdm9pZCBzZXRTdGF0
aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3Qg
Y2FsbGJhY2spOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBib29sZWFuIG9u
bHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAKICAgICAvLyBJbmplY3RlZCBidW5k
bGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4dERpZENoYW5nZUluVGV4dEZpZWxk
Q2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDMwMjViOWE1ZGVmOWY0Zjkz
OGFmMzU2Mzk2NTgxZmE5OGVjZmIxM2UuLjI4NGJiODg5YWNhODI1MGRhODJjZjI3MWViNzcwNzNl
OGFmZDg1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0Z1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDVGVzdFJ1bm5lclV0aWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg+CkBAIC0yMjIzLDEzICsyMjI0LDE1IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckNhbGxiYWNr
KCkKICAgICBtX2hhc1NldERvd25ncmFkZVJlZmVycmVyQ2FsbGJhY2sgPSBmYWxzZTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
cyhib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBUZXN0UnVu
bmVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVl
LCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbikKIHsKICAgICBpZiAobV9oYXNTZXRCbG9ja1RoaXJkUGFydHlDb29raWVz
Q2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGNhY2hlVGVzdFJ1bm5lckNh
bGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJh
Y2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIikpOworICAgIGlmIChvbmx5T25T
aXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiIpKTsKICAgICBX
S1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUodmFsdWUpKTsKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogICAgIG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5Q29va2ll
c0NhbGxiYWNrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNjQyYzU5ZGJlZTIzZDlkZTc5ZWUxODc3NmIyNWNl
YTMxNWZhMWU2NC4uNWYzY2JlODczYTNiMTVhY2FkYjZiZTMwZGY1YWRjNjMxYTcwYWQ1MSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzSXNv
bGF0ZWRTZXNzaW9uKEpTU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJDYWxsYmFj
aygpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMo
Ym9vbCwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrLCBi
b29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2FsbERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpOwogICAg
IHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50
U3RhdGVDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAppbmRleCAyOTIxNGJmZTNmYWFiZDY4NDVlM2E5MTI5NGVhMGJkY2FkNzJhNTQyLi44MDhkMzhk
ZDUyYmNlZDk5Yzc3YTdlODNhMjNlODJmZDY3ZGMxZGU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzU3NiwxMCArMzU3NiwxMCBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoYm9vbCB2YWx1
ZSkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
cigpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgYm9vbCBvbmx5
T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pCiB7CiAgICAgUmVzb3VyY2VTdGF0aXN0aWNz
Q2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwotICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSwgJmNvbnRleHQs
IHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksIHZhbHVlLCBv
bmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sICZjb250ZXh0LCByZXNvdXJjZVN0YXRp
c3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOwogICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9U
aW1lb3V0KTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
aW5kZXggYWQ3MWM4NjhjMDJmZTU4YmI5YTgzOTI3OGYwZmRiM2YxYWRlYmUzZi4uMmE1MGQzNDcz
NjU5MzI0ZDgwM2JhMTNjM2IyOWI2NjAwYmNmZWVhNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgYm9vbCBoYXNT
dGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sIHZhbHVlKTsKLSAgICB2
b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUp
OworICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9v
bCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZv
aWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKaW5kZXggNWJiZWI1NzdkZmRiNTA0MjU0YWFmNjgwYTliOGY0OTJlNDg1NzUzMy4u
N2IyN2RhMTc1NmM2ZmRmZDVlN2ZjNDg2YzVlZWE3YjljYzVlYjRlMSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE1NDksMTAgKzE1NDksMTcgQEAgV0tS
ZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNPblNpdGVzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkg
PT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIikp
IHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5H
ZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFu
R2V0VmFsdWUodmFsdWUpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVl
KHZhbHVlKSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggM2M3OTk2YTM0MzQyNTE1NzY3YzU5ZTFjODJlMmFhN2FiZTliYmQyNS4uYzJjMWRjZDk4
ZWRjMmIxMjg1ODBkMmZmYzJlNzJhMzhlMGYzOTFkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDE5LTExLTIyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29v
a2llIGJsb2NraW5nIHNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDQzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MzQ0MDU0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBhZGRl
ZCB0ZXN0cyBleGlzdGVkIGJlZm9yZSBhbmQgYXJlIG5vdCByZS1pbnRyb2R1Y2VkIHRvIHRlc3Qg
dGhlaXIgZGVkaWNhdGVkIHNldHRpbmcuCisKKyAgICAgICAgVGhlIGNoYW5nZWQgdGVzdHMgaGF2
ZSBiZWVuIGV4cGFuZGVkIHRvIGNvdmVyIHRoZSBuZXcgY29kZSBwYXRocy4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5n
LW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtdW5kZXItZ2VuZXJh
bC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZGF0YWJhc2UtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1n
ZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5l
cmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXVuZGVyLWdlbmVyYWwt
dGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5
LWNvb2tpZS1ibG9ja2luZy13aXRoLWNvb2tpZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy11bmRlci1n
ZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy13aXRoLWNvb2tpZS1kYXRhYmFzZS5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nl
c3MtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3Rv
cmFnZS1hY2Nlc3MtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0
aC1jb29raWUuaHRtbDoKKwogMjAxOS0xMS0yMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICAoIHIyNTE3MzcgKSBtZWRpYS9yZW1vdGVwbGF5YmFjay1w
cm9tcHQuaHRtbCBpcyBhIGZsYWtleSB0aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2Nr
aW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1k
YXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkwOGM4ZTRiZGZjZjk5ZmZjMDU5Yjc3
MGNiZTMzYTMwMWVkYmY2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIzIEBACitUZXN0cyB0aGF0IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9j
a2VkIHVuZGVyIHdlYnNpdGVzIHRoYXQgaGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlv
bi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEt
LWZyYW1lMS0tPicKKy0tLS0tLS0tCitCZWZvcmUgdXNlciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJl
Y2VpdmUgbm8gY29va2llcy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFy
dHlDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJh
bWU6ICc8IS0tZnJhbWUyLS0+JworLS0tLS0tLS0KK0FmdGVyIHVzZXIgaW50ZXJhY3Rpb24sIHNo
b3VsZCByZWNlaXZlIGZpcnN0LXBhcnR5IGNvb2tpZS4KK1JlY2VpdmVkIGNvb2tpZSBuYW1lZCAn
Zmlyc3RQYXJ0eUNvb2tpZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6IGZpcnN0UGFy
dHlDb29raWU9dmFsdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0
aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9u
LXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3YWUwNzM1ZjQwNTYwMmMzZDA1N2E3NjAzNjQ5ZjQzNjdkYjExOTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1k
YXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFu
Zz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhbGwgdGhpcmQtcGFydHkgY29va2ll
cyBhcmUgYmxvY2tlZCB1bmRlciB3ZWJzaXRlcyB0aGF0IGhhdmUgbm90IHJlY2VpdmVkIHVzZXIg
aW50ZXJhY3Rpb24uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBw
YXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBwYXJ0aXRpb25Pcmln
aW4gPSAiaHR0cDovLyIgKyBwYXJ0aXRpb25Ib3N0OworICAgIGNvbnN0IHRoaXJkUGFydHlPcmln
aW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCByZXNvdXJjZVBhdGggPSAi
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5
QmFzZVVybCA9IHRoaXJkUGFydHlPcmlnaW4gKyByZXNvdXJjZVBhdGg7CisgICAgY29uc3QgZmly
c3RQYXJ0eUNvb2tpZU5hbWUgPSAiZmlyc3RQYXJ0eUNvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0
aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICIvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgZmlyc3RQ
YXJ0eUNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlIjsKKyAgICBjb25zdCByZXR1cm5VcmwgPSBw
YXJ0aXRpb25PcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29v
a2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5o
dG1sIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29raWVzID0gIi9nZXQtY29va2llcy5waHA/
bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lOworCisgICAgZnVuY3Rpb24gb3BlbklmcmFt
ZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsKKyAg
ICAgICAgaWYgKG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0g
b25Mb2FkSGFuZGxlcjsKKyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAiI3N0
ZXAxIjoKKyAgICAgICAgICAgICAgICAvLyBTZXQgZmlyc3QtcGFydHkgY29va2llIGZvciBsb2Nh
bGhvc3QuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRoaXJkUGFy
dHlCYXNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIjIiArIHJldHVyblVy
bCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAi
I3N0ZXAyIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAz
IjsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb29raWUgaXMgYmxvY2tlZCBm
b3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBldmVuIHRob3VnaCBsb2NhbGhvc3QgaXMgbm90
IHByZXZhbGVudC4KKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1CZWZvcmUgdXNlciBpbnRlcmFjdGlv
biwgc2hvdWxkIHJlY2VpdmUgbm8gY29va2llcy4iLCBydW5UZXN0KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwNCI7CisgICAgICAgICAgICAgICAgLy8gUHJvZHVj
ZSB1c2VyIGludGVyYWN0aW9uIGZvciB0aGUgZmlyc3QtcGFydHkgdG8gYWxsb3cgdGhpcmQtcGFy
dHkgY29va2llIGFjY2Vzcy4KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ocGFydGl0aW9uT3JpZ2luLCB0cnVlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2ll
QmxvY2tpbmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB0
aGF0IHRoZSBjb29raWUgaXMgbm8gbG9uZ2VyIGJsb2NrZWQgZm9yIGxvY2FsaG9zdCB1bmRlciAx
MjcuMC4wLjEuCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlC
YXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICAiJm1lc3NhZ2U9QWZ0ZXIgdXNlciBpbnRl
cmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgZmlyc3QtcGFydHkgY29va2llLiIsIHJ1blRlc3QpOwor
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhmYWxz
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFs
c2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFz
aCA9PT0gIiIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsK
KyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5
T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNz
aWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAg
ICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHRydWUsIHJ1blRl
c3QsIHRydWUpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7
CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13
aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MDhjOGU0
YmRmY2Y5OWZmYzA1OWI3NzBjYmUzM2EzMDFlZGJmNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29v
a2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMyBAQAorVGVzdHMgdGhhdCBhbGwgdGhpcmQtcGFydHkgY29va2llcyBh
cmUgYmxvY2tlZCB1bmRlciB3ZWJzaXRlcyB0aGF0IGhhdmUgbm90IHJlY2VpdmVkIHVzZXIgaW50
ZXJhY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZTEtLT4nCistLS0tLS0tLQorQmVmb3JlIHVzZXIgaW50ZXJhY3Rpb24sIHNo
b3VsZCByZWNlaXZlIG5vIGNvb2tpZXMuCitEaWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdm
aXJzdFBhcnR5Q29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tpZToKKworLS0tLS0t
LS0KK0ZyYW1lOiAnPCEtLWZyYW1lMi0tPicKKy0tLS0tLS0tCitBZnRlciB1c2VyIGludGVyYWN0
aW9uLCBzaG91bGQgcmVjZWl2ZSBmaXJzdC1wYXJ0eSBjb29raWUuCitSZWNlaXZlZCBjb29raWUg
bmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQuY29va2llOiBm
aXJzdFBhcnR5Q29va2llPXZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNp
dGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1z
aXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTIxMTRhOTMx
Nzg0NjkxMzRjZmE5NjdlOWVhNmQyYWFmYmEzMTcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tp
ZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbApAQCAtMCww
ICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAg
IDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQgdW5kZXIg
d2Vic2l0ZXMgdGhhdCBoYXZlIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLiIpOworICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgcGFydGl0aW9uSG9zdCA9ICIxMjcu
MC4wLjE6ODAwMCI7CisgICAgY29uc3QgcGFydGl0aW9uT3JpZ2luID0gImh0dHA6Ly8iICsgcGFy
dGl0aW9uSG9zdDsKKyAgICBjb25zdCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CisgICAgY29uc3QgcmVzb3VyY2VQYXRoID0gIi9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUJhc2VVcmwgPSB0aGlyZFBhcnR5
T3JpZ2luICsgcmVzb3VyY2VQYXRoOworICAgIGNvbnN0IGZpcnN0UGFydHlDb29raWVOYW1lID0g
ImZpcnN0UGFydHlDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29r
aWUgPSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIGZpcnN0UGFydHlDb29raWVOYW1lICsgIiZ2
YWx1ZT12YWx1ZSI7CisgICAgY29uc3QgcmV0dXJuVXJsID0gcGFydGl0aW9uT3JpZ2luICsgIi9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRl
cy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCI7CisgICAgY29uc3Qgc3ViUGF0aFRvR2V0
Q29va2llcyA9ICIvZ2V0LWNvb2tpZXMucGhwP25hbWUxPSIgKyBmaXJzdFBhcnR5Q29va2llTmFt
ZTsKKworICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRIYW5kbGVyKSB7CisgICAg
ICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAg
ICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbkxvYWRIYW5kbGVyKSB7Cisg
ICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7CisgICAgICAgIH0KKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhh
c2gpIHsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6CisgICAgICAgICAgICAgICAgLy8gU2V0
IGZpcnN0LXBhcnR5IGNvb2tpZSBmb3IgbG9jYWxob3N0LgorICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhyZWYgPSB0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb1NldEZpcnN0
UGFydHlDb29raWUgKyAiIyIgKyByZXR1cm5VcmwgKyAiI3N0ZXAyIjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMyI7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgY29va2llIGlzIGJsb2NrZWQgZm9yIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4wLjEg
ZXZlbiB0aG91Z2ggbG9jYWxob3N0IGlzIG5vdCBwcmV2YWxlbnQuCisgICAgICAgICAgICAgICAg
b3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMgKyAiJm1l
c3NhZ2U9QmVmb3JlIHVzZXIgaW50ZXJhY3Rpb24sIHNob3VsZCByZWNlaXZlIG5vIGNvb2tpZXMu
IiwgcnVuVGVzdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIj
c3RlcDMiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDQi
OworICAgICAgICAgICAgICAgIC8vIFByb2R1Y2UgdXNlciBpbnRlcmFjdGlvbiBmb3IgdGhlIGZp
cnN0LXBhcnR5IHRvIGFsbG93IHRoaXJkLXBhcnR5IGNvb2tpZSBhY2Nlc3MuCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHBhcnRp
dGlvbk9yaWdpbiwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29va2llIGlzIG5vIGxvbmdlciBi
bG9ja2VkIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xLgorICAgICAgICAgICAgICAgICAg
ICAgICAgb3BlbklmcmFtZSh0aGlyZFBhcnR5QmFzZVVybCArIHN1YlBhdGhUb0dldENvb2tpZXMg
KyAgIiZtZXNzYWdlPUFmdGVyIHVzZXIgaW50ZXJhY3Rpb24sIHNob3VsZCByZWNlaXZlIGZpcnN0
LXBhcnR5IGNvb2tpZS4iLCBydW5UZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
ICIjc3RlcDQiOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPT09ICIiKSB7CisgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQYXJ0eU9yaWdpbikpCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiTG9jYWxob3N0IHdhcyBjbGFzc2lmaWVkIGFzIHByZXZhbGVu
dCByZXNvdXJjZSBiZWZvcmUgdGhlIHRlc3Qgc3RhcnRzLiIpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0
aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0cnVlLCBydW5UZXN0LCB0cnVlKTsKKyAgICAg
ICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0KKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21w
dC11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0
aC1wcm9tcHQtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZGF0YWJh
c2UtZXhwZWN0ZWQudHh0CmluZGV4IDU2ZjBmMDM4YThjOTNjNTg4ZmZjODBmYWNjZjM1YmU5MmQ5
YWYyNDcuLjMxM2U4NzlmNGQzNTJkY2FkM2ZjNzhhNDVkMWMxZjNhYWQ3ZGZlNGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21w
dC11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2dyYW50
LXdpdGgtcHJvbXB0LXVuZGVyLWdlbmVyYWwtdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDcgQEAgVGVzdHMgdGhhdCBhIGNyb3NzLXNp
dGUgaWZyYW1lIGNhbiByZXF1ZXN0IGFuZCBiZSBncmFudGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVy
IGcKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIFN0b3JhZ2UgYWNjZXNzIHdh
cyBncmFudGVkLiBkb2N1bWVudC5jb29raWUgPT0gZmlyc3RQYXJ0eUNvb2tpZT12YWx1ZSwgY29v
a2llcyBzZWVuIHNlcnZlci1zaWRlID09IHsiZmlyc3RQYXJ0eUNvb2tpZSI6InZhbHVlIn0KIFBB
U1MgU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQuIGRvY3VtZW50LmNvb2tpZSA9PSBmaXJzdFBh
cnR5Q29va2llPXZhbHVlLCBjb29raWVzIHNlZW4gc2VydmVyLXNpZGUgPT0geyJmaXJzdFBhcnR5
Q29va2llIjoidmFsdWUifQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1w
cm9tcHQtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZGF0YWJhc2Uu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXBy
b21wdC11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS5o
dG1sCmluZGV4IDFhYjBlMmU5NTc4ZWExMmQ2YTBmNTViZWI4MjA2YzhhMGI0NDExNzYuLmMwY2Jk
YzgwYmFmNjkzMzMwMTdiMTdmODU2M2Q0ZGI4YWNmZmFkOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5l
cmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1n
ZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS5odG1sCkBAIC0yMCw5
ICsyMCwyNCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVw
bGFjZSgiRkFJTCAiLCAiIikpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46
ICIgKyBldmVudC5vcmlnaW4pOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpIHsK
KyAgICAgICAgICAgICAgICBjYXNlICIjZmlyc3RUZXN0IjoKKyAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzZWNvbmRUZXN0IjsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQ2xlYXIgYWxsIGRhdGEgc28gdGhhdCB0aGUgcHJldmlvdXMgZ3JhbnQgZG9lc24ndCBj
b3VudCB0b3dhcmQgdGhlIG5leHQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShydW5UZXN0KTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAiI3NlY29uZFRl
c3QiOgorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJNZXNzYWdlIGhh
bmRsZXIgY2FsbGVkIHVuZGVyIHVua25vd24gY2lyY3Vtc3RhbmNlcy4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKQEAgLTUyLDMwICs2Nyw1MSBA
QAogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAg
IGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoICE9PSAiI2Nvb2tpZVNldCIpIHsKLSAgICAgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhpcmRQYXJ0eVVybCArICIvc3RvcmFn
ZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFtZT1maXJzdFBhcnR5Q29va2llJnZh
bHVlPXZhbHVlIyIgKyBmaXJzdFBhcnR5VXJsICsgIi9zdG9yYWdlQWNjZXNzL2dyYW50LXdpdGgt
cHJvbXB0LXVuZGVyLWdlbmVyYWwtdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLWRhdGFiYXNl
Lmh0bWwjY29va2llU2V0IjsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodGhpcmRQYXJ0eVVy
bCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUaGlyZC1wYXJ0eSBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oZmlyc3RQYXJ0eVVybCwgdHJ1ZSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKGZpcnN0UGFydHlVcmwpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZpcnN0LXBhcnR5IGRpZCBub3QgZ2V0IGxv
Z2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZG9jdW1l
bnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAg
ICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhpcmRQYXJ0eVVybCArICIv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/ZHVtbXk9IiArIE1hdGgucmFu
ZG9tKCkgKyAiJm5hbWU9Zmlyc3RQYXJ0eUNvb2tpZSZ2YWx1ZT12YWx1ZSMiICsgZmlyc3RQYXJ0
eVVybCArICIvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5lcmFsLXRo
aXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1kYXRhYmFzZS5odG1sI2ZpcnN0VGVzdCI7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlICIjZmlyc3RUZXN0IjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVzdCB0
aGF0IHRoZSByZXF1ZXN0IGlzIGdyYW50ZWQgaWYgdGhpcmQtcGFydHkgY29va2llcyBhcmUgYmxv
Y2tlZCB1bmRlciBmaXJzdC1wYXJ0aWVzIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAgLy8g
dXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHRoaXJkUGFydHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIlRoaXJkLXBhcnR5IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oZmlyc3RQYXJ0eVVybCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiRmlyc3QtcGFydHkgd2FzIGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hh
ZFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlVcmwpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJUaGlyZC1wYXJ0eSBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVz
ZXIgaW50ZXJhY3Rpb24uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFt
ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoIlRoZUlmcmFtZVRo
YXRSZXF1ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0aXZhdGVFbGVtZW50KCJUaGVGaXJzdElmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nl
c3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFn
ZUFjY2VzcyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMg
PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qt
c3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91
bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJh
bWUiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhl
Rmlyc3RJZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3Rv
cmFnZUFjY2Vzcy9yZXNvdXJjZXMvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbD9k
dW1teT0iICsgTWF0aC5yYW5kb20oKSArICIjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91
bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJh
bWUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IH0sIHRydWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlICIjc2Vjb25kVGVzdCI6CisgICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCB0aGUg
cmVxdWVzdCBpcyBncmFudGVkIGlmIHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQgdW5j
b25kaXRpb25hbGx5LgorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UodGhpcmRQYXJ0eVVybCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiVGhpcmQtcGFydHkgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFj
dGlvbih0aGlyZFBhcnR5VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKHRoaXJkUGFydHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJUaGlyZC1wYXJ0eSBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rp
b24uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoIlRoZVNlY29uZElmcmFtZVRoYXRSZXF1
ZXN0c1N0b3JhZ2VBY2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlU2Vjb25kSWZy
YW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw/ZHVtbXk9IiAr
IE1hdGgucmFuZG9tKCkgKyAiI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkQmVDb25z
dWx0ZWQscG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZyYW1lIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFt
ZUVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5lcmFsLXRoaXJk
LXBhcnR5LWNvb2tpZS1ibG9ja2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1wcm9tcHQtdW5kZXItZ2VuZXJhbC10aGlyZC1w
YXJ0eS1jb29raWUtYmxvY2tpbmctZXhwZWN0ZWQudHh0CmluZGV4IDU2ZjBmMDM4YThjOTNjNTg4
ZmZjODBmYWNjZjM1YmU5MmQ5YWYyNDcuLjMxM2U4NzlmNGQzNTJkY2FkM2ZjNzhhNDVkMWMxZjNh
YWQ3ZGZlNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9j
a2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL2dyYW50LXdpdGgtcHJvbXB0LXVuZGVyLWdlbmVyYWwtdGhpcmQtcGFydHktY29va2llLWJs
b2NraW5nLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDcgQEAgVGVzdHMgdGhhdCBhIGNyb3NzLXNp
dGUgaWZyYW1lIGNhbiByZXF1ZXN0IGFuZCBiZSBncmFudGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVy
IGcKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIFN0b3JhZ2UgYWNjZXNzIHdh
cyBncmFudGVkLiBkb2N1bWVudC5jb29raWUgPT0gZmlyc3RQYXJ0eUNvb2tpZT12YWx1ZSwgY29v
a2llcyBzZWVuIHNlcnZlci1zaWRlID09IHsiZmlyc3RQYXJ0eUNvb2tpZSI6InZhbHVlIn0KIFBB
U1MgU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQuIGRvY3VtZW50LmNvb2tpZSA9PSBmaXJzdFBh
cnR5Q29va2llPXZhbHVlLCBjb29raWVzIHNlZW4gc2VydmVyLXNpZGUgPT0geyJmaXJzdFBhcnR5
Q29va2llIjoidmFsdWUifQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZ3JhbnQtd2l0aC1w
cm9tcHQtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRl
ci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy5odG1sCmluZGV4IDJmMWZiNDNm
ZmY0NTJmMjc0YmVhNjc2NWYzZWRlODQxNzUxOTQ4MzAuLmI0ZWVhYjZjNTM4NzQwY2I2Mjg0YTJm
MDkzMWE2Yzk5YjU0ZTIyODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNv
b2tpZS1ibG9ja2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1i
bG9ja2luZy5odG1sCkBAIC0xOSw5ICsxOSwyNCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20g
YW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOwotICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmlu
aXNoSlNUZXN0KTsKLSAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzd2l0Y2ggKGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAgICAgICAgICBjYXNlICIjZmlyc3RUZXN0IjoK
KyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzZWNvbmRUZXN0
IjsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgYWxsIGRhdGEgc28gdGhhdCB0aGUgcHJl
dmlvdXMgZ3JhbnQgZG9lc24ndCBjb3VudCB0b3dhcmQgdGhlIG5leHQgdGVzdC4KKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZShydW5UZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAiI3NlY29uZFRlc3QiOgorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZp
bmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJNZXNzYWdlIGhhbmRsZXIgY2FsbGVkIHVuZGVyIHVua25vd24gY2lyY3Vtc3Rh
bmNlcy4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNl
KTsKQEAgLTUxLDMwICs2Niw1MSBAQAogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoICE9PSAiI2Nv
b2tpZVNldCIpIHsKLSAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhp
cmRQYXJ0eVVybCArICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFt
ZT1maXJzdFBhcnR5Q29va2llJnZhbHVlPXZhbHVlIyIgKyBmaXJzdFBhcnR5VXJsICsgIi9zdG9y
YWdlQWNjZXNzL2dyYW50LXdpdGgtcHJvbXB0LXVuZGVyLWdlbmVyYWwtdGhpcmQtcGFydHktY29v
a2llLWJsb2NraW5nLmh0bWwjY29va2llU2V0IjsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
dGhpcmRQYXJ0eVVybCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUaGly
ZC1wYXJ0eSBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oZmlyc3RQYXJ0
eVVybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKGZpcnN0UGFydHlVcmwp
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZpcnN0LXBhcnR5IGRp
ZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgIHN3
aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgICAgIGNhc2UgIiI6
CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhpcmRQ
YXJ0eVVybCArICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/ZHVtbXk9
IiArIE1hdGgucmFuZG9tKCkgKyAiJm5hbWU9Zmlyc3RQYXJ0eUNvb2tpZSZ2YWx1ZT12YWx1ZSMi
ICsgZmlyc3RQYXJ0eVVybCArICIvc3RvcmFnZUFjY2Vzcy9ncmFudC13aXRoLXByb21wdC11bmRl
ci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy5odG1sI2ZpcnN0VGVzdCI7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlICIjZmlyc3RUZXN0IjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVz
dCB0aGF0IHRoZSByZXF1ZXN0IGlzIGdyYW50ZWQgaWYgdGhpcmQtcGFydHkgY29va2llcyBhcmUg
YmxvY2tlZCB1bmRlciBmaXJzdC1wYXJ0aWVzIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAg
Ly8gdXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHRoaXJkUGFydHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlRoaXJkLXBhcnR5IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKGZpcnN0UGFydHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJGaXJzdC1wYXJ0eSB3YXMgbG9nZ2VkIGZvciB1c2VyIGlu
dGVyYWN0aW9uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5VXJsLCB0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih0aGlyZFBhcnR5VXJsKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRoaXJkLXBhcnR5IGRp
ZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxl
bWVudC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFjdGl2YXRlRWxlbWVudCgiVGhlRmlyc3RJZnJhbWVUaGF0UmVxdWVzdHNTdG9yYWdl
QWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlRmlyc3RJZnJhbWVU
aGF0UmVxdWVzdHNTdG9yYWdlQWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw/ZHVtbXk9IiAr
IE1hdGgucmFuZG9tKCkgKyAiI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hvdWxkQmVDb25z
dWx0ZWQscG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZyYW1lIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
ZnJhbWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgIiNzZWNvbmRUZXN0IjoKKyAgICAgICAgICAgICAgICAgICAgLy8gVGVz
dCB0aGF0IHRoZSByZXF1ZXN0IGlzIGdyYW50ZWQgaWYgdGhpcmQtcGFydHkgY29va2llcyBhcmUg
YmxvY2tlZCB1bmNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXModHJ1ZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5VXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJUaGlyZC1wYXJ0eSBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlVcmwsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24odGhpcmRQYXJ0eVVybCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlRoaXJkLXBhcnR5IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNl
ciBpbnRlcmFjdGlvbi4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1l
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgiVGhlSWZyYW1lVGhh
dFJlcXVlc3RzU3RvcmFnZUFjY2VzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhY3RpdmF0ZUVsZW1lbnQoIlRoZVNlY29uZElmcmFtZVRoYXRSZXF1ZXN0c1N0b3JhZ2VBY2Nl
c3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhlSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFn
ZUFjY2VzcyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMg
PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qt
c3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwjdXNlclNob3VsZEdyYW50QWNjZXNzLHVzZXJTaG91
bGRCZUNvbnN1bHRlZCxwb2xpY3lTaG91bGRHcmFudEFjY2Vzcyxpc05vdFNhbWVPcmlnaW5JZnJh
bWUiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiVGhl
U2Vjb25kSWZyYW1lVGhhdFJlcXVlc3RzU3RvcmFnZUFjY2VzcyI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw/
ZHVtbXk9IiArIE1hdGgucmFuZG9tKCkgKyAiI3VzZXJTaG91bGRHcmFudEFjY2Vzcyx1c2VyU2hv
dWxkQmVDb25zdWx0ZWQscG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MsaXNOb3RTYW1lT3JpZ2luSWZy
YW1lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGlmcmFtZUVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICB9LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXVuZGVyLWdlbmVyYWwtdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLXdpdGgtY29va2llLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3Mt
dW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUtZGF0
YWJhc2UtZXhwZWN0ZWQudHh0CmluZGV4IGVjOGUzZGJhNTI3ZDgzZTE5NDlhMmVkOTM2MDg4MWQ2
YWUxMjJmNWUuLmNiMTcxMDNkOWUxYjBhNzRmNDI2MmMzN2I5Yjg1OWU0ODgwNDkwYTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1h
Y2Nlc3MtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29r
aWUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdW5kZXItZ2VuZXJhbC10aGlyZC1wYXJ0eS1j
b29raWUtYmxvY2tpbmctd2l0aC1jb29raWUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC04LDYg
KzgsNyBAQCBQQVNTIEhhcyBzdG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09IGZpcnN0
UGFydHlDb29raWU9dmFsdWUsIGNvb2tpZXMgc2VlbgogUEFTUyBIYXMgc3RvcmFnZSBhY2Nlc3Mu
IGRvY3VtZW50LmNvb2tpZSA9PSBmaXJzdFBhcnR5Q29va2llPXZhbHVlLCBjb29raWVzIHNlZW4g
c2VydmVyLXNpZGUgPT0geyJmaXJzdFBhcnR5Q29va2llIjoidmFsdWUifQogUEFTUyBObyBzdG9y
YWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09ICwgY29va2llcyBzZWVuIHNlcnZlci1zaWRl
ID09ICJObyBjb29raWVzIgogUEFTUyBObyBzdG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2ll
ID09ICwgY29va2llcyBzZWVuIHNlcnZlci1zaWRlID09ICJObyBjb29raWVzIgorUEFTUyBObyBz
dG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09ICwgY29va2llcyBzZWVuIHNlcnZlci1z
aWRlID09ICJObyBjb29raWVzIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXVuZGVyLWdlbmVyYWwtdGhpcmQtcGFydHktY29va2ll
LWJsb2NraW5nLXdpdGgtY29va2llLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXVuZGVyLWdlbmVyYWwtdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLXdpdGgtY29va2llLWRhdGFiYXNlLmh0bWwKaW5kZXggMGJl
NmYzYWU0MzllZmE0YmQ1NDA0ZDVjNmRjZDJkNjI1NTMzOTk0ZS4uYWNmNWRmMzhmZTUyMTM4OGZk
ZGYyMDVkMzgyYzI4ZDU1ODFjM2ZmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy11bmRlci1nZW5lcmFsLXRoaXJkLXBh
cnR5LWNvb2tpZS1ibG9ja2luZy13aXRoLWNvb2tpZS1kYXRhYmFzZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdW5kZXIt
Z2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUtZGF0YWJhc2Uu
aHRtbApAQCAtMjEsNiArMjEsNyBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2
ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAiLCAiIikpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBl
Y3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworCiAgICAgICAgICAgICBpZiAoZG9jdW1l
bnQubG9jYXRpb24uaGFzaCA9PT0gIiNsYXN0U3RlcCIpIHsKICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwg
ZmluaXNoSlNUZXN0KTsKQEAgLTUwLDcgKzUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMiI7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5v
IGdlbmVyYWwgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nLCBubyB1c2VyIGludGVyYWN0aW9u
LCBub3QgcHJldmFsZW50LgogICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgICAgICAgICAgICAgICAgICBp
ZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3Vy
Y2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xpY3lTaG91bGRHcmFudEFjY2Vz
cyI7CisgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gdGhpcmRQYXJ0eVVy
bCArICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5o
dG1sP2R1bW15PSIgKyBNYXRoLnJhbmRvbSgpICsgIiNwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7
CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2Ug
IiNzdGVwMiI6CkBAIC02MCw3ICs2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlV
cmwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRoaXJkLXBhcnR5
IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRo
aXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vz
cy1pZnJhbWUuaHRtbCNwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbD9kdW1teT0iICsgTWF0
aC5yYW5kb20oKSArICIjcG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MiOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzEsMjAg
KzcyLDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKGZpcnN0UGFydHlVcmwpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZpcnN0LXBhcnR5IGRpZCBub3QgZ2V0IGxvZ2dl
ZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBp
ZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0
b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xp
Y3lTaG91bGRHcmFudEFjY2VzcyI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVt
ZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1z
dG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbD9kdW1teT0iICsgTWF0aC5yYW5kb20oKSArICIjcG9s
aWN5U2hvdWxkR3JhbnRBY2Nlc3MiOwogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgIiNzdGVw
NCI6CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUi
OwotICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmFsIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9j
a2luZywgZmlyc3QtIGFuZCB0aGlyZC1wYXJ0eSB1c2VyIGludGVyYWN0aW9uLCBub3QgcHJldmFs
ZW50LgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcg
dW5kZXIgZmlyc3QtcGFydGllcyB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24sIG9ubHkgdGhpcmQt
cGFydHkgdXNlciBpbnRlcmFjdGlvbiwgbm90IHByZXZhbGVudC4KICAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0
cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xpY3lTaG91bGRO
b3RHcmFudEFjY2VzcyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbihmaXJzdFBhcnR5VXJsLCBmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKGZpcnN0UGFydHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJGaXJzdC1wYXJ0eSBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWZyYW1lRWxlbWVudC5zcmMgPSB0aGlyZFBhcnR5VXJsICsgIi9zdG9yYWdlQWNjZXNzL3Jlc291
cmNlcy9oYXMtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw/ZHVtbXk9IiArIE1hdGgucmFuZG9t
KCkgKyAiI3BvbGljeVNob3VsZE5vdEdyYW50QWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0sIHRydWUpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgor
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA2IjsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhbCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcs
IGZpcnN0LSBhbmQgdGhpcmQtcGFydHkgdXNlciBpbnRlcmFjdGlvbiwgbm90IHByZXZhbGVudC4K
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihmaXJzdFBh
cnR5VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKGZpcnN0UGFy
dHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJGaXJz
dC1wYXJ0eSBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVF
bGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hh
cy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbD9kdW1teT0iICsgTWF0aC5yYW5kb20oKSArICIj
cG9saWN5U2hvdWxkTm90R3JhbnRBY2Nlc3MiOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICIjc3RlcDYiOgogICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImxhc3RTdGVwIjsKICAgICAg
ICAgICAgICAgICAgICAgLy8gR2VuZXJhbCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcsIGZp
cnN0LSBhbmQgdGhpcmQtcGFydHkgdXNlciBpbnRlcmFjdGlvbiwgcHJldmFsZW50LgogICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0
aGlyZFBhcnR5VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKQEAgLTkyLDcgKzExMCw3IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGhpcmQtcGFydHkgbm90IHNldCBh
cyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlmcmFtZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1l
bnQuc3JjID0gdGhpcmRQYXJ0eVVybCArICIvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0
b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sI3BvbGljeVNob3VsZE5vdEdyYW50QWNjZXNzIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlV
cmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUu
aHRtbD9kdW1teT0iICsgTWF0aC5yYW5kb20oKSArICIjcG9saWN5U2hvdWxkTm90R3JhbnRBY2Nl
c3MiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXVuZGVyLWdlbmVyYWwtdGhpcmQtcGFydHktY29v
a2llLWJsb2NraW5nLXdpdGgtY29va2llLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdW5kZXItZ2VuZXJhbC10aGly
ZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUtZXhwZWN0ZWQudHh0CmluZGV4IGVj
OGUzZGJhNTI3ZDgzZTE5NDlhMmVkOTM2MDg4MWQ2YWUxMjJmNWUuLmNiMTcxMDNkOWUxYjBhNzRm
NDI2MmMzN2I5Yjg1OWU0ODgwNDkwYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdW5kZXItZ2VuZXJhbC10aGlyZC1w
YXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdW5kZXIt
Z2VuZXJhbC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUtZXhwZWN0ZWQu
dHh0CkBAIC04LDYgKzgsNyBAQCBQQVNTIEhhcyBzdG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29v
a2llID09IGZpcnN0UGFydHlDb29raWU9dmFsdWUsIGNvb2tpZXMgc2VlbgogUEFTUyBIYXMgc3Rv
cmFnZSBhY2Nlc3MuIGRvY3VtZW50LmNvb2tpZSA9PSBmaXJzdFBhcnR5Q29va2llPXZhbHVlLCBj
b29raWVzIHNlZW4gc2VydmVyLXNpZGUgPT0geyJmaXJzdFBhcnR5Q29va2llIjoidmFsdWUifQog
UEFTUyBObyBzdG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09ICwgY29va2llcyBzZWVu
IHNlcnZlci1zaWRlID09ICJObyBjb29raWVzIgogUEFTUyBObyBzdG9yYWdlIGFjY2Vzcy4gZG9j
dW1lbnQuY29va2llID09ICwgY29va2llcyBzZWVuIHNlcnZlci1zaWRlID09ICJObyBjb29raWVz
IgorUEFTUyBObyBzdG9yYWdlIGFjY2Vzcy4gZG9jdW1lbnQuY29va2llID09ICwgY29va2llcyBz
ZWVuIHNlcnZlci1zaWRlID09ICJObyBjb29raWVzIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXVuZGVyLWdlbmVyYWwtdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLXdpdGgtY29va2llLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLXVuZGVyLWdlbmVyYWwtdGhp
cmQtcGFydHktY29va2llLWJsb2NraW5nLXdpdGgtY29va2llLmh0bWwKaW5kZXggNjAzOTVjY2Ni
NjYyYzM5NmM4ZDMwNzc2ZGI2MDYyZWJiZTNkMzIwZS4uMDczMjUyOWIyYjRhNDQwZmU3YmNkODc3
ZTY4Y2U0ZjRiYWQxNGFmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy11bmRlci1nZW5lcmFsLXRoaXJkLXBhcnR5LWNv
b2tpZS1ibG9ja2luZy13aXRoLWNvb2tpZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtdW5kZXItZ2VuZXJhbC10aGlyZC1w
YXJ0eS1jb29raWUtYmxvY2tpbmctd2l0aC1jb29raWUuaHRtbApAQCAtMjAsNiArMjAsNyBAQAog
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEucmVwbGFjZSgiRkFJTCAi
LCAiIikpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
UmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5v
cmlnaW4pOworCiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiNs
YXN0U3RlcCIpIHsKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKQEAgLTQ5LDcg
KzUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJz
dGVwMiI7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGdlbmVyYWwgdGhpcmQtcGFydHkgY29v
a2llIGJsb2NraW5nLCBubyB1c2VyIGludGVyYWN0aW9uLCBub3QgcHJldmFsZW50LgogICAgICAg
ICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOwotICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJk
UGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1p
ZnJhbWUuaHRtbCNwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7CisgICAgICAgICAgICAgICAgICAg
IGlmcmFtZUVsZW1lbnQuc3JjID0gdGhpcmRQYXJ0eVVybCArICIvc3RvcmFnZUFjY2Vzcy9yZXNv
dXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sP2R1bW15PSIgKyBNYXRoLnJhbmRv
bSgpICsgIiNwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7CiAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CkBAIC01OSw3ICs2MCw3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
SGFzSGFkVXNlckludGVyYWN0aW9uKHRoaXJkUGFydHlVcmwpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlRoaXJkLXBhcnR5IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3Ig
dXNlciBpbnRlcmFjdGlvbi4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VB
Y2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xpY3lTaG91
bGRHcmFudEFjY2VzcyI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNy
YyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdl
LWFjY2Vzcy1pZnJhbWUuaHRtbD9kdW1teT0iICsgTWF0aC5yYW5kb20oKSArICIjcG9saWN5U2hv
dWxkR3JhbnRBY2Nlc3MiOwogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzAsMjAgKzcxLDM3IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKGZpcnN0UGFydHlVcmwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkZpcnN0LXBhcnR5IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVF
bGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hh
cy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbCNwb2xpY3lTaG91bGRHcmFudEFjY2VzcyI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXJkUGFydHlVcmwg
KyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRt
bD9kdW1teT0iICsgTWF0aC5yYW5kb20oKSArICIjcG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MiOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVF
bGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CiAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDUiOworICAgICAgICAgICAgICAgICAgICAv
LyBUaGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcgdW5kZXIgZmlyc3QtcGFydGllcyB3aXRob3V0
IHVzZXIgaW50ZXJhY3Rpb24sIG9ubHkgdGhpcmQtcGFydHkgdXNlciBpbnRlcmFjdGlvbiwgbm90
IHByZXZhbGVudC4KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFj
dGlvbihmaXJzdFBhcnR5VXJsLCBmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKGZpcnN0UGFydHlVcmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJGaXJzdC1wYXJ0eSBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZy
YW1lRWxlbWVudC5zcmMgPSB0aGlyZFBhcnR5VXJsICsgIi9zdG9yYWdlQWNjZXNzL3Jlc291cmNl
cy9oYXMtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw/ZHVtbXk9IiArIE1hdGgucmFuZG9tKCkg
KyAiI3BvbGljeVNob3VsZE5vdEdyYW50QWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0sIHRydWUpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICIjc3RlcDUiOgorICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA2IjsKICAgICAg
ICAgICAgICAgICAgICAgLy8gR2VuZXJhbCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcsIGZp
cnN0LSBhbmQgdGhpcmQtcGFydHkgdXNlciBpbnRlcmFjdGlvbiwgbm90IHByZXZhbGVudC4KICAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llcyh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihmaXJzdFBhcnR5
VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKGZpcnN0UGFydHlV
cmwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJGaXJzdC1w
YXJ0eSBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMg
PSB0aGlyZFBhcnR5VXJsICsgIi9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9oYXMtc3RvcmFnZS1h
Y2Nlc3MtaWZyYW1lLmh0bWwjcG9saWN5U2hvdWxkTm90R3JhbnRBY2Nlc3MiOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSB0aGlyZFBhcnR5VXJsICsgIi9zdG9y
YWdlQWNjZXNzL3Jlc291cmNlcy9oYXMtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw/ZHVtbXk9
IiArIE1hdGgucmFuZG9tKCkgKyAiI3BvbGljeVNob3VsZE5vdEdyYW50QWNjZXNzIjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIH0sIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAgICAgICAgICAgICBjYXNl
ICIjc3RlcDYiOgogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0g
Imxhc3RTdGVwIjsKICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhbCB0aGlyZC1wYXJ0eSBj
b29raWUgYmxvY2tpbmcsIGZpcnN0LSBhbmQgdGhpcmQtcGFydHkgdXNlciBpbnRlcmFjdGlvbiwg
cHJldmFsZW50LgogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5VXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKQEAgLTkx
LDcgKzEwOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGhp
cmQtcGFydHkgbm90IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gdGhpcmRQYXJ0eVVybCArICIvc3RvcmFnZUFjY2Vz
cy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sI3BvbGljeVNob3VsZE5v
dEdyYW50QWNjZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50
LnNyYyA9IHRoaXJkUGFydHlVcmwgKyAiL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9y
YWdlLWFjY2Vzcy1pZnJhbWUuaHRtbD9kdW1teT0iICsgTWF0aC5yYW5kb20oKSArICIjcG9saWN5
U2hvdWxkTm90R3JhbnRBY2Nlc3MiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgfSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>