<?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>222141</bug_id>
          
          <creation_ts>2021-02-18 16:25:57 -0800</creation_ts>
          <short_desc>PCM: Request server public key to generate secret token</short_desc>
          <delta_ts>2021-02-19 01:10:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221291</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731084</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-18 16:25:57 -0800</bug_when>
    <thetext>Request server public keys to generate secret token.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731086</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-18 16:26:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/74462955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731087</commentid>
    <comment_count>2</comment_count>
      <attachid>420885</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-18 16:34:05 -0800</bug_when>
    <thetext>Created attachment 420885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731119</commentid>
    <comment_count>3</comment_count>
      <attachid>420885</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-18 17:36:32 -0800</bug_when>
    <thetext>Comment on attachment 420885
Patch

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

r=me with comments.

&gt; Source/WebCore/ChangeLog:3
&gt; +        PCM: Request server public keys to generate secret token

Nit: key, not keys

&gt; Source/WebKit/ChangeLog:28
&gt; +        Teaches the PCMM to send the token public key request.

Nit: PCM, not PCMM.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:41
&gt; +static const char privateClickMeasurementTokenPublicKeyPath[] = &quot;/.well-known/private-click-measurement/unlinkable-token-public-key/&quot;;

We should formulate this as an action, so /get-unlinkable-token-public-key/.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:95
&gt; +    request.setHTTPMethod(httpMethod);

Nice.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:119
&gt; +static NetworkResourceLoadParameters generateNetworkResourceLoadParametersForPost(URL&amp;&amp; url, Ref&lt;JSON::Object&gt;&amp;&amp; jsonPayload, PrivateClickMeasurement::PcmDataCarried dataTypeCarried)

I would add HTTP, so generateNetworkResourceLoadParametersForHTTPPost.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:124
&gt; +static NetworkResourceLoadParameters generateNetworkResourceLoadParametersForGet(URL&amp;&amp; url, PrivateClickMeasurement::PcmDataCarried dataTypeCarried)

I would add HTTP, so generateNetworkResourceLoadParametersForHTTPGet.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:129
&gt; +void PrivateClickMeasurementManager::getTokenPublicKey(PrivateClickMeasurement&amp;&amp; attribution)

I wonder if other WebKit developers will bark at this use of &quot;get&quot; as the leading verb? Maybe we should use the word &quot;retrieve&quot; instead just to avoid the potential complaint? In my personal view it *is* good use of the word &quot;get&quot; since we are getting things from the server. Naming it &quot;fetch&quot; instead doesn&apos;t help since it would lead people to think that this is tied to Fetch.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:135
&gt; +    auto pcmDataCarried = PrivateClickMeasurement::PcmDataCarried::PersonallyIdentifiable;

I would add a comment here saying &quot;This is guaranteed to be close in time to the navigational click which makes it likely to be personally identifiable.&quot;

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:159
&gt; +        getSignedUnlinkableToken(attribution);

WTFMove(attribution)?

&gt; Tools/ChangeLog:3
&gt; +        PCM: Request server public keys to generate secret token

Nit: key

&gt; LayoutTests/ChangeLog:14
&gt; +        * http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html:

Please explain briefly what changed in this test case.

&gt; LayoutTests/http/tests/privateClickMeasurement/resources/signToken.php:4
&gt; +$tokenSigningFile = fopen($tokenSigningFilePath . &quot;.tmp&quot;, &apos;a&apos;);

So this will open the file twice and only after the second append rename it so that the polling finds it? Trying to understand the logic. We should add a comment that explains this. Another way of doing it is having a dedicated PHP file for fetching the singing key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731138</commentid>
    <comment_count>4</comment_count>
      <attachid>420885</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-18 18:02:15 -0800</bug_when>
    <thetext>Comment on attachment 420885
Patch

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

Thanks John for r+ this patch.

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        PCM: Request server public keys to generate secret token
&gt; 
&gt; Nit: key, not keys

Will fix.

&gt;&gt; Source/WebKit/ChangeLog:28
&gt;&gt; +        Teaches the PCMM to send the token public key request.
&gt; 
&gt; Nit: PCM, not PCMM.

It actually refers to PCM manager.

&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:41
&gt;&gt; +static const char privateClickMeasurementTokenPublicKeyPath[] = &quot;/.well-known/private-click-measurement/unlinkable-token-public-key/&quot;;
&gt; 
&gt; We should formulate this as an action, so /get-unlinkable-token-public-key/.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:119
&gt;&gt; +static NetworkResourceLoadParameters generateNetworkResourceLoadParametersForPost(URL&amp;&amp; url, Ref&lt;JSON::Object&gt;&amp;&amp; jsonPayload, PrivateClickMeasurement::PcmDataCarried dataTypeCarried)
&gt; 
&gt; I would add HTTP, so generateNetworkResourceLoadParametersForHTTPPost.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:124
&gt;&gt; +static NetworkResourceLoadParameters generateNetworkResourceLoadParametersForGet(URL&amp;&amp; url, PrivateClickMeasurement::PcmDataCarried dataTypeCarried)
&gt; 
&gt; I would add HTTP, so generateNetworkResourceLoadParametersForHTTPGet.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:129
&gt;&gt; +void PrivateClickMeasurementManager::getTokenPublicKey(PrivateClickMeasurement&amp;&amp; attribution)
&gt; 
&gt; I wonder if other WebKit developers will bark at this use of &quot;get&quot; as the leading verb? Maybe we should use the word &quot;retrieve&quot; instead just to avoid the potential complaint? In my personal view it *is* good use of the word &quot;get&quot; since we are getting things from the server. Naming it &quot;fetch&quot; instead doesn&apos;t help since it would lead people to think that this is tied to Fetch.

I think get is good.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:135
&gt;&gt; +    auto pcmDataCarried = PrivateClickMeasurement::PcmDataCarried::PersonallyIdentifiable;
&gt; 
&gt; I would add a comment here saying &quot;This is guaranteed to be close in time to the navigational click which makes it likely to be personally identifiable.&quot;

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:159
&gt;&gt; +        getSignedUnlinkableToken(attribution);
&gt; 
&gt; WTFMove(attribution)?

This one accepts a const &amp;. Let me modify that.

&gt;&gt; Tools/ChangeLog:3
&gt;&gt; +        PCM: Request server public keys to generate secret token
&gt; 
&gt; Nit: key

Will fix.

&gt;&gt; LayoutTests/ChangeLog:14
&gt;&gt; +        * http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html:
&gt; 
&gt; Please explain briefly what changed in this test case.

Sure.

&gt;&gt; LayoutTests/http/tests/privateClickMeasurement/resources/signToken.php:4
&gt;&gt; +$tokenSigningFile = fopen($tokenSigningFilePath . &quot;.tmp&quot;, &apos;a&apos;);
&gt; 
&gt; So this will open the file twice and only after the second append rename it so that the polling finds it? Trying to understand the logic. We should add a comment that explains this. Another way of doing it is having a dedicated PHP file for fetching the singing key.

I can add a comment here. It&apos;s not necessary to duplicate that many code here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731161</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-18 18:59:59 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #4)
&gt; Comment on attachment 420885 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420885&amp;action=review
&gt; 
&gt; Thanks John for r+ this patch.
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:3
&gt; &gt;&gt; +        PCM: Request server public keys to generate secret token
&gt; &gt; 
&gt; &gt; Nit: key, not keys
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:28
&gt; &gt;&gt; +        Teaches the PCMM to send the token public key request.
&gt; &gt; 
&gt; &gt; Nit: PCM, not PCMM.
&gt; 
&gt; It actually refers to PCM manager.

Ha, ha! Maybe PCM Mgr? No big deal.

&gt; &gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:41
&gt; &gt;&gt; +static const char privateClickMeasurementTokenPublicKeyPath[] = &quot;/.well-known/private-click-measurement/unlinkable-token-public-key/&quot;;
&gt; &gt; 
&gt; &gt; We should formulate this as an action, so /get-unlinkable-token-public-key/.
&gt; 
&gt; Sure.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:119
&gt; &gt;&gt; +static NetworkResourceLoadParameters generateNetworkResourceLoadParametersForPost(URL&amp;&amp; url, Ref&lt;JSON::Object&gt;&amp;&amp; jsonPayload, PrivateClickMeasurement::PcmDataCarried dataTypeCarried)
&gt; &gt; 
&gt; &gt; I would add HTTP, so generateNetworkResourceLoadParametersForHTTPPost.
&gt; 
&gt; Sure.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:124
&gt; &gt;&gt; +static NetworkResourceLoadParameters generateNetworkResourceLoadParametersForGet(URL&amp;&amp; url, PrivateClickMeasurement::PcmDataCarried dataTypeCarried)
&gt; &gt; 
&gt; &gt; I would add HTTP, so generateNetworkResourceLoadParametersForHTTPGet.
&gt; 
&gt; Sure.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:129
&gt; &gt;&gt; +void PrivateClickMeasurementManager::getTokenPublicKey(PrivateClickMeasurement&amp;&amp; attribution)
&gt; &gt; 
&gt; &gt; I wonder if other WebKit developers will bark at this use of &quot;get&quot; as the leading verb? Maybe we should use the word &quot;retrieve&quot; instead just to avoid the potential complaint? In my personal view it *is* good use of the word &quot;get&quot; since we are getting things from the server. Naming it &quot;fetch&quot; instead doesn&apos;t help since it would lead people to think that this is tied to Fetch.
&gt; 
&gt; I think get is good.

OK, let&apos;s go with get then.

&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:135
&gt; &gt;&gt; +    auto pcmDataCarried = PrivateClickMeasurement::PcmDataCarried::PersonallyIdentifiable;
&gt; &gt; 
&gt; &gt; I would add a comment here saying &quot;This is guaranteed to be close in time to the navigational click which makes it likely to be personally identifiable.&quot;
&gt; 
&gt; Sure.
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurementManager.cpp:159
&gt; &gt;&gt; +        getSignedUnlinkableToken(attribution);
&gt; &gt; 
&gt; &gt; WTFMove(attribution)?
&gt; 
&gt; This one accepts a const &amp;. Let me modify that.
&gt; 
&gt; &gt;&gt; Tools/ChangeLog:3
&gt; &gt;&gt; +        PCM: Request server public keys to generate secret token
&gt; &gt; 
&gt; &gt; Nit: key
&gt; 
&gt; Will fix.
&gt; 
&gt; &gt;&gt; LayoutTests/ChangeLog:14
&gt; &gt;&gt; +        * http/tests/privateClickMeasurement/store-private-click-measurement-with-source-nonce.html:
&gt; &gt; 
&gt; &gt; Please explain briefly what changed in this test case.
&gt; 
&gt; Sure.
&gt; 
&gt; &gt;&gt; LayoutTests/http/tests/privateClickMeasurement/resources/signToken.php:4
&gt; &gt;&gt; +$tokenSigningFile = fopen($tokenSigningFilePath . &quot;.tmp&quot;, &apos;a&apos;);
&gt; &gt; 
&gt; &gt; So this will open the file twice and only after the second append rename it so that the polling finds it? Trying to understand the logic. We should add a comment that explains this. Another way of doing it is having a dedicated PHP file for fetching the singing key.
&gt; 
&gt; I can add a comment here. It&apos;s not necessary to duplicate that many code
&gt; here.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731245</commentid>
    <comment_count>6</comment_count>
      <attachid>420930</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-19 00:03:13 -0800</bug_when>
    <thetext>Created attachment 420930
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731264</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-19 01:10:22 -0800</bug_when>
    <thetext>Committed r273133: &lt;https://commits.webkit.org/r273133&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420930.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420885</attachid>
            <date>2021-02-18 16:34:05 -0800</date>
            <delta_ts>2021-02-18 17:36:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222141-20210218163404.patch</filename>
            <type>text/plain</type>
            <size>38286</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiOTJiNjVlMWQ2ZjE3
YTQ4NjFjYjBhYWJkZDc5YmQ2MGE5YjZlYy4uODJmOTM3ZDE1ZTljZWVlMmY1YTJjNGY2NGQ3NmMy
NDViZDllZGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAyLTE4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBSZXF1ZXN0IHNl
cnZlciBwdWJsaWMga2V5cyB0byBnZW5lcmF0ZSBzZWNyZXQgdG9rZW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjE0MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzQ0NjI5NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgd2F5IGZvciBQQ00gZnJhdWQgcHJldmVudGlv
biB0byByZXF1ZXN0IHRoZSBzZXJ2ZXIgcHVibGljIGtleQorICAgICAgICB3aGljaCB3aWxsIGJl
IHRoZW4gdXNlZCB0byBnZW5lcmF0ZSB0aGUgdW5saW5rYWJsZSB0b2tlbi4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50Ojp0b2tlblB1YmxpY0tleVVSTCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Lmg6CisgICAgICAgIEFkZHMgbmV3IHdlbGwta25vd24gVUxSIGZvciB0
aGlzIHB1cnBvc2UuCisKIDIwMjEtMDItMTggIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG5vbiBhcHAtYm91bmQgcmVx
dWVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDEzNDA2Y2M1YzY3OTQwOTlkNTAzZTcxNGZiMDMwMzFlNjhkMWNk
Ni4uNzg5NDZhNTJkNzc2ZmJkMzY1ODJmMGNmNmFhMTJmNTg5YmQzNjBjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MSBAQAorMjAyMS0wMi0xOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFBDTTogUmVxdWVzdCBzZXJ2ZXIgcHVibGljIGtleXMgdG8gZ2VuZXJh
dGUgc2VjcmV0IHRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjIxNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NDYyOTU1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rp
bmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAg
IFBhcGVyd29yayB0byBhZGQgYSB3YXkgdG8gc2V0IHRlc3QgVVJMLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzRm9yUG9zdCk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnNGb3JHZXQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4pOgorICAg
ICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJz
aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgVGVhY2hl
cyB0aGUgUENNTSB0byBzZW5kIHRoZSB0b2tlbiBwdWJsaWMga2V5IHJlcXVlc3QuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNpbXVsYXRl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJM
Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICBQYXBlcndvcmsgdG8gYWRkIGEgd2F5IHRvIHNldCB0ZXN0IFVSTC4KKwogMjAyMS0wMi0xOCAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggZTk0MmMzMThkZjIyNzdj
ZjY1YTBiOGU0MDMyNjU0YjM5NTA2YjQyNy4uYjU5MmUyY2YwMjBhYWM0ZGNmNzAyMmMwNmNmMzk3
MzMxZjdiODRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUcmlnZ2VyQXR0cmlidXRp
b25QYXRoW10gPSAiLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dl
ci1hdHRyaWJ1dGlvbi8iOwogc3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVBhdGhbXSA9ICIvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFz
dXJlbWVudC9zaWduLXVubGlua2FibGUtdG9rZW4vIjsKK3N0YXRpYyBjb25zdCBjaGFyIHByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlQYXRoW10gPSAiLy53ZWxsLWtub3duL3By
aXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdW5saW5rYWJsZS10b2tlbi1wdWJsaWMta2V5LyI7CiBz
dGF0aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFJlcG9ydEF0dHJpYnV0aW9u
UGF0aFtdID0gIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3JlcG9ydC1h
dHRyaWJ1dGlvbi8iOwogY29uc3Qgc2l6ZV90IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSA9IDI7CiBjb25zdCBzaXplX3QgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSA9IDI7CkBAIC0xMzIsNiAr
MTMzLDIwIEBAIFVSTCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwo
KSBjb25zdAogICAgIHJldHVybiBVUkwoKTsKIH0KIAorVVJMIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Ojp0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKKyAgICBidWlsZGVy
LmFwcGVuZChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbChwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5
UGF0aCk7CisKKyAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OworICAg
IGlmICh1cmwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdXJsOworCisgICAgcmV0dXJuIFVS
TCgpOworfQorCiBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9r
ZW5TaWduYXR1cmVKU09OKCkgY29uc3QKIHsKICAgICBhdXRvIHJlcG9ydERldGFpbHMgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuaAppbmRleCA2OWU2NTM1MmQ0NWIwNTczYjljNDMzYmI0ZDY0Y2FiMGRl
ZGZlMDAyLi5jOGQ5OTRmODE0NjM4OTdhYzUxYjJjYTBmNDhmMTA4Mjg1YzIyZThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtMjc3
LDYgKzI3Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhwZWN0ZWQ8
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChj
b25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZWNv
bmRzPiBhdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0hpZ2hlclByaW9yaXR5VGhhbihj
b25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCB0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxKU09OOjpP
YmplY3Q+IHRva2VuU2lnbmF0dXJlSlNPTigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVS
TCBhdHRyaWJ1dGlvblJlcG9ydFVSTCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAwYzYxMzkzZjkzMWZkM2MzZTkzZTEw
NDAxNTQzY2U5MTVhNWM0YzUzLi42ODMwMTVkMTY5YThjMjk5MjMzMGZmNDYwODU0Y2M2YzMxNjI4
MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMjYwOCw2ICsyNjA4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1hcmtBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhQCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwmJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7CisKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCYmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCA0ZmIxNzAyNmU5YTk1ZmNlZGY3M2QxMjc5NWVhYTI4YTlkZDAxY2MzLi5lYTJkZDdmNTM4
YzA3NDY0Yjg2NGEwMWM1ZTM4Y2NlZGJhZWE4YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBhNTcxZjJiYzY1N2EzOTZmYWZlNTEzMDVjN2JlYTQ1NTkwZGY5YzVlLi44NDEx
YmJlOWQ1ZWE2ZmJlM2ViYzRlZDBmYTU0OWU4ZjRhNzhjYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTE2Nyw2ICsxNjcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+ICgpIEFzeW5jCiAgICAg
TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTaW11bGF0ZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCisgICAgU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBB
c3luYwogICAgIFNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKICAg
ICBTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCiAgICAgTWFy
a1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4NGIwNTY4YmZlZDEwMTk5NTNjZDM0NDAwYWI3
MjdhMjZiNzhiYzBhLi45MzQ2YmQyY2ExNGU5ZDZiNDFhMDYyNWZkMmZhNzY3MjFkZWE1NjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApA
QCAtMzM4LDYgKzMzOCwxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQwogICAgIHByaXZhdGVD
bGlja01lYXN1cmVtZW50KCkubWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcoVVJMJiYgdXJsKQoreworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkuc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7Cit9CisKIHZv
aWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nKFVSTCYmIHVybCkKIHsKICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpLnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhXVEZNb3ZlKHVybCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDg0MzgxN2Zh
NzY5OWRhMThjOTIwMDJkMDQyMWU2MDUxZTQ3OWI1ODUuLmZmMjFmMjhmM2I3ZGFmZjRiZjRlOGFh
NGM3NDRhMjg5ZmVmMGRmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92
ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9p
ZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGlu
ZyhVUkwmJik7CiAgICAgdm9pZCBtYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IGIwM2U5NzAy
MjZlMTQ3ODVlOWVmZDQ2MzBlMGIyYTEwNTNhNjBhODYuLjZmZTlkMTFmMWZmMTIzZDMzMzBlM2Vj
YjVjMzBjYTEyOWNkZDA1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTc0
LDggKzc0LDEwIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVu
YXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAKICAgICBjbGVhckV4cGlyZWQo
KTsKIAotICAgIGlmIChhdHRyaWJ1dGlvbi5lcGhlbWVyYWxTb3VyY2VOb25jZSgpKQotICAgICAg
ICBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oYXR0cmlidXRpb24pOworICAgIGlmIChhdHRyaWJ1
dGlvbi5lcGhlbWVyYWxTb3VyY2VOb25jZSgpKSB7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25D
b3B5ID0gYXR0cmlidXRpb247CisgICAgICAgIGdldFRva2VuUHVibGljS2V5KFdURk1vdmUoYXR0
cmlidXRpb25Db3B5KSk7CisgICAgfQogCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBTdG9yaW5nIGFuIGFkIGNsaWNrLiJfcyk7CiAKQEAgLTg1LDE1ICs4NywxNyBAQCB2b2lkIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJgogI2VuZGlmCiB9CiAKLXN0YXRpYyBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFVSTCYmIHVy
bCwgUmVmPEpTT046Ok9iamVjdD4ganNvblBheWxvYWQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCitzdGF0aWMgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhVUkwm
JiB1cmwsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBq
c29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFU
eXBlQ2FycmllZCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CiAgICAg
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBXVEZNb3ZlKHVybCkgfTsKLSAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCho
dHRwTWV0aG9kKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q2FjaGVDb250cm9sLCBXZWJDb3JlOjpIVFRQSGVhZGVyVmFsdWVzOjptYXhBZ2UwKCkpOwot
ICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKFdlYkNvcmU6OkhUVFBIZWFkZXJWYWx1ZXM6
OmFwcGxpY2F0aW9uSlNPTkNvbnRlbnRUeXBlKCkpOwotICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
V2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZShqc29uUGF5bG9hZC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOworICAgIGlmIChqc29uUGF5bG9hZCkgeworICAgICAgICByZXF1ZXN0LnNl
dEhUVFBDb250ZW50VHlwZShXZWJDb3JlOjpIVFRQSGVhZGVyVmFsdWVzOjphcHBsaWNhdGlvbkpT
T05Db250ZW50VHlwZSgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShXZWJDb3JlOjpG
b3JtRGF0YTo6Y3JlYXRlKGpzb25QYXlsb2FkLT50b0pTT05TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgfQogCiAgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5jcmVk
ZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQ7CkBAIC0xMTIsNiArMTE2
LDUxIEBAIHN0YXRpYyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFVSTCYmCiAgICAgcmV0dXJuIGxvYWRQYXJhbWV0ZXJz
OwogfQogCitzdGF0aWMgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0ZvclBvc3QoVVJMJiYgdXJsLCBSZWY8SlNPTjo6T2Jq
ZWN0PiYmIGpzb25QYXlsb2FkLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQgZGF0YVR5cGVDYXJyaWVkKQoreworICAgIHJldHVybiBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzKFdURk1vdmUodXJsKSwgIlBPU1QiX3MsIFdURk1vdmUoanNvblBheWxv
YWQpLCBkYXRhVHlwZUNhcnJpZWQpOworfQorCitzdGF0aWMgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0ZvckdldChVUkwm
JiB1cmwsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNh
cnJpZWQpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMoV1RGTW92ZSh1cmwpLCAiR0VUIl9zLCBudWxscHRyLCBkYXRhVHlwZUNhcnJpZWQpOworfQor
Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXko
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbikKK3sKKyAgICBpZiAoIWZlYXR1
cmVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdG9rZW5QdWJsaWNLZXlV
UkwgPSBhdHRyaWJ1dGlvbi50b2tlblB1YmxpY0tleVVSTCgpOworICAgIGF1dG8gcGNtRGF0YUNh
cnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFs
bHlJZGVudGlmaWFibGU7CisgICAgaWYgKG1fdG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKSB7
CisgICAgICAgIHRva2VuUHVibGljS2V5VVJMID0gKm1fdG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nOworICAgICAgICBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9CisKKyAgICBp
ZiAodG9rZW5QdWJsaWNLZXlVUkwuaXNFbXB0eSgpIHx8ICF0b2tlblB1YmxpY0tleVVSTC5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMgPSBnZW5l
cmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9yR2V0KFdURk1vdmUodG9rZW5QdWJs
aWNLZXlVUkwpLCBwY21EYXRhQ2FycmllZCk7CisKKyAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gcHVi
bGljIGtleSByZXF1ZXN0LiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQWJv
dXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcyk7CisK
KyAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgYXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9u
KSwgdGhpc10gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKHdl
YWtUaGlzLT5tX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KSwgIicgZm9yIHVubGlua2FibGUgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IFJlY2VpdmUg
YW5kIGV4dHJhIHRoZSBzZXJ2ZXIgcHVibGljIGtleSwgcmRhcjovLzczNTgyMDMyLgorICAgICAg
ICBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oYXR0cmlidXRpb24pOworICAgIH0pOworCit9CisK
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxl
VG9rZW4oY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uKQogewogICAg
IGlmICghZmVhdHVyZUVuYWJsZWQoKSkKQEAgLTEyNyw3ICsxNzYsNyBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKGNvbnN0IFBy
aXZhdGVDbGljawogICAgIGlmICh0b2tlblNpZ25hdHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2Vu
U2lnbmF0dXJlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2Fk
UGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoV1RGTW92
ZSh0b2tlblNpZ25hdHVyZVVSTCksIGF0dHJpYnV0aW9uLnRva2VuU2lnbmF0dXJlSlNPTigpLCBw
Y21EYXRhQ2FycmllZCk7CisgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwp
LCBhdHRyaWJ1dGlvbi50b2tlblNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQpOwogCiAg
ICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkFib3V0IHRvIGZp
cmUgYSB1bmxpbmthYmxlIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iKTsKICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJj
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHNpZ25p
bmcgcmVxdWVzdC4iX3MpOwpAQCAtMjA3LDcgKzI1Niw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgUHJpdmF0ZUNsaWNr
TWVhCiAgICAgaWYgKGF0dHJpYnV0aW9uVVJMLmlzRW1wdHkoKSB8fCAhYXR0cmlidXRpb25VUkwu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0g
Z2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhXVEZNb3ZlKGF0dHJpYnV0aW9u
VVJMKSwgYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCksIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZSk7Cisg
ICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnNGb3JQb3N0KFdURk1vdmUoYXR0cmlidXRpb25VUkwpLCBhdHRyaWJ1dGlvbi5hdHRyaWJ1
dGlvblJlcG9ydEpTT04oKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVk
OjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlKTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGFuIGF0dHJpYnV0aW9uIHJlcXVl
c3QuIik7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9z
ZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdl
TGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGFu
IGF0dHJpYnV0aW9uIHJlcXVlc3QuIl9zKTsKQEAgLTMzNiw2ICszODUsMTMgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCJcbk5vIHN0b3JlZCBQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50IGRhdGEuXG4iX3MpOwogfQogCit2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6c2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTCYmIHRl
c3RVUkwpCit7CisgICAgaWYgKHRlc3RVUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgbV90b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcgPSBXVEZNb3ZlKHRlc3RVUkwpOworfQor
CiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0VG9rZW5TaWduYXR1cmVV
UkxGb3JUZXN0aW5nKFVSTCYmIHRlc3RVUkwpCiB7CiAgICAgaWYgKHRlc3RVUkwuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKaW5kZXggYzVkZTg2N2M4M2U0ZmIyNDZjNGEwZTNj
MDFmYTVkMTY5NzVjOWRhYS4uZTllNGNiZmZlOTBmMDRmNjhkNjE1NzBlOGRlNmE5OTA5YjYzNDIy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29u
c3Q7CiAgICAgdm9pZCBzZXRQaW5nTG9hZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYm
KT4mJiBwaW5nTG9hZEZ1bmN0aW9uKSB7IG1fcGluZ0xvYWRGdW5jdGlvbiA9IFdURk1vdmUocGlu
Z0xvYWRGdW5jdGlvbik7IH0KICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJv
b2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldFRva2Vu
UHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBzZXRUb2tlblNpZ25hdHVy
ZVVSTEZvclRlc3RpbmcoVVJMJiYpOwogICAgIHZvaWQgc2V0QXR0cmlidXRpb25SZXBvcnRVUkxG
b3JUZXN0aW5nKFVSTCYmKTsKICAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRBc0V4cGlyZWRG
b3JUZXN0aW5nKCk7CkBAIC02OCw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0VGlt
ZXIoU2Vjb25kcyk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBnZXRUb2tlblB1YmxpY0tleShQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVUb2tl
bihjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwogICAgIHZvaWQgY2xlYXJTZW50QXR0
cmlidXRpb24oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBhdHRyaWJ1dGUo
Y29uc3QgU291cmNlU2l0ZSYsIGNvbnN0IEF0dHJpYnV0ZU9uU2l0ZSYsIEF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEmJik7CkBAIC03OSw2ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpU
aW1lciBtX2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyOwogICAgIGJvb2wgbV9p
c1J1bm5pbmdUZXN0IHsgZmFsc2UgfTsKKyAgICBPcHRpb25hbDxVUkw+IG1fdG9rZW5QdWJsaWNL
ZXlVUkxGb3JUZXN0aW5nOwogICAgIE9wdGlvbmFsPFVSTD4gbV90b2tlblNpZ25hdHVyZVVSTEZv
clRlc3Rpbmc7CiAgICAgT3B0aW9uYWw8VVJMPiBtX2F0dHJpYnV0aW9uUmVwb3J0QmFzZVVSTEZv
clRlc3Rpbmc7CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGM3OGIzNGNlYjI3
NmU5NzViMTQ5NDIwNzQ0MGVlZDJkYjQxMjhiOWYuLjEzYWU3ZDllMmYxZWIzNmNiMWU0Y2M0ZmIy
ODMwMGY0MGRhM2M0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cApAQCAtMjk0NSw2ICsyOTQ1LDEzIEBAIHZvaWQgV0tQYWdlU2ltdWxhdGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVNpCiAgICAgfSk7
CiB9CiAKK3ZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQoreworICAgIHRvSW1wbChwYWdlKS0+
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2td
ICgpIHsKKyAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KTsKKyAgICB9KTsKK30KKwog
dm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7CiAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwoVVJMKCks
IHRvV1RGU3RyaW5nKFVSTFJlZikpLCBbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10gKCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCmluZGV4IDI4
YTgyZjY3YjllYjZmYWQ5NDNmMzcxMzY5YTIwNjQxMDczMTIxM2IuLjA3ODk4ZDQ4NDU2NGRiZjA3
ZjRkYzVhMTFlY2E3MGNkZDI4OWExOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VQcml2YXRlLmgKQEAgLTE3OSw2ICsxNzksOCBAQCB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VNYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmdGdQogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJr
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmdGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0RnVuY3Rpb24p
KHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTaW11bGF0ZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdl
U2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnRGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nRnVuY3Rpb24p
KHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFn
ZSwgV0tVUkxSZWYgdXJsU3RyaW5nLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFj
a0NvbnRleHQpOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250
ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9r
ZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmxTdHJp
bmcsIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCk7CiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0
VVJMRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDlhYzY5YTgzNDk3ZGYxODk2NDgz
ZDhiZjgzNzhmODY0MWE5NTEyMi4uMDkxOGQ4MjE4ZTUyZTUwYzUyNThiYTUyOGZlODZiMGRlNTc1
MTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDAy
NCw2ICsxMDAyNCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2ltdWxhdGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoQ29tcGxldGlvbkhhbmRsZQogICAgIHdlYnNpdGVEYXRh
U3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdlYnNpdGVEYXRhU3Rv
cmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JU
ZXN0aW5nKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIHVybCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vi
c2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25h
dHVyZVVSTEZvclRlc3RpbmcobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdXJsKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBlNDc1ODBmYmE4NWQwMGQ0YzZkNjVjMDNkZTQzN2E0MjJhMDI5YmNhLi5h
MGNlYmQ5ZmI0NWU3NmY1MTk1NDUzY2I0OTVjYTNjZTAzODRhNzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTY5MSw2ICsxNjkxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhi
b29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzaW11bGF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXNzaW9uUmVzdGFydChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rp
bmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGluZyhjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAxYWIwYjEyNTM4NmEyNGRlNWQ1MGM4ZGY4MzYyZDc2YjM3MmQ0Y2QzLi5lZjQwNzIwZGI3Yzg4
M2ZkYjk3MzMzMDM2ZjdmZDE1MzkwZmVlZmNlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDItMTggIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFJlcXVlc3Qgc2Vy
dmVyIHB1YmxpYyBrZXlzIHRvIGdlbmVyYXRlIHNlY3JldCB0b2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMTQxCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDQ2Mjk1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3Rp
bmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorICAgICAgICBQYXBlcndvcmsgdG8gYWRkIGEgd2F5IHRvIHNldCB0ZXN0IFVSTC4K
KwogMjAyMS0wMi0xOCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Igbm9uIGFwcC1ib3VuZCByZXF1ZXN0cwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZmI4ZmM0NjI1NTU2YmIwZjUxMzJmYWI2ZGYxZjY1Y2Y0
MDlmZjIwNS4uNDBmMjMzNzBjMDM1NTYwYmRiZDRjNjJlMTRjYTdmMTMxYTExZGYwNCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC00MDMsNiArNDAzLDcgQEAgaW50ZXJmYWNlIFRlc3RS
dW5uZXIgewogICAgIHVuZGVmaW5lZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBtYXJrQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB1
bmRlZmluZWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoKTsK
KyAgICB1bmRlZmluZWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5kZWZpbmVkIHNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKERPTVN0cmluZyB1cmwpOwog
ICAgIHVuZGVmaW5lZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0
VVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgbWFya1ByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGMwMTdm
YzBmNGIzYzJlN2RmM2YxODk4OWIwN2E2ODJmMGMyYWM2NDguLjlhN2NjNDhkMjMwODgwMWYyNGQ2
M2RiZWUxMDFhZTA2ZGZkNDc0MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjAyNSw2ICsyMDI1LDEyIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3Rh
cnQoKQogICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJTaW11bGF0ZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCIpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKEpTU3RyaW5n
UmVmIHVybFN0cmluZykKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgiU2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmciLAorICAgICAg
ICBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRvV1RGU3RyaW5nKHVybFN0cmlu
ZykudXRmOCgpLmRhdGEoKSkpKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZiB1cmxT
dHJpbmcpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIlNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nIiwKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMmQzODA1
YzA2ZmRhOGYyNDk5ODgxNWMxMTlmYjBmZWRhYzM3ZDA2ZC4uM2MzNzU2NGJlNWJhMTRkM2QxMThm
NTFhMGFiOTY0NzUxZjhhYTljMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTUxMiw2ICs1MTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAgICAgdm9pZCBjbGVhclBy
aXZhdGVDbGlja01lYXN1cmVtZW50c1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKICAgICB2
b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9v
bCB2YWx1ZSk7CisgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGlj
S2V5VVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAg
dm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVz
dGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCA1MTZiZDljNmQ0OTg2ZWRmN2E5NTYwZTQyMjc5Y2IzYTVlMDg2ZjMwLi44
NWI0ZTlhMGZlOWY1MjU0NTA1NDM2MzZjNDdiZmMxODZlM2E3Njg3IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzYzMCw2ICszNjMwLDEzIEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0
YXJ0KCkKICAgICBydW5VbnRpbChjYWxsYmFja0NvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKIH0K
IAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1
YmxpY0tleVVSTEZvclRlc3RpbmcoV0tVUkxSZWYgdXJsKQoreworICAgIFByaXZhdGVDbGlja01l
YXN1cmVtZW50Vm9pZENhbGxiYWNrQ29udGV4dCBjYWxsYmFja0NvbnRleHQoKnRoaXMpOworICAg
IFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgdXJsLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZv
aWRDYWxsYmFjaywgJmNhbGxiYWNrQ29udGV4dCk7CisgICAgcnVuVW50aWwoY2FsbGJhY2tDb250
ZXh0LmRvbmUsIG5vVGltZW91dCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdLVVJMUmVmIHVy
bCkKIHsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxsYmFja0NvbnRleHQgY2Fs
bGJhY2tDb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCA5MWVmOWQ1OWY3MGJiMzIzZTUzNDdjZjdlMzVmZjQ1OTQxZTczYmMwLi5lYmNiYWM1
YjE5OWJhNTg0NDhjNTMwN2IxMWQ0NTY5OTY4YzRmYzY0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNDYsNiArMzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZh
bHVlKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNF
eHBpcmVkRm9yVGVzdGluZygpOwogICAgIHZvaWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2Vzc2lvblJlc3RhcnQoKTsKKyAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdLVVJMUmVmKTsKICAgICB2b2lkIHNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFdLVVJMUmVmKTsK
ICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxG
b3JUZXN0aW5nKFdLVVJMUmVmKTsKICAgICB2b2lkIG1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCmluZGV4IDBmMDkyMjczODNlNWVmMjJkMmNiNDg0M2E4ZmE0MzQ2MDI2YjQxMGEu
Ljc3YjU1NDRhYWU4ZTg1N2UyYWNkMjVhMDJkNDg3Y2I1NWIyYmE5NDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMzM5LDYgKzEzMzksMTIgQEAgV0tS
ZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tVUkxHZXRUeXBlSUQoKSk7
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhzdGF0aWNfY2FzdDxXS1VSTFJlZj4o
bWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyIpKSB7CiAgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tVUkxHZXRUeXBlSUQoKSk7CiAgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhzdGF0aWNfY2FzdDxXS1VSTFJlZj4obWVzc2Fn
ZUJvZHkpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwOWU3ZDE2MDA4ZTZmMzYxYzBkNjQ2MWU0ZTRkNDM2MWE5OWE3ZDJj
Li5hYWQ1YmZiNjIzNTEwMjZlM2JlMTVkMDMyYWVmYjI0ODZmMGIwYjUwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjEtMDItMTggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBQQ006IFJlcXVlc3Qgc2VydmVyIHB1YmxpYyBrZXlzIHRvIGdlbmVyYXRlIHNl
Y3JldCB0b2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIyMTQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDQ2Mjk1NT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2dldFRva2VuU2lnbmluZ0RhdGEucGhwOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25U
b2tlbi5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9y
ZXNvdXJjZXMvdXRpbC5qczoKKyAgICAgICAgKHRlYXJEb3duQW5kRmluaXNoKToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2st
bWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFz
dXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS5odG1sOgorCiAyMDIxLTAyLTE4ICBBbWlyIE1hcmsg
SnIgIDxhbWlyX21hcmtAYXBwbGUuY29tPgogCiAgICAgICAgIFtCaWdTdXJdIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy90aWJldGFuL2NzczMt
Y291bnRlci1zdHlsZXMtMTU2Lmh0bWwgaXMgY29uc2lzdGVudGx5IGZhaWxpbmcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3Vy
Y2VzL2dldFRva2VuU2lnbmluZ0RhdGEucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5waHAKaW5k
ZXggMjljZWVmMjUwOTE2YTg4NWNlN2UzYWE1ZWM1YWYzNzc0YzVjMWU0Ni4uZDE0YjY2YWI5Yzlm
ZTg0ODE1MGMyNWQyMThkNmEzMzVjY2IyMTJhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5n
RGF0YS5waHAKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5waHAKQEAgLTQ0LDYgKzQ0LDcgQEAg
aWYgKGlzc2V0KCRfR0VUWydlbmRUZXN0J10pKSB7CiAgICAgZWNobyAiPHNjcmlwdD4iOwogICAg
IGVjaG8gImlmICh3aW5kb3cudGVzdFJ1bm5lcikgeyI7CiAgICAgZWNobyAiICAgIHRlc3RSdW5u
ZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhmYWxz
ZSk7IjsKKyAgICBlY2hvICIgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZygnJyk7IjsKICAgICBlY2hvICIgICAgdGVzdFJ1
bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGlu
ZygnJyk7IjsKICAgICBlY2hvICIgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IjsKICAgICBl
Y2hvICJ9IjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9zaWduVG9rZW4ucGhwCmluZGV4
IDUxNGVhYjJkZDZiMzUzZGJiOGEwODIzZWI0MmRjNGI1ZWE1ZTBiNTkuLjkyN2JjMDM2NWMwZjJj
NWMzZTU3Mjk4NTQwZjg4MWRjYmI4ZTA0YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHAKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJj
ZXMvc2lnblRva2VuLnBocApAQCAtMSw5ICsxLDE0IEBACiA8P3BocAogcmVxdWlyZV9vbmNlICJ0
b2tlblNpZ25pbmdGaWxlUGF0aC5waHAiOwogCi0kdG9rZW5TaWduaW5nRmlsZSA9IGZvcGVuKCR0
b2tlblNpZ25pbmdGaWxlUGF0aCAuICIudG1wIiwgJ3cnKTsKKyR0b2tlblNpZ25pbmdGaWxlID0g
Zm9wZW4oJHRva2VuU2lnbmluZ0ZpbGVQYXRoIC4gIi50bXAiLCAnYScpOwogJGh0dHBIZWFkZXJz
ID0gJF9TRVJWRVI7CiAkY29va2llc0ZvdW5kID0gZmFsc2U7CiskaXNTZWNvbmRSZXF1ZXN0ID0g
ZmFsc2U7CisKK2lmICgkdmFsdWUgPSAkaHR0cEhlYWRlcnNbIlJFUVVFU1RfTUVUSE9EIl0pIHsK
KyAgICBmd3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJSRVFVRVNUX01FVEhPRDogJHZhbHVlXG4i
KTsKK30KIAogaWYgKCR2YWx1ZSA9ICRodHRwSGVhZGVyc1siSFRUUF9IT1NUIl0pIHsKICAgICBm
d3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJIVFRQX0hPU1Q6ICR2YWx1ZVxuIik7CkBAIC0yNiw2
ICszMSwxMCBAQCBpZiAoJHZhbHVlID0gJGh0dHBIZWFkZXJzWyJSRVFVRVNUX1VSSSJdKSB7CiAg
ICAgZWxzZQogICAgICAgICAkb3V0cHV0VVJMID0gc3Vic3RyKCR2YWx1ZSwgMCwgJHBvc2l0aW9u
T2ZEdW1teSk7CiAgICAgZndyaXRlKCR0b2tlblNpZ25pbmdGaWxlLCAiUkVRVUVTVF9VUkk6ICRv
dXRwdXRVUkxcbiIpOworCisgICAgJHBvc2l0aW9uT2ZEdW1teSA9IHN0cnBvcygkdmFsdWUsICIm
c2Vjb25kPSIpOworICAgIGlmICgkcG9zaXRpb25PZkR1bW15ICE9IGZhbHNlKQorICAgICAgICAk
aXNTZWNvbmRSZXF1ZXN0ID0gdHJ1ZTsKIH0KIAogaWYgKCEkY29va2llc0ZvdW5kKSB7CkBAIC0z
Niw3ICs0NSw4IEBAICRyZXF1ZXN0Qm9keSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1
dCIpOwogZndyaXRlKCR0b2tlblNpZ25pbmdGaWxlLCAiUmVxdWVzdCBib2R5OlxuJHJlcXVlc3RC
b2R5XG4iKTsKIAogZmNsb3NlKCR0b2tlblNpZ25pbmdGaWxlKTsKLXJlbmFtZSgkdG9rZW5TaWdu
aW5nRmlsZVBhdGggLiAiLnRtcCIsICR0b2tlblNpZ25pbmdGaWxlUGF0aCk7CitpZiAoJGlzU2Vj
b25kUmVxdWVzdCkKKyAgICByZW5hbWUoJHRva2VuU2lnbmluZ0ZpbGVQYXRoIC4gIi50bXAiLCAk
dG9rZW5TaWduaW5nRmlsZVBhdGgpOwogCiBoZWFkZXIoIkhUVFAvMS4xIDIwMSBDcmVhdGVkIik7
CiBzZXRjb29raWUoImNvb2tpZVNldEluVG9rZW5TaWduaW5nUmVzcG9uc2UiLCAiMSIsIDAsICIv
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3Jlc291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCA4YmI2NmI0ZDJjODU5MDcw
YjNhNGViNzk1NjRmYmJiMGRmNGQ4ZjhkLi4xMTI0MjFiYjJhMzQxYjQxZjUyYjhmOGYxNzk2YzFm
ZjY4ZDZhMjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3V0aWwuanMKQEAgLTEzLDYgKzEz
LDcgQEAgZnVuY3Rpb24gdGVhckRvd25BbmRGaW5pc2goKSB7CiAgICAgICAgIHRlc3RSdW5uZXIu
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhmYWxzZSk7
CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blJlcG9ydFVSTEZvclRlc3RpbmcoIiIpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVD
bGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKCIiKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZygiIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0
ZWQudHh0CmluZGV4IDUyZGIyNDQ5MzM2MDljN2VkZTMyNmRhZmYzN2VmMGIwMzExZDIzYjMuLmUy
NWFjY2RkZDEyZjFjYjllYmYzNWE2ZTA5YmYzNWQ3YTE2M2E0NzcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1j
bGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRl
LWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4cGVjdGVkLnR4dApAQCAtNiw2
ICs2LDEzIEBAIFRlc3RzIHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgc291cmNlIG5vbmNlIHRyaWdn
ZXJzIGEgdG9rZW4gc2lnbmluZyByZXF1ZXN0LgogRnJhbWU6ICc8IS0tZnJhbWUxLS0+JwogLS0t
LS0tLS0KIFRva2VuIHNpZ25pbmcgcmVxdWVzdCByZWNlaXZlZC4KK1JFUVVFU1RfTUVUSE9EOiBH
RVQKK0hUVFBfSE9TVDogMTI3LjAuMC4xOjgwMDAKK1JFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHAKK05vIGNvb2tpZXMgaW4gdG9rZW4g
c2lnbmluZyByZXF1ZXN0LgorUmVxdWVzdCBib2R5OgorCitSRVFVRVNUX01FVEhPRDogUE9TVAog
SFRUUF9IT1NUOiAxMjcuMC4wLjE6ODAwMAogQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29u
CiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9zaWduVG9r
ZW4ucGhwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9u
Y2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
c3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS5odG1sCmlu
ZGV4IGFjNzA2NTY0MTM0ODY0MGE0Yzg0OWE5NzkwOGJkMzdmNmRkZGVkOTAuLjI1ZDZlYjM4NDZj
OGM1ZjYxYzk5MWIwOTMwOWJjMjM0YmU0Njk1YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFz
dXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVu
dC13aXRoLXNvdXJjZS1ub25jZS5odG1sCkBAIC01MCw3ICs1MCw4IEBACiAgICAgICAgICAgICAg
ICAgY29uc3QgY3VycmVudFRpbWVNaWxsaXMgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAg
ICAgICAgICAgICAgIGNvbnN0IGhpZ2hFbnRyb3B5Qml0cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0g
KE1hdGguZmxvb3IoY3VycmVudFRpbWVNaWxsaXMgLyAxMDAwMDAwKSAqIDEwMDAwMDApOwogICAg
ICAgICAgICAgICAgIGNvbnN0IGR1bW15ID0gaGlnaEVudHJvcHlCaXRzICsgIiIgKyBNYXRoLmZs
b29yKE1hdGgucmFuZG9tKCkgKiAxMDApOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRv
a2VuLnBocD9kdW1teT0iICsgZHVtbXkpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRv
a2VuLnBocD9kdW1teT0iICsgZHVtbXkpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRv
a2VuLnBocD9kdW1teT0iICsgZHVtbXkgKyAiJnNlY29uZD10cnVlIik7CiAgICAgICAgICAgICAg
ICAgdGFyZ2V0TGluay5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5v
bmNlLmh0bWw/ZHVtbXk9IiArIGR1bW15OwogICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVu
dCgidGFyZ2V0TGluayIpOwogICAgICAgICAgICAgfSBlbHNlIHsK
</data>
<flag name="review"
          id="439566"
          type_id="1"
          status="+"
          setter="wilander"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420930</attachid>
            <date>2021-02-19 00:03:13 -0800</date>
            <delta_ts>2021-02-19 01:10:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222141-20210219000312.patch</filename>
            <type>text/plain</type>
            <size>39285</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiOTJiNjVlMWQ2ZjE3
YTQ4NjFjYjBhYWJkZDc5YmQ2MGE5YjZlYy4uNjBlYjQ3MzA0Y2I3ZDQyNmFmZThhMGUyYTNjNmZm
OWY0MzQ1MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAyLTE4ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBSZXF1ZXN0IHNl
cnZlciBwdWJsaWMga2V5IHRvIGdlbmVyYXRlIHNlY3JldCB0b2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMTQxCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDQ2Mjk1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHdheSBmb3IgUENNIGZyYXVkIHByZXZlbnRpb24g
dG8gcmVxdWVzdCB0aGUgc2VydmVyIHB1YmxpYyBrZXkKKyAgICAgICAgd2hpY2ggd2lsbCBiZSB0
aGVuIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHVubGlua2FibGUgdG9rZW4uCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6dG9rZW5QdWJsaWNLZXlVUkwgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5oOgorICAgICAgICBBZGRzIG5ldyB3ZWxsLWtub3duIFVMUiBmb3IgdGhp
cyBwdXJwb3NlLgorCiAyMDIxLTAyLTE4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVl
c3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDQxMzQwNmNjNWM2Nzk0MDk5ZDUwM2U3MTRmYjAzMDMxZTY4ZDFjZDYu
LjQxYTNmYmZkNDA3ZjczY2U0NGJhZjE1YWZkNzg0OTE2NzE5ZTQ2ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDEgQEAKKzIwMjEtMDItMTggIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBQQ006IFJlcXVlc3Qgc2VydmVyIHB1YmxpYyBrZXkgdG8gZ2VuZXJhdGUg
c2VjcmV0IHRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjIxNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NDYyOTU1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEpvaG4gV2lsYW5kZXIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgUGFw
ZXJ3b3JrIHRvIGFkZCBhIHdheSB0byBzZXQgdGVzdCBVUkwuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5hdHRyaWJ1dGVkKToK
KyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNG
b3JQb3N0KToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyc0ZvckdldCk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXkpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oOgorICAgICAgICBUZWFjaGVzIHRo
ZSBQQ01NIHRvIHNlbmQgdGhlIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2ltdWxhdGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIFBh
cGVyd29yayB0byBhZGQgYSB3YXkgdG8gc2V0IHRlc3QgVVJMLgorCiAyMDIxLTAyLTE4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCBlOTQyYzMxOGRmMjI3N2NmNjVh
MGI4ZTQwMzI2NTRiMzk1MDZiNDI3Li44YTk3M2YwMzQ1NDQ1NDc1NGQwMTk1NGFmM2ZhZjhiOGZh
ZGI1OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRyaWdnZXJBdHRyaWJ1dGlvblBh
dGhbXSA9ICIvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0
dHJpYnV0aW9uLyI7CiBzdGF0aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
a2VuU2lnbmF0dXJlUGF0aFtdID0gIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVt
ZW50L3NpZ24tdW5saW5rYWJsZS10b2tlbi8iOworc3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGhbXSA9ICIvLndlbGwta25vd24vcHJpdmF0
ZS1jbGljay1tZWFzdXJlbWVudC9nZXQtdW5saW5rYWJsZS10b2tlbi1wdWJsaWMta2V5LyI7CiBz
dGF0aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFJlcG9ydEF0dHJpYnV0aW9u
UGF0aFtdID0gIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3JlcG9ydC1h
dHRyaWJ1dGlvbi8iOwogY29uc3Qgc2l6ZV90IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSA9IDI7CiBjb25zdCBzaXplX3QgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSA9IDI7CkBAIC0xMzIsNiAr
MTMzLDIwIEBAIFVSTCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwo
KSBjb25zdAogICAgIHJldHVybiBVUkwoKTsKIH0KIAorVVJMIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Ojp0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKKyAgICBidWlsZGVy
LmFwcGVuZChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbChwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5
UGF0aCk7CisKKyAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OworICAg
IGlmICh1cmwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdXJsOworCisgICAgcmV0dXJuIFVS
TCgpOworfQorCiBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9r
ZW5TaWduYXR1cmVKU09OKCkgY29uc3QKIHsKICAgICBhdXRvIHJlcG9ydERldGFpbHMgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuaAppbmRleCA2OWU2NTM1MmQ0NWIwNTczYjljNDMzYmI0ZDY0Y2FiMGRl
ZGZlMDAyLi5jOGQ5OTRmODE0NjM4OTdhYzUxYjJjYTBmNDhmMTA4Mjg1YzIyZThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtMjc3
LDYgKzI3Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhwZWN0ZWQ8
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChj
b25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZWNv
bmRzPiBhdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0hpZ2hlclByaW9yaXR5VGhhbihj
b25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCB0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxKU09OOjpP
YmplY3Q+IHRva2VuU2lnbmF0dXJlSlNPTigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVS
TCBhdHRyaWJ1dGlvblJlcG9ydFVSTCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAwYzYxMzkzZjkzMWZkM2MzZTkzZTEw
NDAxNTQzY2U5MTVhNWM0YzUzLi42ODMwMTVkMTY5YThjMjk5MjMzMGZmNDYwODU0Y2M2YzMxNjI4
MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMjYwOCw2ICsyNjA4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1hcmtBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhQCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwmJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7CisKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCYmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCA0ZmIxNzAyNmU5YTk1ZmNlZGY3M2QxMjc5NWVhYTI4YTlkZDAxY2MzLi5lYTJkZDdmNTM4
YzA3NDY0Yjg2NGEwMWM1ZTM4Y2NlZGJhZWE4YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBp
cmVkRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBhNTcxZjJiYzY1N2EzOTZmYWZlNTEzMDVjN2JlYTQ1NTkwZGY5YzVlLi44NDEx
YmJlOWQ1ZWE2ZmJlM2ViYzRlZDBmYTU0OWU4ZjRhNzhjYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTE2Nyw2ICsxNjcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+ICgpIEFzeW5jCiAgICAg
TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTaW11bGF0ZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCisgICAgU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBB
c3luYwogICAgIFNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKICAg
ICBTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCiAgICAgTWFy
a1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4NGIwNTY4YmZlZDEwMTk5NTNjZDM0NDAwYWI3
MjdhMjZiNzhiYzBhLi45MzQ2YmQyY2ExNGU5ZDZiNDFhMDYyNWZkMmZhNzY3MjFkZWE1NjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApA
QCAtMzM4LDYgKzMzOCwxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjptYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQwogICAgIHByaXZhdGVD
bGlja01lYXN1cmVtZW50KCkubWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNB
c0V4cGlyZWRGb3JUZXN0aW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcoVVJMJiYgdXJsKQoreworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkuc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7Cit9CisKIHZv
aWQgTmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nKFVSTCYmIHVybCkKIHsKICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpLnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhXVEZNb3ZlKHVybCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDg0MzgxN2Zh
NzY5OWRhMThjOTIwMDJkMDQyMWU2MDUxZTQ3OWI1ODUuLmZmMjFmMjhmM2I3ZGFmZjRiZjRlOGFh
NGM3NDRhMjg5ZmVmMGRmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92
ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgbWFya0F0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJik7CiAgICAgdm9p
ZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGlu
ZyhVUkwmJik7CiAgICAgdm9pZCBtYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IGIwM2U5NzAy
MjZlMTQ3ODVlOWVmZDQ2MzBlMGIyYTEwNTNhNjBhODYuLjcyOWJiYjc2ODg5Y2E2YjJiNzQ2YTU1
MjcxMTcxN2MyODY2MWZlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTc0
LDggKzc0LDEwIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVu
YXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAKICAgICBjbGVhckV4cGlyZWQo
KTsKIAotICAgIGlmIChhdHRyaWJ1dGlvbi5lcGhlbWVyYWxTb3VyY2VOb25jZSgpKQotICAgICAg
ICBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oYXR0cmlidXRpb24pOworICAgIGlmIChhdHRyaWJ1
dGlvbi5lcGhlbWVyYWxTb3VyY2VOb25jZSgpKSB7CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25D
b3B5ID0gYXR0cmlidXRpb247CisgICAgICAgIGdldFRva2VuUHVibGljS2V5KFdURk1vdmUoYXR0
cmlidXRpb25Db3B5KSk7CisgICAgfQogCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBTdG9yaW5nIGFuIGFkIGNsaWNrLiJfcyk7CiAKQEAgLTg1LDE1ICs4NywxNyBAQCB2b2lkIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQmJgogI2VuZGlmCiB9CiAKLXN0YXRpYyBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKFVSTCYmIHVy
bCwgUmVmPEpTT046Ok9iamVjdD4ganNvblBheWxvYWQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpQY21EYXRhQ2FycmllZCBkYXRhVHlwZUNhcnJpZWQpCitzdGF0aWMgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhVUkwm
JiB1cmwsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBq
c29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFU
eXBlQ2FycmllZCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CiAgICAg
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBXVEZNb3ZlKHVybCkgfTsKLSAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCho
dHRwTWV0aG9kKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q2FjaGVDb250cm9sLCBXZWJDb3JlOjpIVFRQSGVhZGVyVmFsdWVzOjptYXhBZ2UwKCkpOwot
ICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKFdlYkNvcmU6OkhUVFBIZWFkZXJWYWx1ZXM6
OmFwcGxpY2F0aW9uSlNPTkNvbnRlbnRUeXBlKCkpOwotICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
V2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZShqc29uUGF5bG9hZC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOworICAgIGlmIChqc29uUGF5bG9hZCkgeworICAgICAgICByZXF1ZXN0LnNl
dEhUVFBDb250ZW50VHlwZShXZWJDb3JlOjpIVFRQSGVhZGVyVmFsdWVzOjphcHBsaWNhdGlvbkpT
T05Db250ZW50VHlwZSgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShXZWJDb3JlOjpG
b3JtRGF0YTo6Y3JlYXRlKGpzb25QYXlsb2FkLT50b0pTT05TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgfQogCiAgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5jcmVk
ZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQ7CkBAIC0xMTIsMTEgKzEx
Niw1OCBAQCBzdGF0aWMgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhVUkwmJgogICAgIHJldHVybiBsb2FkUGFyYW1ldGVy
czsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVu
bGlua2FibGVUb2tlbihjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmlidXRpb24p
CitzdGF0aWMgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgZ2VuZXJhdGVOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0dHBQb3N0KFVSTCYmIHVybCwgUmVmPEpTT046Ok9iamVj
dD4mJiBqc29uUGF5bG9hZCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVk
IGRhdGFUeXBlQ2FycmllZCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyhXVEZNb3ZlKHVybCksICJQT1NUIl9zLCBXVEZNb3ZlKGpzb25QYXlsb2Fk
KSwgZGF0YVR5cGVDYXJyaWVkKTsKK30KKworc3RhdGljIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0KFVS
TCYmIHVybCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIGRhdGFUeXBl
Q2FycmllZCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyhXVEZNb3ZlKHVybCksICJHRVQiX3MsIG51bGxwdHIsIGRhdGFUeXBlQ2FycmllZCk7Cit9
CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tl
eShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uKQoreworICAgIGlmICghZmVh
dHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBpcyBndWFyYW50
ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBt
YWtlcyBpdCBsaWtlbHkgdG8gYmUgcGVyc29uYWxseSBpZGVudGlmaWFibGUuCisgICAgYXV0byB0
b2tlblB1YmxpY0tleVVSTCA9IGF0dHJpYnV0aW9uLnRva2VuUHVibGljS2V5VVJMKCk7CisgICAg
YXV0byBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fy
cmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICBpZiAobV90b2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcpIHsKKyAgICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqbV90b2tlblB1Ymxp
Y0tleVVSTEZvclRlc3Rpbmc7CisgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlOwor
ICAgIH0KKworICAgIGlmICh0b2tlblB1YmxpY0tleVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuUHVi
bGljS2V5VVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2FkUGFy
YW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JIdHRwR2V0
KFdURk1vdmUodG9rZW5QdWJsaWNLZXlVUkwpLCBwY21EYXRhQ2FycmllZCk7CisKKyAgICBSRUxF
QVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBhIHVu
bGlua2FibGUgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiIpOworICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gcHVibGljIGtl
eSByZXF1ZXN0LiJfcyk7CisKKyAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFy
YW1ldGVycyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgYXR0cmlidXRpb24gPSBX
VEZNb3ZlKGF0dHJpYnV0aW9uKSwgdGhpc10gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uod2Vha1RoaXMtPm1fc2Vzc2lvbklELCBNZXNzYWdlU291
cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0
cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCAiJyBmb3IgdW5saW5rYWJsZSB0b2tlbiBwdWJs
aWMga2V5IHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBGSVhNRTogUmVjZWl2ZSBhbmQgZXh0cmEgdGhlIHNlcnZlciBwdWJsaWMga2V5
LCByZGFyOi8vNzM1ODIwMzIuCisgICAgICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbihXVEZN
b3ZlKGF0dHJpYnV0aW9uKSk7CisgICAgfSk7CisKK30KKwordm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmIGF0dHJpYnV0aW9uKQogewogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGlu
IHRpbWUgdG8gdGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8g
YmUgcGVyc29uYWxseSBpZGVudGlmaWFibGUuCiAgICAgYXV0byB0b2tlblNpZ25hdHVyZVVSTCA9
IGF0dHJpYnV0aW9uLnRva2VuU2lnbmF0dXJlVVJMKCk7CiAgICAgYXV0byBwY21EYXRhQ2Fycmll
ZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlk
ZW50aWZpYWJsZTsKICAgICBpZiAobV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpIHsKQEAg
LTEyNyw3ICsxNzgsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0
U2lnbmVkVW5saW5rYWJsZVRva2VuKGNvbnN0IFByaXZhdGVDbGljawogICAgIGlmICh0b2tlblNp
Z25hdHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJlVVJMLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVSTCksIGF0dHJp
YnV0aW9uLnRva2VuU2lnbmF0dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCk7CisgICAgYXV0byBs
b2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnNGb3JI
dHRwUG9zdChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0cmlidXRpb24udG9rZW5TaWdu
YXR1cmVKU09OKCksIHBjbURhdGFDYXJyaWVkKTsKIAogICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBz
aWduaW5nIHJlcXVlc3QuIik7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91
dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKTsKQEAgLTIw
Nyw3ICsyNTgsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNv
bnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZhdGVDbGlja01lYQogICAgIGlmIChhdHRyaWJ1dGlv
blVSTC5pc0VtcHR5KCkgfHwgIWF0dHJpYnV0aW9uVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IGdlbmVyYXRlTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMoV1RGTW92ZShhdHRyaWJ1dGlvblVSTCksIGF0dHJpYnV0aW9uLmF0dHJp
YnV0aW9uUmVwb3J0SlNPTigpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGUpOworICAgIGF1dG8gbG9hZFBhcmFtZXRlcnMg
PSBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cFBvc3QoV1RGTW92
ZShhdHRyaWJ1dGlvblVSTCksIGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNPTigpLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVu
dGlmaWFibGUpOwogCiAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIkFib3V0IHRvIGZpcmUgYW4gYXR0cmlidXRpb24gcmVxdWVzdC4iKTsKICAgICBtX25ldHdv
cmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNv
dXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYW4gYXR0cmlidXRpb24gcmVxdWVz
dC4iX3MpOwpAQCAtMzM2LDYgKzM4NywxMyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6dG9TdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQg
ZGF0YS5cbiJfcyk7CiB9CiAKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpz
ZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYgdGVzdFVSTCkKK3sKKyAgICBpZiAo
dGVzdFVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Rva2VuUHVibGljS2V5
VVJMRm9yVGVzdGluZyA9IFdURk1vdmUodGVzdFVSTCk7Cit9CisKIHZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMJiYg
dGVzdFVSTCkKIHsKICAgICBpZiAodGVzdFVSTC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuaAppbmRleCBjNWRlODY3YzgzZTRmYjI0NmM0YTBlM2MwMWZhNWQxNjk3NWM5ZGFhLi41
NzNmMzNjZTJjMzU2MzhjNjBkZWVhN2U0ZjlhNzk2OTFjZjBjODQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdG9TdHJpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdDsKICAgICB2b2lkIHNldFBp
bmdMb2FkRnVuY3Rpb24oRnVuY3Rpb248dm9pZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik+JiYpPiYmIHBpbmdMb2FkRnVuY3Rp
b24pIHsgbV9waW5nTG9hZEZ1bmN0aW9uID0gV1RGTW92ZShwaW5nTG9hZEZ1bmN0aW9uKTsgfQog
ICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVu
bmluZ1Rlc3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nKFVSTCYmKTsKICAgICB2b2lkIHNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwm
Jik7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRlc3RpbmcoVVJMJiYpOwog
ICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKQEAgLTY4
LDcgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVUb2tlbihjb25zdCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYpOworICAgIHZvaWQgZ2V0VG9rZW5QdWJsaWNLZXkoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJik7CisgICAgdm9pZCBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGF0dHJpYnV0ZShjb25zdCBTb3VyY2VT
aXRlJiwgY29uc3QgQXR0cmlidXRlT25TaXRlJiwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKTsK
ICAgICB2b2lkIGZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYpOwpAQCAtNzksNiArODEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIg
bV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lcjsKICAgICBib29sIG1faXNSdW5u
aW5nVGVzdCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8VVJMPiBtX3Rva2VuUHVibGljS2V5VVJM
Rm9yVGVzdGluZzsKICAgICBPcHRpb25hbDxVUkw+IG1fdG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0
aW5nOwogICAgIE9wdGlvbmFsPFVSTD4gbV9hdHRyaWJ1dGlvblJlcG9ydEJhc2VVUkxGb3JUZXN0
aW5nOwogICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fbmV0d29ya1Nlc3Npb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBjNzhiMzRjZWIyNzZlOTc1
YjE0OTQyMDc0NDBlZWQyZGI0MTI4YjlmLi4xM2FlN2Q5ZTJmMWViMzZjYjFlNGNjNGZiMjgzMDBm
NDBkYTNjNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAg
LTI5NDUsNiArMjk0NSwxMyBAQCB2b2lkIFdLUGFnZVNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nlc3Npb25SZXN0YXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTaQogICAgIH0pOwogfQog
Cit2b2lkIFdLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxG
b3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2Fs
bGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKK3sKKyAgICB0b0ltcGwocGFnZSktPnNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKFVSTChVUkwo
KSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7
CisgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CisgICAgfSk7Cit9CisKIHZvaWQg
V0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rp
bmcoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIFVSTFJlZiwgV0tQYWdlU2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywg
dm9pZCogY2FsbGJhY2tDb250ZXh0KQogewogICAgIHRvSW1wbChwYWdlKS0+c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoVVJMKFVSTCgpLCB0b1dU
RlN0cmluZyhVUkxSZWYpKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAppbmRleCAyOGE4MmY2
N2I5ZWI2ZmFkOTQzZjM3MTM2OWEyMDY0MTA3MzEyMTNiLi4wNzg5OGQ0ODQ1NjRkYmYwN2Y0ZGM1
YTExZWNhNzBjZGQyODlhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlUHJpdmF0ZS5oCkBAIC0xNzksNiArMTc5LDggQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdl
TWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5n
RnUKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZU1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlTWFya0F0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VT
aW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydEZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2ltdWxhdGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVNpbXVs
YXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nlc3Npb25SZXN0YXJ0RnVuY3Rpb24gY2FsbGJhY2ss
IHZvaWQqIGNhbGxiYWNrQ29udGV4dCk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdL
VVJMUmVmIHVybFN0cmluZywgV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1
YmxpY0tleVVSTEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9r
ZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2ln
bmF0dXJlVVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsU3RyaW5nLCBX
S1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGlu
Z0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpOwogdHlwZWRlZiB2b2lk
ICgqV0tQYWdlU2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZv
clRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQ5YWM2OWE4MzQ5N2RmMTg5NjQ4M2Q4YmY4
Mzc4Zjg2NDFhOTUxMjIuLjA5MThkODIxOGU1MmU1MGM1MjU4YmE1MjhmZTg2YjBkZTU3NTE5YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAwMjQsNiAr
MTAwMjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nlc3Npb25SZXN0YXJ0KENvbXBsZXRpb25IYW5kbGUKICAgICB3ZWJzaXRlRGF0YVN0b3Jl
KCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydChtX3dl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blB1YmxpY0tleVVSTEZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCku
bmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGlu
ZyhtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCB1cmwpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdlYnNpdGVE
YXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVV
UkxGb3JUZXN0aW5nKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIHVybCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggZTQ3NTgwZmJhODVkMDBkNGM2ZDY1YzAzZGU0MzdhNDIyYTAyOWJjYS4uYTBjZWJk
OWZiNDVlNzZmNTE5NTQ1M2NiNDk1Y2EzY2UwMzg0YTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2OTEsNiArMTY5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2
YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2Vzc2lvblJlc3RhcnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIG1hcmtQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWFi
MGIxMjUzODZhMjRkZTVkNTBjOGRmODM2MmQ3NmIzNzJkNGNkMy4uZDg0NjY4Mzg2NDlkOTE1ODY1
ZTFjMTJiZjBlNmY5MDliN2YyZmRkYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTAyLTE4ICBKaWV3ZW4gVGFu
ICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBSZXF1ZXN0IHNlcnZlciBw
dWJsaWMga2V5IHRvIGdlbmVyYXRlIHNlY3JldCB0b2tlbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMTQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83NDQ2Mjk1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIFBhcGVyd29yayB0byBhZGQgYSB3YXkgdG8gc2V0IHRlc3QgVVJMLgorCiAyMDIx
LTAyLTE4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCBmYjhmYzQ2MjU1NTZiYjBmNTEzMmZhYjZkZjFmNjVjZjQwOWZmMjA1
Li40MGYyMzM3MGMwMzU1NjBiZGJkNGM2MmUxNGNhN2YxMzFhMTFkZjA0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTQwMyw2ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7
CiAgICAgdW5kZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIG1hcmtBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOwogICAgIHVuZGVmaW5l
ZCBzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCgpOworICAgIHVu
ZGVmaW5lZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVz
dGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5k
ZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxGb3JU
ZXN0aW5nKERPTVN0cmluZyB1cmwpOwogICAgIHVuZGVmaW5lZCBtYXJrUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYzAxN2ZjMGY0YjNj
MmU3ZGYzZjE4OTg5YjA3YTY4MmYwYzJhYzY0OC4uOWE3Y2M0OGQyMzA4ODAxZjI0ZDYzZGJlZTEw
MWFlMDZkZmQ0NzQzMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDI1LDYgKzIwMjUsMTIgQEAgdm9pZCBUZXN0
UnVubmVyOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNzaW9uUmVzdGFydCgpCiAg
ICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoIlNpbXVsYXRlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nlc3Npb25SZXN0YXJ0Iik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoSlNTdHJpbmdSZWYgdXJs
U3RyaW5nKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJTZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZyIsCisgICAgICAgIGFkb3B0
V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodG9XVEZTdHJpbmcodXJsU3RyaW5nKS51dGY4
KCkuZGF0YSgpKSkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmIHVybFN0cmluZykK
IHsKICAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgiU2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmciLApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyZDM4MDVjMDZmZGE4
ZjI0OTk4ODE1YzExOWZiMGZlZGFjMzdkMDZkLi4zYzM3NTY0YmU1YmExNGQzZDExOGY1MWEwYWI5
NjQ3NTFmOGFhOWMwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTEyLDYgKzUxMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQgc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVl
KTsKKyAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxG
b3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIHNl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxGb3JUZXN0aW5nKEpT
U3RyaW5nUmVmKTsKICAgICB2b2lkIG1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDUxNmJkOWM2ZDQ5ODZlZGY3YTk1NjBlNDIyNzljYjNhNWUwODZmMzAuLjg1YjRlOWEw
ZmU5ZjUyNTQ1MDU0MzYzNmM0N2JmYzE4NmUzYTc2ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjMwLDYgKzM2MzAsMTMgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJlc3RhcnQoKQog
ICAgIHJ1blVudGlsKGNhbGxiYWNrQ29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5
VVJMRm9yVGVzdGluZyhXS1VSTFJlZiB1cmwpCit7CisgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRWb2lkQ2FsbGJhY2tDb250ZXh0IGNhbGxiYWNrQ29udGV4dCgqdGhpcyk7CisgICAgV0tQYWdl
U2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcobV9t
YWluV2ViVmlldy0+cGFnZSgpLCB1cmwsIHByaXZhdGVDbGlja01lYXN1cmVtZW50Vm9pZENhbGxi
YWNrLCAmY2FsbGJhY2tDb250ZXh0KTsKKyAgICBydW5VbnRpbChjYWxsYmFja0NvbnRleHQuZG9u
ZSwgbm9UaW1lb3V0KTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tVUkxSZWYgdXJsKQogewog
ICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50Vm9pZENhbGxiYWNrQ29udGV4dCBjYWxsYmFja0Nv
bnRleHQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4
IDkxZWY5ZDU5ZjcwYmIzMjNlNTM0N2NmN2UzNWZmNDU5NDFlNzNiYzAuLmViY2JhYzViMTk5YmE1
ODQ0OGM1MzA3YjExZDQ1Njk5NjhjNGZjNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKQEAgLTM0Niw2ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpOwog
ICAgIHZvaWQgbWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKCk7CiAgICAgdm9pZCBzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXNz
aW9uUmVzdGFydCgpOworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1
YmxpY0tleVVSTEZvclRlc3RpbmcoV0tVUkxSZWYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tVUkxSZWYpOwogICAgIHZv
aWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRlc3Rp
bmcoV0tVUkxSZWYpOwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
aXJlZEZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggMGYwOTIyNzM4M2U1ZWYyMmQyY2I0ODQzYThmYTQzNDYwMjZiNDEwYS4uNzdiNTU0
NGFhZThlODU3ZTJhY2QyNWEwMmQ0ODdjYjU1YjJiYTk0OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEzMzksNiArMTMzOSwxMiBAQCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nIikpIHsKKyAgICAgICAgQVNT
RVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1VSTEdldFR5cGVJRCgpKTsKKyAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKHN0YXRpY19jYXN0PFdLVVJMUmVmPihtZXNzYWdl
Qm9keSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nIikpIHsKICAgICAgICAgQVNTRVJUKFdL
R2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1VSTEdldFR5cGVJRCgpKTsKICAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5T
aWduYXR1cmVVUkxGb3JUZXN0aW5nKHN0YXRpY19jYXN0PFdLVVJMUmVmPihtZXNzYWdlQm9keSkp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDA5ZTdkMTYwMDhlNmYzNjFjMGQ2NDYxZTRlNGQ0MzYxYTk5YTdkMmMuLmIxNWVh
MzY4NGI4NDI1OGFmMjA1MDkwOGU5ZDUyNzQzN2RjYzJkNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAyMS0wMi0xOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFBDTTogUmVxdWVzdCBzZXJ2ZXIgcHVibGljIGtleSB0byBnZW5lcmF0ZSBzZWNyZXQgdG9r
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjE0
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ0NjI5NTU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSm9obiBXaWxhbmRlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvcmVzb3VyY2VzL2dldFRva2VuU2lnbmluZ0RhdGEucGhwOgorICAgICAgICAqIGh0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHA6
CisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMv
dXRpbC5qczoKKyAgICAgICAgKHRlYXJEb3duQW5kRmluaXNoKToKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1l
bnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMv
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13
aXRoLXNvdXJjZS1ub25jZS5odG1sOgorICAgICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBh
Ym92ZSB0ZXN0cyB0byBiZSBhYmxlIHRvIHJlY29yZCB0d28gY29uc2VjdXRpdmUgc2VydmVyIHJl
cXVlc3RzLgorCiAyMDIxLTAyLTE4ICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29t
PgogCiAgICAgICAgIFtCaWdTdXJdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1jb3VudGVyLXN0eWxlcy90aWJldGFuL2NzczMtY291bnRlci1zdHlsZXMtMTU2Lmh0bWwg
aXMgY29uc2lzdGVudGx5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2dldFRva2VuU2lnbmluZ0RhdGEu
cGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNv
dXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5waHAKaW5kZXggMjljZWVmMjUwOTE2YTg4NWNlN2Uz
YWE1ZWM1YWYzNzc0YzVjMWU0Ni4uZDE0YjY2YWI5YzlmZTg0ODE1MGMyNWQyMThkNmEzMzVjY2Iy
MTJhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5TaWduaW5nRGF0YS5waHAKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZ2V0VG9rZW5T
aWduaW5nRGF0YS5waHAKQEAgLTQ0LDYgKzQ0LDcgQEAgaWYgKGlzc2V0KCRfR0VUWydlbmRUZXN0
J10pKSB7CiAgICAgZWNobyAiPHNjcmlwdD4iOwogICAgIGVjaG8gImlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeyI7CiAgICAgZWNobyAiICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyhmYWxzZSk7IjsKKyAgICBlY2hvICIgICAgdGVz
dFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVz
dGluZygnJyk7IjsKICAgICBlY2hvICIgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZygnJyk7IjsKICAgICBlY2hvICIgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IjsKICAgICBlY2hvICJ9IjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3Np
Z25Ub2tlbi5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L3Jlc291cmNlcy9zaWduVG9rZW4ucGhwCmluZGV4IDUxNGVhYjJkZDZiMzUzZGJiOGEwODIz
ZWI0MmRjNGI1ZWE1ZTBiNTkuLjU3NWUzMjkwNjc4MDkyMDhlZjRhM2E1MTUyYTNhYzkyMmQxZjE5
YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHAKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRva2VuLnBocApAQCAtMSw5
ICsxLDE2IEBACiA8P3BocAogcmVxdWlyZV9vbmNlICJ0b2tlblNpZ25pbmdGaWxlUGF0aC5waHAi
OwogCi0kdG9rZW5TaWduaW5nRmlsZSA9IGZvcGVuKCR0b2tlblNpZ25pbmdGaWxlUGF0aCAuICIu
dG1wIiwgJ3cnKTsKKyR0b2tlblNpZ25pbmdGaWxlID0gZm9wZW4oJHRva2VuU2lnbmluZ0ZpbGVQ
YXRoIC4gIi50bXAiLCAnYScpOwogJGh0dHBIZWFkZXJzID0gJF9TRVJWRVI7CiAkY29va2llc0Zv
dW5kID0gZmFsc2U7CisvLyBUaGlzIHBocCB3aWxsIHJlc3BvbmQgdG8gdHdvIGNvbnNlY3V0aXZl
IHNlcnZlciByZXF1ZXN0cy4KKy8vIEl0IHdpbGwgb25seSBjb21wbGV0ZSB0aGUgdHJhbnNhY3Rp
b24gd2hlbiB0aGUgc2Vjb25kIHJlcXVlc3QgZmluaXNoZXMuCiskaXNTZWNvbmRSZXF1ZXN0ID0g
ZmFsc2U7CisKK2lmICgkdmFsdWUgPSAkaHR0cEhlYWRlcnNbIlJFUVVFU1RfTUVUSE9EIl0pIHsK
KyAgICBmd3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJSRVFVRVNUX01FVEhPRDogJHZhbHVlXG4i
KTsKK30KIAogaWYgKCR2YWx1ZSA9ICRodHRwSGVhZGVyc1siSFRUUF9IT1NUIl0pIHsKICAgICBm
d3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJIVFRQX0hPU1Q6ICR2YWx1ZVxuIik7CkBAIC0yNiw2
ICszMywxMCBAQCBpZiAoJHZhbHVlID0gJGh0dHBIZWFkZXJzWyJSRVFVRVNUX1VSSSJdKSB7CiAg
ICAgZWxzZQogICAgICAgICAkb3V0cHV0VVJMID0gc3Vic3RyKCR2YWx1ZSwgMCwgJHBvc2l0aW9u
T2ZEdW1teSk7CiAgICAgZndyaXRlKCR0b2tlblNpZ25pbmdGaWxlLCAiUkVRVUVTVF9VUkk6ICRv
dXRwdXRVUkxcbiIpOworCisgICAgJHBvc2l0aW9uT2ZEdW1teSA9IHN0cnBvcygkdmFsdWUsICIm
c2Vjb25kPSIpOworICAgIGlmICgkcG9zaXRpb25PZkR1bW15ICE9IGZhbHNlKQorICAgICAgICAk
aXNTZWNvbmRSZXF1ZXN0ID0gdHJ1ZTsKIH0KIAogaWYgKCEkY29va2llc0ZvdW5kKSB7CkBAIC0z
Niw3ICs0Nyw5IEBAICRyZXF1ZXN0Qm9keSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1
dCIpOwogZndyaXRlKCR0b2tlblNpZ25pbmdGaWxlLCAiUmVxdWVzdCBib2R5OlxuJHJlcXVlc3RC
b2R5XG4iKTsKIAogZmNsb3NlKCR0b2tlblNpZ25pbmdGaWxlKTsKLXJlbmFtZSgkdG9rZW5TaWdu
aW5nRmlsZVBhdGggLiAiLnRtcCIsICR0b2tlblNpZ25pbmdGaWxlUGF0aCk7CisvLyBDb21wbGV0
ZSB0aGUgdHJhbnNhY3Rpb24uCitpZiAoJGlzU2Vjb25kUmVxdWVzdCkKKyAgICByZW5hbWUoJHRv
a2VuU2lnbmluZ0ZpbGVQYXRoIC4gIi50bXAiLCAkdG9rZW5TaWduaW5nRmlsZVBhdGgpOwogCiBo
ZWFkZXIoIkhUVFAvMS4xIDIwMSBDcmVhdGVkIik7CiBzZXRjb29raWUoImNvb2tpZVNldEluVG9r
ZW5TaWduaW5nUmVzcG9uc2UiLCAiMSIsIDAsICIvIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy91dGlsLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMv
dXRpbC5qcwppbmRleCA4YmI2NmI0ZDJjODU5MDcwYjNhNGViNzk1NjRmYmJiMGRmNGQ4ZjhkLi4x
MTI0MjFiYjJhMzQxYjQxZjUyYjhmOGYxNzk2YzFmZjY4ZDZhMjYyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy91dGls
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cmVzb3VyY2VzL3V0aWwuanMKQEAgLTEzLDYgKzEzLDcgQEAgZnVuY3Rpb24gdGVhckRvd25BbmRG
aW5pc2goKSB7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRP
dmVycmlkZVRpbWVyRm9yVGVzdGluZyhmYWxzZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRlc3RpbmcoIiIpOwog
ICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1
cmVVUkxGb3JUZXN0aW5nKCIiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZygiIik7CiAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFz
dXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3Vy
ZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0ZWQudHh0CmluZGV4IDUyZGIyNDQ5MzM2MDlj
N2VkZTMyNmRhZmYzN2VmMGIwMzExZDIzYjMuLmUyNWFjY2RkZDEyZjFjYjllYmYzNWE2ZTA5YmYz
NWQ3YTE2M2E0NzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJj
ZS1ub25jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291
cmNlLW5vbmNlLWV4cGVjdGVkLnR4dApAQCAtNiw2ICs2LDEzIEBAIFRlc3RzIHRoYXQgdGhlIHBy
ZXNlbmNlIG9mIGEgc291cmNlIG5vbmNlIHRyaWdnZXJzIGEgdG9rZW4gc2lnbmluZyByZXF1ZXN0
LgogRnJhbWU6ICc8IS0tZnJhbWUxLS0+JwogLS0tLS0tLS0KIFRva2VuIHNpZ25pbmcgcmVxdWVz
dCByZWNlaXZlZC4KK1JFUVVFU1RfTUVUSE9EOiBHRVQKK0hUVFBfSE9TVDogMTI3LjAuMC4xOjgw
MDAKK1JFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25U
b2tlbi5waHAKK05vIGNvb2tpZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0LgorUmVxdWVzdCBi
b2R5OgorCitSRVFVRVNUX01FVEhPRDogUE9TVAogSFRUUF9IT1NUOiAxMjcuMC4wLjE6ODAwMAog
Q29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L3Jlc291cmNlcy9zaWduVG9rZW4ucGhwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xp
Y2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJl
bWVudC13aXRoLXNvdXJjZS1ub25jZS5odG1sCmluZGV4IGFjNzA2NTY0MTM0ODY0MGE0Yzg0OWE5
NzkwOGJkMzdmNmRkZGVkOTAuLjI1ZDZlYjM4NDZjOGM1ZjYxYzk5MWIwOTMwOWJjMjM0YmU0Njk1
YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
c3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS5odG1sCkBA
IC01MCw3ICs1MCw4IEBACiAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFRpbWVNaWxsaXMg
PSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hFbnRy
b3B5Qml0cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0gKE1hdGguZmxvb3IoY3VycmVudFRpbWVNaWxs
aXMgLyAxMDAwMDAwKSAqIDEwMDAwMDApOwogICAgICAgICAgICAgICAgIGNvbnN0IGR1bW15ID0g
aGlnaEVudHJvcHlCaXRzICsgIiIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApOwot
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRva2VuLnBocD9kdW1teT0iICsgZHVtbXkpOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blB1YmxpY0tleVVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRva2VuLnBocD9kdW1teT0iICsgZHVtbXkpOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRva2VuLnBocD9kdW1teT0iICsgZHVtbXkgKyAi
JnNlY29uZD10cnVlIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0TGluay5ocmVmID0gImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRlLWNs
aWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLmh0bWw/ZHVtbXk9IiArIGR1bW15Owog
ICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOwogICAgICAgICAg
ICAgfSBlbHNlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>