<?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>230839</bug_id>
          
          <creation_ts>2021-09-27 08:49:57 -0700</creation_ts>
          <short_desc>PCM: different bundleID entries will override each other</short_desc>
          <delta_ts>2021-09-28 16:49:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230778</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797481</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 08:49:57 -0700</bug_when>
    <thetext>We should make bundleID a part of the unique constraint of PCM tables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797483</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-27 08:50:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/83575086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797493</commentid>
    <comment_count>2</comment_count>
      <attachid>439357</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 09:02:57 -0700</bug_when>
    <thetext>Created attachment 439357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797617</commentid>
    <comment_count>3</comment_count>
      <attachid>439387</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 13:24:20 -0700</bug_when>
    <thetext>Created attachment 439387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797641</commentid>
    <comment_count>4</comment_count>
      <attachid>439387</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-27 14:11:17 -0700</bug_when>
    <thetext>Comment on attachment 439387
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:276
&gt; +const Vector&lt;String&gt;&amp; ResourceLoadStatisticsDatabaseStore::sortedTables()

This could be a std::array, which would not require any dynamic allocation.

&gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:199
&gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries Unable to prepare statement to fetch schema for the table, error message: %&quot; PRIVATE_LOG_STRING, this, m_database.lastErrorMsg());

DatabaseUtilities::
Also, I&apos;ve been using the PrivateClickMeasurement logging channel in this file even though it&apos;s shared with RLS.  Network isn&apos;t a great channel for this.
Ditto several times below.

&gt; Source/WebKit/NetworkProcess/DatabaseUtilities.h:43
&gt; +typedef std::pair&lt;String, std::optional&lt;String&gt;&gt; TableAndIndexPair;

using TableAndIndexPair = std::pair&lt;String, std::optional&lt;String&gt;&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797680</commentid>
    <comment_count>5</comment_count>
      <attachid>439404</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 15:48:11 -0700</bug_when>
    <thetext>Created attachment 439404
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797681</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 15:49:10 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 439387 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=439387&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:276
&gt; &gt; +const Vector&lt;String&gt;&amp; ResourceLoadStatisticsDatabaseStore::sortedTables()
&gt; 
&gt; This could be a std::array, which would not require any dynamic allocation.
&gt; 

Did not do this because the function is virtual.

&gt; &gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:199
&gt; &gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries Unable to prepare statement to fetch schema for the table, error message: %&quot; PRIVATE_LOG_STRING, this, m_database.lastErrorMsg());
&gt; 
&gt; DatabaseUtilities::
&gt; Also, I&apos;ve been using the PrivateClickMeasurement logging channel in this
&gt; file even though it&apos;s shared with RLS.  Network isn&apos;t a great channel for
&gt; this.
&gt; Ditto several times below.
&gt; 

Fixed.

&gt; &gt; Source/WebKit/NetworkProcess/DatabaseUtilities.h:43
&gt; &gt; +typedef std::pair&lt;String, std::optional&lt;String&gt;&gt; TableAndIndexPair;
&gt; 
&gt; using TableAndIndexPair = std::pair&lt;String, std::optional&lt;String&gt;&gt;;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797717</commentid>
    <comment_count>7</comment_count>
      <attachid>439404</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 17:39:15 -0700</bug_when>
    <thetext>Comment on attachment 439404
Patch for landing

Cancelling commit queue to investigate failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797731</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-27 18:35:38 -0700</bug_when>
    <thetext>Found 1 new test failure: http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797754</commentid>
    <comment_count>9</comment_count>
      <attachid>439431</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-27 21:28:28 -0700</bug_when>
    <thetext>Created attachment 439431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798010</commentid>
    <comment_count>10</comment_count>
      <attachid>439511</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-28 13:30:21 -0700</bug_when>
    <thetext>Created attachment 439511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798014</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-28 13:33:13 -0700</bug_when>
    <thetext>Changed REFERENCES ObservedDomains(domainID) ON DELETE CASCADE -&gt; REFERENCES PCMObservedDomains(domainID) ON DELETE CASCADE in the test case. This was causing a false positive pass. Now this test will fail without the accompanying changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798030</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-28 14:13:08 -0700</bug_when>
    <thetext>Committed r283194 (242241@main): &lt;https://commits.webkit.org/242241@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439511.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439357</attachid>
            <date>2021-09-27 09:02:57 -0700</date>
            <delta_ts>2021-09-27 13:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230839-20210927090257.patch</filename>
            <type>text/plain</type>
            <size>27057</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwOTliNmRjMWFkYTgxMGFm
ZDIxMzM4NDE3MzRmMTJmNzhmZjZjYzkuLjZkMmQ1ODA2M2E0NzI1Njc3NGRhZGVhMjA3ODc5NjAw
YzNjODFiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDktMjcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBkaWZmZXJl
bnQgYnVuZGxlSUQgZW50cmllcyB3aWxsIG92ZXJyaWRlIGVhY2ggb3RoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHJlY2VudGx5IGFkZGVkIGEg
YnVuZGxlSUQgY29sdW1uIHRvIFBDTSB0YWJsZXMuIFdlIHdhbnQgdG8gbWFrZQorICAgICAgICBz
dXJlIGVudHJpZXMgd2l0aCBkaWZmZXJlbnQgYnVuZGxlSURzIGRvIG5vdCBvdmVycmlkZSBlYWNo
IG90aGVyLAorICAgICAgICBzbyB3ZSBzaG91bGQgbWFrZSBpdCBhIHBhcnQgb2YgdGhlIHVuaXF1
ZSBjb25zdHJhaW50IG9uIGJvdGggUENNCisgICAgICAgIHRhYmxlcyB0aGF0IGNvbnRhaW4gaXQu
IFRoaXMgcmVxdWlyZXMgY3JlYXRpbmcgbmV3IHRhYmxlcyBhbmQKKyAgICAgICAgbWlncmF0aW5n
IGV4aXN0aW5nIGRhdGEgdG8gdGhlbS4gTHVja2lseSB0aGlzIGNvZGUgYWxyZWFkeSBleGlzdHMK
KyAgICAgICAgaW4gdGhlIElUUCBkYXRhYmFzZSwgYW5kIHdlIGNhbiBqdXN0IG1vdmUgaXQgdG8g
dGhlIHNoYXJlZAorICAgICAgICBEYXRhYmFzZVV0aWxpdGllcyBjbGFzcy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6
OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxl
QW5kSW5kZXhRdWVyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6aW5zZXJ0RGlzdGlu
Y3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJ
Zk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VVdGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMp
OgorICAgICAgICAoV2ViS2l0OjppbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFUb05ld1Rh
Ymxlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxp
dGllcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6
OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRh
dGFiYXNlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRh
YmFzZTo6bmVlZHNVcGRhdGVkU2NoZW1hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6CisK
IDIwMjEtMDktMjQgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Tm9uLXVuaWZpZWQgcGFydGlhbCBidWlsZCBmaXhlcyBsYXRlIFNlcHRlbWJlciBlZGl0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA4MWU1MTk1YjYwNGI4NjdhMGUyMTRjNDUzNzU2NDEyMzhiMzlmOTY2Li5kZmNhNTM3
NTg4NDE5NWE4MzU0MjlmMDU2MmZiNWVlODIyMDFiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTUwLDcgKzUwLDYg
QEAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGF0
ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9Sb2Jp
bkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgpAQCAtMjUzLDEy
ICsyNTIsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc05ld0NyZWF0ZVRhYmxlU2NoZW1hKGNvbnN0IFN0
cmluZyYgc2NoZW1hKQogICAgIHJldHVybiBzY2hlbWEuY29udGFpbnMoIlJFRkVSRU5DRVMgVG9w
TGV2ZWxEb21haW5zIik7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCi17Ci0gICAgcmV0dXJuIFN0
cmluZyhvcmlnaW5hbFF1ZXJ5KS5yZXBsYWNlKCJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBF
WElTVFMiLCAiQ1JFQVRFIFVOSVFVRSBJTkRFWCIpOwotfQotCi1zdGF0aWMgY29uc3QgTWVtb3J5
Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBh
aXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkKK2NvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1
ZXJpZXMoKQogewogICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
TWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsKICAgICAgICAgeyAiT2JzZXJ2ZWREb21h
aW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3Jl
YXRlT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKQEAgLTM2Nyw1MiArMzYxLDYgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZGVsZXRlVGFibGUoU3Ry
aW5nVmlldyB0YWJsZU5hbWUpCiAgICAgfQogfQogCi1UYWJsZUFuZEluZGV4UGFpciBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVz
KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQotewotICAgIGF1dG8gZ2V0VGFibGVTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFz
dGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUnIl9zKTsKLSAgICBpZiAoIWdl
dFRhYmxlU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJ
bmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBm
b3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0VGFibGVTdGF0ZW1l
bnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVt
ZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAg
ICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhlY3V0aW5n
IHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAg
IFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFibGVTdGF0ZW1lbnQtPmNvbHVtblRleHQo
MCk7Ci0KLSAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFO
RCB0eXBlID0gJ2luZGV4JyJfcyk7Ci0gICAgaWYgKCFnZXRJbmRleFN0YXRlbWVudCkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBw
cmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFt
ZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJ
bmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVtZW50IHRvIGZldGNoIGluZGV4IGZvciB0
aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBp
bmRleDsKLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7
Ci0gICAgICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5kZXhTdGF0ZW1lbnQtPmNvbHVt
blRleHQoMCkpOwotICAgICAgICBpZiAoIXJhd0luZGV4LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGluZGV4ID0gcmF3SW5kZXg7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyPFN0
cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNyZWF0ZVRhYmxlUXVlcnkpLCBX
VEZNb3ZlKGluZGV4KSk7Ci19Ci0KIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1pc3NpbmdVbmlxdWVJbmRpY2VzKCkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIENPVU5UKCopIEZST00gc3FsaXRlX21h
c3RlciBXSEVSRSB0eXBlID0gJ2luZGV4JyJfcyk7CkBAIC00NTYsNjggKzQwNCw2IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFNjaGVtYSgp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50
LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChTUUxpdGVEYXRhYmFz
ZSYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdGFibGUpCi17Ci0gICAgaWYgKHRhYmxlID09ICJT
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMg
U0VMRUNUIHN1YkZyYW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWlu
SUQgRlJPTSBfU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJGcmFtZURv
bWFpbklELCB0b3BGcmFtZURvbWFpbklEIl9zKTsKLQotICAgIGlmICh0YWJsZSA9PSAiU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5z
IFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURv
bWFpbklEIEZST00gX1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3Vi
cmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCJfcyk7Ci0KLSAgICBpZiAodGFibGUg
PT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iKQotICAgICAgICByZXR1cm4gZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9Eb21h
aW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIEdST1VQIEJZIHN1YnJlc291
cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiX3MpOwotCi0gICAgaWYgKHRhYmxlID09ICJUb3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0
b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJfcyk7
Ci0KLSAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygi
SU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNUICogRlJPTSBfIiwgdGFibGUp
KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAoIW5lZWRzVXBkYXRlZFNj
aGVtYSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRyYW5zYWN0aW9uU2NvcGUgPSBi
ZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGZvciAoYXV0byYgdGFibGUgOiBl
eHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7Ci0gICAgICAgIGF1dG8gYWx0
ZXJUYWJsZSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxU
RVIgVEFCTEUgIiwgdGFibGUsICIgUkVOQU1FIFRPIF8iLCB0YWJsZSkpOwotICAgICAgICBpZiAo
IWFsdGVyVGFibGUgfHwgYWx0ZXJUYWJsZS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZh
aWxlZCB0byByZW5hbWUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3JlYXRlU2No
ZW1hKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5l
Y2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhw
ZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewotICAgICAgICBhdXRvIG1pZ3Jh
dGVUYWJsZURhdGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQobV9kYXRh
YmFzZSwgdGFibGUpOwotICAgICAgICBpZiAoIW1pZ3JhdGVUYWJsZURhdGEgfHwgbWlncmF0ZVRh
YmxlRGF0YS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBtaWdyYXRlIHNj
aGVtYSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBUQUJMRSBfIiwgdGFibGUpKTsK
LSAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFibGVRdWVyeS0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05l
d1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBvcmFyeSB0YWJsZXMsIGVycm9y
IG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNlcygpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNy
ZWF0ZSB1bmlxdWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAo
IXRhYmxlRXhpc3RzKCJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4
IDg1MjhhYWUzYjUwMjYzNGUzMDNlYzA1MzNiNjQxNDU3OTAxOGRlMTEuLjhhYTk4YTIzNjE2Y2Zj
ZGU2MTZiMWIzYzlhNTBlMGI3YTdmNDY3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC00OCw4ICs0OCw2IEBAIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG51bWJlck9mQnVja2V0c1BlclN0YXRpc3RpYyA9IDU7CiBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBudW1iZXJPZlN0YXRpc3RpY3MgPSA3Owogc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQZXJTdGF0aXN0aWM+IGJ1Y2tl
dFNpemVzIHt7IDEsIDMsIDEwLCA1MCwgMTAwIH19OwogCi10eXBlZGVmIHN0ZDo6cGFpcjxTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVBbmRJbmRleFBhaXI7Ci0KIC8vIFRoaXMg
aXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVzIHsKIHB1YmxpYzoKQEAgLTEx
OCw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJh
c2VzKCk7CiAKIHByaXZhdGU6CisgICAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzKCkgZmluYWw7CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0Rh
dGVJZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygp
IG92ZXJyaWRlIHsgfQogICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdCBv
dmVycmlkZTsKQEAgLTEyNiwxMCArMTI1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZW5JVFBE
YXRhYmFzZSgpOwogICAgIHZvaWQgYWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAg
Ym9vbCBtaXNzaW5nVW5pcXVlSW5kaWNlcygpOwotICAgIGJvb2wgbmVlZHNVcGRhdGVkU2NoZW1h
KCk7Ci0gICAgVGFibGVBbmRJbmRleFBhaXIgY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNv
bnN0IFN0cmluZyYpOworICAgIGJvb2wgbmVlZHNVcGRhdGVkU2NoZW1hKCkgZmluYWw7CiAgICAg
Ym9vbCBtaXNzaW5nUmVmZXJlbmNlVG9PYnNlcnZlZERvbWFpbnMoKTsKLSAgICB2b2lkIG1pZ3Jh
dGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgbWlncmF0ZURhdGFUb1BD
TURhdGFiYXNlSWZOZWNlc3NhcnkoKTsKICAgICBib29sIHRhYmxlRXhpc3RzKFN0cmluZ1ZpZXcp
OwogICAgIHZvaWQgZGVsZXRlVGFibGUoU3RyaW5nVmlldyk7CkBAIC0yMDYsNyArMjAzLDcgQEAg
cHJpdmF0ZToKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
cigpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNEYXRhYmFzZVN0b3JlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCk7CisgICAgYm9v
bCBjcmVhdGVVbmlxdWVJbmRpY2VzKCkgZmluYWw7CiAgICAgYm9vbCBjcmVhdGVTY2hlbWEoKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoY29uc3QgSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZShjb25zdCBEb21haW5EYXRhJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCmluZGV4IGZhMGI3
ZmRmNDQ3ODJmYTgzMWUwZDNiZWVlYzI2ZTRiYjU1N2YwODEuLjA1NTdhMDRkMzUxOTkzN2RkZmM3
ZTNhZGRlZjM2ZDIwMjAxMTc2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCkBAIC0xODcsNCArMTg3LDExNiBAQCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBEYXRhYmFzZVV0aWxpdGllczo6YnVpbGRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudAogICAgIHJldHVybiBhdHRyaWJ1dGlvbjsKIH0KIAorU3RyaW5nIERh
dGFiYXNlVXRpbGl0aWVzOjpzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY29uc3Qg
Y2hhciogb3JpZ2luYWxRdWVyeSkKK3sKKyAgICByZXR1cm4gU3RyaW5nKG9yaWdpbmFsUXVlcnkp
LnJlcGxhY2UoIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyIsICJDUkVBVEUgVU5J
UVVFIElOREVYIik7Cit9CisKK1RhYmxlQW5kSW5kZXhQYWlyIERhdGFiYXNlVXRpbGl0aWVzOjpj
dXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCit7Cisg
ICAgYXV0byBnZXRUYWJsZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgi
U0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9PyBBTkQgdHlwZSA9
ICd0YWJsZSciX3MpOworICAgIGlmICghZ2V0VGFibGVTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gcHJlcGFyZSBz
dGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFibGVOYW1lKSAhPSBT
UUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVl
cmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgdGFi
bGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBlcnJvciBleGVjdXRpbmcgc3RhdGVtZW50IHRvIGZldGNoIHRhYmxlIHNjaGVt
YSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorCisgICAgU3RyaW5nIGNyZWF0ZVRhYmxlUXVlcnkgPSBnZXRU
YWJsZVN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKTsKKworICAgIGF1dG8gZ2V0SW5kZXhTdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVf
bWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAnaW5kZXgnIl9zKTsKKyAgICBpZiAo
IWdldEluZGV4U3RhdGVtZW50KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIGluZGV4
IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChnZXRJbmRleFN0YXRl
bWVudC0+YmluZFRleHQoMSwgdGFibGVOYW1lKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0
ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGluZGV4OworICAgIGlmIChnZXRJbmRleFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmlu
ZyhnZXRJbmRleFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CisgICAgICAgIGlmICghcmF3SW5k
ZXguaXNFbXB0eSgpKQorICAgICAgICAgICAgaW5kZXggPSByYXdJbmRleDsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KFdU
Rk1vdmUoY3JlYXRlVGFibGVRdWVyeSksIFdURk1vdmUoaW5kZXgpKTsKK30KKworc3RhdGljIEV4
cGVjdGVkPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCwgaW50PiBpbnNlcnREaXN0aW5jdFZhbHVl
c0luVGFibGVTdGF0ZW1lbnQoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25z
dCBTdHJpbmcmIHRhYmxlKQoreworICAgIGlmICh0YWJsZSA9PSAiU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyIpCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFtZURv
bWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJhbWVE
b21haW5JRCJfcyk7CisKKyAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQorICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3Vy
Y2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQs
IHRvcEZyYW1lRG9tYWluSUQiX3MpOworCisgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJl
c291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0Rv
bWFpbklEIl9zKTsKKworICAgIGlmICh0YWJsZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJ
TlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3MpOworICAgIAorICAgIHJldHVy
biBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyAi
LCB0YWJsZSwgIiBTRUxFQ1QgRElTVElOQ1QgKiBGUk9NIF8iLCB0YWJsZSkpOworfQorCit2b2lk
IERhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKQor
eworICAgIGlmICghbmVlZHNVcGRhdGVkU2NoZW1hKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwor
CisgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5r
ZXlzKCkpIHsKKyAgICAgICAgYXV0byBhbHRlclRhYmxlID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZSwgIiBSRU5BTUUgVE8g
XyIsIHRhYmxlKSk7CisgICAgICAgIGlmICghYWx0ZXJUYWJsZSB8fCBhbHRlclRhYmxlLT5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0
YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIHJlbmFtZSB0YWJsZSwgZXJyb3IgbWVz
c2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBjcmVhdGUgc2NoZW1h
LCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGZvciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5
cygpKSB7CisgICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFs
dWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGlmICghbWln
cmF0ZVRhYmxlRGF0YSB8fCBtaWdyYXRlVGFibGVEYXRhLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1hLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGRy
b3BUYWJsZVF1ZXJ5ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5n
KCJEUk9QIFRBQkxFIF8iLCB0YWJsZSkpOworICAgICAgICBpZiAoIWRyb3BUYWJsZVF1ZXJ5IHx8
IGRyb3BUYWJsZVF1ZXJ5LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGRy
b3AgdGVtcG9yYXJ5IHRhYmxlcywgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFjcmVhdGVVbmlx
dWVJbmRpY2VzKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJs
ZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIHVuaXF1ZSBpbmRpY2VzLCBlcnJvciBtZXNz
YWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCmluZGV4
IDU5YjdlOGMwMjRiN2Q1OTM3ZDcyZTVlZGViMjEzMDdiOTMyOGIyMjUuLmI2OWI2MzcxYmI4MmVi
NGYxMGYwZTg1YmMyN2JiMjg2MmM3MmZjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRy
YW5zYWN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZSA6IGJvb2w7CiAKK3R5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpv
cHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKKwogY2xhc3MgRGF0YWJhc2VVdGls
aXRpZXMgewogcHJvdGVjdGVkOgogICAgIERhdGFiYXNlVXRpbGl0aWVzKFN0cmluZyYmIHN0b3Jh
Z2VGaWxlUGF0aCk7CkBAIC01Miw4ICs1NSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbG9z
ZSgpOwogICAgIHZvaWQgaW50ZXJydXB0KCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVNjaGVt
YSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0
IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5k
SW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpID0gMDsKKyAgICBUYWJs
ZUFuZEluZGV4UGFpciBjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJik7
CisgICAgU3RyaW5nIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjb25zdCBjaGFy
KiBvcmlnaW5hbFF1ZXJ5KTsKKyAgICB2b2lkIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vz
c2FyeSgpOwogCiAgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYnVpbGRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21EYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQm
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YWJhc2UuY3BwCmluZGV4IDhiYzIzNjliZGZkZTNmMGU5Y2VlODZhZjllYTZmNjIxMmIy
Zjg4NzIuLjg5OTBlYTMxOWJjOWYzNjk3ZTc5Nzk5NDg4ZTk2YjBlZjU0ZDFjYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhdGFiYXNlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFRBQkxFIEF0dHJpYnV0
ZQogICAgICJlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSBSRUFMLCB0b2tlbiBURVhULCBzaWdu
YXR1cmUgVEVYVCwga2V5SUQgVEVYVCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBS
RUFMLCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEIFRFWFQsICIKICAgICAiRk9SRUlHTiBLRVko
c291cmNlU2l0ZURvbWFpbklEKSBSRUZFUkVOQ0VTIFBDTU9ic2VydmVkRG9tYWlucyhkb21haW5J
RCkgT04gREVMRVRFIENBU0NBREUsIEZPUkVJR04gS0VZKGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
KSBSRUZFUkVOQ0VTICIKICAgICAiUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxF
VEUgQ0FTQ0FERSkiX3M7Ci1jb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9U
IEVYSVNUUyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9t
YWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
ICkiX3M7Ci1jb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5h
dGlvblNpdGVEb21haW5JRCBvbiBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBz
b3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEICkiX3M7Citjb25zdGV4
cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9t
YWluSURfc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCBvbiBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgKSJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0
ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBV
TklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEX3NvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlQXBwbGljYXRp
b25CdW5kbGVJRCApIl9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlUENNT2JzZXJ2ZWREb21haW4g
PSAiQ1JFQVRFIFRBQkxFIFBDTU9ic2VydmVkRG9tYWlucyAoIgogICAgICJkb21haW5JRCBJTlRF
R0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBP
TiBDT05GTElDVCBGQUlMKSJfczsKIGNvbnN0ZXhwciBhdXRvIGluc2VydE9ic2VydmVkRG9tYWlu
UXVlcnkgPSAiSU5TRVJUIElOVE8gUENNT2JzZXJ2ZWREb21haW5zIChyZWdpc3RyYWJsZURvbWFp
bikgVkFMVUVTICg/KSJfczsKQEAgLTg5LDYgKzg5LDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKGNv
bnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKICAgICBvcGVuRGF0YWJhc2VBbmRDcmVhdGVT
Y2hlbWFJZk5lY2Vzc2FyeSgpOwogICAgIGVuYWJsZUZvcmVpZ25LZXlzKCk7CiAgICAgYWRkQnVu
ZGxlSURDb2x1bW5JZk5lY2Vzc2FyeSgpOworICAgIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5l
Y2Vzc2FyeSgpOwogICAgIGFsbERhdGFiYXNlcygpLmFkZCh0aGlzKTsKIH0KIApAQCAtOTksNiAr
MTAwLDE3IEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQogICAgIGFsbERhdGFiYXNlcygpLnJlbW92
ZSh0aGlzKTsKIH0KIAorY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
TWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBEYXRhYmFzZTo6ZXhwZWN0ZWRUYWJsZUFu
ZEluZGV4UXVlcmllcygpCit7CisgICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFuZEluZGV4
UXVlcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4geworICAgICAgICB7ICJQQ01P
YnNlcnZlZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxT
dHJpbmc+PihjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LAorICAgICAg
ICB7ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3Jl
YXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9LAorICAg
ICAgICB7ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0ZDo6bWFrZV9w
YWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVh
dGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCisgICAg
fSk7CisgICAgCisgICAgcmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7Cit9CisK
IHZvaWQgRGF0YWJhc2U6OmludGVycnVwdEFsbERhdGFiYXNlcygpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CkBAIC0xMDYsNiArMTE4LDE2IEBAIHZvaWQgRGF0YWJhc2U6Omlu
dGVycnVwdEFsbERhdGFiYXNlcygpCiAgICAgICAgIGRhdGFiYXNlLT5pbnRlcnJ1cHQoKTsKIH0K
IAorYm9vbCBEYXRhYmFzZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcygpCit7CisgICAgaWYgKCFtX2Rh
dGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQpCisgICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgewor
ICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNyZWF0aW5nIGluZGV4ZXMiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBEYXRhYmFzZTo6
Y3JlYXRlU2NoZW1hKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTY3
NCw2ICs2OTYsMTYgQEAgdm9pZCBEYXRhYmFzZTo6YWRkQnVuZGxlSURDb2x1bW5JZk5lY2Vzc2Fy
eSgpCiAgICAgY2hlY2tDb2x1bW5zKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwogICAgIGNoZWNrQ29s
dW1ucyh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUpOwogfQorYm9vbCBEYXRhYmFzZTo6bmVlZHNVcGRh
dGVkU2NoZW1hKCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYXQgdGhlIGVuZCBvZiAy
MDIxLiBObyBwdWJsaWMgcmVsZWFzZSB3YXMgbWFkZSB3aXRoIHRoZSBzY2hlbWEgbWlzc2luZyBz
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlELCBzbyB0aGlzIGlzIG9ubHkgbmVlZGVkIHRvIG1pZ3Jh
dGUgaW50ZXJuYWwgdXNlcnMgd2hvIHVwZGF0ZWQgaW4gU2VwdGVtYmVyIDIwMjEuCisgICAgZm9y
IChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5rZXlzKCkpIHsK
KyAgICAgICAgaWYgKGN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyh0YWJsZSkgIT0gZXhwZWN0
ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmdldCh0YWJsZSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQogCiBWZWN0b3I8U3RyaW5n
PiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGF0YWJhc2UuaAppbmRleCBmYWI1YmYwZmQ0OTk2OWZhMGExODZmMzRiNzczMjI3ZDYw
ZWQwMTBjLi4xNDkxMzE5NDE5NTllY2VkZmRlOTdkZjM3Nzg3MTk5NDRiNjAyYmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGF0YWJhc2UuaApAQCAtNzcsNiArNzcsMTAgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEKSBjb25zdCBmaW5hbDsKIAogICAgIHZv
aWQgYWRkQnVuZGxlSURDb2x1bW5JZk5lY2Vzc2FyeSgpOworICAgIGJvb2wgbmVlZHNVcGRhdGVk
U2NoZW1hKCkgZmluYWw7CisgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCkgZmluYWw7Cisg
ICAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywg
VGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkgZmluYWw7
CisKICAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJs
ZU5hbWUpOwogICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439387</attachid>
            <date>2021-09-27 13:24:20 -0700</date>
            <delta_ts>2021-09-27 15:48:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230839-20210927132419.patch</filename>
            <type>text/plain</type>
            <size>39372</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwOTliNmRjMWFkYTgxMGFm
ZDIxMzM4NDE3MzRmMTJmNzhmZjZjYzkuLjZkMmQ1ODA2M2E0NzI1Njc3NGRhZGVhMjA3ODc5NjAw
YzNjODFiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDktMjcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBkaWZmZXJl
bnQgYnVuZGxlSUQgZW50cmllcyB3aWxsIG92ZXJyaWRlIGVhY2ggb3RoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHJlY2VudGx5IGFkZGVkIGEg
YnVuZGxlSUQgY29sdW1uIHRvIFBDTSB0YWJsZXMuIFdlIHdhbnQgdG8gbWFrZQorICAgICAgICBz
dXJlIGVudHJpZXMgd2l0aCBkaWZmZXJlbnQgYnVuZGxlSURzIGRvIG5vdCBvdmVycmlkZSBlYWNo
IG90aGVyLAorICAgICAgICBzbyB3ZSBzaG91bGQgbWFrZSBpdCBhIHBhcnQgb2YgdGhlIHVuaXF1
ZSBjb25zdHJhaW50IG9uIGJvdGggUENNCisgICAgICAgIHRhYmxlcyB0aGF0IGNvbnRhaW4gaXQu
IFRoaXMgcmVxdWlyZXMgY3JlYXRpbmcgbmV3IHRhYmxlcyBhbmQKKyAgICAgICAgbWlncmF0aW5n
IGV4aXN0aW5nIGRhdGEgdG8gdGhlbS4gTHVja2lseSB0aGlzIGNvZGUgYWxyZWFkeSBleGlzdHMK
KyAgICAgICAgaW4gdGhlIElUUCBkYXRhYmFzZSwgYW5kIHdlIGNhbiBqdXN0IG1vdmUgaXQgdG8g
dGhlIHNoYXJlZAorICAgICAgICBEYXRhYmFzZVV0aWxpdGllcyBjbGFzcy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6
OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxl
QW5kSW5kZXhRdWVyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6aW5zZXJ0RGlzdGlu
Y3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJ
Zk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VVdGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMp
OgorICAgICAgICAoV2ViS2l0OjppbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFUb05ld1Rh
Ymxlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxp
dGllcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6
OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRh
dGFiYXNlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRh
YmFzZTo6bmVlZHNVcGRhdGVkU2NoZW1hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6CisK
IDIwMjEtMDktMjQgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Tm9uLXVuaWZpZWQgcGFydGlhbCBidWlsZCBmaXhlcyBsYXRlIFNlcHRlbWJlciBlZGl0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA4MWU1MTk1YjYwNGI4NjdhMGUyMTRjNDUzNzU2NDEyMzhiMzlmOTY2Li4zMjY0OWFh
MWViYWFlOTZlMmQyYzVhNDUzM2VlMjNkNTZhMTkyY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTUwLDcgKzUwLDYg
QEAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGF0
ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9Sb2Jp
bkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgpAQCAtMjUzLDEy
ICsyNTIsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc05ld0NyZWF0ZVRhYmxlU2NoZW1hKGNvbnN0IFN0
cmluZyYgc2NoZW1hKQogICAgIHJldHVybiBzY2hlbWEuY29udGFpbnMoIlJFRkVSRU5DRVMgVG9w
TGV2ZWxEb21haW5zIik7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCi17Ci0gICAgcmV0dXJuIFN0
cmluZyhvcmlnaW5hbFF1ZXJ5KS5yZXBsYWNlKCJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBF
WElTVFMiLCAiQ1JFQVRFIFVOSVFVRSBJTkRFWCIpOwotfQotCi1zdGF0aWMgY29uc3QgTWVtb3J5
Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBh
aXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkKK2NvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1
ZXJpZXMoKQogewogICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
TWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsKICAgICAgICAgeyAiT2JzZXJ2ZWREb21h
aW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3Jl
YXRlT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKQEAgLTI3OSw2ICsyNzMsMjcgQEAg
c3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJp
bmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYKICAgICByZXR1cm4gZXhwZWN0ZWRUYWJsZUFuZEluZGV4
UXVlcmllczsKIH0KIAorY29uc3QgVmVjdG9yPFN0cmluZz4mIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpzb3J0ZWRUYWJsZXMoKQoreworICAgIHN0YXRpYyBhdXRvIHNvcnRl
ZFRhYmxlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgICAgICJP
YnNlcnZlZERvbWFpbnMiX3MsCisgICAgICAgICJUb3BMZXZlbERvbWFpbnMiX3MsCisgICAgICAg
ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsCisgICAgICAgICJUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLAorICAgICAgICAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
b1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCJfcywKKyAgICAgICAgIlRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbSJfcywKKyAgICAgICAgIlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSJfcywKKyAgICAgICAgIlRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiX3MsCisgICAg
ICAgICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLAorICAgICAgICAiU3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lRG9tYWlucyJfcywKKyAgICAgICAgIlN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8iX3MsCisgICAgICAgICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3Ms
CisgICAgICAgICJPcGVyYXRpbmdEYXRlcyJfcworICAgIH0pOworCisgICAgcmV0dXJuIHNvcnRl
ZFRhYmxlczsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+CiBzdGF0aWMg
U3RyaW5nIGJ1aWxkTGlzdChjb25zdCBDb250YWluZXJUeXBlJiB2YWx1ZXMpCiB7CkBAIC0zNjcs
NTIgKzM4Miw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRl
bGV0ZVRhYmxlKFN0cmluZ1ZpZXcgdGFibGVOYW1lKQogICAgIH0KIH0KIAotVGFibGVBbmRJbmRl
eFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFu
ZEluZGV4UXVlcmllcyhjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKLXsKLSAgICBhdXRvIGdldFRh
YmxlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZS
T00gc3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ3RhYmxlJyJfcyk7
Ci0gICAgaWYgKCFnZXRUYWJsZVN0YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3Vy
cmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBm
ZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGdl
dFRhYmxlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0
byBiaW5kIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07
Ci0gICAgfQotCi0gICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIGVy
cm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggdGFibGUgc2NoZW1hLCBlcnJvciBtZXNz
YWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9Ci0KLSAgICBTdHJpbmcgY3JlYXRlVGFibGVRdWVyeSA9IGdldFRhYmxlU3RhdGVtZW50
LT5jb2x1bW5UZXh0KDApOwotCi0gICAgYXV0byBnZXRJbmRleFN0YXRlbWVudCA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUg
dGJsX25hbWU9PyBBTkQgdHlwZSA9ICdpbmRleCciX3MpOwotICAgIGlmICghZ2V0SW5kZXhTdGF0
ZW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRoZSB0YWJs
ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgaWYgKGdldEluZGV4U3RhdGVtZW50LT5iaW5kVGV4
dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3Vy
cmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBiaW5kIHN0YXRlbWVudCB0byBmZXRj
aCBpbmRleCBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gaW5kZXg7Ci0gICAgaWYgKGdldEluZGV4U3RhdGVtZW50LT5zdGVwKCkgPT0g
U1FMSVRFX1JPVykgewotICAgICAgICBhdXRvIHJhd0luZGV4ID0gU3RyaW5nKGdldEluZGV4U3Rh
dGVtZW50LT5jb2x1bW5UZXh0KDApKTsKLSAgICAgICAgaWYgKCFyYXdJbmRleC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBpbmRleCA9IHJhd0luZGV4OwotICAgIH0KLQotICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oV1RGTW92ZShjcmVhdGVU
YWJsZVF1ZXJ5KSwgV1RGTW92ZShpbmRleCkpOwotfQotCiBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptaXNzaW5nVW5pcXVlSW5kaWNlcygpCiB7CiAgICAgYXV0byBz
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBDT1VOVCgqKSBG
Uk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICdpbmRleCciX3MpOwpAQCAtNDU2LDY4ICs0
MjUsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpuZWVkc1Vw
ZGF0ZWRTY2hlbWEoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIEV4cGVjdGVkPFNR
TGl0ZVN0YXRlbWVudCwgaW50PiBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQo
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHRhYmxlKQotewotICAgIGlm
ICh0YWJsZSA9PSAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJldHVy
biBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFtZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0
b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAg
Qlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCJfcyk7Ci0KLSAgICBpZiAodGFi
bGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4g
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVk
KSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5z
IEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvcEZyYW1lRG9tYWluSUQiX3MpOwotCi0g
ICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIikKLSAgICAgICAg
cmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBk
YXRlZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9V
UCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEIl9zKTsKLQotICAgIGlmICh0YWJs
ZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKLSAgICAgICAgcmV0dXJuIGRhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25z
RnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZS
T00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9t
RG9tYWluSUQiX3MpOwotCi0gICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93
KG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRhYmxlLCAiIFNFTEVDVCBESVNUSU5DVCAqIEZS
T00gXyIsIHRhYmxlKSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgaWYgKCFu
ZWVkc1VwZGF0ZWRTY2hlbWEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byB0cmFuc2Fj
dGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBmb3IgKGF1
dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewotICAg
ICAgICBhdXRvIGFsdGVyVGFibGUgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1h
a2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwgdGFibGUpKTsK
LSAgICAgICAgaWYgKCFhbHRlclRhYmxlIHx8IGFsdGVyVGFibGUtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJ
Zk5lY2Vzc2FyeSBmYWlsZWQgdG8gcmVuYW1lIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRv
TmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSBzY2hlbWEsIGVycm9yIG1lc3Nh
Z2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChhdXRv
JiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5rZXlzKCkpIHsKLSAgICAg
ICAgYXV0byBtaWdyYXRlVGFibGVEYXRhID0gaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIHRhYmxlKTsKLSAgICAgICAgaWYgKCFtaWdyYXRlVGFibGVEYXRh
IHx8IG1pZ3JhdGVUYWJsZURhdGEtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQg
dG8gbWlncmF0ZSBzY2hlbWEsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gZHJvcFRhYmxlUXVlcnkg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkRST1AgVEFCTEUg
XyIsIHRhYmxlKSk7Ci0gICAgICAgIGlmICghZHJvcFRhYmxlUXVlcnkgfHwgZHJvcFRhYmxlUXVl
cnktPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1p
Z3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCB0ZW1wb3Jhcnkg
dGFibGVzLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMoKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5
IGZhaWxlZCB0byBjcmVhdGUgdW5pcXVlIGluZGljZXMsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvUENNRGF0YWJhc2VJZk5lY2Vzc2FyeSgp
CiB7CiAgICAgaWYgKCF0YWJsZUV4aXN0cygiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaAppbmRleCA4NTI4YWFlM2I1MDI2MzRlMzAzZWMwNTMzYjY0MTQ1NzkwMThkZTExLi41
MDkyZDUxNDQ3MzdlODNkZDg4MTJjNGYzNjI2NzJjM2FiZDJlMzFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNDgsOCArNDgs
NiBAQCBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZkJ1Y2tldHNQZXJTdGF0aXN0aWMg
PSA1Owogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTdGF0aXN0aWNzID0gNzsKIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTx1bnNpZ25lZCwgbnVtYmVyT2ZCdWNrZXRzUGVyU3Rh
dGlzdGljPiBidWNrZXRTaXplcyB7eyAxLCAzLCAxMCwgNTAsIDEwMCB9fTsKIAotdHlwZWRlZiBz
dGQ6OnBhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IFRhYmxlQW5kSW5kZXhQYWly
OwotCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24g
dGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBj
bGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSBmaW5hbCA6IHB1YmxpYyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIHB1YmxpYyBEYXRhYmFzZVV0aWxpdGllcyB7CiBw
dWJsaWM6CkBAIC0xMTgsNiArMTE2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGludGVy
cnVwdEFsbERhdGFiYXNlcygpOwogCiBwcml2YXRlOgorICAgIGNvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgZXhw
ZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpIGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzb3J0ZWRUYWJsZXMoKSBmaW5hbDsKICAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0
aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhck9wZXJhdGluZ0Rh
dGVzKCkgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGlt
ZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtMTI2LDEwICsxMjYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgb3Bl
bklUUERhdGFiYXNlKCk7CiAgICAgdm9pZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKTsK
ICAgICBib29sIG1pc3NpbmdVbmlxdWVJbmRpY2VzKCk7Ci0gICAgYm9vbCBuZWVkc1VwZGF0ZWRT
Y2hlbWEoKTsKLSAgICBUYWJsZUFuZEluZGV4UGFpciBjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJp
ZXMoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hlbWEoKSBmaW5hbDsK
ICAgICBib29sIG1pc3NpbmdSZWZlcmVuY2VUb09ic2VydmVkRG9tYWlucygpOwotICAgIHZvaWQg
bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBtaWdyYXRlRGF0
YVRvUENNRGF0YWJhc2VJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgdGFibGVFeGlzdHMoU3RyaW5n
Vmlldyk7CiAgICAgdm9pZCBkZWxldGVUYWJsZShTdHJpbmdWaWV3KTsKQEAgLTIwNiw3ICsyMDQs
NyBAQCBwcml2YXRlOgogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdl
YnNpdGVEYXRhRm9yIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0RhdGFiYXNlU3RvcmUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKTsKKyAg
ICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKSBmaW5hbDsKICAgICBib29sIGNyZWF0ZVNjaGVt
YSgpIGZpbmFsOwogICAgIFN0cmluZyBlbnN1cmVBbmRNYWtlRG9tYWluTGlzdChjb25zdCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IERvbWFpbkRhdGEmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKaW5kZXgg
ZmEwYjdmZGY0NDc4MmZhODMxZTBkM2JlZWVjMjZlNGJiNTU3ZjA4MS4uNTY2M2IxNzQzMzI3NmEx
OGYzNDVlNDJlYjgyYzU4NjZmMDM3OTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKQEAgLTE4Nyw0ICsxODcsMTE2IEBAIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IERhdGFiYXNlVXRpbGl0aWVzOjpidWlsZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50CiAgICAgcmV0dXJuIGF0dHJpYnV0aW9uOwogfQogCitTdHJp
bmcgRGF0YWJhc2VVdGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShj
b25zdCBjaGFyKiBvcmlnaW5hbFF1ZXJ5KQoreworICAgIHJldHVybiBTdHJpbmcob3JpZ2luYWxR
dWVyeSkucmVwbGFjZSgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIiwgIkNSRUFU
RSBVTklRVUUgSU5ERVgiKTsKK30KKworVGFibGVBbmRJbmRleFBhaXIgRGF0YWJhc2VVdGlsaXRp
ZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyhjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkK
K3sKKyAgICBhdXRvIGdldFRhYmxlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0
eXBlID0gJ3RhYmxlJyJfcyk7CisgICAgaWYgKCFnZXRUYWJsZVN0YXRlbWVudCkgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUp
ICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5k
ZXhRdWVyaWVzIFVuYWJsZSB0byBiaW5kIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRo
ZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5z
dGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxl
QW5kSW5kZXhRdWVyaWVzIGVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggdGFibGUg
c2NoZW1hLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBTdHJpbmcgY3JlYXRlVGFibGVRdWVyeSA9
IGdldFRhYmxlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDApOworCisgICAgYXV0byBnZXRJbmRleFN0
YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIHNxbCBGUk9NIHNx
bGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9PyBBTkQgdHlwZSA9ICdpbmRleCciX3MpOworICAg
IGlmICghZ2V0SW5kZXhTdGF0ZW1lbnQpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRU
YWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2gg
aW5kZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5H
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKGdldEluZGV4
U3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBiaW5k
IHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaW5kZXg7CisgICAgaWYgKGdldEluZGV4U3Rh
dGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBhdXRvIHJhd0luZGV4ID0g
U3RyaW5nKGdldEluZGV4U3RhdGVtZW50LT5jb2x1bW5UZXh0KDApKTsKKyAgICAgICAgaWYgKCFy
YXdJbmRleC5pc0VtcHR5KCkpCisgICAgICAgICAgICBpbmRleCA9IHJhd0luZGV4OworICAgIH0K
KworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
Pj4oV1RGTW92ZShjcmVhdGVUYWJsZVF1ZXJ5KSwgV1RGTW92ZShpbmRleCkpOworfQorCitzdGF0
aWMgRXhwZWN0ZWQ8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50LCBpbnQ+IGluc2VydERpc3RpbmN0
VmFsdWVzSW5UYWJsZVN0YXRlbWVudChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2Us
IGNvbnN0IFN0cmluZyYgdGFibGUpCit7CisgICAgaWYgKHRhYmxlID09ICJTdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZy
YW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BG
cmFtZURvbWFpbklEIl9zKTsKKworICAgIGlmICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyIpCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJy
ZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00g
X1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21h
aW5JRCwgdG9wRnJhbWVEb21haW5JRCJfcyk7CisKKyAgICBpZiAodGFibGUgPT0gIlN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8iKQorICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qg
c3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9T
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQs
IHRvRG9tYWluSUQiX3MpOworCisgICAgaWYgKHRhYmxlID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0
aW9uc0Zyb20iKQorICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFpbklELCBN
QVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJfcyk7CisgICAgCisgICAg
cmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIklOU0VSVCBJ
TlRPICIsIHRhYmxlLCAiIFNFTEVDVCBESVNUSU5DVCAqIEZST00gXyIsIHRhYmxlKSk7Cit9CisK
K3ZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2Fy
eSgpCit7CisgICAgaWYgKCFuZWVkc1VwZGF0ZWRTY2hlbWEoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5
KCk7CisKKyAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmll
cygpLmtleXMoKSkgeworICAgICAgICBhdXRvIGFsdGVyVGFibGUgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlLCAiIFJFTkFN
RSBUTyBfIiwgdGFibGUpKTsKKyAgICAgICAgaWYgKCFhbHRlclRhYmxlIHx8IGFsdGVyVGFibGUt
PnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3Jh
dGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gcmVuYW1lIHRhYmxlLCBlcnJv
ciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTWFpbnRhaW4g
dGhlIG9yZGVyIG9mIHRhYmxlcyB0byBtYWtlIHN1cmUgdGhlIE9ic2VydmVkRG9tYWlucyB0YWJs
ZSBpcyBjcmVhdGVkIGZpcnN0LiBPdGhlciB0YWJsZXMgaGF2ZSBmb3JlaWduIGtleSBjb25zdHJh
aW50cyByZWZlcmVuY2luZyBpdC4KKyAgICBmb3IgKGF1dG8mIHRhYmxlIDogc29ydGVkVGFibGVz
KCkpIHsKKyAgICAgICAgYXV0byBtaWdyYXRlVGFibGVEYXRhID0gaW5zZXJ0RGlzdGluY3RWYWx1
ZXNJblRhYmxlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHRhYmxlKTsKKyAgICAgICAgaWYgKCFtaWdy
YXRlVGFibGVEYXRhIHx8IG1pZ3JhdGVUYWJsZURhdGEtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vz
c2FyeSAodGFibGUgJXMpIGZhaWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTog
JXMiLCB0aGlzLCB0YWJsZS51dGY4KCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBUQUJMRSBfIiwgdGFibGUpKTsK
KyAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFibGVRdWVyeS0+c3RlcCgpICE9
IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05l
d1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBvcmFyeSB0YWJsZXMsIGVycm9y
IG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNlcygpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNy
ZWF0ZSB1bmlxdWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaAppbmRleCA1OWI3ZThjMDI0YjdkNTkzN2Q3MmU1ZWRl
YjIxMzA3YjkzMjhiMjI1Li44NDc0YWNjNTEzNDY1ODViZDVjNDFlM2RhYjhiODM5MWVjMjc1MGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGll
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM5LDYgKzQwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0g
Y2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOwogCit0
eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVBbmRJ
bmRleFBhaXI7CisKIGNsYXNzIERhdGFiYXNlVXRpbGl0aWVzIHsKIHByb3RlY3RlZDoKICAgICBE
YXRhYmFzZVV0aWxpdGllcyhTdHJpbmcmJiBzdG9yYWdlRmlsZVBhdGgpOwpAQCAtNTIsOCArNTUs
MTUgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGludGVycnVwdCgp
OwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVTY2hlbWEoKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGNyZWF0ZVVuaXF1ZUluZGljZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lTdGF0
ZW1lbnRzKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21h
aW5JRCh1bnNpZ25lZCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBuZWVkc1VwZGF0ZWRT
Y2hlbWEoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVB
bmRJbmRleFF1ZXJpZXMoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c29ydGVkVGFibGVzKCkgPSAwOworICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFu
ZEluZGV4UXVlcmllcyhjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgc3RyaXBJbmRleFF1ZXJ5
VG9NYXRjaFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpOworICAgIHZvaWQg
bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFi
YXNlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggOGJjMjM2
OWJkZmRlM2YwZTljZWU4NmFmOWVhNmY2MjEyYjJmODg3Mi4uY2M5NDkyNTNkMDFmMjU0NDQ4OTc3
Yjg1OWY5ODJiNWRhOGI5MThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC02OCw4ICs2
OCw4IEBAIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCA9ICJDUkVBVEUgVEFCTEUgQXR0cmlidXRlCiAgICAgImVhcmxpZXN0VGltZVRvU2VuZFRv
U291cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBlYXJs
aWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SUQgVEVYVCwgIgogICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpIFJFRkVSRU5D
RVMgUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9SRUlH
TiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgogICAgICJQQ01PYnNl
cnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKSJfczsKLWNvbnN0ZXhwciBh
dXRvIGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
PSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5J
RCBvbiBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21h
aW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgKSJfczsKLWNvbnN0ZXhwciBhdXRvIGNyZWF0
ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBV
TklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRp
b25TaXRlRG9tYWluSUQgKSJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VW5h
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNp
dGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURv
bWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
RCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGlu
YXRpb25TaXRlRG9tYWluSURfc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCBvbiBBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbklELCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEICkiX3M7CiBjb25zdGV4cHIg
YXV0byBjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiA9ICJDUkVBVEUgVEFCTEUgUENNT2JzZXJ2ZWRE
b21haW5zICgiCiAgICAgImRvbWFpbklEIElOVEVHRVIgUFJJTUFSWSBLRVksIHJlZ2lzdHJhYmxl
RG9tYWluIFRFWFQgTk9UIE5VTEwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogY29uc3Rl
eHByIGF1dG8gaW5zZXJ0T2JzZXJ2ZWREb21haW5RdWVyeSA9ICJJTlNFUlQgSU5UTyBQQ01PYnNl
cnZlZERvbWFpbnMgKHJlZ2lzdHJhYmxlRG9tYWluKSBWQUxVRVMgKD8pIl9zOwpAQCAtODksNiAr
ODksNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5
KQogICAgIG9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVtYUlmTmVjZXNzYXJ5KCk7CiAgICAgZW5h
YmxlRm9yZWlnbktleXMoKTsKICAgICBhZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCk7Cisg
ICAgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgYWxsRGF0YWJhc2Vz
KCkuYWRkKHRoaXMpOwogfQogCkBAIC05OSw2ICsxMDAsMjggQEAgRGF0YWJhc2U6On5EYXRhYmFz
ZSgpCiAgICAgYWxsRGF0YWJhc2VzKCkucmVtb3ZlKHRoaXMpOwogfQogCitjb25zdCBNZW1vcnlD
b21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFp
cj4mIERhdGFiYXNlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkKK3sKKyAgICBzdGF0
aWMgYXV0byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gbWFrZU5ldmVyRGVzdHJveWVk
KE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5k
SW5kZXhQYWlyPiB7CisgICAgICAgIHsgIlBDTU9ic2VydmVkRG9tYWlucyJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVBDTU9ic2VydmVkRG9t
YWluLCBzdGQ6Om51bGxvcHQpIH0sCisgICAgICAgIHsgIlVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPj4oY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5k
ZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCisgICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4+KGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRl
eFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KSkgfSwKKyAgICB9KTsKKworICAgIHJldHVybiBleHBlY3RlZFRh
YmxlQW5kSW5kZXhRdWVyaWVzOworfQorCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgRGF0YWJhc2U6
OnNvcnRlZFRhYmxlcygpCit7CisgICAgc3RhdGljIGF1dG8gc29ydGVkVGFibGVzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgIlBDTU9ic2VydmVkRG9tYWlu
cyJfcywKKyAgICAgICAgIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLAor
ICAgICAgICAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zCisgICAgfSk7CisK
KyAgICByZXR1cm4gc29ydGVkVGFibGVzOworfQorCiB2b2lkIERhdGFiYXNlOjppbnRlcnJ1cHRB
bGxEYXRhYmFzZXMoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTA2
LDYgKzEyOSwxNiBAQCB2b2lkIERhdGFiYXNlOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXMoKQogICAg
ICAgICBkYXRhYmFzZS0+aW50ZXJydXB0KCk7CiB9CiAKK2Jvb2wgRGF0YWJhc2U6OmNyZWF0ZVVu
aXF1ZUluZGljZXMoKQoreworICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVh
dGVVbmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KQorICAgICAg
ICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBj
cmVhdGluZyBpbmRleGVzIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIGJvb2wgRGF0YWJhc2U6OmNyZWF0ZVNjaGVtYSgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC02NzQsNiArNzA3LDE2IEBAIHZvaWQgRGF0YWJh
c2U6OmFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkoKQogICAgIGNoZWNrQ29sdW1ucyhhdHRy
aWJ1dGVkVGFibGVOYW1lKTsKICAgICBjaGVja0NvbHVtbnModW5hdHRyaWJ1dGVkVGFibGVOYW1l
KTsKIH0KK2Jvb2wgRGF0YWJhc2U6Om5lZWRzVXBkYXRlZFNjaGVtYSgpCit7CisgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIGF0IHRoZSBlbmQgb2YgMjAyMS4gTm8gcHVibGljIHJlbGVhc2Ugd2Fz
IG1hZGUgd2l0aCB0aGUgc2NoZW1hIG1pc3Npbmcgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCwg
c28gdGhpcyBpcyBvbmx5IG5lZWRlZCB0byBtaWdyYXRlIGludGVybmFsIHVzZXJzIHdobyB1cGRh
dGVkIGluIFNlcHRlbWJlciAyMDIxLgorICAgIGZvciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRh
YmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7CisgICAgICAgIGlmIChjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXModGFibGUpICE9IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5n
ZXQodGFibGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6Y29sdW1uc0ZvclRhYmxlKGNv
bnN0IFN0cmluZyYgdGFibGVOYW1lKQogewpAQCAtNjk4LDE0ICs3NDEsMTEgQEAgdm9pZCBEYXRh
YmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNv
bnN0IFN0cmluZyYgY28KIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1lLCAiIEFE
RCBDT0xVTU4gIiwgY29sdW1uTmFtZSkpOwogICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFz
ZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRv
IGFkZCBtaXNzaW5nIGNvbHVtbnMgdG8gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChzdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2U6OmFkZE1pc3NpbmdDb2x1
bW5Ub1RhYmxlIGVycm9yIGV4ZWN1dGluZyBzdGF0ZW1lbnQgdG8gYWRkIG1pc3NpbmcgY29sdW1u
cyB0byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KIH0KIAog
fSAvLyBuYW1lc3BhY2UgUENNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCmluZGV4IGZhYjViZjBmZDQ5OTY5
ZmEwYTE4NmYzNGI3NzMyMjdkNjBlZDAxMGMuLjJlZWQ4OTQ1ZGEwYmZkMjU2MWFkOTg3MDRiOGVm
NzExODAyMTlkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCkBAIC03Nyw2ICs3NywxMSBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoRG9tYWluSUQpIGNv
bnN0IGZpbmFsOwogCiAgICAgdm9pZCBhZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCk7Cisg
ICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hlbWEoKSBmaW5hbDsKKyAgICBib29sIGNyZWF0ZVVuaXF1
ZUluZGljZXMoKSBmaW5hbDsKKyAgICBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJ
bmRleFF1ZXJpZXMoKSBmaW5hbDsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc29ydGVkVGFi
bGVzKCkgZmluYWw7CisKICAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5zRm9yVGFibGUoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpOwogICAgIHZvaWQgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoY29u
c3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29sdW1uTmFtZSk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZmJhNGI3ODQw
NGJiMTNhZDYzNGViNmI2NGU2YWJhYjhmMWJiZWZkLi4xMTQ5NmI5Mjc3ZmExMjA3ZjhjNjVmNDM1
ZWU3ZWY5ODcyYWIwZGZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDktMjcgIEthdGUgQ2hlbmV5ICA8a2F0
aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBkaWZmZXJlbnQgYnVuZGxl
SUQgZW50cmllcyB3aWxsIG92ZXJyaWRlIGVhY2ggb3RoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgY2Fz
ZSBvZiBleGlzdGluZyBQQ00gZGF0YSB3aXRoIGEgYnVuZGxlSUQKKyAgICAgICAgY29sdW1uIGJ1
dCBhbiBleHBpcmVkIHVuaXF1ZSBpbmRleC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW06CisgICAgICAgIChhZGRV
bmF0dHJpYnV0ZWRQQ012NCk6CisgICAgICAgIChhZGRBdHRyaWJ1dGVkUENNdjQpOgorICAgICAg
ICAoZHVtcGVkUENNKToKKyAgICAgICAgKHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQpOgorICAgICAg
ICAoZW1wdHlQY21EQlBhdGgpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVQQ01PYnNlcnZl
ZERvbWFpblRhYmxlKToKKyAgICAgICAgKHNldFVwRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZSk6CisgICAgICAgIChzZXRVcEZyb21QQ01EYXRhYmFzZSk6CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKHNldFVwKTogRGVsZXRlZC4KKwogMjAyMS0wOS0yNCAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3J1bi13ZWJraXQtdGVzdHNdIFVz
ZSBQeXRob24gMyAoUmV2ZXJ0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXgg
NGZiMTE0MDhkZGI4ZGY0YzY1Zjk3ZDI1NDljMDA5MzgwOGJiM2QyZC4uMjFkNzUzZWM0MzZlNTAx
NDM5MTU1ZDdiNTZlZmYwNDZlZDU5MWNiNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Lm1tCkBAIC0xNjQsNiArMTY0LDQ5IEBAIHN0YXRpYyB2b2lkIGFkZFVuYXR0cmlidXRlZFBDTXYz
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKICAgICBhZGRWYWx1ZXNUb1RhYmxl
PDc+KGRhdGFiYXNlLCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1
ZXJ5VjMsIHsgMiwgMywgNDMsIDEuMCwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAi
dGVzdCBrZXkgaWQiIH0pOwogfQogCitzdGF0aWMgdm9pZCBhZGRVbmF0dHJpYnV0ZWRQQ012NChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgY29uc3RleHByIGF1dG8g
Y3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWMyA9ICJDUkVBVEUgVEFC
TEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKKyAgICAgICAgInNvdXJj
ZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJ
TlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCisgICAgICAgICJ0
aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBr
ZXlJRCBURVhULCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEIFRFWFQsIEZPUkVJR04gS0VZKHNv
dXJjZVNpdGVEb21haW5JRCkgIgorICAgICAgICAiUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMo
ZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVE
b21haW5JRCkgUkVGRVJFTkNFUyAiCisgICAgICAgICJPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQp
IE9OIERFTEVURSBDQVNDQURFKSJfczsKKworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1
dGVDb21tYW5kKGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50VjMpKTsK
KworICAgIGNvbnN0ZXhwciBhdXRvIGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50UXVlcnlWMyA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklELCAiCisgICAgICAgICJzb3VyY2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25h
dHVyZSwga2V5SUQsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPykiX3M7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYnVu
ZGxlSUQgPSAiY29tLmFwcGxlLlNhZmFyaSI7CisjZWxzZQorICAgIGF1dG8gYnVuZGxlSUQgPSAi
Y29tLmFwcGxlLm1vYmlsZXNhZmFyaSI7CisjZW5kaWYKKyAgICBhZGRWYWx1ZXNUb1RhYmxlPDg+
KGRhdGFiYXNlLCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5
VjMsIHsgMiwgMywgNDMsIDEuMCwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVz
dCBrZXkgaWQiLCBidW5kbGVJRCB9KTsKK30KKworc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlZFBD
TXY0KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBjb25zdGV4cHIg
YXV0byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWMyA9ICJDUkVBVEUg
VEFCTEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgiCisgICAgICAgICJzb3Vy
Y2VTaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQg
SU5URUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICAgICAi
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VS
IE5PVCBOVUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKKyAgICAgICAgImVhcmxp
ZXN0VGltZVRvU2VuZFRvU291cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBr
ZXlJRCBURVhULCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsIHNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSUQgVEVYVCwiCisgICAgICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRl
RG9tYWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUg
Q0FTQ0FERSwgRk9SRUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMg
IgorICAgICAgICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSki
X3M7CisKKyAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWMykpOworCisgICAgY29uc3RleHByIGF1dG8g
aW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnlWMyA9ICJJTlNFUlQg
T1IgUkVQTEFDRSBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNl
U2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgorICAgICAgICAic291cmNl
SUQsIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNrLCBlYXJs
aWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0
VGltZVRvU2VuZFRvRGVzdGluYXRpb24sIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVF
UyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CisKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgYXV0byBidW5kbGVJRCA9ICJjb20uYXBwbGUuU2FmYXJpIjsKKyNlbHNlCisg
ICAgYXV0byBidW5kbGVJRCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKyNlbmRpZgorICAg
IGFkZFZhbHVlc1RvVGFibGU8MTI+KGRhdGFiYXNlLCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRRdWVyeVYzLCB7IDEsIDIsIDQyLCAxNCwgNywgMS4wLCBlYXJsaWVzdFRp
bWVUb1NlbmQoKSwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQi
LCBlYXJsaWVzdFRpbWVUb1NlbmQoKSwgYnVuZGxlSUQgfSk7Cit9CisKIHN0YXRpYyBSZXRhaW5Q
dHI8TlNTdHJpbmc+IGR1bXBlZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiB7CiAgICAgX19ibG9j
ayBSZXRhaW5QdHI8TlNTdHJpbmc+IHBjbTsKQEAgLTE3MiwxNCArMjE1LDE4IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNTdHJpbmc+IGR1bXBlZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgfV07
CiAgICAgd2hpbGUgKCFwY20pCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5M
b29wKCk7CisgICAgCiAgICAgcmV0dXJuIHBjbTsKIH0KIAotc3RhdGljIHZvaWQgcG9sbFVudGls
UENNSXNNaWdyYXRlZChXS1dlYlZpZXcgKndlYlZpZXcpCitlbnVtIGNsYXNzIE1pZ3JhdGluZ0Zy
b21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzIDogYm9vbCB7IE5vLCBZZXMgfTsKK3N0YXRpYyB2b2lk
IHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBNaWdyYXRpbmdGcm9t
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyBtaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cykKIHsKLSAgICAvLyBUaGlzIHF1ZXJ5IGlzIHRoZSBmaXJzdCB0aGluZyB0byBvcGVuIHRoZSBv
bGQgZGF0YWJhc2UsIHNvIG1pZ3JhdGlvbiBoYXMgbm90IGhhcHBlbmVkIHlldC4KLSAgICBjb25z
dCBjaGFyKiBlbXB0eVBDTURhdGFiYXNlID0gIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgZGF0YS5cbiI7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBDTSh3ZWJWaWV3
KS5nZXQoKSwgZW1wdHlQQ01EYXRhYmFzZSk7CisgICAgaWYgKG1pZ3JhdGluZ0Zyb21SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID09IE1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpZ
ZXMpIHsKKyAgICAgICAgLy8gVGhpcyBxdWVyeSBpcyB0aGUgZmlyc3QgdGhpbmcgdG8gb3BlbiB0
aGUgb2xkIGRhdGFiYXNlLCBzbyBtaWdyYXRpb24gaGFzIG5vdCBoYXBwZW5lZCB5ZXQuCisgICAg
ICAgIGNvbnN0IGNoYXIqIGVtcHR5UENNRGF0YWJhc2UgPSAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudCBkYXRhLlxuIjsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBl
ZFBDTSh3ZWJWaWV3KS5nZXQoKSwgZW1wdHlQQ01EYXRhYmFzZSk7CisgICAgfQogCiAgICAgTlNT
dHJpbmcgKmV4cGVjdGVkTWlncmF0ZWRQQ01EYXRhYmFzZSA9IEAiIgogICAgICAgICAiVW5hdHRy
aWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOlxuIgpAQCAtMjI0LDYgKzI3MSwxNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKmVtcHR5T2JzZXJ2YXRpb25zREJQYXRoKCkKICAgICByZXR1cm4g
ZmlsZVVSTC5wYXRoOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKmVtcHR5UGNtREJQYXRoKCkKK3sK
KyAgICBOU0ZpbGVNYW5hZ2VyICpkZWZhdWx0RmlsZU1hbmFnZXIgPSBOU0ZpbGVNYW5hZ2VyLmRl
ZmF1bHRNYW5hZ2VyOworICAgIE5TVVJMICppdHBSb290VVJMID0gV0tXZWJzaXRlRGF0YVN0b3Jl
LmRlZmF1bHREYXRhU3RvcmUuX2NvbmZpZ3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3Rvcnk7CisgICAgTlNVUkwgKmZpbGVVUkwgPSBbaXRwUm9vdFVSTCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJwY20uZGIiXTsKKyAgICBbZGVmYXVsdEZpbGVNYW5hZ2VyIHJlbW92
ZUl0ZW1BdFBhdGg6aXRwUm9vdFVSTC5wYXRoIGVycm9yOm5pbF07CisgICAgRVhQRUNUX0ZBTFNF
KFtkZWZhdWx0RmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDppdHBSb290VVJMLnBhdGhdKTsK
KyAgICBbZGVmYXVsdEZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOml0cFJvb3RVUkwg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OworICAgIHJldHVybiBmaWxlVVJMLnBhdGg7Cit9CisKIHN0YXRpYyB2b2lkIGNsZWFuVXAoKQog
ewogICAgIE5TRmlsZU1hbmFnZXIgKmRlZmF1bHRGaWxlTWFuYWdlciA9IE5TRmlsZU1hbmFnZXIu
ZGVmYXVsdE1hbmFnZXI7CkBAIC0yNTQsNyArMzEyLDIzIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JzZXJ2ZWREb21haW5UYWJsZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0
YWJhCiAgICAgYWRkT2JzZXJ2ZWREb21haW4oInd3dy53ZWJraXQub3JnIik7CiB9CiAKLXZvaWQg
c2V0VXAodm9pZCgqYWRkVW5hdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYp
LCB2b2lkKCphZGRBdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpKQorc3Rh
dGljIHZvaWQgY3JlYXRlQW5kUG9wdWxhdGVQQ01PYnNlcnZlZERvbWFpblRhYmxlKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBhdXRvIGFkZE9ic2VydmVkRG9tYWlu
ID0gWyZdKGNvbnN0IGNoYXIqIGRvbWFpbikgeworICAgICAgICBjb25zdGV4cHIgYXV0byBpbnNl
cnRPYnNlcnZlZERvbWFpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAo
cmVnaXN0cmFibGVEb21haW4pIFZBTFVFUyAoPykiX3M7CisgICAgICAgIGFkZFZhbHVlc1RvVGFi
bGU8MT4oZGF0YWJhc2UsIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnksIHsgZG9tYWluIH0pOwor
ICAgIH07CisKKyAgICBjb25zdGV4cHIgYXV0byBjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiA9ICJD
UkVBVEUgVEFCTEUgUENNT2JzZXJ2ZWREb21haW5zICgiCisgICAgICAgICJkb21haW5JRCBJTlRF
R0VSIFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBP
TiBDT05GTElDVCBGQUlMKSJfczsKKworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluKSk7CisgICAgYWRkT2JzZXJ2ZWREb21haW4o
ImV4YW1wbGUuY29tIik7CisgICAgYWRkT2JzZXJ2ZWREb21haW4oIndlYmtpdC5vcmciKTsKKyAg
ICBhZGRPYnNlcnZlZERvbWFpbigid3d3LndlYmtpdC5vcmciKTsKK30KKwordm9pZCBzZXRVcEZy
b21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2Uodm9pZCgqYWRkVW5hdHRyaWJ1dGVkUENN
KShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpLCB2b2lkKCphZGRBdHRyaWJ1dGVkUENNKShXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZSYpKQogewogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIGRh
dGFiYXNlOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLm9wZW4oZW1wdHlPYnNlcnZhdGlvbnNE
QlBhdGgoKSkpOwpAQCAtMjY0LDI2ICszMzgsNDQgQEAgdm9pZCBzZXRVcCh2b2lkKCphZGRVbmF0
dHJpYnV0ZWRQQ00pKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiksIHZvaWQoKmFkZEF0dHJpYnUK
ICAgICBkYXRhYmFzZS5jbG9zZSgpOwogfQogCit2b2lkIHNldFVwRnJvbVBDTURhdGFiYXNlKHZv
aWQoKmFkZFVuYXR0cmlidXRlZFBDTSkoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSwgdm9pZCgq
YWRkQXR0cmlidXRlZFBDTSkoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSkKK3sKKyAgICBXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZSBkYXRhYmFzZTsKKyAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZS5v
cGVuKGVtcHR5UGNtREJQYXRoKCkpKTsKKyAgICBjcmVhdGVBbmRQb3B1bGF0ZVBDTU9ic2VydmVk
RG9tYWluVGFibGUoZGF0YWJhc2UpOworICAgIGFkZFVuYXR0cmlidXRlZFBDTShkYXRhYmFzZSk7
CisgICAgYWRkQXR0cmlidXRlZFBDTShkYXRhYmFzZSk7CisgICAgZGF0YWJhc2UuY2xvc2UoKTsK
K30KKwogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWlncmF0ZUZyb21SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzMSkKIHsKLSAgICBzZXRVcChhZGRVbmF0dHJpYnV0ZWRQQ012MSwgYWRkQXR0
cmlidXRlZFBDTXYxKTsKKyAgICBzZXRVcEZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2UoYWRkVW5hdHRyaWJ1dGVkUENNdjEsIGFkZEF0dHJpYnV0ZWRQQ012MSk7CiAgICAgYXV0byB3
ZWJWaWV3ID0gd2ViVmlld1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZEluTmV0d29y
a1Byb2Nlc3MoKTsKLSAgICBwb2xsVW50aWxQQ01Jc01pZ3JhdGVkKHdlYlZpZXcuZ2V0KCkpOwor
ICAgIHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSwgTWlncmF0aW5nRnJvbVJl
c291cmNlTG9hZFN0YXRpc3RpY3M6Olllcyk7CiAgICAgY2xlYW5VcCgpOwogfQogCiBURVNUKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBNaWdyYXRlRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3My
KQogewotICAgIHNldFVwKGFkZFVuYXR0cmlidXRlZFBDTXYyLCBhZGRBdHRyaWJ1dGVkUENNdjIp
OworICAgIHNldFVwRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZShhZGRVbmF0dHJp
YnV0ZWRQQ012MiwgYWRkQXR0cmlidXRlZFBDTXYyKTsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2VzcygpOwot
ICAgIHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9sbFVudGls
UENNSXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6WWVzKTsKICAgICBjbGVhblVwKCk7CiB9CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIE1pZ3JhdGVGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczMpCiB7Ci0gICAgc2V0
VXAoYWRkVW5hdHRyaWJ1dGVkUENNdjMsIGFkZEF0dHJpYnV0ZWRQQ012Myk7CisgICAgc2V0VXBG
cm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlKGFkZFVuYXR0cmlidXRlZFBDTXYzLCBh
ZGRBdHRyaWJ1dGVkUENNdjMpOworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdXaXRoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWRJbk5ldHdvcmtQcm9jZXNzKCk7CisgICAgcG9sbFVudGls
UENNSXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6WWVzKTsKKyAgICBjbGVhblVwKCk7Cit9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIE1pZ3JhdGVGcm9tUENNMSkKK3sKKyAgICBzZXRVcEZyb21QQ01EYXRhYmFzZShh
ZGRVbmF0dHJpYnV0ZWRQQ012NCwgYWRkQXR0cmlidXRlZFBDTXY0KTsKICAgICBhdXRvIHdlYlZp
ZXcgPSB3ZWJWaWV3V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJv
Y2VzcygpOwotICAgIHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAg
cG9sbFVudGlsUENNSXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6Tm8pOwogICAgIGNsZWFuVXAoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439404</attachid>
            <date>2021-09-27 15:48:11 -0700</date>
            <delta_ts>2021-09-27 21:28:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-230839-20210927154810.patch</filename>
            <type>text/plain</type>
            <size>39369</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzY2I2NWNkMTFiM2RkMTgy
MWQ3ZGQ2MzlhYzllZTlkOGYzNDg2YmIuLjk2OTI2ZThlZWYwOThkNDljOWU3ZTIwZWQ5Y2FlZDYz
Mzc1NjI2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDktMjcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBkaWZmZXJl
bnQgYnVuZGxlSUQgZW50cmllcyB3aWxsIG92ZXJyaWRlIGVhY2ggb3RoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgV2UgcmVjZW50bHkgYWRkZWQg
YSBidW5kbGVJRCBjb2x1bW4gdG8gUENNIHRhYmxlcy4gV2Ugd2FudCB0byBtYWtlCisgICAgICAg
IHN1cmUgZW50cmllcyB3aXRoIGRpZmZlcmVudCBidW5kbGVJRHMgZG8gbm90IG92ZXJyaWRlIGVh
Y2ggb3RoZXIsCisgICAgICAgIHNvIHdlIHNob3VsZCBtYWtlIGl0IGEgcGFydCBvZiB0aGUgdW5p
cXVlIGNvbnN0cmFpbnQgb24gYm90aCBQQ00KKyAgICAgICAgdGFibGVzIHRoYXQgY29udGFpbiBp
dC4gVGhpcyByZXF1aXJlcyBjcmVhdGluZyBuZXcgdGFibGVzIGFuZAorICAgICAgICBtaWdyYXRp
bmcgZXhpc3RpbmcgZGF0YSB0byB0aGVtLiBMdWNraWx5IHRoaXMgY29kZSBhbHJlYWR5IGV4aXN0
cworICAgICAgICBpbiB0aGUgSVRQIGRhdGFiYXNlLCBhbmQgd2UgY2FuIGp1c3QgbW92ZSBpdCB0
byB0aGUgc2hhcmVkCisgICAgICAgIERhdGFiYXNlVXRpbGl0aWVzIGNsYXNzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKToKKyAgICAgICAgKFdlYktp
dDo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjppbnNlcnREaXN0
aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxl
c0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRh
YmFzZVV0aWxpdGllczo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRp
bGl0aWVzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNyZWF0ZVVuaXF1ZUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRh
dGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDoK
KwogMjAyMS0wOS0yNyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXVtHUFVQXSBSZW1vdmUgYWNjZXNzIHRvIHVudXNlZCBtYWNoIHNlcnZpY2VzIGluIHNhbmRi
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCmluZGV4IDgxZTUxOTViNjA0Yjg2N2EwZTIxNGM0NTM3NTY0MTIzOGIzOWY5NjYuLjMy
NjQ5YWExZWJhYWU5NmUyZDJjNWE0NTMzZWUyM2Q1NmExOTJjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNTAsNyAr
NTAsNiBAQAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CkBAIC0y
NTMsMTIgKzI1Miw3IEBAIHN0YXRpYyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hlbWEoY29u
c3QgU3RyaW5nJiBzY2hlbWEpCiAgICAgcmV0dXJuIHNjaGVtYS5jb250YWlucygiUkVGRVJFTkNF
UyBUb3BMZXZlbERvbWFpbnMiKTsKIH0KIAotc3RhdGljIFN0cmluZyBzdHJpcEluZGV4UXVlcnlU
b01hdGNoU3RvcmVkVmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVyeSkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKG9yaWdpbmFsUXVlcnkpLnJlcGxhY2UoIkNSRUFURSBVTklRVUUgSU5ERVggSUYg
Tk9UIEVYSVNUUyIsICJDUkVBVEUgVU5JUVVFIElOREVYIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZElu
ZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQorY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZXhwZWN0ZWRUYWJsZUFuZElu
ZGV4UXVlcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVl
cmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewogICAgICAgICB7ICJPYnNlcnZl
ZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVPYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LApAQCAtMjc5LDYgKzI3Mywy
NyBAQCBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JgogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzOwogfQogCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNvcnRlZFRhYmxlcygpCit7CisgICAgc3RhdGljIGF1dG8g
c29ydGVkVGFibGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKKyAgICAg
ICAgIk9ic2VydmVkRG9tYWlucyJfcywKKyAgICAgICAgIlRvcExldmVsRG9tYWlucyJfcywKKyAg
ICAgICAgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywKKyAgICAgICAgIlRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MsCisgICAgICAgICJUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLAorICAgICAgICAiVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLAorICAgICAgICAiVG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tIl9zLAorICAgICAgICAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywK
KyAgICAgICAgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsCisgICAgICAgICJTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLAorICAgICAgICAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyJfcywKKyAgICAgICAgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywKKyAgICAgICAgIk9wZXJhdGluZ0RhdGVzIl9zCisgICAgfSk7CisKKyAgICByZXR1cm4g
c29ydGVkVGFibGVzOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIHN0
YXRpYyBTdHJpbmcgYnVpbGRMaXN0KGNvbnN0IENvbnRhaW5lclR5cGUmIHZhbHVlcykKIHsKQEAg
LTM2Nyw1MiArMzgyLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZGVsZXRlVGFibGUoU3RyaW5nVmlldyB0YWJsZU5hbWUpCiAgICAgfQogfQogCi1UYWJsZUFu
ZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRh
YmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQotewotICAgIGF1dG8g
Z2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBz
cWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUn
Il9zKTsKLSAgICBpZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50
IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBp
ZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09L
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5h
YmxlIHRvIGJpbmQgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJp
ZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0KLQotICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFibGVTdGF0
ZW1lbnQtPmNvbHVtblRleHQoMCk7Ci0KLSAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBX
SEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7Ci0gICAgaWYgKCFnZXRJbmRl
eFN0YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhR
dWVyaWVzIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhl
IHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPmJp
bmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVtZW50IHRv
IGZldGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBpbmRleDsKLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5k
ZXhTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwotICAgICAgICBpZiAoIXJhd0luZGV4LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGluZGV4ID0gcmF3SW5kZXg7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNy
ZWF0ZVRhYmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7Ci19Ci0KIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3NpbmdVbmlxdWVJbmRpY2VzKCkKIHsKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIENPVU5U
KCopIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ2luZGV4JyJfcyk7CkBAIC00NTYs
NjggKzQyNSw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5l
ZWRzVXBkYXRlZFNjaGVtYSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgRXhwZWN0
ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRl
bWVudChTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdGFibGUpCi17Ci0g
ICAgaWYgKHRhYmxlID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAg
cmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZyYW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRl
ZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBH
Uk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BGcmFtZURvbWFpbklEIl9zKTsKLQotICAgIGlm
ICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJl
dHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVw
ZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCJfcyk7
Ci0KLSAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iKQotICAg
ICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiX3MpOwotCi0gICAgaWYg
KHRhYmxlID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4g
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWlu
SUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQs
IGZyb21Eb21haW5JRCJfcyk7Ci0KLSAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dFNsb3cobWFrZVN0cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNU
ICogRlJPTSBfIiwgdGFibGUpKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBp
ZiAoIW5lZWRzVXBkYXRlZFNjaGVtYSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRy
YW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGZv
ciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7
Ci0gICAgICAgIGF1dG8gYWx0ZXJUYWJsZSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNs
b3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGUsICIgUkVOQU1FIFRPIF8iLCB0YWJs
ZSkpOwotICAgICAgICBpZiAoIWFsdGVyVGFibGUgfHwgYWx0ZXJUYWJsZS0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1Rh
Ymxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byByZW5hbWUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICVz
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVE
YXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIHNjaGVtYSwgZXJyb3Ig
bWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3Ig
KGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewot
ICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFi
bGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdGFibGUpOwotICAgICAgICBpZiAoIW1pZ3JhdGVUYWJs
ZURhdGEgfHwgbWlncmF0ZVRhYmxlRGF0YS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZh
aWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBkcm9wVGFibGVR
dWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBU
QUJMRSBfIiwgdGFibGUpKTsKLSAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFi
bGVRdWVyeS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBv
cmFyeSB0YWJsZXMsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNl
cygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSB1bmlxdWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNz
YXJ5KCkKIHsKICAgICBpZiAoIXRhYmxlRXhpc3RzKCJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCmluZGV4IDg1MjhhYWUzYjUwMjYzNGUzMDNlYzA1MzNiNjQxNDU3OTAxOGRl
MTEuLjUwOTJkNTE0NDczN2U4M2RkODgxMmM0ZjM2MjY3MmMzYWJkMmUzMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC00OCw4
ICs0OCw2IEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mQnVja2V0c1BlclN0YXRp
c3RpYyA9IDU7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZlN0YXRpc3RpY3MgPSA3
Owogc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQ
ZXJTdGF0aXN0aWM+IGJ1Y2tldFNpemVzIHt7IDEsIDMsIDEwLCA1MCwgMTAwIH19OwogCi10eXBl
ZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVBbmRJbmRl
eFBhaXI7Ci0KIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3ll
ZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1
ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVi
bGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVz
IHsKIHB1YmxpYzoKQEAgLTExOCw2ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJydXB0QWxsRGF0YWJhc2VzKCk7CiAKIHByaXZhdGU6CisgICAgY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkgZmluYWw7CisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNvcnRlZFRhYmxlcygpIGZpbmFsOwogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNP
cGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyT3BlcmF0
aW5nRGF0ZXMoKSBvdmVycmlkZSB7IH0KICAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdh
bGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRv
dykgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMjYsMTAgKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICB2b2lkIGFkZE1pc3NpbmdUYWJsZXNJZk5lY2Vzc2Fy
eSgpOwogICAgIGJvb2wgbWlzc2luZ1VuaXF1ZUluZGljZXMoKTsKLSAgICBib29sIG5lZWRzVXBk
YXRlZFNjaGVtYSgpOwotICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFuZEluZGV4
UXVlcmllcyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpIGZp
bmFsOwogICAgIGJvb2wgbWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCk7Ci0gICAg
dm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIG1pZ3Jh
dGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCB0YWJsZUV4aXN0cyhT
dHJpbmdWaWV3KTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlKFN0cmluZ1ZpZXcpOwpAQCAtMjA2LDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKICAgICBib29sIGlzRGF0YWJhc2VTdG9yZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygp
OworICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpIGZpbmFsOwogICAgIGJvb2wgY3JlYXRl
U2NoZW1hKCkgZmluYWw7CiAgICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApp
bmRleCBmYTBiN2ZkZjQ0NzgyZmE4MzFlMGQzYmVlZWMyNmU0YmI1NTdmMDgxLi5iNzdjMjRmNGZk
NWMyM2E1NDA0MmY0YmVlNTMzMTc0YzllYTYzNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMTg3LDQgKzE4NywxMTYg
QEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1
aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKICAgICByZXR1cm4gYXR0cmlidXRpb247CiB9CiAK
K1N0cmluZyBEYXRhYmFzZVV0aWxpdGllczo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCit7CisgICAgcmV0dXJuIFN0cmluZyhvcmln
aW5hbFF1ZXJ5KS5yZXBsYWNlKCJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMiLCAi
Q1JFQVRFIFVOSVFVRSBJTkRFWCIpOworfQorCitUYWJsZUFuZEluZGV4UGFpciBEYXRhYmFzZVV0
aWxpdGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKQoreworICAgIGF1dG8gZ2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8g
QU5EIHR5cGUgPSAndGFibGUnIl9zKTsKKyAgICBpZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZVV0aWxpdGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBw
cmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5h
bWUpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0
aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBz
Y2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0g
Z2V0VGFibGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CisKKyAgICBhdXRvIGdldEluZGV4U3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3Fs
aXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7CisgICAg
aWYgKCFnZXRJbmRleFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJs
ZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5k
ZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKGdldEluZGV4U3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VV
dGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0
ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGluZGV4OworICAgIGlmIChnZXRJbmRleFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmlu
ZyhnZXRJbmRleFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CisgICAgICAgIGlmICghcmF3SW5k
ZXguaXNFbXB0eSgpKQorICAgICAgICAgICAgaW5kZXggPSByYXdJbmRleDsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KFdU
Rk1vdmUoY3JlYXRlVGFibGVRdWVyeSksIFdURk1vdmUoaW5kZXgpKTsKK30KKworc3RhdGljIEV4
cGVjdGVkPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCwgaW50PiBpbnNlcnREaXN0aW5jdFZhbHVl
c0luVGFibGVTdGF0ZW1lbnQoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25z
dCBTdHJpbmcmIHRhYmxlKQoreworICAgIGlmICh0YWJsZSA9PSAiU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyIpCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFtZURv
bWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJhbWVE
b21haW5JRCJfcyk7CisKKyAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQorICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3Vy
Y2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQs
IHRvcEZyYW1lRG9tYWluSUQiX3MpOworCisgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJl
c291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0Rv
bWFpbklEIl9zKTsKKworICAgIGlmICh0YWJsZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJ
TlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3MpOworICAgIAorICAgIHJldHVy
biBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyAi
LCB0YWJsZSwgIiBTRUxFQ1QgRElTVElOQ1QgKiBGUk9NIF8iLCB0YWJsZSkpOworfQorCit2b2lk
IERhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKQor
eworICAgIGlmICghbmVlZHNVcGRhdGVkU2NoZW1hKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gdHJhbnNhY3Rpb25TY29wZSA9IGJlZ2luVHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwor
CisgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5r
ZXlzKCkpIHsKKyAgICAgICAgYXV0byBhbHRlclRhYmxlID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZSwgIiBSRU5BTUUgVE8g
XyIsIHRhYmxlKSk7CisgICAgICAgIGlmICghYWx0ZXJUYWJsZSB8fCBhbHRlclRhYmxlLT5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFU
b05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byByZW5hbWUgdGFibGUsIGVycm9yIG1lc3Nh
Z2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBNYWludGFpbiB0aGUgb3Jk
ZXIgb2YgdGFibGVzIHRvIG1ha2Ugc3VyZSB0aGUgT2JzZXJ2ZWREb21haW5zIHRhYmxlIGlzIGNy
ZWF0ZWQgZmlyc3QuIE90aGVyIHRhYmxlcyBoYXZlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIHJl
ZmVyZW5jaW5nIGl0LgorICAgIGZvciAoYXV0byYgdGFibGUgOiBzb3J0ZWRUYWJsZXMoKSkgewor
ICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFi
bGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdGFibGUpOworICAgICAgICBpZiAoIW1pZ3JhdGVUYWJs
ZURhdGEgfHwgbWlncmF0ZVRhYmxlRGF0YS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0g
RGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSAodGFi
bGUgJXMpIGZhaWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlz
LCB0YWJsZS51dGY4KCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBUQUJMRSBfIiwgdGFibGUpKTsKKyAgICAgICAg
aWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFibGVRdWVyeS0+c3RlcCgpICE9IFNRTElURV9E
T05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5l
Y2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCB0ZW1wb3JhcnkgdGFibGVzLCBlcnJvciBtZXNzYWdlOiAl
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6Om1p
Z3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIHVuaXF1ZSBp
bmRpY2VzLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
YXRhYmFzZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFz
ZVV0aWxpdGllcy5oCmluZGV4IDU5YjdlOGMwMjRiN2Q1OTM3ZDcyZTVlZGViMjEzMDdiOTMyOGIy
MjUuLmFmN2ZlYzk1ZTJlY2MyMjM0MTljNmVlZTU3OWUxZTlhZWM0OWFmZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzksNiArNDAsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSA6IGJvb2w7CiAKK3VzaW5nIFRhYmxlQW5k
SW5kZXhQYWlyID0gc3RkOjpwYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PjsKKwog
Y2xhc3MgRGF0YWJhc2VVdGlsaXRpZXMgewogcHJvdGVjdGVkOgogICAgIERhdGFiYXNlVXRpbGl0
aWVzKFN0cmluZyYmIHN0b3JhZ2VGaWxlUGF0aCk7CkBAIC01Miw4ICs1NSwxNSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgaW50ZXJydXB0KCk7CiAgICAgdmlydHVh
bCBib29sIGNyZWF0ZVNjaGVtYSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlVW5pcXVl
SW5kaWNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVk
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1h
cDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmll
cygpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzb3J0ZWRUYWJsZXMo
KSA9IDA7CisgICAgVGFibGVBbmRJbmRleFBhaXIgY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVz
KGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVyeSk7CisgICAgdm9pZCBtaWdyYXRlRGF0YVRv
TmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKIAogICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCA4YmMyMzY5YmRmZGUzZjBlOWNl
ZTg2YWY5ZWE2ZjYyMTJiMmY4ODcyLi5jYzk0OTI1M2QwMWYyNTQ0NDg5NzdiODU5Zjk4MmI1ZGE4
YjkxOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKQEAgLTY4LDggKzY4LDggQEAgY29uc3Rl
eHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFU
RSBUQUJMRSBBdHRyaWJ1dGUKICAgICAiZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwg
dG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvRGVzdGluYXRpb24gUkVBTCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCBURVhULCAiCiAg
ICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZl
ZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5h
dGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCiAgICAgIlBDTU9ic2VydmVkRG9tYWlucyhk
b21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5p
cXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5J
UVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCApIl9zOwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRl
RG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWluSUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMg
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rl
c3RpbmF0aW9uU2l0ZURvbWFpbklEX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgb24gVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3Rp
bmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEICkiX3M7Citjb25z
dGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21h
aW5JRF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEIG9uIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQs
IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgKSJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVBD
TU9ic2VydmVkRG9tYWluID0gIkNSRUFURSBUQUJMRSBQQ01PYnNlcnZlZERvbWFpbnMgKCIKICAg
ICAiZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgcmVnaXN0cmFibGVEb21haW4gVEVYVCBO
T1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCkiX3M7CiBjb25zdGV4cHIgYXV0byBpbnNl
cnRPYnNlcnZlZERvbWFpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAo
cmVnaXN0cmFibGVEb21haW4pIFZBTFVFUyAoPykiX3M7CkBAIC04OSw2ICs4OSw3IEBAIERhdGFi
YXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgb3BlbkRh
dGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBlbmFibGVGb3JlaWduS2V5
cygpOwogICAgIGFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkoKTsKKyAgICBtaWdyYXRlRGF0
YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICBhbGxEYXRhYmFzZXMoKS5hZGQodGhpcyk7
CiB9CiAKQEAgLTk5LDYgKzEwMCwyOCBAQCBEYXRhYmFzZTo6fkRhdGFiYXNlKCkKICAgICBhbGxE
YXRhYmFzZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKK2NvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgRGF0YWJhc2U6
OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQoreworICAgIHN0YXRpYyBhdXRvIGV4cGVj
dGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsK
KyAgICAgICAgeyAiUENNT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlUENNT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVs
bG9wdCkgfSwKKyAgICAgICAgeyAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQi
X3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KSkgfSwKKyAgICAgICAgeyAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNo
U3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpKSB9LAorICAgIH0pOworCisgICAgcmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1
ZXJpZXM7Cit9CisKK2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBEYXRhYmFzZTo6c29ydGVkVGFibGVz
KCkKK3sKKyAgICBzdGF0aWMgYXV0byBzb3J0ZWRUYWJsZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
VmVjdG9yPFN0cmluZz4geworICAgICAgICAiUENNT2JzZXJ2ZWREb21haW5zIl9zLAorICAgICAg
ICAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsCisgICAgICAgICJBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MKKyAgICB9KTsKKworICAgIHJldHVybiBz
b3J0ZWRUYWJsZXM7Cit9CisKIHZvaWQgRGF0YWJhc2U6OmludGVycnVwdEFsbERhdGFiYXNlcygp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xMDYsNiArMTI5LDE2IEBA
IHZvaWQgRGF0YWJhc2U6OmludGVycnVwdEFsbERhdGFiYXNlcygpCiAgICAgICAgIGRhdGFiYXNl
LT5pbnRlcnJ1cHQoKTsKIH0KIAorYm9vbCBEYXRhYmFzZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcygp
Cit7CisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCisgICAgICAgIHx8ICFtX2RhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNyZWF0aW5nIGluZGV4
ZXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBEYXRhYmFzZTo6Y3JlYXRlU2NoZW1hKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKQEAgLTY3NCw2ICs3MDcsMTYgQEAgdm9pZCBEYXRhYmFzZTo6YWRkQnVuZGxl
SURDb2x1bW5JZk5lY2Vzc2FyeSgpCiAgICAgY2hlY2tDb2x1bW5zKGF0dHJpYnV0ZWRUYWJsZU5h
bWUpOwogICAgIGNoZWNrQ29sdW1ucyh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUpOwogfQorYm9vbCBE
YXRhYmFzZTo6bmVlZHNVcGRhdGVkU2NoZW1hKCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgYXQgdGhlIGVuZCBvZiAyMDIxLiBObyBwdWJsaWMgcmVsZWFzZSB3YXMgbWFkZSB3aXRoIHRo
ZSBzY2hlbWEgbWlzc2luZyBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlELCBzbyB0aGlzIGlzIG9u
bHkgbmVlZGVkIHRvIG1pZ3JhdGUgaW50ZXJuYWwgdXNlcnMgd2hvIHVwZGF0ZWQgaW4gU2VwdGVt
YmVyIDIwMjEuCisgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1
ZXJpZXMoKS5rZXlzKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyh0YWJsZSkgIT0gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmdldCh0YWJsZSkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAK
IFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUpCiB7CkBAIC02OTgsMTQgKzc0MSwxMSBAQCB2b2lkIERhdGFiYXNlOjphZGRNaXNz
aW5nQ29sdW1uVG9UYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBj
bwogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xv
dyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUsICIgQUREIENPTFVNTiAiLCBj
b2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlOjphZGRNaXNzaW5n
Q29sdW1uVG9UYWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gYWRkIG1pc3Npbmcg
Y29sdW1ucyB0byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6YWRkTWlzc2luZ0NvbHVtblRvVGFibGUgZXJy
b3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBhZGQgbWlzc2luZyBjb2x1bW5zIHRvIHRhYmxlLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBQQ00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhdGFiYXNlLmgKaW5kZXggZmFiNWJmMGZkNDk5NjlmYTBhMTg2ZjM0Yjc3
MzIyN2Q2MGVkMDEwYy4uMmVlZDg5NDVkYTBiZmQyNTYxYWQ5ODcwNGI4ZWY3MTE4MDIxOWQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFiYXNlLmgKQEAgLTc3LDYgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChEb21haW5JRCkgY29uc3QgZmluYWw7CiAK
ICAgICB2b2lkIGFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkoKTsKKyAgICBib29sIG5lZWRz
VXBkYXRlZFNjaGVtYSgpIGZpbmFsOworICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpIGZp
bmFsOworICAgIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxT
dHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygp
IGZpbmFsOworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzb3J0ZWRUYWJsZXMoKSBmaW5hbDsK
KwogICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxl
TmFtZSk7CiAgICAgdm9pZCBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShjb25zdCBTdHJpbmcmIHRh
YmxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb2x1bW5OYW1lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgxNGIxNDU0ZTgzYTY3N2VhYTlmMzdm
OGU1MGMzMzQ1MDFjNTE2ODQuLjhmZjEzNjM3MzlkMGE4NDAyODE3ZmQyNzdiOGFmZWQ1NzNlMzlm
OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAyMS0wOS0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IGRpZmZlcmVudCBidW5kbGVJRCBlbnRyaWVzIHdp
bGwgb3ZlcnJpZGUgZWFjaCBvdGhlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMwODM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGNhc2Ugb2YgZXhpc3Rp
bmcgUENNIGRhdGEgd2l0aCBhIGJ1bmRsZUlECisgICAgICAgIGNvbHVtbiBidXQgYW4gZXhwaXJl
ZCB1bmlxdWUgaW5kZXguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tOgorICAgICAgICAoYWRkVW5hdHRyaWJ1dGVk
UENNdjQpOgorICAgICAgICAoYWRkQXR0cmlidXRlZFBDTXY0KToKKyAgICAgICAgKGR1bXBlZFBD
TSk6CisgICAgICAgIChwb2xsVW50aWxQQ01Jc01pZ3JhdGVkKToKKyAgICAgICAgKGVtcHR5UGNt
REJQYXRoKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlUENNT2JzZXJ2ZWREb21haW5UYWJs
ZSk6CisgICAgICAgIChzZXRVcEZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2UpOgor
ICAgICAgICAoc2V0VXBGcm9tUENNRGF0YWJhc2UpOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
IChzZXRVcCk6IERlbGV0ZWQuCisKIDIwMjEtMDktMjcgIFNhbSBTbmVkZG9uICA8Z3NuZWRkZXJz
QGFwcGxlLmNvbT4KIAogICAgICAgICBQb3J0Ll9uYXR1cmFsX3NvcnRfa2V5IHNob3VsZCBzb3J0
IGEwMSBiZWZvcmUgYTAwMQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXggNGZi
MTE0MDhkZGI4ZGY0YzY1Zjk3ZDI1NDljMDA5MzgwOGJiM2QyZC4uMjFkNzUzZWM0MzZlNTAxNDM5
MTU1ZDdiNTZlZmYwNDZlZDU5MWNiNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1t
CkBAIC0xNjQsNiArMTY0LDQ5IEBAIHN0YXRpYyB2b2lkIGFkZFVuYXR0cmlidXRlZFBDTXYzKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKICAgICBhZGRWYWx1ZXNUb1RhYmxlPDc+
KGRhdGFiYXNlLCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5
VjMsIHsgMiwgMywgNDMsIDEuMCwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVz
dCBrZXkgaWQiIH0pOwogfQogCitzdGF0aWMgdm9pZCBhZGRVbmF0dHJpYnV0ZWRQQ012NChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgY29uc3RleHByIGF1dG8gY3Jl
YXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWMyA9ICJDUkVBVEUgVEFCTEUg
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCIKKyAgICAgICAgInNvdXJjZVNp
dGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRF
R0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJTlRFR0VSIE5PVCBOVUxMLCAiCisgICAgICAgICJ0aW1l
T2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJ
RCBURVhULCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJj
ZVNpdGVEb21haW5JRCkgIgorICAgICAgICAiUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9t
YWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCkgUkVGRVJFTkNFUyAiCisgICAgICAgICJPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9O
IERFTEVURSBDQVNDQURFKSJfczsKKworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKGNyZWF0ZVVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50VjMpKTsKKwor
ICAgIGNvbnN0ZXhwciBhdXRvIGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50UXVlcnlWMyA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklELCAiCisgICAgICAgICJzb3VyY2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVy
ZSwga2V5SUQsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAoPywgPywgPywgPywg
PywgPywgPywgPykiX3M7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYnVuZGxl
SUQgPSAiY29tLmFwcGxlLlNhZmFyaSI7CisjZWxzZQorICAgIGF1dG8gYnVuZGxlSUQgPSAiY29t
LmFwcGxlLm1vYmlsZXNhZmFyaSI7CisjZW5kaWYKKyAgICBhZGRWYWx1ZXNUb1RhYmxlPDg+KGRh
dGFiYXNlLCBpbnNlcnRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5VjMs
IHsgMiwgMywgNDMsIDEuMCwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBr
ZXkgaWQiLCBidW5kbGVJRCB9KTsKK30KKworc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlZFBDTXY0
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBjb25zdGV4cHIgYXV0
byBjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWMyA9ICJDUkVBVEUgVEFC
TEUgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgiCisgICAgICAgICJzb3VyY2VT
aXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5U
RUdFUiBOT1QgTlVMTCwgc291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICAgICAiYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5P
VCBOVUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKKyAgICAgICAgImVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJ
RCBURVhULCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsIHNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQgVEVYVCwiCisgICAgICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9t
YWluSUQpIFJFRkVSRU5DRVMgT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FT
Q0FERSwgRk9SRUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgor
ICAgICAgICAiT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7
CisKKyAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWMykpOworCisgICAgY29uc3RleHByIGF1dG8gaW5z
ZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnlWMyA9ICJJTlNFUlQgT1Ig
UkVQTEFDRSBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0
ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgorICAgICAgICAic291cmNlSUQs
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNrLCBlYXJsaWVz
dFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGlt
ZVRvU2VuZFRvRGVzdGluYXRpb24sIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAo
PywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgYXV0byBidW5kbGVJRCA9ICJjb20uYXBwbGUuU2FmYXJpIjsKKyNlbHNlCisgICAg
YXV0byBidW5kbGVJRCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKyNlbmRpZgorICAgIGFk
ZFZhbHVlc1RvVGFibGU8MTI+KGRhdGFiYXNlLCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRRdWVyeVYzLCB7IDEsIDIsIDQyLCAxNCwgNywgMS4wLCBlYXJsaWVzdFRpbWVU
b1NlbmQoKSwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiLCBl
YXJsaWVzdFRpbWVUb1NlbmQoKSwgYnVuZGxlSUQgfSk7Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8
TlNTdHJpbmc+IGR1bXBlZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiB7CiAgICAgX19ibG9jayBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHBjbTsKQEAgLTE3MiwxNCArMjE1LDE4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNTdHJpbmc+IGR1bXBlZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgfV07CiAg
ICAgd2hpbGUgKCFwY20pCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29w
KCk7CisgICAgCiAgICAgcmV0dXJuIHBjbTsKIH0KIAotc3RhdGljIHZvaWQgcG9sbFVudGlsUENN
SXNNaWdyYXRlZChXS1dlYlZpZXcgKndlYlZpZXcpCitlbnVtIGNsYXNzIE1pZ3JhdGluZ0Zyb21S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIDogYm9vbCB7IE5vLCBZZXMgfTsKK3N0YXRpYyB2b2lkIHBv
bGxVbnRpbFBDTUlzTWlncmF0ZWQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBNaWdyYXRpbmdGcm9tUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyBtaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljcykK
IHsKLSAgICAvLyBUaGlzIHF1ZXJ5IGlzIHRoZSBmaXJzdCB0aGluZyB0byBvcGVuIHRoZSBvbGQg
ZGF0YWJhc2UsIHNvIG1pZ3JhdGlvbiBoYXMgbm90IGhhcHBlbmVkIHlldC4KLSAgICBjb25zdCBj
aGFyKiBlbXB0eVBDTURhdGFiYXNlID0gIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnQgZGF0YS5cbiI7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBDTSh3ZWJWaWV3KS5n
ZXQoKSwgZW1wdHlQQ01EYXRhYmFzZSk7CisgICAgaWYgKG1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID09IE1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpZZXMp
IHsKKyAgICAgICAgLy8gVGhpcyBxdWVyeSBpcyB0aGUgZmlyc3QgdGhpbmcgdG8gb3BlbiB0aGUg
b2xkIGRhdGFiYXNlLCBzbyBtaWdyYXRpb24gaGFzIG5vdCBoYXBwZW5lZCB5ZXQuCisgICAgICAg
IGNvbnN0IGNoYXIqIGVtcHR5UENNRGF0YWJhc2UgPSAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudCBkYXRhLlxuIjsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBD
TSh3ZWJWaWV3KS5nZXQoKSwgZW1wdHlQQ01EYXRhYmFzZSk7CisgICAgfQogCiAgICAgTlNTdHJp
bmcgKmV4cGVjdGVkTWlncmF0ZWRQQ01EYXRhYmFzZSA9IEAiIgogICAgICAgICAiVW5hdHRyaWJ1
dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOlxuIgpAQCAtMjI0LDYgKzI3MSwxNyBAQCBz
dGF0aWMgTlNTdHJpbmcgKmVtcHR5T2JzZXJ2YXRpb25zREJQYXRoKCkKICAgICByZXR1cm4gZmls
ZVVSTC5wYXRoOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKmVtcHR5UGNtREJQYXRoKCkKK3sKKyAg
ICBOU0ZpbGVNYW5hZ2VyICpkZWZhdWx0RmlsZU1hbmFnZXIgPSBOU0ZpbGVNYW5hZ2VyLmRlZmF1
bHRNYW5hZ2VyOworICAgIE5TVVJMICppdHBSb290VVJMID0gV0tXZWJzaXRlRGF0YVN0b3JlLmRl
ZmF1bHREYXRhU3RvcmUuX2NvbmZpZ3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3Rvcnk7CisgICAgTlNVUkwgKmZpbGVVUkwgPSBbaXRwUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJwY20uZGIiXTsKKyAgICBbZGVmYXVsdEZpbGVNYW5hZ2VyIHJlbW92ZUl0
ZW1BdFBhdGg6aXRwUm9vdFVSTC5wYXRoIGVycm9yOm5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFtk
ZWZhdWx0RmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDppdHBSb290VVJMLnBhdGhdKTsKKyAg
ICBbZGVmYXVsdEZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOml0cFJvb3RVUkwgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwor
ICAgIHJldHVybiBmaWxlVVJMLnBhdGg7Cit9CisKIHN0YXRpYyB2b2lkIGNsZWFuVXAoKQogewog
ICAgIE5TRmlsZU1hbmFnZXIgKmRlZmF1bHRGaWxlTWFuYWdlciA9IE5TRmlsZU1hbmFnZXIuZGVm
YXVsdE1hbmFnZXI7CkBAIC0yNTQsNyArMzEyLDIzIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZFBv
cHVsYXRlT2JzZXJ2ZWREb21haW5UYWJsZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJh
CiAgICAgYWRkT2JzZXJ2ZWREb21haW4oInd3dy53ZWJraXQub3JnIik7CiB9CiAKLXZvaWQgc2V0
VXAodm9pZCgqYWRkVW5hdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpLCB2
b2lkKCphZGRBdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpKQorc3RhdGlj
IHZvaWQgY3JlYXRlQW5kUG9wdWxhdGVQQ01PYnNlcnZlZERvbWFpblRhYmxlKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBhdXRvIGFkZE9ic2VydmVkRG9tYWluID0g
WyZdKGNvbnN0IGNoYXIqIGRvbWFpbikgeworICAgICAgICBjb25zdGV4cHIgYXV0byBpbnNlcnRP
YnNlcnZlZERvbWFpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAocmVn
aXN0cmFibGVEb21haW4pIFZBTFVFUyAoPykiX3M7CisgICAgICAgIGFkZFZhbHVlc1RvVGFibGU8
MT4oZGF0YWJhc2UsIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnksIHsgZG9tYWluIH0pOworICAg
IH07CisKKyAgICBjb25zdGV4cHIgYXV0byBjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiA9ICJDUkVB
VEUgVEFCTEUgUENNT2JzZXJ2ZWREb21haW5zICgiCisgICAgICAgICJkb21haW5JRCBJTlRFR0VS
IFBSSU1BUlkgS0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBD
T05GTElDVCBGQUlMKSJfczsKKworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluKSk7CisgICAgYWRkT2JzZXJ2ZWREb21haW4oImV4
YW1wbGUuY29tIik7CisgICAgYWRkT2JzZXJ2ZWREb21haW4oIndlYmtpdC5vcmciKTsKKyAgICBh
ZGRPYnNlcnZlZERvbWFpbigid3d3LndlYmtpdC5vcmciKTsKK30KKwordm9pZCBzZXRVcEZyb21S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2Uodm9pZCgqYWRkVW5hdHRyaWJ1dGVkUENNKShX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpLCB2b2lkKCphZGRBdHRyaWJ1dGVkUENNKShXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZSYpKQogewogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIGRhdGFi
YXNlOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLm9wZW4oZW1wdHlPYnNlcnZhdGlvbnNEQlBh
dGgoKSkpOwpAQCAtMjY0LDI2ICszMzgsNDQgQEAgdm9pZCBzZXRVcCh2b2lkKCphZGRVbmF0dHJp
YnV0ZWRQQ00pKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiksIHZvaWQoKmFkZEF0dHJpYnUKICAg
ICBkYXRhYmFzZS5jbG9zZSgpOwogfQogCit2b2lkIHNldFVwRnJvbVBDTURhdGFiYXNlKHZvaWQo
KmFkZFVuYXR0cmlidXRlZFBDTSkoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSwgdm9pZCgqYWRk
QXR0cmlidXRlZFBDTSkoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSkKK3sKKyAgICBXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZSBkYXRhYmFzZTsKKyAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZS5vcGVu
KGVtcHR5UGNtREJQYXRoKCkpKTsKKyAgICBjcmVhdGVBbmRQb3B1bGF0ZVBDTU9ic2VydmVkRG9t
YWluVGFibGUoZGF0YWJhc2UpOworICAgIGFkZFVuYXR0cmlidXRlZFBDTShkYXRhYmFzZSk7Cisg
ICAgYWRkQXR0cmlidXRlZFBDTShkYXRhYmFzZSk7CisgICAgZGF0YWJhc2UuY2xvc2UoKTsKK30K
KwogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWlncmF0ZUZyb21SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzMSkKIHsKLSAgICBzZXRVcChhZGRVbmF0dHJpYnV0ZWRQQ012MSwgYWRkQXR0cmli
dXRlZFBDTXYxKTsKKyAgICBzZXRVcEZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2Uo
YWRkVW5hdHRyaWJ1dGVkUENNdjEsIGFkZEF0dHJpYnV0ZWRQQ012MSk7CiAgICAgYXV0byB3ZWJW
aWV3ID0gd2ViVmlld1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZEluTmV0d29ya1By
b2Nlc3MoKTsKLSAgICBwb2xsVW50aWxQQ01Jc01pZ3JhdGVkKHdlYlZpZXcuZ2V0KCkpOworICAg
IHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSwgTWlncmF0aW5nRnJvbVJlc291
cmNlTG9hZFN0YXRpc3RpY3M6Olllcyk7CiAgICAgY2xlYW5VcCgpOwogfQogCiBURVNUKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBNaWdyYXRlRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3MyKQog
ewotICAgIHNldFVwKGFkZFVuYXR0cmlidXRlZFBDTXYyLCBhZGRBdHRyaWJ1dGVkUENNdjIpOwor
ICAgIHNldFVwRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZShhZGRVbmF0dHJpYnV0
ZWRQQ012MiwgYWRkQXR0cmlidXRlZFBDTXYyKTsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3
V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2VzcygpOwotICAg
IHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9sbFVudGlsUENN
SXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6WWVzKTsKICAgICBjbGVhblVwKCk7CiB9CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIE1pZ3JhdGVGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczMpCiB7Ci0gICAgc2V0VXAo
YWRkVW5hdHRyaWJ1dGVkUENNdjMsIGFkZEF0dHJpYnV0ZWRQQ012Myk7CisgICAgc2V0VXBGcm9t
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlKGFkZFVuYXR0cmlidXRlZFBDTXYzLCBhZGRB
dHRyaWJ1dGVkUENNdjMpOworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdXaXRoUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWRJbk5ldHdvcmtQcm9jZXNzKCk7CisgICAgcG9sbFVudGlsUENN
SXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6WWVzKTsKKyAgICBjbGVhblVwKCk7Cit9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIE1pZ3JhdGVGcm9tUENNMSkKK3sKKyAgICBzZXRVcEZyb21QQ01EYXRhYmFzZShhZGRV
bmF0dHJpYnV0ZWRQQ012NCwgYWRkQXR0cmlidXRlZFBDTXY0KTsKICAgICBhdXRvIHdlYlZpZXcg
PSB3ZWJWaWV3V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2Vz
cygpOwotICAgIHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9s
bFVudGlsUENNSXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6Tm8pOwogICAgIGNsZWFuVXAoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439431</attachid>
            <date>2021-09-27 21:28:28 -0700</date>
            <delta_ts>2021-09-28 13:30:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230839-20210927212827.patch</filename>
            <type>text/plain</type>
            <size>38607</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzY2I2NWNkMTFiM2RkMTgy
MWQ3ZGQ2MzlhYzllZTlkOGYzNDg2YmIuLjk2OTI2ZThlZWYwOThkNDljOWU3ZTIwZWQ5Y2FlZDYz
Mzc1NjI2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDktMjcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBkaWZmZXJl
bnQgYnVuZGxlSUQgZW50cmllcyB3aWxsIG92ZXJyaWRlIGVhY2ggb3RoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgV2UgcmVjZW50bHkgYWRkZWQg
YSBidW5kbGVJRCBjb2x1bW4gdG8gUENNIHRhYmxlcy4gV2Ugd2FudCB0byBtYWtlCisgICAgICAg
IHN1cmUgZW50cmllcyB3aXRoIGRpZmZlcmVudCBidW5kbGVJRHMgZG8gbm90IG92ZXJyaWRlIGVh
Y2ggb3RoZXIsCisgICAgICAgIHNvIHdlIHNob3VsZCBtYWtlIGl0IGEgcGFydCBvZiB0aGUgdW5p
cXVlIGNvbnN0cmFpbnQgb24gYm90aCBQQ00KKyAgICAgICAgdGFibGVzIHRoYXQgY29udGFpbiBp
dC4gVGhpcyByZXF1aXJlcyBjcmVhdGluZyBuZXcgdGFibGVzIGFuZAorICAgICAgICBtaWdyYXRp
bmcgZXhpc3RpbmcgZGF0YSB0byB0aGVtLiBMdWNraWx5IHRoaXMgY29kZSBhbHJlYWR5IGV4aXN0
cworICAgICAgICBpbiB0aGUgSVRQIGRhdGFiYXNlLCBhbmQgd2UgY2FuIGp1c3QgbW92ZSBpdCB0
byB0aGUgc2hhcmVkCisgICAgICAgIERhdGFiYXNlVXRpbGl0aWVzIGNsYXNzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKToKKyAgICAgICAgKFdlYktp
dDo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjppbnNlcnREaXN0
aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxl
c0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRh
YmFzZVV0aWxpdGllczo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRp
bGl0aWVzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNyZWF0ZVVuaXF1ZUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRh
dGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDoK
KwogMjAyMS0wOS0yNyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXVtHUFVQXSBSZW1vdmUgYWNjZXNzIHRvIHVudXNlZCBtYWNoIHNlcnZpY2VzIGluIHNhbmRi
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCmluZGV4IDgxZTUxOTViNjA0Yjg2N2EwZTIxNGM0NTM3NTY0MTIzOGIzOWY5NjYuLjMy
NjQ5YWExZWJhYWU5NmUyZDJjNWE0NTMzZWUyM2Q1NmExOTJjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNTAsNyAr
NTAsNiBAQAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CkBAIC0y
NTMsMTIgKzI1Miw3IEBAIHN0YXRpYyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hlbWEoY29u
c3QgU3RyaW5nJiBzY2hlbWEpCiAgICAgcmV0dXJuIHNjaGVtYS5jb250YWlucygiUkVGRVJFTkNF
UyBUb3BMZXZlbERvbWFpbnMiKTsKIH0KIAotc3RhdGljIFN0cmluZyBzdHJpcEluZGV4UXVlcnlU
b01hdGNoU3RvcmVkVmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVyeSkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKG9yaWdpbmFsUXVlcnkpLnJlcGxhY2UoIkNSRUFURSBVTklRVUUgSU5ERVggSUYg
Tk9UIEVYSVNUUyIsICJDUkVBVEUgVU5JUVVFIElOREVYIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZElu
ZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQorY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZXhwZWN0ZWRUYWJsZUFuZElu
ZGV4UXVlcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVl
cmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewogICAgICAgICB7ICJPYnNlcnZl
ZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVPYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LApAQCAtMjc5LDYgKzI3Mywy
NyBAQCBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JgogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzOwogfQogCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNvcnRlZFRhYmxlcygpCit7CisgICAgc3RhdGljIGF1dG8g
c29ydGVkVGFibGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKKyAgICAg
ICAgIk9ic2VydmVkRG9tYWlucyJfcywKKyAgICAgICAgIlRvcExldmVsRG9tYWlucyJfcywKKyAg
ICAgICAgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywKKyAgICAgICAgIlRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MsCisgICAgICAgICJUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLAorICAgICAgICAiVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLAorICAgICAgICAiVG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tIl9zLAorICAgICAgICAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywK
KyAgICAgICAgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsCisgICAgICAgICJTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLAorICAgICAgICAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyJfcywKKyAgICAgICAgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywKKyAgICAgICAgIk9wZXJhdGluZ0RhdGVzIl9zCisgICAgfSk7CisKKyAgICByZXR1cm4g
c29ydGVkVGFibGVzOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIHN0
YXRpYyBTdHJpbmcgYnVpbGRMaXN0KGNvbnN0IENvbnRhaW5lclR5cGUmIHZhbHVlcykKIHsKQEAg
LTM2Nyw1MiArMzgyLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZGVsZXRlVGFibGUoU3RyaW5nVmlldyB0YWJsZU5hbWUpCiAgICAgfQogfQogCi1UYWJsZUFu
ZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRh
YmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQotewotICAgIGF1dG8g
Z2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBz
cWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUn
Il9zKTsKLSAgICBpZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50
IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBp
ZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09L
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5h
YmxlIHRvIGJpbmQgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJp
ZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0KLQotICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFibGVTdGF0
ZW1lbnQtPmNvbHVtblRleHQoMCk7Ci0KLSAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBX
SEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7Ci0gICAgaWYgKCFnZXRJbmRl
eFN0YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhR
dWVyaWVzIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhl
IHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPmJp
bmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVtZW50IHRv
IGZldGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBpbmRleDsKLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5k
ZXhTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwotICAgICAgICBpZiAoIXJhd0luZGV4LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGluZGV4ID0gcmF3SW5kZXg7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNy
ZWF0ZVRhYmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7Ci19Ci0KIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3NpbmdVbmlxdWVJbmRpY2VzKCkKIHsKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIENPVU5U
KCopIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ2luZGV4JyJfcyk7CkBAIC00NTYs
NjggKzQyNSw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5l
ZWRzVXBkYXRlZFNjaGVtYSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgRXhwZWN0
ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRl
bWVudChTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdGFibGUpCi17Ci0g
ICAgaWYgKHRhYmxlID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAg
cmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZyYW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRl
ZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBH
Uk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BGcmFtZURvbWFpbklEIl9zKTsKLQotICAgIGlm
ICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJl
dHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVw
ZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCJfcyk7
Ci0KLSAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iKQotICAg
ICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiX3MpOwotCi0gICAgaWYg
KHRhYmxlID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4g
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWlu
SUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQs
IGZyb21Eb21haW5JRCJfcyk7Ci0KLSAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dFNsb3cobWFrZVN0cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNU
ICogRlJPTSBfIiwgdGFibGUpKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBp
ZiAoIW5lZWRzVXBkYXRlZFNjaGVtYSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRy
YW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGZv
ciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7
Ci0gICAgICAgIGF1dG8gYWx0ZXJUYWJsZSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNs
b3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGUsICIgUkVOQU1FIFRPIF8iLCB0YWJs
ZSkpOwotICAgICAgICBpZiAoIWFsdGVyVGFibGUgfHwgYWx0ZXJUYWJsZS0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1Rh
Ymxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byByZW5hbWUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICVz
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVE
YXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIHNjaGVtYSwgZXJyb3Ig
bWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3Ig
KGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewot
ICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFi
bGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdGFibGUpOwotICAgICAgICBpZiAoIW1pZ3JhdGVUYWJs
ZURhdGEgfHwgbWlncmF0ZVRhYmxlRGF0YS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZh
aWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBkcm9wVGFibGVR
dWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBU
QUJMRSBfIiwgdGFibGUpKTsKLSAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFi
bGVRdWVyeS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBv
cmFyeSB0YWJsZXMsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNl
cygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSB1bmlxdWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNz
YXJ5KCkKIHsKICAgICBpZiAoIXRhYmxlRXhpc3RzKCJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCmluZGV4IDg1MjhhYWUzYjUwMjYzNGUzMDNlYzA1MzNiNjQxNDU3OTAxOGRl
MTEuLjUwOTJkNTE0NDczN2U4M2RkODgxMmM0ZjM2MjY3MmMzYWJkMmUzMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC00OCw4
ICs0OCw2IEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mQnVja2V0c1BlclN0YXRp
c3RpYyA9IDU7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZlN0YXRpc3RpY3MgPSA3
Owogc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQ
ZXJTdGF0aXN0aWM+IGJ1Y2tldFNpemVzIHt7IDEsIDMsIDEwLCA1MCwgMTAwIH19OwogCi10eXBl
ZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVBbmRJbmRl
eFBhaXI7Ci0KIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3ll
ZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1
ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVi
bGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVz
IHsKIHB1YmxpYzoKQEAgLTExOCw2ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJydXB0QWxsRGF0YWJhc2VzKCk7CiAKIHByaXZhdGU6CisgICAgY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkgZmluYWw7CisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNvcnRlZFRhYmxlcygpIGZpbmFsOwogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNP
cGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyT3BlcmF0
aW5nRGF0ZXMoKSBvdmVycmlkZSB7IH0KICAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdh
bGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRv
dykgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMjYsMTAgKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICB2b2lkIGFkZE1pc3NpbmdUYWJsZXNJZk5lY2Vzc2Fy
eSgpOwogICAgIGJvb2wgbWlzc2luZ1VuaXF1ZUluZGljZXMoKTsKLSAgICBib29sIG5lZWRzVXBk
YXRlZFNjaGVtYSgpOwotICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFuZEluZGV4
UXVlcmllcyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpIGZp
bmFsOwogICAgIGJvb2wgbWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCk7Ci0gICAg
dm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIG1pZ3Jh
dGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCB0YWJsZUV4aXN0cyhT
dHJpbmdWaWV3KTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlKFN0cmluZ1ZpZXcpOwpAQCAtMjA2LDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKICAgICBib29sIGlzRGF0YWJhc2VTdG9yZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygp
OworICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpIGZpbmFsOwogICAgIGJvb2wgY3JlYXRl
U2NoZW1hKCkgZmluYWw7CiAgICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApp
bmRleCBmYTBiN2ZkZjQ0NzgyZmE4MzFlMGQzYmVlZWMyNmU0YmI1NTdmMDgxLi4yNjNkY2MzNjFi
YmQ3MDNkMzJmYzA3MGNhM2VmZWQyNjBmMDQ3N2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMTg3LDQgKzE4NywxMTkg
QEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1
aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKICAgICByZXR1cm4gYXR0cmlidXRpb247CiB9CiAK
K1N0cmluZyBEYXRhYmFzZVV0aWxpdGllczo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCit7CisgICAgcmV0dXJuIFN0cmluZyhvcmln
aW5hbFF1ZXJ5KS5yZXBsYWNlKCJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMiLCAi
Q1JFQVRFIFVOSVFVRSBJTkRFWCIpOworfQorCitUYWJsZUFuZEluZGV4UGFpciBEYXRhYmFzZVV0
aWxpdGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKQoreworICAgIGF1dG8gZ2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8g
QU5EIHR5cGUgPSAndGFibGUnIl9zKTsKKyAgICBpZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZVV0aWxpdGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBw
cmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5h
bWUpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0
aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBz
Y2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0g
Z2V0VGFibGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CisKKyAgICBhdXRvIGdldEluZGV4U3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3Fs
aXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7CisgICAg
aWYgKCFnZXRJbmRleFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJs
ZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5k
ZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKGdldEluZGV4U3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VV
dGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0
ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGluZGV4OworICAgIGlmIChnZXRJbmRleFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmlu
ZyhnZXRJbmRleFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CisgICAgICAgIGlmICghcmF3SW5k
ZXguaXNFbXB0eSgpKQorICAgICAgICAgICAgaW5kZXggPSByYXdJbmRleDsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KFdU
Rk1vdmUoY3JlYXRlVGFibGVRdWVyeSksIFdURk1vdmUoaW5kZXgpKTsKK30KKworc3RhdGljIEV4
cGVjdGVkPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCwgaW50PiBpbnNlcnREaXN0aW5jdFZhbHVl
c0luVGFibGVTdGF0ZW1lbnQoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25z
dCBTdHJpbmcmIHRhYmxlKQoreworICAgIGlmICh0YWJsZSA9PSAiU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyIpCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFtZURv
bWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJhbWVE
b21haW5JRCJfcyk7CisKKyAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQorICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3Vy
Y2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQs
IHRvcEZyYW1lRG9tYWluSUQiX3MpOworCisgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJl
c291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0Rv
bWFpbklEIl9zKTsKKworICAgIGlmICh0YWJsZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJ
TlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3MpOworCisgICAgcmV0dXJuIGRh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRh
YmxlLCAiIFNFTEVDVCBESVNUSU5DVCAqIEZST00gXyIsIHRhYmxlKSk7Cit9CisKK3ZvaWQgRGF0
YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCit7Cisg
ICAgaWYgKCFuZWVkc1VwZGF0ZWRTY2hlbWEoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CisKKyAg
ICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMo
KSkgeworICAgICAgICBhdXRvIGFsdGVyVGFibGUgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwg
dGFibGUpKTsKKyAgICAgICAgaWYgKCFhbHRlclRhYmxlIHx8IGFsdGVyVGFibGUtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIHJlbmFtZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTog
JXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE1haW50YWluIHRoZSBvcmRlciBv
ZiB0YWJsZXMgdG8gbWFrZSBzdXJlIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUgaXMgY3JlYXRl
ZCBmaXJzdC4gT3RoZXIgdGFibGVzIGhhdmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgcmVmZXJl
bmNpbmcgaXQuCisgICAgZm9yIChhdXRvJiB0YWJsZSA6IHNvcnRlZFRhYmxlcygpKSB7CisgICAg
ICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0
YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGlmICghbWlncmF0ZVRhYmxlRGF0
YSB8fCBtaWdyYXRlVGFibGVEYXRhLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRh
YmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5ICh0YWJsZSAl
cykgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1hLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIHRh
YmxlLnV0ZjgoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEcm9wIGFsbCB0YWJsZXMgYXQgdGhlIGVuZCB0byBhdm9pZCB0cmFz
aGluZyBkYXRhIHRoYXQgcmVmZXJlbmNlcyBkYXRhIGluIG90aGVyIHRhYmxlcy4KKyAgICBmb3Ig
KGF1dG8mIHRhYmxlIDogc29ydGVkVGFibGVzKCkpIHsKKyAgICAgICAgYXV0byBkcm9wVGFibGVR
dWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBU
QUJMRSBfIiwgdGFibGUpKTsKKyAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFi
bGVRdWVyeS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6
Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCB0ZW1wb3Jh
cnkgdGFibGVzLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMo
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2Fy
eSBmYWlsZWQgdG8gY3JlYXRlIHVuaXF1ZSBpbmRpY2VzLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCmluZGV4IDU5YjdlOGMwMjRi
N2Q1OTM3ZDcyZTVlZGViMjEzMDdiOTMyOGIyMjUuLmFmN2ZlYzk1ZTJlY2MyMjM0MTljNmVlZTU3
OWUxZTlhZWM0OWFmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RGF0YWJhc2VVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSA6IGJvb2w7CiAKK3VzaW5nIFRhYmxlQW5kSW5kZXhQYWlyID0gc3RkOjpwYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PjsKKwogY2xhc3MgRGF0YWJhc2VVdGlsaXRpZXMgewogcHJv
dGVjdGVkOgogICAgIERhdGFiYXNlVXRpbGl0aWVzKFN0cmluZyYmIHN0b3JhZ2VGaWxlUGF0aCk7
CkBAIC01Miw4ICs1NSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZv
aWQgaW50ZXJydXB0KCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVNjaGVtYSgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveVN0YXRlbWVudHMoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RG9tYWlu
U3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IG5lZWRzVXBkYXRlZFNjaGVtYSgpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYg
ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzb3J0ZWRUYWJsZXMoKSA9IDA7CisgICAgVGFibGVBbmRJbmRleFBhaXIg
Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVy
eSk7CisgICAgdm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKIAogICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNw
cAppbmRleCA4YmMyMzY5YmRmZGUzZjBlOWNlZTg2YWY5ZWE2ZjYyMTJiMmY4ODcyLi5hNzRlNjMx
YmFhZDNlOTIzODFiYmU0MGFmZjdjNGEyODMxOTAwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5j
cHAKQEAgLTY4LDggKzY4LDggQEAgY29uc3RleHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBUQUJMRSBBdHRyaWJ1dGUKICAgICAiZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtl
eUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gUkVBTCwgc291cmNlQXBw
bGljYXRpb25CdW5kbGVJRCBURVhULCAiCiAgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21h
aW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBD
QVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAi
CiAgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9z
OwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0
aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgg
c291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwotY29uc3Rl
eHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFp
bklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRl
VW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUg
VU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEX3NvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
KCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlEICkiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElG
IE5PVCBFWElTVFMgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVE
b21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlE
IG9uIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5J
RCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgKSJf
czsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluID0gIkNSRUFURSBUQUJM
RSBQQ01PYnNlcnZlZERvbWFpbnMgKCIKICAgICAiZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtF
WSwgcmVnaXN0cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJ
TCkiX3M7CiBjb25zdGV4cHIgYXV0byBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5ID0gIklOU0VS
VCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAocmVnaXN0cmFibGVEb21haW4pIFZBTFVFUyAoPyki
X3M7CkBAIC04OSw2ICs4OSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0
b3JhZ2VEaXJlY3RvcnkpCiAgICAgb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZOZWNlc3Nh
cnkoKTsKICAgICBlbmFibGVGb3JlaWduS2V5cygpOwogICAgIGFkZEJ1bmRsZUlEQ29sdW1uSWZO
ZWNlc3NhcnkoKTsKKyAgICBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAg
ICBhbGxEYXRhYmFzZXMoKS5hZGQodGhpcyk7CiB9CiAKQEAgLTk5LDYgKzEwMCwyOCBAQCBEYXRh
YmFzZTo6fkRhdGFiYXNlKCkKICAgICBhbGxEYXRhYmFzZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAK
K2NvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRh
YmxlQW5kSW5kZXhQYWlyPiYgRGF0YWJhc2U6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMo
KQoreworICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0
cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsKKyAgICAgICAgeyAiUENNT2JzZXJ2ZWREb21haW5z
Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
UENNT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKKyAgICAgICAgeyAiVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9LAorICAgICAgICB7ICJBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRl
eEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCisgICAgfSk7CisKKyAgICBy
ZXR1cm4gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllczsKK30KKworY29uc3QgVmVjdG9yPFN0
cmluZz4mIERhdGFiYXNlOjpzb3J0ZWRUYWJsZXMoKQoreworICAgIHN0YXRpYyBhdXRvIHNvcnRl
ZFRhYmxlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgICAgICJQ
Q01PYnNlcnZlZERvbWFpbnMiX3MsCisgICAgICAgICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCJfcywKKyAgICAgICAgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCJfcworICAgIH0pOworCisgICAgcmV0dXJuIHNvcnRlZFRhYmxlczsKK30KKwogdm9pZCBEYXRh
YmFzZTo6aW50ZXJydXB0QWxsRGF0YWJhc2VzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKQEAgLTEwNiw2ICsxMjksMTYgQEAgdm9pZCBEYXRhYmFzZTo6aW50ZXJydXB0QWxs
RGF0YWJhc2VzKCkKICAgICAgICAgZGF0YWJhc2UtPmludGVycnVwdCgpOwogfQogCitib29sIERh
dGFiYXNlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKKyAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5p
cXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExP
R19FUlJPUigiRXJyb3IgY3JlYXRpbmcgaW5kZXhlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIERhdGFiYXNlOjpjcmVhdGVTY2hl
bWEoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNjc0LDYgKzcwNywx
NiBAQCB2b2lkIERhdGFiYXNlOjphZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCkKICAgICBj
aGVja0NvbHVtbnMoYXR0cmlidXRlZFRhYmxlTmFtZSk7CiAgICAgY2hlY2tDb2x1bW5zKHVuYXR0
cmlidXRlZFRhYmxlTmFtZSk7CiB9Citib29sIERhdGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEo
KQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhdCB0aGUgZW5kIG9mIDIwMjEuIE5vIHB1
YmxpYyByZWxlYXNlIHdhcyBtYWRlIHdpdGggdGhlIHNjaGVtYSBtaXNzaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQsIHNvIHRoaXMgaXMgb25seSBuZWVkZWQgdG8gbWlncmF0ZSBpbnRlcm5h
bCB1c2VycyB3aG8gdXBkYXRlZCBpbiBTZXB0ZW1iZXIgMjAyMS4KKyAgICBmb3IgKGF1dG8mIHRh
YmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgeworICAgICAgICBp
ZiAoY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKHRhYmxlKSAhPSBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzKCkuZ2V0KHRhYmxlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNv
bHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmgKaW5kZXggZmFiNWJmMGZkNDk5NjlmYTBhMTg2ZjM0Yjc3MzIyN2Q2MGVkMDEwYy4uMmVlZDg5
NDVkYTBiZmQyNTYxYWQ5ODcwNGI4ZWY3MTE4MDIxOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgK
QEAgLTc3LDYgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRChEb21haW5JRCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGFkZEJ1bmRsZUlE
Q29sdW1uSWZOZWNlc3NhcnkoKTsKKyAgICBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpIGZpbmFs
OworICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpIGZpbmFsOworICAgIGNvbnN0IE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQ
YWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpIGZpbmFsOworICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzb3J0ZWRUYWJsZXMoKSBmaW5hbDsKKwogICAgIFZlY3RvcjxTdHJpbmc+
IGNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSk7CiAgICAgdm9pZCBhZGRN
aXNzaW5nQ29sdW1uVG9UYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb2x1bW5OYW1lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDgxNGIxNDU0ZTgzYTY3N2VhYTlmMzdmOGU1MGMzMzQ1MDFjNTE2ODQuLjhm
ZjEzNjM3MzlkMGE4NDAyODE3ZmQyNzdiOGFmZWQ1NzNlMzlmOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0w
OS0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBQQ006IGRpZmZlcmVudCBidW5kbGVJRCBlbnRyaWVzIHdpbGwgb3ZlcnJpZGUgZWFjaCBvdGhl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBBUEkg
dGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGNhc2Ugb2YgZXhpc3RpbmcgUENNIGRhdGEgd2l0aCBhIGJ1
bmRsZUlECisgICAgICAgIGNvbHVtbiBidXQgYW4gZXhwaXJlZCB1bmlxdWUgaW5kZXguCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Lm1tOgorICAgICAgICAoYWRkVW5hdHRyaWJ1dGVkUENNdjQpOgorICAgICAgICAoYWRk
QXR0cmlidXRlZFBDTXY0KToKKyAgICAgICAgKGR1bXBlZFBDTSk6CisgICAgICAgIChwb2xsVW50
aWxQQ01Jc01pZ3JhdGVkKToKKyAgICAgICAgKGVtcHR5UGNtREJQYXRoKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlUENNT2JzZXJ2ZWREb21haW5UYWJsZSk6CisgICAgICAgIChzZXRVcEZy
b21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2UpOgorICAgICAgICAoc2V0VXBGcm9tUENN
RGF0YWJhc2UpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChzZXRVcCk6IERlbGV0ZWQuCisK
IDIwMjEtMDktMjcgIFNhbSBTbmVkZG9uICA8Z3NuZWRkZXJzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQb3J0Ll9uYXR1cmFsX3NvcnRfa2V5IHNob3VsZCBzb3J0IGEwMSBiZWZvcmUgYTAwMQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXggNGZiMTE0MDhkZGI4ZGY0YzY1Zjk3ZDI1
NDljMDA5MzgwOGJiM2QyZC4uMjFkNzUzZWM0MzZlNTAxNDM5MTU1ZDdiNTZlZmYwNDZlZDU5MWNi
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCkBAIC0xNjQsNiArMTY0LDQ5IEBA
IHN0YXRpYyB2b2lkIGFkZFVuYXR0cmlidXRlZFBDTXYzKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
JiBkYXRhYmFzZSkKICAgICBhZGRWYWx1ZXNUb1RhYmxlPDc+KGRhdGFiYXNlLCBpbnNlcnRVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5VjMsIHsgMiwgMywgNDMsIDEuMCwg
InRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiIH0pOwogfQogCitz
dGF0aWMgdm9pZCBhZGRVbmF0dHJpYnV0ZWRQQ012NChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYg
ZGF0YWJhc2UpCit7CisgICAgY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRWMyA9ICJDUkVBVEUgVEFCTEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgKCIKKyAgICAgICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5P
VCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJ
RCBJTlRFR0VSIE5PVCBOVUxMLCAiCisgICAgICAgICJ0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5V
TEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBzb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgIgorICAg
ICAgICAiUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVND
QURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCisg
ICAgICAgICJPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKSJfczsK
KworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50VjMpKTsKKworICAgIGNvbnN0ZXhwciBhdXRvIGlu
c2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnlWMyA9ICJJTlNFUlQg
T1IgUkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3Vy
Y2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCisgICAgICAgICJzb3Vy
Y2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIHNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPykiX3M7CisgICAg
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYnVuZGxlSUQgPSAiY29tLmFwcGxlLlNhZmFy
aSI7CisjZWxzZQorICAgIGF1dG8gYnVuZGxlSUQgPSAiY29tLmFwcGxlLm1vYmlsZXNhZmFyaSI7
CisjZW5kaWYKKyAgICBhZGRWYWx1ZXNUb1RhYmxlPDg+KGRhdGFiYXNlLCBpbnNlcnRVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5VjMsIHsgMiwgMywgNDMsIDEuMCwgInRl
c3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiLCBidW5kbGVJRCB9KTsK
K30KKworc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlZFBDTXY0KFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJiBkYXRhYmFzZSkKK3sKKyAgICBjb25zdGV4cHIgYXV0byBjcmVhdGVBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRWMyA9ICJDUkVBVEUgVEFCTEUgQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50ICgiCisgICAgICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5URUdFUiBO
T1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwgc291cmNl
SUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICAgICAiYXR0cmlidXRpb25UcmlnZ2VyRGF0YSBJ
TlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZBZENsaWNr
IFJFQUwgTk9UIE5VTEwsICIKKyAgICAgICAgImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIFJF
QUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBlYXJsaWVzdFRpbWVU
b1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgVEVYVCwi
CisgICAgICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgT2Jz
ZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9SRUlHTiBLRVkoZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgorICAgICAgICAiT2JzZXJ2ZWREb21h
aW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7CisKKyAgICBFWFBFQ1RfVFJVRShk
YXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRWMykpOworCisgICAgY29uc3RleHByIGF1dG8gaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50UXVlcnlWMyA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIEF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCwgIgorICAgICAgICAic291cmNlSUQsIGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNrLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwg
dG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24s
IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3M7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBidW5kbGVJ
RCA9ICJjb20uYXBwbGUuU2FmYXJpIjsKKyNlbHNlCisgICAgYXV0byBidW5kbGVJRCA9ICJjb20u
YXBwbGUubW9iaWxlc2FmYXJpIjsKKyNlbmRpZgorICAgIGFkZFZhbHVlc1RvVGFibGU8MTI+KGRh
dGFiYXNlLCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeVYzLCB7
IDEsIDIsIDQyLCAxNCwgNywgMS4wLCBlYXJsaWVzdFRpbWVUb1NlbmQoKSwgInRlc3QgdG9rZW4i
LCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiLCBlYXJsaWVzdFRpbWVUb1NlbmQoKSwg
YnVuZGxlSUQgfSk7Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGR1bXBlZFBDTShX
S1dlYlZpZXcgKndlYlZpZXcpCiB7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNTdHJpbmc+IHBj
bTsKQEAgLTE3MiwxNCArMjE1LDE4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGR1bXBl
ZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgfV07CiAgICAgd2hpbGUgKCFwY20pCiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCiAgICAgcmV0dXJu
IHBjbTsKIH0KIAotc3RhdGljIHZvaWQgcG9sbFVudGlsUENNSXNNaWdyYXRlZChXS1dlYlZpZXcg
KndlYlZpZXcpCitlbnVtIGNsYXNzIE1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IDogYm9vbCB7IE5vLCBZZXMgfTsKK3N0YXRpYyB2b2lkIHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQo
V0tXZWJWaWV3ICp3ZWJWaWV3LCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBt
aWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKIHsKLSAgICAvLyBUaGlzIHF1ZXJ5
IGlzIHRoZSBmaXJzdCB0aGluZyB0byBvcGVuIHRoZSBvbGQgZGF0YWJhc2UsIHNvIG1pZ3JhdGlv
biBoYXMgbm90IGhhcHBlbmVkIHlldC4KLSAgICBjb25zdCBjaGFyKiBlbXB0eVBDTURhdGFiYXNl
ID0gIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiI7Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBDTSh3ZWJWaWV3KS5nZXQoKSwgZW1wdHlQQ01EYXRhYmFz
ZSk7CisgICAgaWYgKG1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID09IE1pZ3Jh
dGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpZZXMpIHsKKyAgICAgICAgLy8gVGhpcyBx
dWVyeSBpcyB0aGUgZmlyc3QgdGhpbmcgdG8gb3BlbiB0aGUgb2xkIGRhdGFiYXNlLCBzbyBtaWdy
YXRpb24gaGFzIG5vdCBoYXBwZW5lZCB5ZXQuCisgICAgICAgIGNvbnN0IGNoYXIqIGVtcHR5UENN
RGF0YWJhc2UgPSAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLlxu
IjsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBDTSh3ZWJWaWV3KS5nZXQoKSwgZW1w
dHlQQ01EYXRhYmFzZSk7CisgICAgfQogCiAgICAgTlNTdHJpbmcgKmV4cGVjdGVkTWlncmF0ZWRQ
Q01EYXRhYmFzZSA9IEAiIgogICAgICAgICAiVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRzOlxuIgpAQCAtMjI0LDYgKzI3MSwxNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmVtcHR5
T2JzZXJ2YXRpb25zREJQYXRoKCkKICAgICByZXR1cm4gZmlsZVVSTC5wYXRoOwogfQogCitzdGF0
aWMgTlNTdHJpbmcgKmVtcHR5UGNtREJQYXRoKCkKK3sKKyAgICBOU0ZpbGVNYW5hZ2VyICpkZWZh
dWx0RmlsZU1hbmFnZXIgPSBOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2VyOworICAgIE5TVVJM
ICppdHBSb290VVJMID0gV0tXZWJzaXRlRGF0YVN0b3JlLmRlZmF1bHREYXRhU3RvcmUuX2NvbmZp
Z3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgTlNVUkwgKmZp
bGVVUkwgPSBbaXRwUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJwY20uZGIi
XTsKKyAgICBbZGVmYXVsdEZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6aXRwUm9vdFVSTC5w
YXRoIGVycm9yOm5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFtkZWZhdWx0RmlsZU1hbmFnZXIgZmls
ZUV4aXN0c0F0UGF0aDppdHBSb290VVJMLnBhdGhdKTsKKyAgICBbZGVmYXVsdEZpbGVNYW5hZ2Vy
IGNyZWF0ZURpcmVjdG9yeUF0VVJMOml0cFJvb3RVUkwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlVVJMLnBh
dGg7Cit9CisKIHN0YXRpYyB2b2lkIGNsZWFuVXAoKQogewogICAgIE5TRmlsZU1hbmFnZXIgKmRl
ZmF1bHRGaWxlTWFuYWdlciA9IE5TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFnZXI7CkBAIC0yNTQs
NyArMzEyLDIzIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZFBvcHVsYXRlT2JzZXJ2ZWREb21haW5U
YWJsZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhCiAgICAgYWRkT2JzZXJ2ZWREb21h
aW4oInd3dy53ZWJraXQub3JnIik7CiB9CiAKLXZvaWQgc2V0VXAodm9pZCgqYWRkVW5hdHRyaWJ1
dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpLCB2b2lkKCphZGRBdHRyaWJ1dGVkUENN
KShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpKQorc3RhdGljIHZvaWQgY3JlYXRlQW5kUG9wdWxh
dGVQQ01PYnNlcnZlZERvbWFpblRhYmxlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFz
ZSkKK3sKKyAgICBhdXRvIGFkZE9ic2VydmVkRG9tYWluID0gWyZdKGNvbnN0IGNoYXIqIGRvbWFp
bikgeworICAgICAgICBjb25zdGV4cHIgYXV0byBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5ID0g
IklOU0VSVCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAocmVnaXN0cmFibGVEb21haW4pIFZBTFVF
UyAoPykiX3M7CisgICAgICAgIGFkZFZhbHVlc1RvVGFibGU8MT4oZGF0YWJhc2UsIGluc2VydE9i
c2VydmVkRG9tYWluUXVlcnksIHsgZG9tYWluIH0pOworICAgIH07CisKKyAgICBjb25zdGV4cHIg
YXV0byBjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiA9ICJDUkVBVEUgVEFCTEUgUENNT2JzZXJ2ZWRE
b21haW5zICgiCisgICAgICAgICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCByZWdpc3Ry
YWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMKSJfczsKKwor
ICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVBDTU9ic2VydmVk
RG9tYWluKSk7CisgICAgYWRkT2JzZXJ2ZWREb21haW4oImV4YW1wbGUuY29tIik7CisgICAgYWRk
T2JzZXJ2ZWREb21haW4oIndlYmtpdC5vcmciKTsKKyAgICBhZGRPYnNlcnZlZERvbWFpbigid3d3
LndlYmtpdC5vcmciKTsKK30KKwordm9pZCBzZXRVcEZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2Uodm9pZCgqYWRkVW5hdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZSYpLCB2b2lkKCphZGRBdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpKQog
ewogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIGRhdGFiYXNlOwogICAgIEVYUEVDVF9UUlVF
KGRhdGFiYXNlLm9wZW4oZW1wdHlPYnNlcnZhdGlvbnNEQlBhdGgoKSkpOwpAQCAtMjY0LDI2ICsz
MzgsNDQgQEAgdm9pZCBzZXRVcCh2b2lkKCphZGRVbmF0dHJpYnV0ZWRQQ00pKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlJiksIHZvaWQoKmFkZEF0dHJpYnUKICAgICBkYXRhYmFzZS5jbG9zZSgpOwog
fQogCit2b2lkIHNldFVwRnJvbVBDTURhdGFiYXNlKHZvaWQoKmFkZFVuYXR0cmlidXRlZFBDTSko
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSwgdm9pZCgqYWRkQXR0cmlidXRlZFBDTSkoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2UmKSkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBkYXRh
YmFzZTsKKyAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZS5vcGVuKGVtcHR5UGNtREJQYXRoKCkpKTsK
KyAgICBjcmVhdGVBbmRQb3B1bGF0ZVBDTU9ic2VydmVkRG9tYWluVGFibGUoZGF0YWJhc2UpOwor
ICAgIGFkZFVuYXR0cmlidXRlZFBDTShkYXRhYmFzZSk7CisgICAgYWRkQXR0cmlidXRlZFBDTShk
YXRhYmFzZSk7CisgICAgZGF0YWJhc2UuY2xvc2UoKTsKK30KKwogVEVTVChQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgTWlncmF0ZUZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzMSkKIHsKLSAgICBz
ZXRVcChhZGRVbmF0dHJpYnV0ZWRQQ012MSwgYWRkQXR0cmlidXRlZFBDTXYxKTsKKyAgICBzZXRV
cEZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2UoYWRkVW5hdHRyaWJ1dGVkUENNdjEs
IGFkZEF0dHJpYnV0ZWRQQ012MSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld1dpdGhSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZEluTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBwb2xsVW50
aWxQQ01Jc01pZ3JhdGVkKHdlYlZpZXcuZ2V0KCkpOworICAgIHBvbGxVbnRpbFBDTUlzTWlncmF0
ZWQod2ViVmlldy5nZXQoKSwgTWlncmF0aW5nRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3M6Olll
cyk7CiAgICAgY2xlYW5VcCgpOwogfQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBN
aWdyYXRlRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3MyKQogewotICAgIHNldFVwKGFkZFVuYXR0
cmlidXRlZFBDTXYyLCBhZGRBdHRyaWJ1dGVkUENNdjIpOworICAgIHNldFVwRnJvbVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZShhZGRVbmF0dHJpYnV0ZWRQQ012MiwgYWRkQXR0cmlidXRl
ZFBDTXYyKTsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3V2l0aFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2VzcygpOwotICAgIHBvbGxVbnRpbFBDTUlzTWlncmF0
ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9sbFVudGlsUENNSXNNaWdyYXRlZCh3ZWJWaWV3Lmdl
dCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6WWVzKTsKICAgICBjbGVh
blVwKCk7CiB9CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1pZ3JhdGVGcm9tUmVz
b3VyY2VMb2FkU3RhdGlzdGljczMpCiB7Ci0gICAgc2V0VXAoYWRkVW5hdHRyaWJ1dGVkUENNdjMs
IGFkZEF0dHJpYnV0ZWRQQ012Myk7CisgICAgc2V0VXBGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlKGFkZFVuYXR0cmlidXRlZFBDTXYzLCBhZGRBdHRyaWJ1dGVkUENNdjMpOworICAg
IGF1dG8gd2ViVmlldyA9IHdlYlZpZXdXaXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRJ
bk5ldHdvcmtQcm9jZXNzKCk7CisgICAgcG9sbFVudGlsUENNSXNNaWdyYXRlZCh3ZWJWaWV3Lmdl
dCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6WWVzKTsKKyAgICBjbGVh
blVwKCk7Cit9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1pZ3JhdGVGcm9tUENN
MSkKK3sKKyAgICBzZXRVcEZyb21QQ01EYXRhYmFzZShhZGRVbmF0dHJpYnV0ZWRQQ012NCwgYWRk
QXR0cmlidXRlZFBDTXY0KTsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3V2l0aFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2VzcygpOwotICAgIHBvbGxVbnRpbFBD
TUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9sbFVudGlsUENNSXNNaWdyYXRlZCh3
ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Tm8pOwog
ICAgIGNsZWFuVXAoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439511</attachid>
            <date>2021-09-28 13:30:21 -0700</date>
            <delta_ts>2021-09-28 14:13:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230839-20210928133020.patch</filename>
            <type>text/plain</type>
            <size>38619</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzY2I2NWNkMTFiM2RkMTgy
MWQ3ZGQ2MzlhYzllZTlkOGYzNDg2YmIuLjk2OTI2ZThlZWYwOThkNDljOWU3ZTIwZWQ5Y2FlZDYz
Mzc1NjI2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDktMjcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBkaWZmZXJl
bnQgYnVuZGxlSUQgZW50cmllcyB3aWxsIG92ZXJyaWRlIGVhY2ggb3RoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgV2UgcmVjZW50bHkgYWRkZWQg
YSBidW5kbGVJRCBjb2x1bW4gdG8gUENNIHRhYmxlcy4gV2Ugd2FudCB0byBtYWtlCisgICAgICAg
IHN1cmUgZW50cmllcyB3aXRoIGRpZmZlcmVudCBidW5kbGVJRHMgZG8gbm90IG92ZXJyaWRlIGVh
Y2ggb3RoZXIsCisgICAgICAgIHNvIHdlIHNob3VsZCBtYWtlIGl0IGEgcGFydCBvZiB0aGUgdW5p
cXVlIGNvbnN0cmFpbnQgb24gYm90aCBQQ00KKyAgICAgICAgdGFibGVzIHRoYXQgY29udGFpbiBp
dC4gVGhpcyByZXF1aXJlcyBjcmVhdGluZyBuZXcgdGFibGVzIGFuZAorICAgICAgICBtaWdyYXRp
bmcgZXhpc3RpbmcgZGF0YSB0byB0aGVtLiBMdWNraWx5IHRoaXMgY29kZSBhbHJlYWR5IGV4aXN0
cworICAgICAgICBpbiB0aGUgSVRQIGRhdGFiYXNlLCBhbmQgd2UgY2FuIGp1c3QgbW92ZSBpdCB0
byB0aGUgc2hhcmVkCisgICAgICAgIERhdGFiYXNlVXRpbGl0aWVzIGNsYXNzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKToKKyAgICAgICAgKFdlYktp
dDo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjppbnNlcnREaXN0
aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxl
c0lmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRh
YmFzZVV0aWxpdGllczo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmll
cyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRp
bGl0aWVzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBDTTo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFz
ZTo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
RGF0YWJhc2U6OmNyZWF0ZVVuaXF1ZUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRh
dGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDoK
KwogMjAyMS0wOS0yNyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXVtHUFVQXSBSZW1vdmUgYWNjZXNzIHRvIHVudXNlZCBtYWNoIHNlcnZpY2VzIGluIHNhbmRi
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCmluZGV4IDgxZTUxOTViNjA0Yjg2N2EwZTIxNGM0NTM3NTY0MTIzOGIzOWY5NjYuLjMy
NjQ5YWExZWJhYWU5NmUyZDJjNWE0NTMzZWUyM2Q1NmExOTJjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNTAsNyAr
NTAsNiBAQAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CkBAIC0y
NTMsMTIgKzI1Miw3IEBAIHN0YXRpYyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hlbWEoY29u
c3QgU3RyaW5nJiBzY2hlbWEpCiAgICAgcmV0dXJuIHNjaGVtYS5jb250YWlucygiUkVGRVJFTkNF
UyBUb3BMZXZlbERvbWFpbnMiKTsKIH0KIAotc3RhdGljIFN0cmluZyBzdHJpcEluZGV4UXVlcnlU
b01hdGNoU3RvcmVkVmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVyeSkKLXsKLSAgICByZXR1
cm4gU3RyaW5nKG9yaWdpbmFsUXVlcnkpLnJlcGxhY2UoIkNSRUFURSBVTklRVUUgSU5ERVggSUYg
Tk9UIEVYSVNUUyIsICJDUkVBVEUgVU5JUVVFIElOREVYIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZElu
ZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQorY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZXhwZWN0ZWRUYWJsZUFuZElu
ZGV4UXVlcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVl
cmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewogICAgICAgICB7ICJPYnNlcnZl
ZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+
PihjcmVhdGVPYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LApAQCAtMjc5LDYgKzI3Mywy
NyBAQCBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JgogICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzOwogfQogCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNvcnRlZFRhYmxlcygpCit7CisgICAgc3RhdGljIGF1dG8g
c29ydGVkVGFibGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKKyAgICAg
ICAgIk9ic2VydmVkRG9tYWlucyJfcywKKyAgICAgICAgIlRvcExldmVsRG9tYWlucyJfcywKKyAg
ICAgICAgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyJfcywKKyAgICAgICAgIlRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iX3MsCisgICAgICAgICJUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Il9zLAorICAgICAgICAiVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLAorICAgICAgICAiVG9wRnJhbWVMaW5rRGVjb3JhdGlv
bnNGcm9tIl9zLAorICAgICAgICAiVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyJfcywK
KyAgICAgICAgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsCisgICAgICAgICJTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLAorICAgICAgICAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyJfcywKKyAgICAgICAgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywKKyAgICAgICAgIk9wZXJhdGluZ0RhdGVzIl9zCisgICAgfSk7CisKKyAgICByZXR1cm4g
c29ydGVkVGFibGVzOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIHN0
YXRpYyBTdHJpbmcgYnVpbGRMaXN0KGNvbnN0IENvbnRhaW5lclR5cGUmIHZhbHVlcykKIHsKQEAg
LTM2Nyw1MiArMzgyLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZGVsZXRlVGFibGUoU3RyaW5nVmlldyB0YWJsZU5hbWUpCiAgICAgfQogfQogCi1UYWJsZUFu
ZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRh
YmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQotewotICAgIGF1dG8g
Z2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBz
cWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUn
Il9zKTsKLSAgICBpZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50
IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBp
ZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09L
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5h
YmxlIHRvIGJpbmQgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJp
ZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0KLQotICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFibGVTdGF0
ZW1lbnQtPmNvbHVtblRleHQoMCk7Ci0KLSAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBX
SEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7Ci0gICAgaWYgKCFnZXRJbmRl
eFN0YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhR
dWVyaWVzIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhl
IHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPmJp
bmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVtZW50IHRv
IGZldGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBpbmRleDsKLSAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5k
ZXhTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCkpOwotICAgICAgICBpZiAoIXJhd0luZGV4LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGluZGV4ID0gcmF3SW5kZXg7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihXVEZNb3ZlKGNy
ZWF0ZVRhYmxlUXVlcnkpLCBXVEZNb3ZlKGluZGV4KSk7Ci19Ci0KIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pc3NpbmdVbmlxdWVJbmRpY2VzKCkKIHsKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIENPVU5U
KCopIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ2luZGV4JyJfcyk7CkBAIC00NTYs
NjggKzQyNSw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5l
ZWRzVXBkYXRlZFNjaGVtYSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgRXhwZWN0
ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRl
bWVudChTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdGFibGUpCi17Ci0g
ICAgaWYgKHRhYmxlID09ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAg
cmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZyYW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRl
ZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBH
Uk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BGcmFtZURvbWFpbklEIl9zKTsKLQotICAgIGlm
ICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJl
dHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVw
ZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCJfcyk7
Ci0KLSAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iKQotICAg
ICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiX3MpOwotCi0gICAgaWYg
KHRhYmxlID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4g
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3Jh
dGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWlu
SUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQs
IGZyb21Eb21haW5JRCJfcyk7Ci0KLSAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dFNsb3cobWFrZVN0cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJU1RJTkNU
ICogRlJPTSBfIiwgdGFibGUpKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBp
ZiAoIW5lZWRzVXBkYXRlZFNjaGVtYSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRy
YW5zYWN0aW9uU2NvcGUgPSBiZWdpblRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKLQotICAgIGZv
ciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7
Ci0gICAgICAgIGF1dG8gYWx0ZXJUYWJsZSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNs
b3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGUsICIgUkVOQU1FIFRPIF8iLCB0YWJs
ZSkpOwotICAgICAgICBpZiAoIWFsdGVyVGFibGUgfHwgYWx0ZXJUYWJsZS0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1Rh
Ymxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byByZW5hbWUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICVz
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICghY3JlYXRlU2NoZW1hKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVE
YXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIHNjaGVtYSwgZXJyb3Ig
bWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3Ig
KGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgewot
ICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFi
bGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdGFibGUpOwotICAgICAgICBpZiAoIW1pZ3JhdGVUYWJs
ZURhdGEgfHwgbWlncmF0ZVRhYmxlRGF0YS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZh
aWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBkcm9wVGFibGVR
dWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBU
QUJMRSBfIiwgdGFibGUpKTsKLSAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFi
bGVRdWVyeS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBv
cmFyeSB0YWJsZXMsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNl
cygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSB1bmlxdWUgaW5kaWNlcywgZXJyb3IgbWVzc2FnZTogJXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNz
YXJ5KCkKIHsKICAgICBpZiAoIXRhYmxlRXhpc3RzKCJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCmluZGV4IDg1MjhhYWUzYjUwMjYzNGUzMDNlYzA1MzNiNjQxNDU3OTAxOGRl
MTEuLjUwOTJkNTE0NDczN2U4M2RkODgxMmM0ZjM2MjY3MmMzYWJkMmUzMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC00OCw4
ICs0OCw2IEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mQnVja2V0c1BlclN0YXRp
c3RpYyA9IDU7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZlN0YXRpc3RpY3MgPSA3
Owogc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQ
ZXJTdGF0aXN0aWM+IGJ1Y2tldFNpemVzIHt7IDEsIDMsIDEwLCA1MCwgMTAwIH19OwogCi10eXBl
ZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFibGVBbmRJbmRl
eFBhaXI7Ci0KIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3ll
ZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1
ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVi
bGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgcHVibGljIERhdGFiYXNlVXRpbGl0aWVz
IHsKIHB1YmxpYzoKQEAgLTExOCw2ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJydXB0QWxsRGF0YWJhc2VzKCk7CiAKIHByaXZhdGU6CisgICAgY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkgZmluYWw7CisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNvcnRlZFRhYmxlcygpIGZpbmFsOwogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNP
cGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyT3BlcmF0
aW5nRGF0ZXMoKSBvdmVycmlkZSB7IH0KICAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdh
bGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRv
dykgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMjYsMTAgKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBvcGVuSVRQRGF0YWJhc2UoKTsKICAgICB2b2lkIGFkZE1pc3NpbmdUYWJsZXNJZk5lY2Vzc2Fy
eSgpOwogICAgIGJvb2wgbWlzc2luZ1VuaXF1ZUluZGljZXMoKTsKLSAgICBib29sIG5lZWRzVXBk
YXRlZFNjaGVtYSgpOwotICAgIFRhYmxlQW5kSW5kZXhQYWlyIGN1cnJlbnRUYWJsZUFuZEluZGV4
UXVlcmllcyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpIGZp
bmFsOwogICAgIGJvb2wgbWlzc2luZ1JlZmVyZW5jZVRvT2JzZXJ2ZWREb21haW5zKCk7Ci0gICAg
dm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIG1pZ3Jh
dGVEYXRhVG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCB0YWJsZUV4aXN0cyhT
dHJpbmdWaWV3KTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlKFN0cmluZ1ZpZXcpOwpAQCAtMjA2LDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAgICAgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3IgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3IoKSBvdmVycmlkZTsKICAgICBib29sIGlzRGF0YWJhc2VTdG9yZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygp
OworICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpIGZpbmFsOwogICAgIGJvb2wgY3JlYXRl
U2NoZW1hKCkgZmluYWw7CiAgICAgU3RyaW5nIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0
IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApp
bmRleCBmYTBiN2ZkZjQ0NzgyZmE4MzFlMGQzYmVlZWMyNmU0YmI1NTdmMDgxLi4yNjNkY2MzNjFi
YmQ3MDNkMzJmYzA3MGNhM2VmZWQyNjBmMDQ3N2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMTg3LDQgKzE4NywxMTkg
QEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1
aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKICAgICByZXR1cm4gYXR0cmlidXRpb247CiB9CiAK
K1N0cmluZyBEYXRhYmFzZVV0aWxpdGllczo6c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZh
bHVlKGNvbnN0IGNoYXIqIG9yaWdpbmFsUXVlcnkpCit7CisgICAgcmV0dXJuIFN0cmluZyhvcmln
aW5hbFF1ZXJ5KS5yZXBsYWNlKCJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMiLCAi
Q1JFQVRFIFVOSVFVRSBJTkRFWCIpOworfQorCitUYWJsZUFuZEluZGV4UGFpciBEYXRhYmFzZVV0
aWxpdGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKQoreworICAgIGF1dG8gZ2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8g
QU5EIHR5cGUgPSAndGFibGUnIl9zKTsKKyAgICBpZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZVV0aWxpdGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBw
cmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5h
bWUpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0
aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBz
Y2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0g
Z2V0VGFibGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMCk7CisKKyAgICBhdXRvIGdldEluZGV4U3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3Fs
aXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7CisgICAg
aWYgKCFnZXRJbmRleFN0YXRlbWVudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6OmN1cnJlbnRUYWJs
ZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5k
ZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKGdldEluZGV4U3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgeworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VV
dGlsaXRpZXM6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0
ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGluZGV4OworICAgIGlmIChnZXRJbmRleFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmlu
ZyhnZXRJbmRleFN0YXRlbWVudC0+Y29sdW1uVGV4dCgwKSk7CisgICAgICAgIGlmICghcmF3SW5k
ZXguaXNFbXB0eSgpKQorICAgICAgICAgICAgaW5kZXggPSByYXdJbmRleDsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KFdU
Rk1vdmUoY3JlYXRlVGFibGVRdWVyeSksIFdURk1vdmUoaW5kZXgpKTsKK30KKworc3RhdGljIEV4
cGVjdGVkPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCwgaW50PiBpbnNlcnREaXN0aW5jdFZhbHVl
c0luVGFibGVTdGF0ZW1lbnQoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25z
dCBTdHJpbmcmIHRhYmxlKQoreworICAgIGlmICh0YWJsZSA9PSAiU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyIpCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJ
TlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFtZURv
bWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJhbWVE
b21haW5JRCJfcyk7CisKKyAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQorICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3Vy
Y2VEb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQs
IHRvcEZyYW1lRG9tYWluSUQiX3MpOworCisgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJl
c291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0Rv
bWFpbklEIl9zKTsKKworICAgIGlmICh0YWJsZSA9PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tIikKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJ
TlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJv
bSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3MpOworCisgICAgcmV0dXJuIGRh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRh
YmxlLCAiIFNFTEVDVCBESVNUSU5DVCAqIEZST00gXyIsIHRhYmxlKSk7Cit9CisKK3ZvaWQgRGF0
YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCit7Cisg
ICAgaWYgKCFuZWVkc1VwZGF0ZWRTY2hlbWEoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byB0cmFuc2FjdGlvblNjb3BlID0gYmVnaW5UcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CisKKyAg
ICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMo
KSkgeworICAgICAgICBhdXRvIGFsdGVyVGFibGUgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwg
dGFibGUpKTsKKyAgICAgICAgaWYgKCFhbHRlclRhYmxlIHx8IGFsdGVyVGFibGUtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIHJlbmFtZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTog
JXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE1haW50YWluIHRoZSBvcmRlciBv
ZiB0YWJsZXMgdG8gbWFrZSBzdXJlIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUgaXMgY3JlYXRl
ZCBmaXJzdC4gT3RoZXIgdGFibGVzIGhhdmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgcmVmZXJl
bmNpbmcgaXQuCisgICAgZm9yIChhdXRvJiB0YWJsZSA6IHNvcnRlZFRhYmxlcygpKSB7CisgICAg
ICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0
YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGlmICghbWlncmF0ZVRhYmxlRGF0
YSB8fCBtaWdyYXRlVGFibGVEYXRhLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRh
YmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5ICh0YWJsZSAl
cykgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1hLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIHRh
YmxlLnV0ZjgoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEcm9wIGFsbCB0YWJsZXMgYXQgdGhlIGVuZCB0byBhdm9pZCB0cmFz
aGluZyBkYXRhIHRoYXQgcmVmZXJlbmNlcyBkYXRhIGluIG90aGVyIHRhYmxlcy4KKyAgICBmb3Ig
KGF1dG8mIHRhYmxlIDogc29ydGVkVGFibGVzKCkpIHsKKyAgICAgICAgYXV0byBkcm9wVGFibGVR
dWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBU
QUJMRSBfIiwgdGFibGUpKTsKKyAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFi
bGVRdWVyeS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6
Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCB0ZW1wb3Jh
cnkgdGFibGVzLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMo
KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
IiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2Fy
eSBmYWlsZWQgdG8gY3JlYXRlIHVuaXF1ZSBpbmRpY2VzLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5oCmluZGV4IDU5YjdlOGMwMjRi
N2Q1OTM3ZDcyZTVlZGViMjEzMDdiOTMyOGIyMjUuLmFmN2ZlYzk1ZTJlY2MyMjM0MTljNmVlZTU3
OWUxZTlhZWM0OWFmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RGF0YWJhc2VVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogZW51bSBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSA6IGJvb2w7CiAKK3VzaW5nIFRhYmxlQW5kSW5kZXhQYWlyID0gc3RkOjpwYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PjsKKwogY2xhc3MgRGF0YWJhc2VVdGlsaXRpZXMgewogcHJv
dGVjdGVkOgogICAgIERhdGFiYXNlVXRpbGl0aWVzKFN0cmluZyYmIHN0b3JhZ2VGaWxlUGF0aCk7
CkBAIC01Miw4ICs1NSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZv
aWQgaW50ZXJydXB0KCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVNjaGVtYSgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveVN0YXRlbWVudHMoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RG9tYWlu
U3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IG5lZWRzVXBkYXRlZFNjaGVtYSgpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYg
ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzb3J0ZWRUYWJsZXMoKSA9IDA7CisgICAgVGFibGVBbmRJbmRleFBhaXIg
Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVy
eSk7CisgICAgdm9pZCBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKIAogICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNw
cAppbmRleCA4YmMyMzY5YmRmZGUzZjBlOWNlZTg2YWY5ZWE2ZjYyMTJiMmY4ODcyLi5hNzRlNjMx
YmFhZDNlOTIzODFiYmU0MGFmZjdjNGEyODMxOTAwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5j
cHAKQEAgLTY4LDggKzY4LDggQEAgY29uc3RleHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBUQUJMRSBBdHRyaWJ1dGUKICAgICAiZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtl
eUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gUkVBTCwgc291cmNlQXBw
bGljYXRpb25CdW5kbGVJRCBURVhULCAiCiAgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21h
aW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBD
QVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAi
CiAgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9z
OwotY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0
aW9uU2l0ZURvbWFpbklEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICgg
c291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOwotY29uc3Rl
eHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIEF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudF9zb3VyY2VTaXRlRG9tYWluSURfZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgb24gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFp
bklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCApIl9zOworY29uc3RleHByIGF1dG8gY3JlYXRl
VW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUg
VU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEX3NvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
KCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlEICkiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElG
IE5PVCBFWElTVFMgQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVE
b21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21haW5JRF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlE
IG9uIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoIHNvdXJjZVNpdGVEb21haW5J
RCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgKSJf
czsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluID0gIkNSRUFURSBUQUJM
RSBQQ01PYnNlcnZlZERvbWFpbnMgKCIKICAgICAiZG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtF
WSwgcmVnaXN0cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJ
TCkiX3M7CiBjb25zdGV4cHIgYXV0byBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5ID0gIklOU0VS
VCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAocmVnaXN0cmFibGVEb21haW4pIFZBTFVFUyAoPyki
X3M7CkBAIC04OSw2ICs4OSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0
b3JhZ2VEaXJlY3RvcnkpCiAgICAgb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZOZWNlc3Nh
cnkoKTsKICAgICBlbmFibGVGb3JlaWduS2V5cygpOwogICAgIGFkZEJ1bmRsZUlEQ29sdW1uSWZO
ZWNlc3NhcnkoKTsKKyAgICBtaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKTsKICAg
ICBhbGxEYXRhYmFzZXMoKS5hZGQodGhpcyk7CiB9CiAKQEAgLTk5LDYgKzEwMCwyOCBAQCBEYXRh
YmFzZTo6fkRhdGFiYXNlKCkKICAgICBhbGxEYXRhYmFzZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAK
K2NvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRh
YmxlQW5kSW5kZXhQYWlyPiYgRGF0YWJhc2U6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMo
KQoreworICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0
cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsKKyAgICAgICAgeyAiUENNT2JzZXJ2ZWREb21haW5z
Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
UENNT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKKyAgICAgICAgeyAiVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4
VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9LAorICAgICAgICB7ICJBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRl
eEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCisgICAgfSk7CisKKyAgICBy
ZXR1cm4gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllczsKK30KKworY29uc3QgVmVjdG9yPFN0
cmluZz4mIERhdGFiYXNlOjpzb3J0ZWRUYWJsZXMoKQoreworICAgIHN0YXRpYyBhdXRvIHNvcnRl
ZFRhYmxlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgICAgICJQ
Q01PYnNlcnZlZERvbWFpbnMiX3MsCisgICAgICAgICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCJfcywKKyAgICAgICAgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCJfcworICAgIH0pOworCisgICAgcmV0dXJuIHNvcnRlZFRhYmxlczsKK30KKwogdm9pZCBEYXRh
YmFzZTo6aW50ZXJydXB0QWxsRGF0YWJhc2VzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKQEAgLTEwNiw2ICsxMjksMTYgQEAgdm9pZCBEYXRhYmFzZTo6aW50ZXJydXB0QWxs
RGF0YWJhc2VzKCkKICAgICAgICAgZGF0YWJhc2UtPmludGVycnVwdCgpOwogfQogCitib29sIERh
dGFiYXNlOjpjcmVhdGVVbmlxdWVJbmRpY2VzKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCkKKyAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5p
cXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB7CisgICAgICAgIExP
R19FUlJPUigiRXJyb3IgY3JlYXRpbmcgaW5kZXhlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIERhdGFiYXNlOjpjcmVhdGVTY2hl
bWEoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNjc0LDYgKzcwNywx
NiBAQCB2b2lkIERhdGFiYXNlOjphZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCkKICAgICBj
aGVja0NvbHVtbnMoYXR0cmlidXRlZFRhYmxlTmFtZSk7CiAgICAgY2hlY2tDb2x1bW5zKHVuYXR0
cmlidXRlZFRhYmxlTmFtZSk7CiB9Citib29sIERhdGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEo
KQoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhdCB0aGUgZW5kIG9mIDIwMjEuIE5vIHB1
YmxpYyByZWxlYXNlIHdhcyBtYWRlIHdpdGggdGhlIHNjaGVtYSBtaXNzaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQsIHNvIHRoaXMgaXMgb25seSBuZWVkZWQgdG8gbWlncmF0ZSBpbnRlcm5h
bCB1c2VycyB3aG8gdXBkYXRlZCBpbiBTZXB0ZW1iZXIgMjAyMS4KKyAgICBmb3IgKGF1dG8mIHRh
YmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkgeworICAgICAgICBp
ZiAoY3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKHRhYmxlKSAhPSBleHBlY3RlZFRhYmxlQW5k
SW5kZXhRdWVyaWVzKCkuZ2V0KHRhYmxlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OmNv
bHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmgKaW5kZXggZmFiNWJmMGZkNDk5NjlmYTBhMTg2ZjM0Yjc3MzIyN2Q2MGVkMDEwYy4uMmVlZDg5
NDVkYTBiZmQyNTYxYWQ5ODcwNGI4ZWY3MTE4MDIxOWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgK
QEAgLTc3LDYgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zy
b21Eb21haW5JRChEb21haW5JRCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGFkZEJ1bmRsZUlE
Q29sdW1uSWZOZWNlc3NhcnkoKTsKKyAgICBib29sIG5lZWRzVXBkYXRlZFNjaGVtYSgpIGZpbmFs
OworICAgIGJvb2wgY3JlYXRlVW5pcXVlSW5kaWNlcygpIGZpbmFsOworICAgIGNvbnN0IE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQ
YWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpIGZpbmFsOworICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzb3J0ZWRUYWJsZXMoKSBmaW5hbDsKKwogICAgIFZlY3RvcjxTdHJpbmc+
IGNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSk7CiAgICAgdm9pZCBhZGRN
aXNzaW5nQ29sdW1uVG9UYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb2x1bW5OYW1lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDgxNGIxNDU0ZTgzYTY3N2VhYTlmMzdmOGU1MGMzMzQ1MDFjNTE2ODQuLjhm
ZjEzNjM3MzlkMGE4NDAyODE3ZmQyNzdiOGFmZWQ1NzNlMzlmOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0w
OS0yNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBQQ006IGRpZmZlcmVudCBidW5kbGVJRCBlbnRyaWVzIHdpbGwgb3ZlcnJpZGUgZWFjaCBvdGhl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBBUEkg
dGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGNhc2Ugb2YgZXhpc3RpbmcgUENNIGRhdGEgd2l0aCBhIGJ1
bmRsZUlECisgICAgICAgIGNvbHVtbiBidXQgYW4gZXhwaXJlZCB1bmlxdWUgaW5kZXguCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50Lm1tOgorICAgICAgICAoYWRkVW5hdHRyaWJ1dGVkUENNdjQpOgorICAgICAgICAoYWRk
QXR0cmlidXRlZFBDTXY0KToKKyAgICAgICAgKGR1bXBlZFBDTSk6CisgICAgICAgIChwb2xsVW50
aWxQQ01Jc01pZ3JhdGVkKToKKyAgICAgICAgKGVtcHR5UGNtREJQYXRoKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlUENNT2JzZXJ2ZWREb21haW5UYWJsZSk6CisgICAgICAgIChzZXRVcEZy
b21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2UpOgorICAgICAgICAoc2V0VXBGcm9tUENN
RGF0YWJhc2UpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChzZXRVcCk6IERlbGV0ZWQuCisK
IDIwMjEtMDktMjcgIFNhbSBTbmVkZG9uICA8Z3NuZWRkZXJzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQb3J0Ll9uYXR1cmFsX3NvcnRfa2V5IHNob3VsZCBzb3J0IGEwMSBiZWZvcmUgYTAwMQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXggNGZiMTE0MDhkZGI4ZGY0YzY1Zjk3ZDI1
NDljMDA5MzgwOGJiM2QyZC4uN2ZiYmYyMmQ4NmFiNDQ1NzlmMTVlNzc4NjdkNmM5NGUyZjA5ZjE4
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCkBAIC0xNjQsNiArMTY0LDQ5IEBA
IHN0YXRpYyB2b2lkIGFkZFVuYXR0cmlidXRlZFBDTXYzKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
JiBkYXRhYmFzZSkKICAgICBhZGRWYWx1ZXNUb1RhYmxlPDc+KGRhdGFiYXNlLCBpbnNlcnRVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5VjMsIHsgMiwgMywgNDMsIDEuMCwg
InRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiIH0pOwogfQogCitz
dGF0aWMgdm9pZCBhZGRVbmF0dHJpYnV0ZWRQQ012NChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYg
ZGF0YWJhc2UpCit7CisgICAgY29uc3RleHByIGF1dG8gY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRWNCA9ICJDUkVBVEUgVEFCTEUgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgKCIKKyAgICAgICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5P
VCBOVUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJ
RCBJTlRFR0VSIE5PVCBOVUxMLCAiCisgICAgICAgICJ0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5V
TEwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBzb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlEIFRFWFQsIEZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgIgorICAg
ICAgICAiUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBD
QVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAi
CisgICAgICAgICJQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURF
KSJfczsKKworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50VjQpKTsKKworICAgIGNvbnN0ZXhwciBh
dXRvIGluc2VydFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnlWNCA9ICJJ
TlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCisgICAgICAg
ICJzb3VyY2VJRCwgdGltZU9mQWRDbGljaywgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIHNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPykiX3M7
CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8gYnVuZGxlSUQgPSAiY29tLmFwcGxl
LlNhZmFyaSI7CisjZWxzZQorICAgIGF1dG8gYnVuZGxlSUQgPSAiY29tLmFwcGxlLm1vYmlsZXNh
ZmFyaSI7CisjZW5kaWYKKyAgICBhZGRWYWx1ZXNUb1RhYmxlPDg+KGRhdGFiYXNlLCBpbnNlcnRV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5VjQsIHsgMiwgMywgNDMsIDEu
MCwgInRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiLCBidW5kbGVJ
RCB9KTsKK30KKworc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlZFBDTXY0KFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBjb25zdGV4cHIgYXV0byBjcmVhdGVBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWNCA9ICJDUkVBVEUgVEFCTEUgQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50ICgiCisgICAgICAgICJzb3VyY2VTaXRlRG9tYWluSUQgSU5U
RUdFUiBOT1QgTlVMTCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgSU5URUdFUiBOT1QgTlVMTCwg
c291cmNlSUQgSU5URUdFUiBOT1QgTlVMTCwgIgorICAgICAgICAiYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZB
ZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKKyAgICAgICAgImVhcmxpZXN0VGltZVRvU2VuZFRvU291
cmNlIFJFQUwsIHRva2VuIFRFWFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBlYXJsaWVz
dFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIFJFQUwsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQg
VEVYVCwiCisgICAgICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpIFJFRkVSRU5D
RVMgUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9SRUlH
TiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgorICAgICAgICAiUENN
T2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSkiX3M7CisKKyAgICBF
WFBFQ1RfVFJVRShkYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVBdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRWNCkpOworCisgICAgY29uc3RleHByIGF1dG8gaW5zZXJ0QXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnlWNCA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJ
TlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklE
LCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgorICAgICAgICAic291cmNlSUQsIGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNrLCBlYXJsaWVzdFRpbWVUb1Nl
bmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRv
RGVzdGluYXRpb24sIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
YXV0byBidW5kbGVJRCA9ICJjb20uYXBwbGUuU2FmYXJpIjsKKyNlbHNlCisgICAgYXV0byBidW5k
bGVJRCA9ICJjb20uYXBwbGUubW9iaWxlc2FmYXJpIjsKKyNlbmRpZgorICAgIGFkZFZhbHVlc1Rv
VGFibGU8MTI+KGRhdGFiYXNlLCBpbnNlcnRBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRRdWVyeVY0LCB7IDEsIDIsIDQyLCAxNCwgNywgMS4wLCBlYXJsaWVzdFRpbWVUb1NlbmQoKSwg
InRlc3QgdG9rZW4iLCAidGVzdCBzaWduYXR1cmUiLCAidGVzdCBrZXkgaWQiLCBlYXJsaWVzdFRp
bWVUb1NlbmQoKSwgYnVuZGxlSUQgfSk7Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+
IGR1bXBlZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiB7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNTdHJpbmc+IHBjbTsKQEAgLTE3MiwxNCArMjE1LDE4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNT
dHJpbmc+IGR1bXBlZFBDTShXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgfV07CiAgICAgd2hpbGUg
KCFwY20pCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAg
CiAgICAgcmV0dXJuIHBjbTsKIH0KIAotc3RhdGljIHZvaWQgcG9sbFVudGlsUENNSXNNaWdyYXRl
ZChXS1dlYlZpZXcgKndlYlZpZXcpCitlbnVtIGNsYXNzIE1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIDogYm9vbCB7IE5vLCBZZXMgfTsKK3N0YXRpYyB2b2lkIHBvbGxVbnRpbFBD
TUlzTWlncmF0ZWQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBtaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKIHsKLSAgICAv
LyBUaGlzIHF1ZXJ5IGlzIHRoZSBmaXJzdCB0aGluZyB0byBvcGVuIHRoZSBvbGQgZGF0YWJhc2Us
IHNvIG1pZ3JhdGlvbiBoYXMgbm90IGhhcHBlbmVkIHlldC4KLSAgICBjb25zdCBjaGFyKiBlbXB0
eVBDTURhdGFiYXNlID0gIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0
YS5cbiI7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBDTSh3ZWJWaWV3KS5nZXQoKSwgZW1w
dHlQQ01EYXRhYmFzZSk7CisgICAgaWYgKG1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID09IE1pZ3JhdGluZ0Zyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpZZXMpIHsKKyAgICAg
ICAgLy8gVGhpcyBxdWVyeSBpcyB0aGUgZmlyc3QgdGhpbmcgdG8gb3BlbiB0aGUgb2xkIGRhdGFi
YXNlLCBzbyBtaWdyYXRpb24gaGFzIG5vdCBoYXBwZW5lZCB5ZXQuCisgICAgICAgIGNvbnN0IGNo
YXIqIGVtcHR5UENNRGF0YWJhc2UgPSAiXG5ObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudCBkYXRhLlxuIjsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGR1bXBlZFBDTSh3ZWJWaWV3
KS5nZXQoKSwgZW1wdHlQQ01EYXRhYmFzZSk7CisgICAgfQogCiAgICAgTlNTdHJpbmcgKmV4cGVj
dGVkTWlncmF0ZWRQQ01EYXRhYmFzZSA9IEAiIgogICAgICAgICAiVW5hdHRyaWJ1dGVkIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRzOlxuIgpAQCAtMjI0LDYgKzI3MSwxNyBAQCBzdGF0aWMgTlNT
dHJpbmcgKmVtcHR5T2JzZXJ2YXRpb25zREJQYXRoKCkKICAgICByZXR1cm4gZmlsZVVSTC5wYXRo
OwogfQogCitzdGF0aWMgTlNTdHJpbmcgKmVtcHR5UGNtREJQYXRoKCkKK3sKKyAgICBOU0ZpbGVN
YW5hZ2VyICpkZWZhdWx0RmlsZU1hbmFnZXIgPSBOU0ZpbGVNYW5hZ2VyLmRlZmF1bHRNYW5hZ2Vy
OworICAgIE5TVVJMICppdHBSb290VVJMID0gV0tXZWJzaXRlRGF0YVN0b3JlLmRlZmF1bHREYXRh
U3RvcmUuX2NvbmZpZ3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Cisg
ICAgTlNVUkwgKmZpbGVVUkwgPSBbaXRwUm9vdFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJwY20uZGIiXTsKKyAgICBbZGVmYXVsdEZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6
aXRwUm9vdFVSTC5wYXRoIGVycm9yOm5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFtkZWZhdWx0Rmls
ZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDppdHBSb290VVJMLnBhdGhdKTsKKyAgICBbZGVmYXVs
dEZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOml0cFJvb3RVUkwgd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIHJldHVy
biBmaWxlVVJMLnBhdGg7Cit9CisKIHN0YXRpYyB2b2lkIGNsZWFuVXAoKQogewogICAgIE5TRmls
ZU1hbmFnZXIgKmRlZmF1bHRGaWxlTWFuYWdlciA9IE5TRmlsZU1hbmFnZXIuZGVmYXVsdE1hbmFn
ZXI7CkBAIC0yNTQsNyArMzEyLDIzIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZFBvcHVsYXRlT2Jz
ZXJ2ZWREb21haW5UYWJsZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhCiAgICAgYWRk
T2JzZXJ2ZWREb21haW4oInd3dy53ZWJraXQub3JnIik7CiB9CiAKLXZvaWQgc2V0VXAodm9pZCgq
YWRkVW5hdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpLCB2b2lkKCphZGRB
dHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpKQorc3RhdGljIHZvaWQgY3Jl
YXRlQW5kUG9wdWxhdGVQQ01PYnNlcnZlZERvbWFpblRhYmxlKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJiBkYXRhYmFzZSkKK3sKKyAgICBhdXRvIGFkZE9ic2VydmVkRG9tYWluID0gWyZdKGNvbnN0
IGNoYXIqIGRvbWFpbikgeworICAgICAgICBjb25zdGV4cHIgYXV0byBpbnNlcnRPYnNlcnZlZERv
bWFpblF1ZXJ5ID0gIklOU0VSVCBJTlRPIFBDTU9ic2VydmVkRG9tYWlucyAocmVnaXN0cmFibGVE
b21haW4pIFZBTFVFUyAoPykiX3M7CisgICAgICAgIGFkZFZhbHVlc1RvVGFibGU8MT4oZGF0YWJh
c2UsIGluc2VydE9ic2VydmVkRG9tYWluUXVlcnksIHsgZG9tYWluIH0pOworICAgIH07CisKKyAg
ICBjb25zdGV4cHIgYXV0byBjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiA9ICJDUkVBVEUgVEFCTEUg
UENNT2JzZXJ2ZWREb21haW5zICgiCisgICAgICAgICJkb21haW5JRCBJTlRFR0VSIFBSSU1BUlkg
S0VZLCByZWdpc3RyYWJsZURvbWFpbiBURVhUIE5PVCBOVUxMIFVOSVFVRSBPTiBDT05GTElDVCBG
QUlMKSJfczsKKworICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0
ZVBDTU9ic2VydmVkRG9tYWluKSk7CisgICAgYWRkT2JzZXJ2ZWREb21haW4oImV4YW1wbGUuY29t
Iik7CisgICAgYWRkT2JzZXJ2ZWREb21haW4oIndlYmtpdC5vcmciKTsKKyAgICBhZGRPYnNlcnZl
ZERvbWFpbigid3d3LndlYmtpdC5vcmciKTsKK30KKwordm9pZCBzZXRVcEZyb21SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2Uodm9pZCgqYWRkVW5hdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZSYpLCB2b2lkKCphZGRBdHRyaWJ1dGVkUENNKShXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZSYpKQogewogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIGRhdGFiYXNlOwogICAg
IEVYUEVDVF9UUlVFKGRhdGFiYXNlLm9wZW4oZW1wdHlPYnNlcnZhdGlvbnNEQlBhdGgoKSkpOwpA
QCAtMjY0LDI2ICszMzgsNDQgQEAgdm9pZCBzZXRVcCh2b2lkKCphZGRVbmF0dHJpYnV0ZWRQQ00p
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiksIHZvaWQoKmFkZEF0dHJpYnUKICAgICBkYXRhYmFz
ZS5jbG9zZSgpOwogfQogCit2b2lkIHNldFVwRnJvbVBDTURhdGFiYXNlKHZvaWQoKmFkZFVuYXR0
cmlidXRlZFBDTSkoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSwgdm9pZCgqYWRkQXR0cmlidXRl
ZFBDTSkoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZSBkYXRhYmFzZTsKKyAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZS5vcGVuKGVtcHR5UGNt
REJQYXRoKCkpKTsKKyAgICBjcmVhdGVBbmRQb3B1bGF0ZVBDTU9ic2VydmVkRG9tYWluVGFibGUo
ZGF0YWJhc2UpOworICAgIGFkZFVuYXR0cmlidXRlZFBDTShkYXRhYmFzZSk7CisgICAgYWRkQXR0
cmlidXRlZFBDTShkYXRhYmFzZSk7CisgICAgZGF0YWJhc2UuY2xvc2UoKTsKK30KKwogVEVTVChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWlncmF0ZUZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
MSkKIHsKLSAgICBzZXRVcChhZGRVbmF0dHJpYnV0ZWRQQ012MSwgYWRkQXR0cmlidXRlZFBDTXYx
KTsKKyAgICBzZXRVcEZyb21SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2UoYWRkVW5hdHRy
aWJ1dGVkUENNdjEsIGFkZEF0dHJpYnV0ZWRQQ012MSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2Vi
Vmlld1dpdGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZEluTmV0d29ya1Byb2Nlc3MoKTsK
LSAgICBwb2xsVW50aWxQQ01Jc01pZ3JhdGVkKHdlYlZpZXcuZ2V0KCkpOworICAgIHBvbGxVbnRp
bFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSwgTWlncmF0aW5nRnJvbVJlc291cmNlTG9hZFN0
YXRpc3RpY3M6Olllcyk7CiAgICAgY2xlYW5VcCgpOwogfQogCiBURVNUKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBNaWdyYXRlRnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3MyKQogewotICAgIHNl
dFVwKGFkZFVuYXR0cmlidXRlZFBDTXYyLCBhZGRBdHRyaWJ1dGVkUENNdjIpOworICAgIHNldFVw
RnJvbVJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZShhZGRVbmF0dHJpYnV0ZWRQQ012Miwg
YWRkQXR0cmlidXRlZFBDTXYyKTsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3V2l0aFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2VzcygpOwotICAgIHBvbGxVbnRp
bFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9sbFVudGlsUENNSXNNaWdyYXRl
ZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6WWVz
KTsKICAgICBjbGVhblVwKCk7CiB9CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1p
Z3JhdGVGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczMpCiB7Ci0gICAgc2V0VXAoYWRkVW5hdHRy
aWJ1dGVkUENNdjMsIGFkZEF0dHJpYnV0ZWRQQ012Myk7CisgICAgc2V0VXBGcm9tUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlKGFkZFVuYXR0cmlidXRlZFBDTXYzLCBhZGRBdHRyaWJ1dGVk
UENNdjMpOworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdXaXRoUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWRJbk5ldHdvcmtQcm9jZXNzKCk7CisgICAgcG9sbFVudGlsUENNSXNNaWdyYXRl
ZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6WWVz
KTsKKyAgICBjbGVhblVwKCk7Cit9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1p
Z3JhdGVGcm9tUENNMSkKK3sKKyAgICBzZXRVcEZyb21QQ01EYXRhYmFzZShhZGRVbmF0dHJpYnV0
ZWRQQ012NCwgYWRkQXR0cmlidXRlZFBDTXY0KTsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3
V2l0aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvY2VzcygpOwotICAg
IHBvbGxVbnRpbFBDTUlzTWlncmF0ZWQod2ViVmlldy5nZXQoKSk7CisgICAgcG9sbFVudGlsUENN
SXNNaWdyYXRlZCh3ZWJWaWV3LmdldCgpLCBNaWdyYXRpbmdGcm9tUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6Tm8pOwogICAgIGNsZWFuVXAoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>