<?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>238608</bug_id>
          
          <creation_ts>2022-03-31 07:54:07 -0700</creation_ts>
          <short_desc>IPC::Connection should support diverting all messages to a message queue in other thread</short_desc>
          <delta_ts>2022-04-26 05:41:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238627</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237674</blocked>
    
    <blocked>238516</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856802</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-31 07:54:07 -0700</bug_when>
    <thetext>IPC::Connection should support diverting all messages to a message queue in other thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856805</commentid>
    <comment_count>1</comment_count>
      <attachid>456237</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-31 08:06:46 -0700</bug_when>
    <thetext>Created attachment 456237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856899</commentid>
    <comment_count>2</comment_count>
      <attachid>456237</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-31 12:08:11 -0700</bug_when>
    <thetext>Comment on attachment 456237
Patch

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

&gt; Source/WebKit/Platform/IPC/MessageReceiveQueueMap.h:56
&gt;      using QueueMap = HashMap&lt;std::pair&lt;uint8_t, uint64_t&gt;, StoreType&gt;;
&gt; +    using AnyIDQueueMap = HashMap&lt;uint8_t, StoreType&gt;;

Why don&apos;t these use ReceiverName in place of uint8_t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856903</commentid>
    <comment_count>3</comment_count>
      <attachid>456265</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-31 12:10:20 -0700</bug_when>
    <thetext>Created attachment 456265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856908</commentid>
    <comment_count>4</comment_count>
      <attachid>456267</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-31 12:15:22 -0700</bug_when>
    <thetext>Created attachment 456267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856920</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-31 12:28:34 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 456237 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456237&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/MessageReceiveQueueMap.h:56
&gt; &gt;      using QueueMap = HashMap&lt;std::pair&lt;uint8_t, uint64_t&gt;, StoreType&gt;;
&gt; &gt; +    using AnyIDQueueMap = HashMap&lt;uint8_t, StoreType&gt;;
&gt; 
&gt; Why don&apos;t these use ReceiverName in place of uint8_t?


IIRC originally I kept using the code that was there originally.
I think it may have something to do with non-valid keys or hashing. I can take a look at that in a separate patch..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857244</commentid>
    <comment_count>6</comment_count>
      <attachid>456354</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-01 05:46:42 -0700</bug_when>
    <thetext>Created attachment 456354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857400</commentid>
    <comment_count>7</comment_count>
      <attachid>456354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 14:36:14 -0700</bug_when>
    <thetext>Comment on attachment 456354
Patch

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

&gt; Source/WebKit/Platform/IPC/Connection.cpp:374
&gt; +    ReceiverMatcher receiverMatcher = ReceiverMatcher::createForLegacyAPI(receiverName, destinationID);

How is this legacy?

&gt; Source/WebKit/Platform/IPC/Connection.cpp:389
&gt; +    ReceiverMatcher receiverMatcher = ReceiverMatcher::createForLegacyAPI(receiverName, destinationID);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857555</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-02 00:24:35 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 456354 [details]

&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:374
&gt; &gt; +    ReceiverMatcher receiverMatcher = ReceiverMatcher::createForLegacyAPI(receiverName, destinationID);
&gt; 
&gt; How is this legacy?
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:389
&gt; &gt; +    ReceiverMatcher receiverMatcher = ReceiverMatcher::createForLegacyAPI(receiverName, destinationID);
&gt; 
&gt; ditto.

Passing zero id to mean any id is legacy and new interfaces should use receiver matcher to explicitly say if the match should apply for zero only or any id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858954</commentid>
    <comment_count>9</comment_count>
      <attachid>456354</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-06 11:55:02 -0700</bug_when>
    <thetext>Comment on attachment 456354
Patch

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

&gt;&gt;&gt; Source/WebKit/Platform/IPC/Connection.cpp:374
&gt;&gt;&gt; +    ReceiverMatcher receiverMatcher = ReceiverMatcher::createForLegacyAPI(receiverName, destinationID);
&gt;&gt; 
&gt;&gt; How is this legacy?
&gt; 
&gt; Passing zero id to mean any id is legacy and new interfaces should use receiver matcher to explicitly say if the match should apply for zero only or any id.

Maybe instead of &quot;legacy API&quot;, which is opaque unless you know the history of this code, use something like createAllowingCatchAllDestination()

&gt; Source/WebKit/Platform/IPC/Connection.h:247
&gt; +    void removeWorkQueueMessageReceiver(ReceiverName, uint64_t destinationID = 0);

Why don&apos;t we use std::optional&lt;destinationID&gt; here to match ReceiverMatcher behavior, making the comment unnecessary.

&gt; Source/WebKit/Platform/IPC/Connection.h:253
&gt; +    void removeThreadMessageReceiver(ReceiverName, uint64_t destinationID = 0);

Ditto

&gt; Source/WebKit/Platform/IPC/MessageReceiveQueueMap.cpp:40
&gt; +    if (!matcher.destinationID) {

I find !has_value() more readable when dealing with optionals with bool or sometimes-zero values.

&gt; Source/WebKit/Platform/IPC/MessageReceiveQueueMap.h:56
&gt; +    using AnyIDQueueMap = HashMap&lt;uint8_t, StoreType&gt;;

Would be nice to add a comment to say that the key is a ReceiverName.

&gt; Source/WebKit/Platform/IPC/ReceiverMatcher.h:41
&gt; +    // Note: destinationID == 0 matches only 0 ids.

Is a 0 ID valid? It would be clearer to be able to ASSERT(destinationID) here.

&gt; Source/WebKit/Platform/IPC/ReceiverMatcher.h:62
&gt; +    std::optional&lt;ReceiverName&gt; receiverName;
&gt; +    std::optional&lt;uint64_t&gt; destinationID;

This struct is going to end up as 128 bytes (or larger?) so maybe you should pass it around by reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858974</commentid>
    <comment_count>10</comment_count>
      <attachid>456848</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-06 12:36:49 -0700</bug_when>
    <thetext>Created attachment 456848
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858984</commentid>
    <comment_count>11</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-06 12:47:46 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)
&gt; Maybe instead of &quot;legacy API&quot;, which is opaque unless you know the history
&gt; of this code, use something like createAllowingCatchAllDestination()

Right, but that is then &quot;legitimizing&quot; the pattern. This commit is because we got into a bit of a pickle with overloading the value 0. The intention is to communicate that future uses won&apos;t end up calling that, rather using the struct here directly.

I can of course rethink some other name.
 
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.h:247
&gt; &gt; +    void removeWorkQueueMessageReceiver(ReceiverName, uint64_t destinationID = 0);
&gt; 
&gt; Why don&apos;t we use std::optional&lt;destinationID&gt; here to match ReceiverMatcher
&gt; behavior, making the comment unnecessary.

Because we&apos;re in a pickle of not knowing what ALL the callers mean with destinationID == 0.  This would be a change of behavior. I don&apos;t want to do in this patch, I&apos;d need to spend time going through all the many callers. I&apos;ll spend the time, but not in this patch.
 

&gt; &gt; Source/WebKit/Platform/IPC/ReceiverMatcher.h:41
&gt; &gt; +    // Note: destinationID == 0 matches only 0 ids.
&gt; 
&gt; Is a 0 ID valid? It would be clearer to be able to ASSERT(destinationID)
&gt; here.

Yes, 0 is valid and used. Hence much of the patch.



I&apos;ll apply the changes tomorrow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859153</commentid>
    <comment_count>12</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-06 23:31:54 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)
&gt; &gt; Source/WebKit/Platform/IPC/ReceiverMatcher.h:62
&gt; &gt; +    std::optional&lt;ReceiverName&gt; receiverName;
&gt; &gt; +    std::optional&lt;uint64_t&gt; destinationID;
&gt; 
&gt; This struct is going to end up as 128 bytes (or larger?) so maybe you should
&gt; pass it around by reference.

Interesting surprise to me I didn&apos;t spend any thought on. It&apos;s 24 bytes as a struct!
https://godbolt.org/z/hKe4qq51v

unoptionalized same feature would be 16 bytes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859154</commentid>
    <comment_count>13</comment_count>
      <attachid>456894</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-06 23:33:16 -0700</bug_when>
    <thetext>Created attachment 456894
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859226</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-07 06:36:12 -0700</bug_when>
    <thetext>Committed r292533 (249371@main): &lt;https://commits.webkit.org/249371@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456894.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859227</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 06:37:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/91411567&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456237</attachid>
            <date>2022-03-31 08:06:46 -0700</date>
            <delta_ts>2022-03-31 12:10:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238608-20220331180638.patch</filename>
            <type>text/plain</type>
            <size>23778</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmMTY5YWExOTU0N2Y3ZTcy
NDU5YzE0ZGY2NDYwYzljYWFhN2YzYTUuLjU4MjdlMzgzYTVjMjgyNTcwYzI3M2I3ZDIwNDhjYzUy
N2IyZWUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjItMDMtMzEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJUEM6OkNvbm5lY3Rpb24g
c2hvdWxkIHN1cHBvcnQgZGl2ZXJ0aW5nIGFsbCBtZXNzYWdlcyB0byBhIG1lc3NhZ2UgcXVldWUg
aW4gb3RoZXIgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmV2aW91c2x5LCBpdCB3YXMgcG9zc2libGUgdG8gZGl2ZXJ0IGFsbCBtZXNzYWdl
cyB0byBjZXJ0YWluIFJlY2VpdmVyTmFtZSB0bworICAgICAgICBhIG1lc3NhZ2UgcXVldWUuIFRo
aXMgaXMgdXNlZCBpbiBJUEMgc3RyZWFtcyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFkZCBh
IHBvc3NpYmlsaXR5IHRvIGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHF1ZXVlLiBJ
bnN0ZWFkIG9mCisgICAgICAgIHBhc3NpbmcgUmVjZWl2ZXJOYW1lLCBpZCBwYWlyIHRvIENvbm5l
Y3Rpb24sIHBhc3MgbmV3IHN0cnVjdCBSZWNlaXZlck1hdGNoZXIuCisgICAgICAgIFVzZSBSZWNl
aXZlck1hdGNoZXIgaW5zdGVhZCBvZiBwYWlyIG9wdGlvbmFsPFJlY2VpdmVyTmFtZT4sIG9wdGlv
bmFsPGlkPiwgc2luY2UKKyAgICAgICAgbnVsbG9wdCwgaWQgaXMgbm90IGEgdmFsaWQgY2FzZS4K
KyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHBhdGNoIGZvciB0aGUgY2FzZSB3
aGVyZSBJUEM6OkNvbm5lY3Rpb24gaXMgY3JlYXRlZCBmb3IKKyAgICAgICAgdGhlIHNvbGUgcHVy
cG9zZSBvZiB1c2luZyBpdCB0b2dldGhlciB3aXRoIElQQyBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgVGhpcyBhbHNvIGNsYXJpZmllcyB0aGUgb3ZlcmxvYWRlZCB1c2Ugb2YgZGVzdGluYXRp
b25JRCAwIGFzIGEgd2lsZGNhcmQgYXMgd2VsbCBhcworICAgICAgICBhIHZhbGlkIG1lc3NhZ2Ug
ZGVzdGluYXRpb24uCisKKyAgICAgICAgQWxzbyBpbXBsZW1lbnQgdGhlIHBvc3NpYmlsaXR5IHRv
IGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gcGFydGljdWxhciBSZWNlaXZlck5hbWUsCisgICAgICAg
IGlkIDAuIFByZXZpb3VzbHkgdGhpcyB3YXMgc2lnbmlmeWluZyB0aGUgZGVzdGluYXRpb24gSUQg
d2lsZGNhcmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1hdGNoZXMgY29uc3QpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlUXVldWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6
YWRkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaC4K
KyAgICAgICAgKElQQzo6UmVjZWl2ZXJNYXRjaGVyOjpSZWNlaXZlck1hdGNoZXIpOgorICAgICAg
ICAoSVBDOjpSZWNlaXZlck1hdGNoZXI6OmNyZWF0ZUZvckxlZ2FjeUFQSSk6CisgICAgICAgIChJ
UEM6OlJlY2VpdmVyTWF0Y2hlcjo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1w
bCk6CisKIDIwMjItMDMtMzAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXaW5kb3cgaXMgdG9vIHNtYWxsIGFmdGVyIGVudGVyaW5nIGFuZCBleGl0aW5nIHZp
ZGVvL2VsZW1lbnQgZnVsbHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcAppbmRleCA3YjdlMDlkMGFkYjU0NGY0YmRjNTg3N2NmNTJmMWJmODk3Y2IyYTBlLi44
NTAxNzBmMWRhZDQwNTEwMDU2MzA2YzQ0NGZkYjdiNjlmZDk0MmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQoTWVzc2FnZU5hbWUsIHVpbnQ2
NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAogICAgIC8vIEFkZCBtYXRjaGlu
ZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlLgot
ICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNl
aXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZv
aWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVl
dWUmLCBSZWNlaXZlck1hdGNoZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZT47CkBAIC0xNDEsMTMg
KzE0MSwxMiBAQCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlJiBDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKQogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlOwog
fQogCi12b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01l
c3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2Vp
dmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKK3ZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVz
c2FnZXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2
ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewotICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8gZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRh
aW5lciA9IFsmXShEZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiYgY29ubmVjdGlv
bkFuZE1lc3NhZ2VzKSB7CiAgICAgICAgIERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3Nh
Z2U+IHJlc3Q7CiAgICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbkFuZE1lc3NhZ2UgOiBjb25u
ZWN0aW9uQW5kTWVzc2FnZXMpIHsKLSAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2Fn
ZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdl
Lm1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSByZWNlaXZlck5hbWUgJiYgKGNvbm5l
Y3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklE
IHx8ICFkZXN0aW5hdGlvbklEKSkKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2Fn
ZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdl
Lm1lc3NhZ2UtPm1hdGNoZXMocmVjZWl2ZXJNYXRjaGVyKSkKICAgICAgICAgICAgICAgICByZWNl
aXZlUXVldWUuZW5xdWV1ZU1lc3NhZ2UoY29ubmVjdGlvbiwgV1RGTW92ZShjb25uZWN0aW9uQW5k
TWVzc2FnZS5tZXNzYWdlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
dC5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZSkpOwpAQCAtMzQwLDE1ICszMzks
MTMgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWls
dXJlKGJvb2wgc2hvdWxkRXhpdE9uU3luY01lc3MKIAogLy8gRW5xdWV1ZSBhbnkgcGVuZGluZyBt
ZXNzYWdlIHRvIHRoZSBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHRoYXQgaXMgbWVhbnQgdG8gZ28gb24g
dGhhdCBxdWV1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIG9yZGVyaW5nIG9m
CiAvLyBJUEMgbWVzc2FnZXMgYXMgc29tZSBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIG9uIHRo
ZSBJUEMgdGhyZWFkIGJlZm9yZSB0aGUgbWVzc2FnZSByZWNlaXZlciByZWdpc3RlcmVkIGl0c2Vs
ZiBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01l
c3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVR
dWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
K3ZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZl
UXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIg
cmVjZWl2ZXJNYXRjaGVyKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotCi0gICAg
U3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoKnRo
aXMsIHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBTeW5j
TWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5lbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcygqdGhpcywg
cmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+PiByZW1haW5pbmdJbmNvbWluZ01lc3NhZ2VzOwogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1faW5jb21pbmdNZXNzYWdlcykgewotICAgICAgICBpZiAobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAgICAgICBpZiAo
bWVzc2FnZS0+bWF0Y2hlcyhyZWNlaXZlck1hdGNoZXIpKQogICAgICAgICAgICAgcmVjZWl2ZVF1
ZXVlLmVucXVldWVNZXNzYWdlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmVtYWluaW5nSW5jb21pbmdNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZSht
ZXNzYWdlKSk7CkBAIC0zNTYsMzMgKzM1Myw0NiBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVN
YXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldQog
ICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IFdURk1vdmUocmVtYWluaW5nSW5jb21pbmdNZXNzYWdl
cyk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdl
UmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZl
UXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIg
cmVjZWl2ZXJNYXRjaGVyKQogewogICAgIExvY2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsg
bV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9OwotICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9N
ZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKLSAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJl
Y2VpdmVRdWV1ZShyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7CisgICAgbV9yZWNlaXZl
UXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7Cit9CisKK3ZvaWQgQ29u
bmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck1hdGNoZXIgcmVjZWl2
ZXJNYXRjaGVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2Nr
IH07CisgICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZlck1hdGNoZXIpOwogfQogCiB2
b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKKyAgICBSZWNlaXZlck1h
dGNoZXIgcmVjZWl2ZXJNYXRjaGVyID0gUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lB
UEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKwogICAgIGF1dG8gcmVjZWl2ZVF1ZXVl
ID0gbWFrZVVuaXF1ZTxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJRdWV1ZT4od29ya1F1ZXVlLCBy
ZWNlaXZlcik7CiAgICAgTG9ja2VyIGluY29taW5nTWVzc2FnZXNMb2NrZXIgeyBtX2luY29taW5n
TWVzc2FnZXNMb2NrIH07Ci0gICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNl
aXZlUXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAg
ICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJl
Y2VpdmVRdWV1ZSgqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOworICAgIG1fcmVjZWl2
ZVF1ZXVlcy5hZGQoV1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZlck1hdGNoZXIpOworfQor
Cit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEko
cmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6YWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIFRocmVhZE1l
c3NhZ2VSZWNlaXZlciogcmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CisgICAg
UmVjZWl2ZXJNYXRjaGVyIHJlY2VpdmVyTWF0Y2hlciA9IFJlY2VpdmVyTWF0Y2hlcjo6Y3JlYXRl
Rm9yTGVnYWN5QVBJKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiAgICAgYXV0byByZWNl
aXZlUXVldWUgPSBtYWtlVW5pcXVlPFRocmVhZE1lc3NhZ2VSZWNlaXZlclF1ZXVlPigqcmVjZWl2
ZXIpOwogICAgIExvY2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01lc3Nh
Z2VzTG9jayB9OwotICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1
ZXVlKCpyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Ci0gICAgbV9y
ZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7CisgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZl
UXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJNYXRjaGVyKTsKKyAgICBtX3JlY2VpdmVRdWV1
ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJNYXRjaGVyKTsKIH0KIAotdm9p
ZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OnJlbW92
ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2Fn
ZXNMb2NrIH07Ci0gICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVy
OjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAK
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VS
ZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNv
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGIzMTVkOThl
ZWNlNTJjOWIyYTM4NWVlYjFjNzQ3YzY0MWUzMzMwYTMuLmExN2Y2YTAzMGY3ZmI2ZjFlYzVkZGIy
NzJhZjg4Zjc3NDIxYWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKQEAgLTIzNSwxOSArMjM1LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIEFkZHMgYSBtZXNzYWdl
IHJlY2VpdmUgcXVldWUuIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2Ug
aXMgcmVtb3ZlZCBiZWZvcmUgaXQgZ29lcwogICAgIC8vIG91dCBvZiBzY29wZS4KLSAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwotCi0gICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwor
ICAgIC8vIHN0ZDo6bnVsbG9wdCBSZWNlaXZlck1hdGNoU3BlYyBtYXRjaGVzIGFsbCByZWNlaXZl
cnMuCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUm
LCBSZWNlaXZlck1hdGNoZXIpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShS
ZWNlaXZlck1hdGNoZXIpOwogCiAgICAgLy8gQWRkcyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUg
dGhhdCBkaXNwYXRjaGVzIHRocm91Z2ggV29ya1F1ZXVlIHRvIFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlci4KICAgICAvLyBLZWVwcyB0aGUgV29ya1F1ZXVlIGFuZCB0aGUgV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyIGFsaXZlLiBEaXNwYXRjaGVkIHRhc2tzIGtlZXAgV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyIGFsaXZlLgorICAgIC8vIGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIGFsbCBpZHMu
CiAgICAgdm9pZCBhZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBXb3Jr
UXVldWUmLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXImLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCk7Ci0gICAgdm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApIHsgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOyB9CisgICAgdm9p
ZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEID0gMCk7CiAKICAgICAvLyBBZGRzIGEgbWVzc2FnZSByZWNlaWV2ZSBxdWV1
ZSB0aGF0IGRpc3BhdGNoZXMgdGhyb3VnaCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8g
S2VlcHMgdGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4gRGlzcGF0Y2hlZCB0YXNrcyBr
ZWVwIHRoZSBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgYWxpdmUuCisgICAgLy8gZGVzdGluYXRpb25J
RCA9PSAwIG1hdGNoZXMgYWxsIGlkcy4KICAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZl
cihSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQgPSAwKTsKLSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCkgeyByZW1vdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2
b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQgPSAwKTsKIAogICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwpAQCAtMzUxLDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3BQZW5kaW5nU3lu
Y1JlcXVlc3RJRChTeW5jUmVxdWVzdElEKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
d2FpdEZvclN5bmNSZXBseShTeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7CiAKLSAgICB2b2lkIGVucXVldWVNYXRjaGluZ01lc3Nh
Z2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpIFdURl9SRVFVSVJFU19MT0NLKG1faW5jb21pbmdN
ZXNzYWdlc0xvY2spOworICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VS
ZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTWF0Y2hlcikgV1RGX1JF
UVVJUkVTX0xPQ0sobV9pbmNvbWluZ01lc3NhZ2VzTG9jayk7CiAKICAgICAvLyBDYWxsZWQgb24g
dGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaAppbmRleCBkZjE1MjMzNGNlYjY2YzExNGI1ZTdiYjg4N2I1OWY0MWVlOGE5Yjg0Li45Y2Nj
NGYyZmMxZjllYTM2YWI3MjIwOWI2OTFkODc1NGY0MTg3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdHRhY2htZW50
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiUmVjZWl2ZXJNYXRjaGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAg
IFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2
ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9CiAgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQorICAgIGJvb2wgbWF0Y2hlcyhj
b25zdCBSZWNlaXZlck1hdGNoZXImIG1hdGNoZXIpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXIubWF0
Y2hlcyhtZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlc3RpbmF0aW9uSUQoKSk7IH0KIAogICAgIGJv
b2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1lc3NhZ2VJc1N5bmMobWVzc2FnZU5h
bWUoKSk7IH0KICAgICBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IHNob3Vs
ZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
CmluZGV4IGU2ZGRiMzc4NzRmODMzNTM0N2MxNjQ0ZjQwODEwNjAyMmUyMGQyMjEuLmI3M2Y4YzJi
OGIwYWI5NmRjMjc0N2U5M2NiMThjOGFkYjQ5YmU2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCkBAIC0yOSw0NCAr
MjksNjEgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cDo6YWRkSW1wbChTdG9yZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRk
SW1wbChTdG9yZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJNYXRjaGVyIG1hdGNoZXIpCiB7Ci0gICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5h
bWUpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBpZiAobV9xdWV1ZXMuY29udGFpbnMoa2V5KSkgewot
ICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0
Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgQUxXQVlTX0xP
R19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwg
LSBhZGRpbmcgZHVwbGljYXRlIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVj
ZWl2ZXJOYW1lKSA8PCAiIGZvciBkZXN0aW5hdGlvbiAiIDw8IGRlc3RpbmF0aW9uSUQpOworICAg
IGlmICghbWF0Y2hlci5yZWNlaXZlck5hbWUpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FueVJlY2Vp
dmVyUXVldWUpOworICAgICAgICBtX2FueVJlY2VpdmVyUXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlcy5hZGQoa2V5LCBXVEZNb3ZlKHF1
ZXVlKSk7CisgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pigq
bWF0Y2hlci5yZWNlaXZlck5hbWUpOworICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklEKSB7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5hZGQocmVjZWl2ZXJOYW1lLCBX
VEZNb3ZlKHF1ZXVlKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byByZXN1bHQgPSBtX3F1
ZXVlcy5hZGQoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlv
bklEKSwgV1RGTW92ZShxdWV1ZSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck1hdGNoZXIgbWF0Y2hlcikKIHsK
LSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2Vp
dmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwotICAgIGlmICghbV9xdWV1ZXMuY29udGFpbnMoa2V5
KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUg
d2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgQUxX
QVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJl
bW92ZSAtIGZhaWxlZCB0byByZW1vdmUgcmVjZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90
PihyZWNlaXZlck5hbWUpIDw8ICIgd2l0aCBkZXN0aW5hdGlvbiAiIDw8IGRlc3RpbmF0aW9uSUQp
OworICAgIGlmICghbWF0Y2hlci5yZWNlaXZlck5hbWUpIHsKKyAgICAgICAgQVNTRVJUKG1fYW55
UmVjZWl2ZXJRdWV1ZSk7CisgICAgICAgIG1fYW55UmVjZWl2ZXJRdWV1ZSA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PigqbWF0Y2hlci5yZWNlaXZlck5hbWUpOworICAgIGlmICghbWF0Y2hlci5k
ZXN0aW5hdGlvbklEKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5yZW1v
dmUocmVjZWl2ZXJOYW1lKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZXMucmVtb3ZlKGtleSk7CisgICAg
YXV0byByZXN1bHQgPSBtX3F1ZXVlcy5yZW1vdmUoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1l
LCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7CiB9CiAKIE1lc3NhZ2VSZWNlaXZlUXVldWUqIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6
OmdldChjb25zdCBEZWNvZGVyJiBtZXNzYWdlKSBjb25zdAogewotICAgIGlmIChtX3F1ZXVlcy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8ga2V5ID0gc3RkOjpt
YWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpLCAwKTsKLSAgICBhdXRvIGl0ID0gbV9xdWV1ZXMuZmluZChrZXkpOwotICAgIGlmIChpdCA9
PSBtX3F1ZXVlcy5lbmQoKSkgewotICAgICAgICBrZXkuc2Vjb25kID0gbWVzc2FnZS5kZXN0aW5h
dGlvbklEKCk7Ci0gICAgICAgIGlmIChrZXkuc2Vjb25kKQotICAgICAgICAgICAgaXQgPSBtX3F1
ZXVlcy5maW5kKGtleSk7CisgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgYXV0byBxdWV1ZUV4
dHJhY3RvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdldCgpOyB9
LAorICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4gcXVldWU7
IH0KKyAgICApOworCisgICAgeworICAgICAgICBhdXRvIGl0ID0gbV9hbnlJRFF1ZXVlcy5maW5k
KHJlY2VpdmVyTmFtZSk7CisgICAgICAgIGlmIChpdCAhPSBtX2FueUlEUXVldWVzLmVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0b3IsIGl0LT52YWx1ZSk7
CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1fcXVldWVzLmZpbmQoc3RkOjptYWtl
X3BhaXIocmVjZWl2ZXJOYW1lLCBtZXNzYWdlLmRlc3RpbmF0aW9uSUQoKSkpOworICAgICAgICBp
ZiAoaXQgIT0gbV9xdWV1ZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp2aXNpdChx
dWV1ZUV4dHJhY3RvciwgaXQtPnZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGl0ID09IG1fcXVldWVz
LmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjp2aXNpdCgK
LSAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdldCgp
OyB9LAotICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSogcXVldWUpIHsgcmV0dXJu
IHF1ZXVlOyB9Ci0gICAgICAgICksIGl0LT52YWx1ZSk7CisgICAgaWYgKG1fYW55UmVjZWl2ZXJR
dWV1ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0b3IsICptX2FueVJl
Y2VpdmVyUXVldWUpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgKaW5kZXggZTQ0
NDNhN2NkNmRkMWQwMTY5YjFhN2I4MzRjZTVjNzBlMmNlNzE3OS4uNjVjMDg4ZjEzYTllNTNkMGQ2
MzA2Mjc0ZWEzNjY0ZTJjZmQ0M2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApAQCAtNDQsMTcgKzQ0LDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0ZDo6bWFrZV9wYWlyKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2Fn
ZS5kZXN0aW5hdGlvbklEKCkpKTsKICAgICB9CiAKLSAgICAvLyBBZGRzIGEgd2lsZGNhcmQgZmls
dGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4KLSAgICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1
ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsgfQotICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1
ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBhZGQoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcXVl
dWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7IGFkZEltcGwoU3RvcmVUeXBlKCZxdWV1ZSks
IG1hdGNoZXIpOyB9CisgICAgdm9pZCBhZGQoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZl
UXVldWU+JiYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7IGFkZEltcGwoU3RvcmVU
eXBlKFdURk1vdmUocXVldWUpKSwgbWF0Y2hlcik7IH0KKyAgICB2b2lkIHJlbW92ZShSZWNlaXZl
ck1hdGNoZXIpOwogCiAgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZSogZ2V0KGNvbnN0IERlY29kZXIm
KSBjb25zdDsKIHByaXZhdGU6CiAgICAgdXNpbmcgU3RvcmVUeXBlID0gc3RkOjp2YXJpYW50PE1l
c3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4+
OwotICAgIHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBlJiYsIFJlY2VpdmVyTWF0
Y2hlcik7CiAgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1
aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgdXNpbmcgQW55SURRdWV1ZU1hcCA9IEhhc2hNYXA8
dWludDhfdCwgU3RvcmVUeXBlPjsKICAgICBRdWV1ZU1hcCBtX3F1ZXVlczsKKyAgICBBbnlJRFF1
ZXVlTWFwIG1fYW55SURRdWV1ZXM7CisgICAgc3RkOjpvcHRpb25hbDxTdG9yZVR5cGU+IG1fYW55
UmVjZWl2ZXJRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9SZWNlaXZlck1hdGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWRmMTJkZGM2MWQy
MWYxODJkZTVjNzRmMjZmYWIxMTQ3YTg2MWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmgKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSVBDIHsKKworc3RydWN0IFJlY2Vp
dmVyTWF0Y2hlciB7CisgICAgLy8gTWF0Y2hlcyBhbGwgbWVzc2FnZXMuCisgICAgUmVjZWl2ZXJN
YXRjaGVyKCkgPSBkZWZhdWx0OworCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdlIHRvIHNwZWNpZmlj
IHJlY2VpdmVyLCBhbnkgZGVzdGluYXRpb24gSUQuCisgICAgUmVjZWl2ZXJNYXRjaGVyKFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUpCisgICAgICAgIDogcmVjZWl2ZXJOYW1lKHJlY2VpdmVyTmFt
ZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdlIHRvIHNwZWNpZmljIHJl
Y2VpdmVyLCBzcGVjaWZpYyBkZXN0aW5hdGlvbiBJRC4KKyAgICAvLyBOb3RlOiBkZXN0aW5hdGlv
bklEID09IDAgbWF0Y2hlcyBvbmx5IDAgaWRzLgorICAgIFJlY2VpdmVyTWF0Y2hlcihSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgICAgICA6IHJl
Y2VpdmVyTmFtZShyZWNlaXZlck5hbWUpCisgICAgICAgICwgZGVzdGluYXRpb25JRChkZXN0aW5h
dGlvbklEKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBDcmVhdGVzIGEgbWF0Y2hlciBmcm9tIHBh
cmFtZXRlcnMgd2hlcmUgZGVzdGluYXRpb25JRCA9PSAwIG1lYW5zIGFueSBkZXN0aW50YXRpb24g
SUQuCisgICAgc3RhdGljIFJlY2VpdmVyTWF0Y2hlciBjcmVhdGVGb3JMZWdhY3lBUEkoUmVjZWl2
ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAg
ICAgIGlmIChkZXN0aW5hdGlvbklEKQorICAgICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTWF0Y2hl
ciB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9OworICAgICAgICByZXR1cm4gUmVjZWl2
ZXJNYXRjaGVyIHsgcmVjZWl2ZXJOYW1lIH07CisgICAgfQorCisgICAgYm9vbCBtYXRjaGVzKFJl
Y2VpdmVyTmFtZSBtYXRjaFJlY2VpdmVyTmFtZSwgdWludDY0X3QgbWF0Y2hEZXN0aW5hdGlvbklE
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFyZWNlaXZlck5hbWUgfHwgKCpyZWNlaXZl
ck5hbWUgPT0gbWF0Y2hSZWNlaXZlck5hbWUgJiYgKCFkZXN0aW5hdGlvbklEIHx8ICpkZXN0aW5h
dGlvbklEID09IG1hdGNoRGVzdGluYXRpb25JRCkpOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9u
YWw8UmVjZWl2ZXJOYW1lPiByZWNlaXZlck5hbWU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZGVzdGluYXRpb25JRDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggOTZhM2VhZjZhN2Q4ZjFm
ZDVkZThlYWJmOTA1MDEzZmU0OTFkYTFjNC4uMTk3YTU2YTM2YTY5MWUyYWQ4NDc2NDc3OWFjMWM2
N2RmOTQxMTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1l
IHJlY2VpdmUKIHsKICAgICAvLyBGSVhNRTogQ2FuIHdlIGF2b2lkIHN5bmNocm9ub3VzIGRpc3Bh
dGNoIGhlcmUgYnkgYWRqdXN0aW5nIHRoZSBhc3NlcnRpb24gaW4gYENvbm5lY3Rpb246OmVucXVl
dWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlYD8KICAgICBjYWxsT25NYWlu
UnVuTG9vcEFuZFdhaXQoWyZdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBt
X2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHsgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEIH0pOwogICAgIH0pOwogICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNv
bm5lY3Rpb24oKnRoaXMpOwogfQpAQCAtNTAsMjAgKzUwLDIwIEBAIHZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSBy
ZWNlaXZlCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01l
c3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQogewogICAgIGNhbGxPbk1haW5S
dW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNl
aXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRk
TWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUgfSk7CiAgICAgfSk7CiAg
ICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIHZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2
ZXJOYW1lIHJlY2VpdmVyTmFtZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUgfSk7CiAgICAgbV93b3JrUXVldWUucmVtb3Zl
U3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQgfSk7CiAgICAgbV93b3JrUXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhp
cyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456265</attachid>
            <date>2022-03-31 12:10:20 -0700</date>
            <delta_ts>2022-03-31 12:15:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238608-20220331221018.patch</filename>
            <type>text/plain</type>
            <size>27888</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmMTY5YWExOTU0N2Y3ZTcy
NDU5YzE0ZGY2NDYwYzljYWFhN2YzYTUuLjU4MjdlMzgzYTVjMjgyNTcwYzI3M2I3ZDIwNDhjYzUy
N2IyZWUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjItMDMtMzEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJUEM6OkNvbm5lY3Rpb24g
c2hvdWxkIHN1cHBvcnQgZGl2ZXJ0aW5nIGFsbCBtZXNzYWdlcyB0byBhIG1lc3NhZ2UgcXVldWUg
aW4gb3RoZXIgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmV2aW91c2x5LCBpdCB3YXMgcG9zc2libGUgdG8gZGl2ZXJ0IGFsbCBtZXNzYWdl
cyB0byBjZXJ0YWluIFJlY2VpdmVyTmFtZSB0bworICAgICAgICBhIG1lc3NhZ2UgcXVldWUuIFRo
aXMgaXMgdXNlZCBpbiBJUEMgc3RyZWFtcyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFkZCBh
IHBvc3NpYmlsaXR5IHRvIGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHF1ZXVlLiBJ
bnN0ZWFkIG9mCisgICAgICAgIHBhc3NpbmcgUmVjZWl2ZXJOYW1lLCBpZCBwYWlyIHRvIENvbm5l
Y3Rpb24sIHBhc3MgbmV3IHN0cnVjdCBSZWNlaXZlck1hdGNoZXIuCisgICAgICAgIFVzZSBSZWNl
aXZlck1hdGNoZXIgaW5zdGVhZCBvZiBwYWlyIG9wdGlvbmFsPFJlY2VpdmVyTmFtZT4sIG9wdGlv
bmFsPGlkPiwgc2luY2UKKyAgICAgICAgbnVsbG9wdCwgaWQgaXMgbm90IGEgdmFsaWQgY2FzZS4K
KyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHBhdGNoIGZvciB0aGUgY2FzZSB3
aGVyZSBJUEM6OkNvbm5lY3Rpb24gaXMgY3JlYXRlZCBmb3IKKyAgICAgICAgdGhlIHNvbGUgcHVy
cG9zZSBvZiB1c2luZyBpdCB0b2dldGhlciB3aXRoIElQQyBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgVGhpcyBhbHNvIGNsYXJpZmllcyB0aGUgb3ZlcmxvYWRlZCB1c2Ugb2YgZGVzdGluYXRp
b25JRCAwIGFzIGEgd2lsZGNhcmQgYXMgd2VsbCBhcworICAgICAgICBhIHZhbGlkIG1lc3NhZ2Ug
ZGVzdGluYXRpb24uCisKKyAgICAgICAgQWxzbyBpbXBsZW1lbnQgdGhlIHBvc3NpYmlsaXR5IHRv
IGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gcGFydGljdWxhciBSZWNlaXZlck5hbWUsCisgICAgICAg
IGlkIDAuIFByZXZpb3VzbHkgdGhpcyB3YXMgc2lnbmlmeWluZyB0aGUgZGVzdGluYXRpb24gSUQg
d2lsZGNhcmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1hdGNoZXMgY29uc3QpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlUXVldWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6
YWRkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaC4K
KyAgICAgICAgKElQQzo6UmVjZWl2ZXJNYXRjaGVyOjpSZWNlaXZlck1hdGNoZXIpOgorICAgICAg
ICAoSVBDOjpSZWNlaXZlck1hdGNoZXI6OmNyZWF0ZUZvckxlZ2FjeUFQSSk6CisgICAgICAgIChJ
UEM6OlJlY2VpdmVyTWF0Y2hlcjo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1w
bCk6CisKIDIwMjItMDMtMzAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXaW5kb3cgaXMgdG9vIHNtYWxsIGFmdGVyIGVudGVyaW5nIGFuZCBleGl0aW5nIHZp
ZGVvL2VsZW1lbnQgZnVsbHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcAppbmRleCA3YjdlMDlkMGFkYjU0NGY0YmRjNTg3N2NmNTJmMWJmODk3Y2IyYTBlLi44
NTAxNzBmMWRhZDQwNTEwMDU2MzA2YzQ0NGZkYjdiNjlmZDk0MmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQoTWVzc2FnZU5hbWUsIHVpbnQ2
NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAogICAgIC8vIEFkZCBtYXRjaGlu
ZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlLgot
ICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNl
aXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZv
aWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVl
dWUmLCBSZWNlaXZlck1hdGNoZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZT47CkBAIC0xNDEsMTMg
KzE0MSwxMiBAQCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlJiBDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKQogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlOwog
fQogCi12b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01l
c3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2Vp
dmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKK3ZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVz
c2FnZXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2
ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewotICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8gZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRh
aW5lciA9IFsmXShEZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiYgY29ubmVjdGlv
bkFuZE1lc3NhZ2VzKSB7CiAgICAgICAgIERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3Nh
Z2U+IHJlc3Q7CiAgICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbkFuZE1lc3NhZ2UgOiBjb25u
ZWN0aW9uQW5kTWVzc2FnZXMpIHsKLSAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2Fn
ZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdl
Lm1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSByZWNlaXZlck5hbWUgJiYgKGNvbm5l
Y3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklE
IHx8ICFkZXN0aW5hdGlvbklEKSkKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2Fn
ZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdl
Lm1lc3NhZ2UtPm1hdGNoZXMocmVjZWl2ZXJNYXRjaGVyKSkKICAgICAgICAgICAgICAgICByZWNl
aXZlUXVldWUuZW5xdWV1ZU1lc3NhZ2UoY29ubmVjdGlvbiwgV1RGTW92ZShjb25uZWN0aW9uQW5k
TWVzc2FnZS5tZXNzYWdlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
dC5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZSkpOwpAQCAtMzQwLDE1ICszMzks
MTMgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWls
dXJlKGJvb2wgc2hvdWxkRXhpdE9uU3luY01lc3MKIAogLy8gRW5xdWV1ZSBhbnkgcGVuZGluZyBt
ZXNzYWdlIHRvIHRoZSBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHRoYXQgaXMgbWVhbnQgdG8gZ28gb24g
dGhhdCBxdWV1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIG9yZGVyaW5nIG9m
CiAvLyBJUEMgbWVzc2FnZXMgYXMgc29tZSBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIG9uIHRo
ZSBJUEMgdGhyZWFkIGJlZm9yZSB0aGUgbWVzc2FnZSByZWNlaXZlciByZWdpc3RlcmVkIGl0c2Vs
ZiBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01l
c3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVR
dWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
K3ZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZl
UXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIg
cmVjZWl2ZXJNYXRjaGVyKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotCi0gICAg
U3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoKnRo
aXMsIHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBTeW5j
TWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5lbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcygqdGhpcywg
cmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+PiByZW1haW5pbmdJbmNvbWluZ01lc3NhZ2VzOwogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1faW5jb21pbmdNZXNzYWdlcykgewotICAgICAgICBpZiAobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAgICAgICBpZiAo
bWVzc2FnZS0+bWF0Y2hlcyhyZWNlaXZlck1hdGNoZXIpKQogICAgICAgICAgICAgcmVjZWl2ZVF1
ZXVlLmVucXVldWVNZXNzYWdlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmVtYWluaW5nSW5jb21pbmdNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZSht
ZXNzYWdlKSk7CkBAIC0zNTYsMzMgKzM1Myw0NiBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVN
YXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldQog
ICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IFdURk1vdmUocmVtYWluaW5nSW5jb21pbmdNZXNzYWdl
cyk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdl
UmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZl
UXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIg
cmVjZWl2ZXJNYXRjaGVyKQogewogICAgIExvY2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsg
bV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9OwotICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9N
ZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKLSAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJl
Y2VpdmVRdWV1ZShyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7CisgICAgbV9yZWNlaXZl
UXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7Cit9CisKK3ZvaWQgQ29u
bmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck1hdGNoZXIgcmVjZWl2
ZXJNYXRjaGVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2Nr
IH07CisgICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZlck1hdGNoZXIpOwogfQogCiB2
b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKKyAgICBSZWNlaXZlck1h
dGNoZXIgcmVjZWl2ZXJNYXRjaGVyID0gUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lB
UEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKwogICAgIGF1dG8gcmVjZWl2ZVF1ZXVl
ID0gbWFrZVVuaXF1ZTxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJRdWV1ZT4od29ya1F1ZXVlLCBy
ZWNlaXZlcik7CiAgICAgTG9ja2VyIGluY29taW5nTWVzc2FnZXNMb2NrZXIgeyBtX2luY29taW5n
TWVzc2FnZXNMb2NrIH07Ci0gICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNl
aXZlUXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAg
ICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJl
Y2VpdmVRdWV1ZSgqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOworICAgIG1fcmVjZWl2
ZVF1ZXVlcy5hZGQoV1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZlck1hdGNoZXIpOworfQor
Cit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEko
cmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6YWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIFRocmVhZE1l
c3NhZ2VSZWNlaXZlciogcmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CisgICAg
UmVjZWl2ZXJNYXRjaGVyIHJlY2VpdmVyTWF0Y2hlciA9IFJlY2VpdmVyTWF0Y2hlcjo6Y3JlYXRl
Rm9yTGVnYWN5QVBJKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiAgICAgYXV0byByZWNl
aXZlUXVldWUgPSBtYWtlVW5pcXVlPFRocmVhZE1lc3NhZ2VSZWNlaXZlclF1ZXVlPigqcmVjZWl2
ZXIpOwogICAgIExvY2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01lc3Nh
Z2VzTG9jayB9OwotICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1
ZXVlKCpyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Ci0gICAgbV9y
ZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7CisgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZl
UXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJNYXRjaGVyKTsKKyAgICBtX3JlY2VpdmVRdWV1
ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJNYXRjaGVyKTsKIH0KIAotdm9p
ZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OnJlbW92
ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2Fn
ZXNMb2NrIH07Ci0gICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVy
OjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAK
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VS
ZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNv
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGIzMTVkOThl
ZWNlNTJjOWIyYTM4NWVlYjFjNzQ3YzY0MWUzMzMwYTMuLmExN2Y2YTAzMGY3ZmI2ZjFlYzVkZGIy
NzJhZjg4Zjc3NDIxYWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKQEAgLTIzNSwxOSArMjM1LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIEFkZHMgYSBtZXNzYWdl
IHJlY2VpdmUgcXVldWUuIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2Ug
aXMgcmVtb3ZlZCBiZWZvcmUgaXQgZ29lcwogICAgIC8vIG91dCBvZiBzY29wZS4KLSAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwotCi0gICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwor
ICAgIC8vIHN0ZDo6bnVsbG9wdCBSZWNlaXZlck1hdGNoU3BlYyBtYXRjaGVzIGFsbCByZWNlaXZl
cnMuCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUm
LCBSZWNlaXZlck1hdGNoZXIpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShS
ZWNlaXZlck1hdGNoZXIpOwogCiAgICAgLy8gQWRkcyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUg
dGhhdCBkaXNwYXRjaGVzIHRocm91Z2ggV29ya1F1ZXVlIHRvIFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlci4KICAgICAvLyBLZWVwcyB0aGUgV29ya1F1ZXVlIGFuZCB0aGUgV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyIGFsaXZlLiBEaXNwYXRjaGVkIHRhc2tzIGtlZXAgV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyIGFsaXZlLgorICAgIC8vIGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIGFsbCBpZHMu
CiAgICAgdm9pZCBhZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBXb3Jr
UXVldWUmLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXImLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCk7Ci0gICAgdm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApIHsgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOyB9CisgICAgdm9p
ZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEID0gMCk7CiAKICAgICAvLyBBZGRzIGEgbWVzc2FnZSByZWNlaWV2ZSBxdWV1
ZSB0aGF0IGRpc3BhdGNoZXMgdGhyb3VnaCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8g
S2VlcHMgdGhlIFRocmVhZE1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4gRGlzcGF0Y2hlZCB0YXNrcyBr
ZWVwIHRoZSBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgYWxpdmUuCisgICAgLy8gZGVzdGluYXRpb25J
RCA9PSAwIG1hdGNoZXMgYWxsIGlkcy4KICAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZl
cihSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQgPSAwKTsKLSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCkgeyByZW1vdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2
b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQgPSAwKTsKIAogICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwpAQCAtMzUxLDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3BQZW5kaW5nU3lu
Y1JlcXVlc3RJRChTeW5jUmVxdWVzdElEKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
d2FpdEZvclN5bmNSZXBseShTeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7CiAKLSAgICB2b2lkIGVucXVldWVNYXRjaGluZ01lc3Nh
Z2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpIFdURl9SRVFVSVJFU19MT0NLKG1faW5jb21pbmdN
ZXNzYWdlc0xvY2spOworICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VS
ZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTWF0Y2hlcikgV1RGX1JF
UVVJUkVTX0xPQ0sobV9pbmNvbWluZ01lc3NhZ2VzTG9jayk7CiAKICAgICAvLyBDYWxsZWQgb24g
dGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaAppbmRleCBkZjE1MjMzNGNlYjY2YzExNGI1ZTdiYjg4N2I1OWY0MWVlOGE5Yjg0Li45Y2Nj
NGYyZmMxZjllYTM2YWI3MjIwOWI2OTFkODc1NGY0MTg3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdHRhY2htZW50
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiUmVjZWl2ZXJNYXRjaGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAg
IFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2
ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9CiAgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQorICAgIGJvb2wgbWF0Y2hlcyhj
b25zdCBSZWNlaXZlck1hdGNoZXImIG1hdGNoZXIpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXIubWF0
Y2hlcyhtZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlc3RpbmF0aW9uSUQoKSk7IH0KIAogICAgIGJv
b2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1lc3NhZ2VJc1N5bmMobWVzc2FnZU5h
bWUoKSk7IH0KICAgICBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IHNob3Vs
ZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
CmluZGV4IGU2ZGRiMzc4NzRmODMzNTM0N2MxNjQ0ZjQwODEwNjAyMmUyMGQyMjEuLjNkYzQ2M2Rl
NjM3ODhjYzQyNTQ2ZDBlNTFlMWIwN2Q0OTczMjc0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCkBAIC0yOSw0NCAr
MjksNjQgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cDo6YWRkSW1wbChTdG9yZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRk
SW1wbChTdG9yZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJNYXRjaGVyIG1hdGNoZXIpCiB7Ci0gICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5h
bWUpLCBkZXN0aW5hdGlvbklEKTsKLSAgICBpZiAobV9xdWV1ZXMuY29udGFpbnMoa2V5KSkgewot
ICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0
Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgQUxXQVlTX0xP
R19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwg
LSBhZGRpbmcgZHVwbGljYXRlIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVj
ZWl2ZXJOYW1lKSA8PCAiIGZvciBkZXN0aW5hdGlvbiAiIDw8IGRlc3RpbmF0aW9uSUQpOworICAg
IGlmICghbWF0Y2hlci5yZWNlaXZlck5hbWUpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FueVJlY2Vp
dmVyUXVldWUpOworICAgICAgICBtX2FueVJlY2VpdmVyUXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlcy5hZGQoa2V5LCBXVEZNb3ZlKHF1
ZXVlKSk7CisgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pigq
bWF0Y2hlci5yZWNlaXZlck5hbWUpOworICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklEKSB7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5hZGQocmVjZWl2ZXJOYW1lLCBX
VEZNb3ZlKHF1ZXVlKSk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBhc3NlcnRpb24uIFNlZSB3ZWJraXQu
b3JnL2IvMjM3Njc0IGFuZCB3ZWJraXQub3JnL2IvMjM4MzkxLgorICAgICAgICAgICAgQUxXQVlT
X0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZElt
cGwgLSBhZGRpbmcgZHVwbGljYXRlIGFueSBpZCByZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5hZGQoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJO
YW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSwgV1RGTW92ZShxdWV1ZSkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNl
aXZlck1hdGNoZXIgbWF0Y2hlcikKIHsKLSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwotICAgIGlm
ICghbV9xdWV1ZXMuY29udGFpbnMoa2V5KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9y
Zy9iLzIzODM5MS4KLSAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSAtIGZhaWxlZCB0byByZW1vdmUgcmVjZWl2ZXIg
IiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpIDw8ICIgd2l0aCBkZXN0aW5h
dGlvbiAiIDw8IGRlc3RpbmF0aW9uSUQpOworICAgIGlmICghbWF0Y2hlci5yZWNlaXZlck5hbWUp
IHsKKyAgICAgICAgQVNTRVJUKG1fYW55UmVjZWl2ZXJRdWV1ZSk7CisgICAgICAgIG1fYW55UmVj
ZWl2ZXJRdWV1ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdWludDhf
dCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqbWF0Y2hlci5yZWNlaXZlck5h
bWUpOworICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklEKSB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9hbnlJRFF1ZXVlcy5yZW1vdmUocmVjZWl2ZXJOYW1lKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9x
dWV1ZXMucmVtb3ZlKGtleSk7CisgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5yZW1vdmUoc3Rk
OjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiB9CiAKIE1lc3NhZ2VSZWNlaXZlUXVldWUq
IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmdldChjb25zdCBEZWNvZGVyJiBtZXNzYWdlKSBjb25z
dAogewotICAgIGlmIChtX3F1ZXVlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZS5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCAwKTsKLSAgICBhdXRvIGl0ID0gbV9xdWV1ZXMu
ZmluZChrZXkpOwotICAgIGlmIChpdCA9PSBtX3F1ZXVlcy5lbmQoKSkgewotICAgICAgICBrZXku
c2Vjb25kID0gbWVzc2FnZS5kZXN0aW5hdGlvbklEKCk7Ci0gICAgICAgIGlmIChrZXkuc2Vjb25k
KQotICAgICAgICAgICAgaXQgPSBtX3F1ZXVlcy5maW5kKGtleSk7CisgICAgdWludDhfdCByZWNl
aXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CisgICAgYXV0byBxdWV1ZUV4dHJhY3RvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAg
ICAgIFtdKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUp
IHsgcmV0dXJuIHF1ZXVlLmdldCgpOyB9LAorICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVl
KiBxdWV1ZSkgeyByZXR1cm4gcXVldWU7IH0KKyAgICApOworCisgICAgeworICAgICAgICBhdXRv
IGl0ID0gbV9hbnlJRFF1ZXVlcy5maW5kKHJlY2VpdmVyTmFtZSk7CisgICAgICAgIGlmIChpdCAh
PSBtX2FueUlEUXVldWVzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVl
dWVFeHRyYWN0b3IsIGl0LT52YWx1ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBpdCA9
IG1fcXVldWVzLmZpbmQoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCBtZXNzYWdlLmRlc3Rp
bmF0aW9uSUQoKSkpOworICAgICAgICBpZiAoaXQgIT0gbV9xdWV1ZXMuZW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjp2aXNpdChxdWV1ZUV4dHJhY3RvciwgaXQtPnZhbHVlKTsKICAgICB9
Ci0gICAgaWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gc3RkOjp2aXNpdCgKLSAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKLSAgICAg
ICAgICAgIFtdKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVl
dWUpIHsgcmV0dXJuIHF1ZXVlLmdldCgpOyB9LAotICAgICAgICAgICAgW10oTWVzc2FnZVJlY2Vp
dmVRdWV1ZSogcXVldWUpIHsgcmV0dXJuIHF1ZXVlOyB9Ci0gICAgICAgICksIGl0LT52YWx1ZSk7
CisgICAgaWYgKG1fYW55UmVjZWl2ZXJRdWV1ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQo
cXVldWVFeHRyYWN0b3IsICptX2FueVJlY2VpdmVyUXVldWUpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmgKaW5kZXggZTQ0NDNhN2NkNmRkMWQwMTY5YjFhN2I4MzRjZTVjNzBlMmNl
NzE3OS4uNjVjMDg4ZjEzYTllNTNkMGQ2MzA2Mjc0ZWEzNjY0ZTJjZmQ0M2Y3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApA
QCAtNDQsMTcgKzQ0LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFF1ZXVlTWFwOjppc1Zh
bGlkS2V5KHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS5kZXN0aW5hdGlvbklEKCkpKTsKICAgICB9CiAKLSAg
ICAvLyBBZGRzIGEgd2lsZGNhcmQgZmlsdGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4KLSAgICB2
b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVl
KSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgYWRkKHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1v
dmUocXVldWUpKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgcmVt
b3ZlKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBhZGQo
TWVzc2FnZVJlY2VpdmVRdWV1ZSYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7IGFk
ZEltcGwoU3RvcmVUeXBlKCZxdWV1ZSksIG1hdGNoZXIpOyB9CisgICAgdm9pZCBhZGQoc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZlUXVldWU+JiYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBt
YXRjaGVyKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgbWF0Y2hlcik7IH0K
KyAgICB2b2lkIHJlbW92ZShSZWNlaXZlck1hdGNoZXIpOwogCiAgICAgTWVzc2FnZVJlY2VpdmVR
dWV1ZSogZ2V0KGNvbnN0IERlY29kZXImKSBjb25zdDsKIHByaXZhdGU6CiAgICAgdXNpbmcgU3Rv
cmVUeXBlID0gc3RkOjp2YXJpYW50PE1lc3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4+OwotICAgIHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwg
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIGFkZEltcGwo
U3RvcmVUeXBlJiYsIFJlY2VpdmVyTWF0Y2hlcik7CiAgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNo
TWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgdXNpbmcg
QW55SURRdWV1ZU1hcCA9IEhhc2hNYXA8dWludDhfdCwgU3RvcmVUeXBlPjsKICAgICBRdWV1ZU1h
cCBtX3F1ZXVlczsKKyAgICBBbnlJRFF1ZXVlTWFwIG1fYW55SURRdWV1ZXM7CisgICAgc3RkOjpv
cHRpb25hbDxTdG9yZVR5cGU+IG1fYW55UmVjZWl2ZXJRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJN
YXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9SZWNlaXZlck1hdGNoZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWRmMTJkZGM2MWQyMWYxODJkZTVjNzRmMjZmYWIxMTQ3YTg2MWMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVy
LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3Bh
Y2UgSVBDIHsKKworc3RydWN0IFJlY2VpdmVyTWF0Y2hlciB7CisgICAgLy8gTWF0Y2hlcyBhbGwg
bWVzc2FnZXMuCisgICAgUmVjZWl2ZXJNYXRjaGVyKCkgPSBkZWZhdWx0OworCisgICAgLy8gTWF0
Y2hlcyBtZXNzYWdlIHRvIHNwZWNpZmljIHJlY2VpdmVyLCBhbnkgZGVzdGluYXRpb24gSUQuCisg
ICAgUmVjZWl2ZXJNYXRjaGVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCisgICAgICAgIDog
cmVjZWl2ZXJOYW1lKHJlY2VpdmVyTmFtZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gTWF0Y2hl
cyBtZXNzYWdlIHRvIHNwZWNpZmljIHJlY2VpdmVyLCBzcGVjaWZpYyBkZXN0aW5hdGlvbiBJRC4K
KyAgICAvLyBOb3RlOiBkZXN0aW5hdGlvbklEID09IDAgbWF0Y2hlcyBvbmx5IDAgaWRzLgorICAg
IFJlY2VpdmVyTWF0Y2hlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKQorICAgICAgICA6IHJlY2VpdmVyTmFtZShyZWNlaXZlck5hbWUpCisgICAgICAg
ICwgZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBD
cmVhdGVzIGEgbWF0Y2hlciBmcm9tIHBhcmFtZXRlcnMgd2hlcmUgZGVzdGluYXRpb25JRCA9PSAw
IG1lYW5zIGFueSBkZXN0aW50YXRpb24gSUQuCisgICAgc3RhdGljIFJlY2VpdmVyTWF0Y2hlciBj
cmVhdGVGb3JMZWdhY3lBUEkoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbklEKQorICAgICAgICAg
ICAgcmV0dXJuIFJlY2VpdmVyTWF0Y2hlciB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9
OworICAgICAgICByZXR1cm4gUmVjZWl2ZXJNYXRjaGVyIHsgcmVjZWl2ZXJOYW1lIH07CisgICAg
fQorCisgICAgYm9vbCBtYXRjaGVzKFJlY2VpdmVyTmFtZSBtYXRjaFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgbWF0Y2hEZXN0aW5hdGlvbklEKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFy
ZWNlaXZlck5hbWUgfHwgKCpyZWNlaXZlck5hbWUgPT0gbWF0Y2hSZWNlaXZlck5hbWUgJiYgKCFk
ZXN0aW5hdGlvbklEIHx8ICpkZXN0aW5hdGlvbklEID09IG1hdGNoRGVzdGluYXRpb25JRCkpOwor
ICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8UmVjZWl2ZXJOYW1lPiByZWNlaXZlck5hbWU7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZGVzdGluYXRpb25JRDsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggOTZhM2VhZjZhN2Q4ZjFmZDVkZThlYWJmOTA1MDEzZmU0OTFkYTFjNC4uMTk3YTU2
YTM2YTY5MWUyYWQ4NDc2NDc3OWFjMWM2N2RmOTQxMTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdN
ZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmUKIHsKICAgICAvLyBGSVhNRTogQ2FuIHdl
IGF2b2lkIHN5bmNocm9ub3VzIGRpc3BhdGNoIGhlcmUgYnkgYWRqdXN0aW5nIHRoZSBhc3NlcnRp
b24gaW4gYENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2
ZVF1ZXVlYD8KICAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoWyZdIHsKLSAgICAgICAgbV9j
b25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVl
dWUoKnRoaXMsIHsgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEIH0pOwogICAgIH0pOwogICAg
IG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwogfQpAQCAtNTAsMjAgKzUw
LDIwIEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lKQogewogICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNl
aXZlck5hbWUgfSk7CiAgICAgfSk7CiAgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlv
bigqdGhpcyk7CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNl
aXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSkKIHsKLSAgICBtX2Nv
bm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUgfSk7
CiAgICAgbV93b3JrUXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIHZv
aWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwo
UmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUoeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7CiAgICAgbV93b3JrUXVldWUucmVt
b3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0OTI3NGRmZjZiMDgzYzc5ZWIyNGM1
YzE3OTMxMjk1MDlhMzBhMzkuLjJhNmNiOWIxNzkzZmZmNGM5NTMxN2NhZmYyMmM4ZjA0MTc1MWZk
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTM1MSw2ICsxMzUxLDcgQEAKIAkJN0JDRjcwREUyNjE1RDA2RTAwRTRGQjcwIC8qIFNj
b3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3MCAvKiBT
Y29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi87IH07CiAJCTdCRERBMzE5
Mjc0N0MwNDAwMDM4NjU5RSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IH07CiAJCTdCRTM3RjkzMjdDN0NBNTEwMDdBNkNEMyAvKiBJUENTdHJlYW1UZXN0ZXJJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkUzN0Y5MjI3QzdDNTE4MDA3QTZDRDMgLyogSVBDU3RyZWFtVGVzdGVySWRlbnRpZmllci5o
ICovOyB9OworCQk3QkU5MzI2MzI3RjVDNzVBMDBENUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkU5MzI2MjI3
RjVDNzVBMDBENUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVyLmggKi87IH07CiAJCTdDMDY1RjJDMUM4
Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsK
IAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8q
IEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07
CkBAIC01NTIzLDYgKzU1MjQsNyBAQAogCQk3QkUzN0Y5NTI3QzdDRDkwMDA3QTZDRDMgLyogSVBD
U3RyZWFtVGVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElQQ1N0cmVhbVRlc3Rlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVG
MDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0JFOTMyNjIyN0Y1Qzc1QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNlaXZlck1hdGNoZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgzMTIsNiArODMxNCw3IEBACiAJCQkJQkNFRTk2NkExMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFj
aG1lbnQuY3BwICovLAogCQkJCUJDRUU5NjZCMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50
LmggKi8sCiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTdCRTkzMjYyMjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZlck1hdGNoZXIuaCAqLywK
IAkJCQlCQzAzMkRBMzEwRjQzN0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5oICovLAogCQkJCTVD
MTU3OUUyMjcxNzJBNDkwMEVENTI4MCAvKiBEYWVtb25Db25uZWN0aW9uLmNwcCAqLywKIAkJCQk1
QzE1NzlFMzI3MTcyQTQ5MDBFRDUyODAgLyogRGFlbW9uQ29ubmVjdGlvbi5oICovLApAQCAtMTQw
NDksNiArMTQwNTIsNyBAQAogCQkJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAvKiBBdXhpbGlh
cnlQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTEzQzY3MTY2RUFCQjIw
MDE0OUZDQiAvKiBBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5
MEY0MjcyMTcyQTBDNzQwMDkzOUZGMCAvKiBBdXhpbGlhcnlQcm9jZXNzU3VwcGxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0JFOTMyNjMyN0Y1Qzc1QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0
Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMDQxRjQxQUNFMjEwNTAwNEExM0VDIC8qIEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkEyQjYwOTFFNTY3NkE2
MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NUM5NDM5MTI1MjNDMEQwMDA1NEYzRDUgLyogQmFzZUJvYXJkU1BJLmgg
aW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456267</attachid>
            <date>2022-03-31 12:15:22 -0700</date>
            <delta_ts>2022-04-01 05:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238608-20220331221520.patch</filename>
            <type>text/plain</type>
            <size>28220</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmMTY5YWExOTU0N2Y3ZTcy
NDU5YzE0ZGY2NDYwYzljYWFhN2YzYTUuLmQ0NzJiODcwN2E3Y2YyNDY2MWNhZTI4YTRhZGNhMDE5
NjRjMWI5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjItMDMtMzEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJUEM6OkNvbm5lY3Rpb24g
c2hvdWxkIHN1cHBvcnQgZGl2ZXJ0aW5nIGFsbCBtZXNzYWdlcyB0byBhIG1lc3NhZ2UgcXVldWUg
aW4gb3RoZXIgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmV2aW91c2x5LCBpdCB3YXMgcG9zc2libGUgdG8gZGl2ZXJ0IGFsbCBtZXNzYWdl
cyB0byBjZXJ0YWluIFJlY2VpdmVyTmFtZSB0bworICAgICAgICBhIG1lc3NhZ2UgcXVldWUuIFRo
aXMgaXMgdXNlZCBpbiBJUEMgc3RyZWFtcyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFkZCBh
IHBvc3NpYmlsaXR5IHRvIGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHF1ZXVlLiBJ
bnN0ZWFkIG9mCisgICAgICAgIHBhc3NpbmcgUmVjZWl2ZXJOYW1lLCBpZCBwYWlyIHRvIENvbm5l
Y3Rpb24sIHBhc3MgbmV3IHN0cnVjdCBSZWNlaXZlck1hdGNoZXIuCisgICAgICAgIFVzZSBSZWNl
aXZlck1hdGNoZXIgaW5zdGVhZCBvZiBwYWlyIG9wdGlvbmFsPFJlY2VpdmVyTmFtZT4sIG9wdGlv
bmFsPGlkPiwgc2luY2UKKyAgICAgICAgbnVsbG9wdCwgaWQgaXMgbm90IGEgdmFsaWQgY2FzZS4K
KyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHBhdGNoIGZvciB0aGUgY2FzZSB3
aGVyZSBJUEM6OkNvbm5lY3Rpb24gaXMgY3JlYXRlZCBmb3IKKyAgICAgICAgdGhlIHNvbGUgcHVy
cG9zZSBvZiB1c2luZyBpdCB0b2dldGhlciB3aXRoIElQQyBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgVGhpcyBhbHNvIGNsYXJpZmllcyB0aGUgb3ZlcmxvYWRlZCB1c2Ugb2YgZGVzdGluYXRp
b25JRCAwIGFzIGEgd2lsZGNhcmQgYXMgd2VsbCBhcworICAgICAgICBhIHZhbGlkIG1lc3NhZ2Ug
ZGVzdGluYXRpb24uCisKKyAgICAgICAgQWxzbyBpbXBsZW1lbnQgdGhlIHBvc3NpYmlsaXR5IHRv
IGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gcGFydGljdWxhciBSZWNlaXZlck5hbWUsCisgICAgICAg
IGlkIDAuIFByZXZpb3VzbHkgdGhpcyB3YXMgc2lnbmlmeWluZyB0aGUgZGVzdGluYXRpb24gSUQg
d2lsZGNhcmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1hdGNoZXMgY29uc3QpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlUXVldWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6
YWRkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaC4K
KyAgICAgICAgKElQQzo6UmVjZWl2ZXJNYXRjaGVyOjpSZWNlaXZlck1hdGNoZXIpOgorICAgICAg
ICAoSVBDOjpSZWNlaXZlck1hdGNoZXI6OmNyZWF0ZUZvckxlZ2FjeUFQSSk6CisgICAgICAgIChJ
UEM6OlJlY2VpdmVyTWF0Y2hlcjo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1w
bCk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjIt
MDMtMzAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5k
b3cgaXMgdG9vIHNtYWxsIGFmdGVyIGVudGVyaW5nIGFuZCBleGl0aW5nIHZpZGVvL2VsZW1lbnQg
ZnVsbHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCA3YjdlMDlkMGFkYjU0NGY0YmRjNTg3N2NmNTJmMWJmODk3Y2IyYTBlLi44NTAxNzBmMWRhZDQw
NTEwMDU2MzA2YzQ0NGZkYjdiNjlmZDk0MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQoTWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxs
RGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAogICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1l
c3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlLgotICAgIHZvaWQgZW5x
dWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgZW5xdWV1ZU1h
dGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZl
ck1hdGNoZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZT47CkBAIC0xNDEsMTMgKzE0MSwxMiBAQCBD
b25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlJiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
OjpzaW5nbGV0b24oKQogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlOwogfQogCi12b2lkIENv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVj
ZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29u
bmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNl
aXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwogICAgIGF1dG8gZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRhaW5lciA9IFsmXShE
ZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiYgY29ubmVjdGlvbkFuZE1lc3NhZ2Vz
KSB7CiAgICAgICAgIERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IHJlc3Q7CiAg
ICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbkFuZE1lc3NhZ2UgOiBjb25uZWN0aW9uQW5kTWVz
c2FnZXMpIHsKLSAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2FnZS5jb25uZWN0aW9u
LnB0cigpID09ICZjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSByZWNlaXZlck5hbWUgJiYgKGNvbm5lY3Rpb25BbmRNZXNz
YWdlLm1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEIHx8ICFkZXN0aW5h
dGlvbklEKSkKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2FnZS5jb25uZWN0aW9u
LnB0cigpID09ICZjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPm1h
dGNoZXMocmVjZWl2ZXJNYXRjaGVyKSkKICAgICAgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5x
dWV1ZU1lc3NhZ2UoY29ubmVjdGlvbiwgV1RGTW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZS5tZXNz
YWdlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdC5hcHBlbmQoV1RG
TW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZSkpOwpAQCAtMzQwLDE1ICszMzksMTMgQEAgdm9pZCBD
b25uZWN0aW9uOjpzZXRTaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlKGJvb2wgc2hv
dWxkRXhpdE9uU3luY01lc3MKIAogLy8gRW5xdWV1ZSBhbnkgcGVuZGluZyBtZXNzYWdlIHRvIHRo
ZSBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHRoYXQgaXMgbWVhbnQgdG8gZ28gb24gdGhhdCBxdWV1ZS4g
VGhpcyBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIG9yZGVyaW5nIG9mCiAvLyBJUEMgbWVz
c2FnZXMgYXMgc29tZSBtZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIG9uIHRoZSBJUEMgdGhyZWFk
IGJlZm9yZSB0aGUgbWVzc2FnZSByZWNlaXZlciByZWdpc3RlcmVkIGl0c2VsZiBvbiB0aGUgbWFp
biB0aHJlYWQuCi12b2lkIENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNz
YWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2
ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVj
dGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRj
aGVyKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotCi0gICAgU3luY01lc3NhZ2VT
dGF0ZTo6c2luZ2xldG9uKCkuZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoKnRoaXMsIHJlY2VpdmVR
dWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRl
OjpzaW5nbGV0b24oKS5lbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcygqdGhpcywgcmVjZWl2ZVF1ZXVl
LCByZWNlaXZlck1hdGNoZXIpOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
PiByZW1haW5pbmdJbmNvbWluZ01lc3NhZ2VzOwogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1f
aW5jb21pbmdNZXNzYWdlcykgewotICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRl
c3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAgICAgICBpZiAobWVzc2FnZS0+bWF0
Y2hlcyhyZWNlaXZlck1hdGNoZXIpKQogICAgICAgICAgICAgcmVjZWl2ZVF1ZXVlLmVucXVldWVN
ZXNzYWdlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcmVtYWluaW5nSW5jb21pbmdNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CkBA
IC0zNTYsMzMgKzM1Myw0NiBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3Nh
Z2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldQogICAgIG1faW5jb21p
bmdNZXNzYWdlcyA9IFdURk1vdmUocmVtYWluaW5nSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAKLXZv
aWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVl
JiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRj
aGVyKQogewogICAgIExvY2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01l
c3NhZ2VzTG9jayB9OwotICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2
ZVF1ZXVlKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAgICBt
X3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShy
ZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7CisgICAgbV9yZWNlaXZlUXVldWVzLmFkZChy
ZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07CisgICAgbV9y
ZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZlck1hdGNoZXIpOwogfQogCiB2b2lkIENvbm5lY3Rp
b246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1l
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiByZWNlaXZl
ciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKKyAgICBSZWNlaXZlck1hdGNoZXIgcmVjZWl2
ZXJNYXRjaGVyID0gUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsKKwogICAgIGF1dG8gcmVjZWl2ZVF1ZXVlID0gbWFrZVVuaXF1
ZTxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJRdWV1ZT4od29ya1F1ZXVlLCByZWNlaXZlcik7CiAg
ICAgTG9ja2VyIGluY29taW5nTWVzc2FnZXNMb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2Nr
IH07Ci0gICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoKnJl
Y2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAgICBtX3JlY2VpdmVR
dWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZSgq
cmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOworICAgIG1fcmVjZWl2ZVF1ZXVlcy5hZGQo
V1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZlck1hdGNoZXIpOworfQorCit2b2lkIENvbm5l
Y3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIHJlbW92ZU1lc3NhZ2VSZWNl
aXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZl
ciogcmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CisgICAgUmVjZWl2ZXJNYXRj
aGVyIHJlY2VpdmVyTWF0Y2hlciA9IFJlY2VpdmVyTWF0Y2hlcjo6Y3JlYXRlRm9yTGVnYWN5QVBJ
KHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiAgICAgYXV0byByZWNlaXZlUXVldWUgPSBt
YWtlVW5pcXVlPFRocmVhZE1lc3NhZ2VSZWNlaXZlclF1ZXVlPigqcmVjZWl2ZXIpOwogICAgIExv
Y2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9Owot
ICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKCpyZWNlaXZl
UXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Ci0gICAgbV9yZWNlaXZlUXVldWVz
LmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7
CisgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoKnJlY2Vp
dmVRdWV1ZSwgcmVjZWl2ZXJNYXRjaGVyKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1v
dmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJNYXRjaGVyKTsKIH0KIAotdm9pZCBDb25uZWN0aW9u
OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07Ci0g
ICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JM
ZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVz
c2FnZVJlY2VpdmVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGIzMTVkOThlZWNlNTJjOWIyYTM4
NWVlYjFjNzQ3YzY0MWUzMzMwYTMuLmExN2Y2YTAzMGY3ZmI2ZjFlYzVkZGIyNzJhZjg4Zjc3NDIx
YWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTIzNSwx
OSArMjM1LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJlY2VpdmUgcXVl
dWUuIFRoZSBjbGllbnQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgaW5zdGFuY2UgaXMgcmVtb3ZlZCBi
ZWZvcmUgaXQgZ29lcwogICAgIC8vIG91dCBvZiBzY29wZS4KLSAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCA9IDApOwotCi0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
KFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworICAgIC8vIHN0ZDo6
bnVsbG9wdCBSZWNlaXZlck1hdGNoU3BlYyBtYXRjaGVzIGFsbCByZWNlaXZlcnMuCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck1h
dGNoZXIpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck1hdGNo
ZXIpOwogCiAgICAgLy8gQWRkcyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUgdGhhdCBkaXNwYXRj
aGVzIHRocm91Z2ggV29ya1F1ZXVlIHRvIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4KICAgICAv
LyBLZWVwcyB0aGUgV29ya1F1ZXVlIGFuZCB0aGUgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIGFs
aXZlLiBEaXNwYXRjaGVkIHRhc2tzIGtlZXAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIGFsaXZl
LgorICAgIC8vIGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIGFsbCBpZHMuCiAgICAgdm9pZCBh
ZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmLCBXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXImLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7Ci0gICAg
dm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApIHsgcmVtb3ZlTWVzc2FnZVJlY2VpdmVR
dWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOyB9CisgICAgdm9pZCByZW1vdmVXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCk7CiAKICAgICAvLyBBZGRzIGEgbWVzc2FnZSByZWNlaWV2ZSBxdWV1ZSB0aGF0IGRpc3Bh
dGNoZXMgdGhyb3VnaCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8gS2VlcHMgdGhlIFRo
cmVhZE1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4gRGlzcGF0Y2hlZCB0YXNrcyBrZWVwIHRoZSBUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIgYWxpdmUuCisgICAgLy8gZGVzdGluYXRpb25JRCA9PSAwIG1hdGNo
ZXMgYWxsIGlkcy4KICAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciosIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsK
LSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCkgeyByZW1vdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7IH0KKyAgICB2b2lkIHJlbW92ZVRo
cmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQg
PSAwKTsKIAogICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtMzUx
LDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3BQZW5kaW5nU3luY1JlcXVlc3RJRChT
eW5jUmVxdWVzdElEKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNS
ZXBseShTeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRT
eW5jT3B0aW9uPik7CiAKLSAgICB2b2lkIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdl
UmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpIFdURl9SRVFVSVJFU19MT0NLKG1faW5jb21pbmdNZXNzYWdlc0xvY2sp
OworICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUo
TWVzc2FnZVJlY2VpdmVRdWV1ZSYsIFJlY2VpdmVyTWF0Y2hlcikgV1RGX1JFUVVJUkVTX0xPQ0so
bV9pbmNvbWluZ01lc3NhZ2VzTG9jayk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rp
b24gd29yayBxdWV1ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCBk
ZjE1MjMzNGNlYjY2YzExNGI1ZTdiYjg4N2I1OWY0MWVlOGE5Yjg0Li45Y2NjNGYyZmMxZjllYTM2
YWI3MjIwOWI2OTFkODc1NGY0MTg3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiUmVjZWl2ZXJNYXRjaGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIFJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVz
c2FnZU5hbWUpOyB9CiAgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQorICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBSZWNlaXZl
ck1hdGNoZXImIG1hdGNoZXIpIGNvbnN0IHsgcmV0dXJuIG1hdGNoZXIubWF0Y2hlcyhtZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGRlc3RpbmF0aW9uSUQoKSk7IH0KIAogICAgIGJvb2wgaXNTeW5jTWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1lc3NhZ2VJc1N5bmMobWVzc2FnZU5hbWUoKSk7IH0KICAg
ICBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IHNob3VsZERpc3BhdGNoTWVz
c2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCmluZGV4IGU2ZGRi
Mzc4NzRmODMzNTM0N2MxNjQ0ZjQwODEwNjAyMmUyMGQyMjEuLmRlMmQ0MTZkNDk5M2QxZGY5ODk1
NTI4ZjE5NmViNjBmMWY1MTVjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCkBAIC0yOSw0NCArMjksNjcgQEAKIAog
bmFtZXNwYWNlIElQQyB7CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbChT
dG9yZVR5cGUmJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbChTdG9yZVR5
cGUmJiBxdWV1ZSwgUmVjZWl2ZXJNYXRjaGVyIG1hdGNoZXIpCiB7Ci0gICAgYXV0byBrZXkgPSBz
dGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5h
dGlvbklEKTsKLSAgICBpZiAobV9xdWV1ZXMuY29udGFpbnMoa2V5KSkgewotICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3
NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVB
TShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcgZHVw
bGljYXRlIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSA8
PCAiIGZvciBkZXN0aW5hdGlvbiAiIDw8IGRlc3RpbmF0aW9uSUQpOworICAgIGlmICghbWF0Y2hl
ci5yZWNlaXZlck5hbWUpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FueVJlY2VpdmVyUXVldWUpOwor
ICAgICAgICBtX2FueVJlY2VpdmVyUXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlcy5hZGQoa2V5LCBXVEZNb3ZlKHF1ZXVlKSk7CisgICAg
dWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqbWF0Y2hlci5yZWNl
aXZlck5hbWUpOworICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklEKSB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5hZGQocmVjZWl2ZXJOYW1lLCBXVEZNb3ZlKHF1ZXVl
KSk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhbiBhc3NlcnRpb24uIFNlZSB3ZWJraXQub3JnL2IvMjM3Njc0
IGFuZCB3ZWJraXQub3JnL2IvMjM4MzkxLgorICAgICAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NU
UkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcg
ZHVwbGljYXRlIGFueSBpZCByZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2Vp
dmVyTmFtZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBy
ZXN1bHQgPSBtX3F1ZXVlcy5hZGQoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCAqbWF0Y2hl
ci5kZXN0aW5hdGlvbklEKSwgV1RGTW92ZShxdWV1ZSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cDo6cmVtb3ZlKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck1hdGNoZXIg
bWF0Y2hlcikKIHsKLSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwotICAgIGlmICghbV9xdWV1ZXMu
Y29udGFpbnMoa2V5KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNz
ZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4K
LSAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZl
UXVldWVNYXA6OnJlbW92ZSAtIGZhaWxlZCB0byByZW1vdmUgcmVjZWl2ZXIgIiA8PCBzdGF0aWNf
Y2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpIDw8ICIgd2l0aCBkZXN0aW5hdGlvbiAiIDw8IGRl
c3RpbmF0aW9uSUQpOworICAgIGlmICghbWF0Y2hlci5yZWNlaXZlck5hbWUpIHsKKyAgICAgICAg
QVNTRVJUKG1fYW55UmVjZWl2ZXJRdWV1ZSk7CisgICAgICAgIG1fYW55UmVjZWl2ZXJRdWV1ZSA9
IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdWludDhfdCByZWNlaXZlck5h
bWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqbWF0Y2hlci5yZWNlaXZlck5hbWUpOworICAgIGlm
ICghbWF0Y2hlci5kZXN0aW5hdGlvbklEKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hbnlJ
RFF1ZXVlcy5yZW1vdmUocmVjZWl2ZXJOYW1lKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtp
dC5vcmcvYi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCisgICAgICAgICAgICBBTFdB
WVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRk
SW1wbCAtIGFkZGluZyBkdXBsaWNhdGUgYW55IGlkIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8
dWludDhfdD4ocmVjZWl2ZXJOYW1lKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX3F1ZXVlcy5yZW1vdmUoa2V5KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcXVldWVz
LnJlbW92ZShzdGQ6Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsICptYXRjaGVyLmRlc3RpbmF0aW9u
SUQpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0KIAogTWVzc2FnZVJl
Y2VpdmVRdWV1ZSogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6Z2V0KGNvbnN0IERlY29kZXImIG1l
c3NhZ2UpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcXVldWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1
aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIDApOwotICAgIGF1dG8gaXQg
PSBtX3F1ZXVlcy5maW5kKGtleSk7Ci0gICAgaWYgKGl0ID09IG1fcXVldWVzLmVuZCgpKSB7Ci0g
ICAgICAgIGtleS5zZWNvbmQgPSBtZXNzYWdlLmRlc3RpbmF0aW9uSUQoKTsKLSAgICAgICAgaWYg
KGtleS5zZWNvbmQpCi0gICAgICAgICAgICBpdCA9IG1fcXVldWVzLmZpbmQoa2V5KTsKKyAgICB1
aW50OF90IHJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBhdXRvIHF1ZXVlRXh0cmFjdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKKyAgICAgICAgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZlUXVl
dWU+JiBxdWV1ZSkgeyByZXR1cm4gcXVldWUuZ2V0KCk7IH0sCisgICAgICAgIFtdKE1lc3NhZ2VS
ZWNlaXZlUXVldWUqIHF1ZXVlKSB7IHJldHVybiBxdWV1ZTsgfQorICAgICk7CisKKyAgICB7Cisg
ICAgICAgIGF1dG8gaXQgPSBtX2FueUlEUXVldWVzLmZpbmQocmVjZWl2ZXJOYW1lKTsKKyAgICAg
ICAgaWYgKGl0ICE9IG1fYW55SURRdWV1ZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3Rk
Ojp2aXNpdChxdWV1ZUV4dHJhY3RvciwgaXQtPnZhbHVlKTsKKyAgICB9CisgICAgeworICAgICAg
ICBhdXRvIGl0ID0gbV9xdWV1ZXMuZmluZChzdGQ6Om1ha2VfcGFpcihyZWNlaXZlck5hbWUsIG1l
c3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIGlmIChpdCAhPSBtX3F1ZXVlcy5lbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnZpc2l0KHF1ZXVlRXh0cmFjdG9yLCBpdC0+dmFs
dWUpOwogICAgIH0KLSAgICBpZiAoaXQgPT0gbV9xdWV1ZXMuZW5kKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KAotICAgICAgICBXVEY6Om1ha2VWaXNp
dG9yKAotICAgICAgICAgICAgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZl
UXVldWU+JiBxdWV1ZSkgeyByZXR1cm4gcXVldWUuZ2V0KCk7IH0sCi0gICAgICAgICAgICBbXShN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4gcXVldWU7IH0KLSAgICAgICAgKSwg
aXQtPnZhbHVlKTsKKyAgICBpZiAobV9hbnlSZWNlaXZlclF1ZXVlKQorICAgICAgICByZXR1cm4g
c3RkOjp2aXNpdChxdWV1ZUV4dHJhY3RvciwgKm1fYW55UmVjZWl2ZXJRdWV1ZSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaAppbmRleCBlNDQ0M2E3Y2Q2ZGQxZDAxNjliMWE3Yjgz
NGNlNWM3MGUyY2U3MTc5Li42NWMwODhmMTNhOWU1M2QwZDYzMDYyNzRlYTM2NjRlMmNmZDQzZjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5oCkBAIC00NCwxNyArNDQsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUXVl
dWVNYXA6OmlzVmFsaWRLZXkoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZS5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLmRlc3RpbmF0aW9uSUQoKSkpOwog
ICAgIH0KIAotICAgIC8vIEFkZHMgYSB3aWxkY2FyZCBmaWx0ZXIgaWYgZGVzdGluYXRpb25JRCA9
PSAwLgotICAgIHZvaWQgYWRkKE1lc3NhZ2VSZWNlaXZlUXVldWUmIHF1ZXVlLCBSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSB7ICBhZGRJbXBsKFN0b3Jl
VHlwZSgmcXVldWUpLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOyB9Ci0gICAgdm9pZCBh
ZGQoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNlaXZlUXVldWU+JiYgcXVldWUsIFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpIHsgYWRkSW1wbChTdG9y
ZVR5cGUoV1RGTW92ZShxdWV1ZSkpLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOyB9Ci0g
ICAgdm9pZCByZW1vdmUoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAg
ICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2ZVF1ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJNYXRjaGVyIG1h
dGNoZXIpIHsgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgbWF0Y2hlcik7IH0KKyAgICB2b2lk
IGFkZChzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4mJiBxdWV1ZSwgUmVjZWl2
ZXJNYXRjaGVyIG1hdGNoZXIpIHsgYWRkSW1wbChTdG9yZVR5cGUoV1RGTW92ZShxdWV1ZSkpLCBt
YXRjaGVyKTsgfQorICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTWF0Y2hlcik7CiAKICAgICBNZXNz
YWdlUmVjZWl2ZVF1ZXVlKiBnZXQoY29uc3QgRGVjb2RlciYpIGNvbnN0OwogcHJpdmF0ZToKICAg
ICB1c2luZyBTdG9yZVR5cGUgPSBzdGQ6OnZhcmlhbnQ8TWVzc2FnZVJlY2VpdmVRdWV1ZSosIHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPj47Ci0gICAgdm9pZCBhZGRJbXBsKFN0
b3JlVHlwZSYmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZv
aWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJNYXRjaGVyKTsKICAgICB1c2luZyBRdWV1
ZU1hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgU3RvcmVUeXBlPjsK
KyAgICB1c2luZyBBbnlJRFF1ZXVlTWFwID0gSGFzaE1hcDx1aW50OF90LCBTdG9yZVR5cGU+Owog
ICAgIFF1ZXVlTWFwIG1fcXVldWVzOworICAgIEFueUlEUXVldWVNYXAgbV9hbnlJRFF1ZXVlczsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JlVHlwZT4gbV9hbnlSZWNlaXZlclF1ZXVlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9SZWNlaXZlck1hdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1JlY2VpdmVy
TWF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZGYxMmRkYzYxZDIxZjE4MmRlNWM3NGYyNmZhYjExNDdh
ODYxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9SZWNl
aXZlck1hdGNoZXIuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSBJUEMgeworCitzdHJ1Y3QgUmVjZWl2ZXJNYXRjaGVyIHsKKyAgICAvLyBN
YXRjaGVzIGFsbCBtZXNzYWdlcy4KKyAgICBSZWNlaXZlck1hdGNoZXIoKSA9IGRlZmF1bHQ7CisK
KyAgICAvLyBNYXRjaGVzIG1lc3NhZ2UgdG8gc3BlY2lmaWMgcmVjZWl2ZXIsIGFueSBkZXN0aW5h
dGlvbiBJRC4KKyAgICBSZWNlaXZlck1hdGNoZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSkK
KyAgICAgICAgOiByZWNlaXZlck5hbWUocmVjZWl2ZXJOYW1lKQorICAgIHsKKyAgICB9CisKKyAg
ICAvLyBNYXRjaGVzIG1lc3NhZ2UgdG8gc3BlY2lmaWMgcmVjZWl2ZXIsIHNwZWNpZmljIGRlc3Rp
bmF0aW9uIElELgorICAgIC8vIE5vdGU6IGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIG9ubHkg
MCBpZHMuCisgICAgUmVjZWl2ZXJNYXRjaGVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgICAgIDogcmVjZWl2ZXJOYW1lKHJlY2VpdmVyTmFt
ZSkKKyAgICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgIH0K
KworICAgIC8vIENyZWF0ZXMgYSBtYXRjaGVyIGZyb20gcGFyYW1ldGVycyB3aGVyZSBkZXN0aW5h
dGlvbklEID09IDAgbWVhbnMgYW55IGRlc3RpbnRhdGlvbiBJRC4KKyAgICBzdGF0aWMgUmVjZWl2
ZXJNYXRjaGVyIGNyZWF0ZUZvckxlZ2FjeUFQSShSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uSUQp
CisgICAgICAgICAgICByZXR1cm4gUmVjZWl2ZXJNYXRjaGVyIHsgcmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEIH07CisgICAgICAgIHJldHVybiBSZWNlaXZlck1hdGNoZXIgeyByZWNlaXZlck5h
bWUgfTsKKyAgICB9CisKKyAgICBib29sIG1hdGNoZXMoUmVjZWl2ZXJOYW1lIG1hdGNoUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBtYXRjaERlc3RpbmF0aW9uSUQpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gIXJlY2VpdmVyTmFtZSB8fCAoKnJlY2VpdmVyTmFtZSA9PSBtYXRjaFJlY2VpdmVy
TmFtZSAmJiAoIWRlc3RpbmF0aW9uSUQgfHwgKmRlc3RpbmF0aW9uSUQgPT0gbWF0Y2hEZXN0aW5h
dGlvbklEKSk7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxSZWNlaXZlck5hbWU+IHJlY2Vp
dmVyTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBkZXN0aW5hdGlvbklEOworfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCA5NmEzZWFmNmE3ZDhmMWZkNWRlOGVhYmY5MDUwMTNmZTQ5MWRh
MWM0Li4xOTdhNTZhMzZhNjkxZTJhZDg0NzY0Nzc5YWMxYzY3ZGY5NDExNzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNw
cApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFy
dFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZQogewogICAgIC8vIEZJ
WE1FOiBDYW4gd2UgYXZvaWQgc3luY2hyb25vdXMgZGlzcGF0Y2ggaGVyZSBieSBhZGp1c3Rpbmcg
dGhlIGFzc2VydGlvbiBpbiBgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01l
c3NhZ2VSZWNlaXZlUXVldWVgPwogICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7CiAg
ICAgfSk7CiAgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CkBA
IC01MCwyMCArNTAsMjAgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmUKIHZvaWQgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFt
ZSByZWNlaXZlck5hbWUpCiB7CiAgICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmXSB7Ci0g
ICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVjZWl2
ZXJOYW1lKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0
aGlzLCB7IHJlY2VpdmVyTmFtZSB9KTsKICAgICB9KTsKICAgICBtX3dvcmtRdWV1ZS5hZGRTdHJl
YW1Db25uZWN0aW9uKCp0aGlzKTsKIH0KIAogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQog
ewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5h
bWUpOworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2Vp
dmVyTmFtZSB9KTsKICAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlz
KTsKIH0KIAogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01l
c3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQogewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKICAgICBtX3dv
cmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ5Mjc0ZGZmNmIw
ODNjNzllYjI0YzVjMTc5MzEyOTUwOWEzMGEzOS4uNWMxNmY3ZGY3MjVjMWFkM2JiODFlNWJiYzE3
MzdlMDQwYWJkYThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMzUxLDYgKzEzNTEsNyBAQAogCQk3QkNGNzBERTI2MTVEMDZFMDBF
NEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JDRjcwQ0IyNjE0OTM1RTAw
RTRGQjcwIC8qIFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSAqLzsgfTsK
IAkJN0JEREEzMTkyNzQ3QzA0MDAwMzg2NTlFIC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgfTsKIAkJN0JFMzdGOTMyN0M3Q0E1MTAwN0E2Q0QzIC8qIElQQ1N0
cmVhbVRlc3RlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCRTM3RjkyMjdDN0M1MTgwMDdBNkNEMyAvKiBJUENTdHJlYW1UZXN0ZXJJ
ZGVudGlmaWVyLmggKi87IH07CisJCTdCRTkzMjYzMjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZl
ck1hdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCRTkzMjYyMjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZlck1hdGNoZXIuaCAqLzsgfTsKIAkJ
N0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mw
NjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
MzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYw
MDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25h
cnkuaCAqLzsgfTsKQEAgLTU1MjMsNiArNTUyNCw3IEBACiAJCTdCRTM3Rjk1MjdDN0NEOTAwMDdB
NkNEMyAvKiBJUENTdHJlYW1UZXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDU3RyZWFt
VGVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3
MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcy
NjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU5MzI2MjI3RjVDNzVBMDBENUZFRkIgLyogUmVj
ZWl2ZXJNYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY2VpdmVy
TWF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4
NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODM0Miw2ICs4MzQ0LDcgQEAKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0
RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcxODVBN0M2QTAwRURG
NTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1QTdDNkEwMEVERjUw
MSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0JFOTMyNjIyN0Y1Qzc1QTAwRDVGRUZCIC8q
IFJlY2VpdmVyTWF0Y2hlci5oICovLAogCQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQx
NUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhF
MTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCkBAIC0xNDUxOSw2ICsxNDUyMiw3
IEBACiAJCQkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0
IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCNkFFNDQyNjA5Nzk5QzAw
QjZFRDVBIC8qIFJlYXNvblNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JFOTMyNjMyN0Y1Qzc1
QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMx
ODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDRDIzRkYy
NUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456354</attachid>
            <date>2022-04-01 05:46:42 -0700</date>
            <delta_ts>2022-04-06 12:36:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238608-20220401154640.patch</filename>
            <type>text/plain</type>
            <size>28428</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzNWU0YTI0YTA4ODM1YjE4
YjczZjdkMWJkZjFkZDQ2OTcxYWZhYjAuLmI4MjdjZDk0YTM4NWMyZjI4MzY3MjdkODRjMDc2YWMw
YTg1Mzk3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjItMDMtMzEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJUEM6OkNvbm5lY3Rpb24g
c2hvdWxkIHN1cHBvcnQgZGl2ZXJ0aW5nIGFsbCBtZXNzYWdlcyB0byBhIG1lc3NhZ2UgcXVldWUg
aW4gb3RoZXIgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmV2aW91c2x5LCBpdCB3YXMgcG9zc2libGUgdG8gZGl2ZXJ0IGFsbCBtZXNzYWdl
cyB0byBjZXJ0YWluIFJlY2VpdmVyTmFtZSB0bworICAgICAgICBhIG1lc3NhZ2UgcXVldWUuIFRo
aXMgaXMgdXNlZCBpbiBJUEMgc3RyZWFtcyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEFkZCBh
IHBvc3NpYmlsaXR5IHRvIGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHF1ZXVlLiBJ
bnN0ZWFkIG9mCisgICAgICAgIHBhc3NpbmcgUmVjZWl2ZXJOYW1lLCBpZCBwYWlyIHRvIENvbm5l
Y3Rpb24sIHBhc3MgbmV3IHN0cnVjdCBSZWNlaXZlck1hdGNoZXIuCisgICAgICAgIFVzZSBSZWNl
aXZlck1hdGNoZXIgaW5zdGVhZCBvZiBwYWlyIG9wdGlvbmFsPFJlY2VpdmVyTmFtZT4sIG9wdGlv
bmFsPGlkPiwgc2luY2UKKyAgICAgICAgbnVsbG9wdCwgaWQgaXMgbm90IGEgdmFsaWQgY2FzZS4K
KyAgICAgICAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHBhdGNoIGZvciB0aGUgY2FzZSB3
aGVyZSBJUEM6OkNvbm5lY3Rpb24gaXMgY3JlYXRlZCBmb3IKKyAgICAgICAgdGhlIHNvbGUgcHVy
cG9zZSBvZiB1c2luZyBpdCB0b2dldGhlciB3aXRoIElQQyBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgVGhpcyBhbHNvIGNsYXJpZmllcyB0aGUgb3ZlcmxvYWRlZCB1c2Ugb2YgZGVzdGluYXRp
b25JRCAwIGFzIGEgd2lsZGNhcmQgYXMgd2VsbCBhcworICAgICAgICBhIHZhbGlkIG1lc3NhZ2Ug
ZGVzdGluYXRpb24uCisKKyAgICAgICAgQWxzbyBpbXBsZW1lbnQgdGhlIHBvc3NpYmlsaXR5IHRv
IGRpdmVydCBhbGwgbWVzc2FnZXMgdG8gcGFydGljdWxhciBSZWNlaXZlck5hbWUsCisgICAgICAg
IGlkIDAuIFByZXZpb3VzbHkgdGhpcyB3YXMgc2lnbmlmeWluZyB0aGUgZGVzdGluYXRpb24gSUQg
d2lsZGNhcmQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1hdGNoZXMgY29uc3QpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDoKKyAgICAgICAg
KElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6YWRkSW1wbCk6CisgICAgICAgIChJUEM6Ok1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlUXVldWVNYXA6OmdldCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcDo6
YWRkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaC4K
KyAgICAgICAgKElQQzo6UmVjZWl2ZXJNYXRjaGVyOjpSZWNlaXZlck1hdGNoZXIpOgorICAgICAg
ICAoSVBDOjpSZWNlaXZlck1hdGNoZXI6OmNyZWF0ZUZvckxlZ2FjeUFQSSk6CisgICAgICAgIChJ
UEM6OlJlY2VpdmVyTWF0Y2hlcjo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1w
bCk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjIt
MDQtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjI5MDM2MCk6IFtHTFhdIENyYXNoIG9uIHByb2Nlc3MgZXhpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA3YjdlMDlkMGFkYjU0
NGY0YmRjNTg3N2NmNTJmMWJmODk3Y2IyYTBlLi42NmVkNTc2YTE0ZjU3NTE4YzA5NGIyMzRhYWYy
MDk2ZmIwNjVhMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1
bmN0aW9uPHZvaWQoTWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdl
ID0geyB9KTsKIAogICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBw
cm92aWRlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlLgotICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVz
c2FnZXMoQ29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMo
Q29ubmVjdGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck1hdGNoZXIpOwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZT47CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCBDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlJiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKQog
ICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlOwogfQogCi12b2lkIENvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVjdGlvbjo6U3luY01l
c3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVj
ZWl2ZXJNYXRjaGVyKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8g
ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRhaW5lciA9IFsmXShEZXF1ZTxDb25uZWN0aW9u
QW5kSW5jb21pbmdNZXNzYWdlPiYgY29ubmVjdGlvbkFuZE1lc3NhZ2VzKSB7CiAgICAgICAgIERl
cXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IHJlc3Q7CiAgICAgICAgIGZvciAoYXV0
byYgY29ubmVjdGlvbkFuZE1lc3NhZ2UgOiBjb25uZWN0aW9uQW5kTWVzc2FnZXMpIHsKLSAgICAg
ICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2FnZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25u
ZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSByZWNlaXZlck5hbWUgJiYgKGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPmRl
c3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEIHx8ICFkZXN0aW5hdGlvbklEKSkKKyAgICAg
ICAgICAgIGlmIChjb25uZWN0aW9uQW5kTWVzc2FnZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25u
ZWN0aW9uICYmIGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPm1hdGNoZXMocmVjZWl2ZXJN
YXRjaGVyKSkKICAgICAgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5xdWV1ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgV1RGTW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZS5tZXNzYWdlKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdC5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9u
QW5kTWVzc2FnZSkpOwpAQCAtMzQwLDE1ICszNDAsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXRT
aG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlKGJvb2wgc2hvdWxkRXhpdE9uU3luY01l
c3MKIAogLy8gRW5xdWV1ZSBhbnkgcGVuZGluZyBtZXNzYWdlIHRvIHRoZSBNZXNzYWdlUmVjZWl2
ZVF1ZXVlIHRoYXQgaXMgbWVhbnQgdG8gZ28gb24gdGhhdCBxdWV1ZS4gVGhpcyBpcyBpbXBvcnRh
bnQgdG8gbWFpbnRhaW4gdGhlIG9yZGVyaW5nIG9mCiAvLyBJUEMgbWVzc2FnZXMgYXMgc29tZSBt
ZXNzYWdlcyBtYXkgZ2V0IHJlY2VpdmVkIG9uIHRoZSBJUEMgdGhyZWFkIGJlZm9yZSB0aGUgbWVz
c2FnZSByZWNlaXZlciByZWdpc3RlcmVkIGl0c2VsZiBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lk
IENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVl
KE1lc3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1h
dGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYg
cmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewogICAgIEFT
U0VSVChpc01haW5SdW5Mb29wKCkpOwogCi0gICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9u
KCkuZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoKnRoaXMsIHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5l
bnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcygqdGhpcywgcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNo
ZXIpOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiByZW1haW5pbmdJbmNv
bWluZ01lc3NhZ2VzOwogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1faW5jb21pbmdNZXNzYWdl
cykgewotICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2Vp
dmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwg
IWRlc3RpbmF0aW9uSUQpKQorICAgICAgICBpZiAobWVzc2FnZS0+bWF0Y2hlcyhyZWNlaXZlck1h
dGNoZXIpKQogICAgICAgICAgICAgcmVjZWl2ZVF1ZXVlLmVucXVldWVNZXNzYWdlKCp0aGlzLCBX
VEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVtYWluaW5nSW5j
b21pbmdNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CkBAIC0zNTYsMzMgKzM1Niw0
NiBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVj
ZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldQogICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IFdU
Rk1vdmUocmVtYWluaW5nSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6
YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUs
IFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lk
IENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYg
cmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewogICAgIExv
Y2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9Owot
ICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVR
dWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAgICBtX3JlY2VpdmVRdWV1ZXMu
YWRkKHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1
ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlUXVldWUsIHJl
Y2VpdmVyTWF0Y2hlcik7CisgICAgbV9yZWNlaXZlUXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJl
Y2VpdmVyTWF0Y2hlcik7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZShSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQoreworICAgIExvY2tlciBs
b2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07CisgICAgbV9yZWNlaXZlUXVldWVzLnJl
bW92ZShyZWNlaXZlck1hdGNoZXIpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlciwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKIHsKKyAgICBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyID0gUmVj
ZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKwogICAgIGF1dG8gcmVjZWl2ZVF1ZXVlID0gbWFrZVVuaXF1ZTxXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXJRdWV1ZT4od29ya1F1ZXVlLCByZWNlaXZlcik7CiAgICAgTG9ja2VyIGluY29t
aW5nTWVzc2FnZXNMb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07Ci0gICAgZW5xdWV1
ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1v
dmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1
ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZSgqcmVjZWl2ZVF1ZXVlLCBy
ZWNlaXZlck1hdGNoZXIpOworICAgIG1fcmVjZWl2ZVF1ZXVlcy5hZGQoV1RGTW92ZShyZWNlaXZl
UXVldWUpLCByZWNlaXZlck1hdGNoZXIpOworfQorCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQoreworICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2
ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
KSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogcmVjZWl2ZXIsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CisgICAgUmVjZWl2ZXJNYXRjaGVyIHJlY2VpdmVyTWF0
Y2hlciA9IFJlY2VpdmVyTWF0Y2hlcjo6Y3JlYXRlRm9yTGVnYWN5QVBJKHJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCk7CiAgICAgYXV0byByZWNlaXZlUXVldWUgPSBtYWtlVW5pcXVlPFRocmVh
ZE1lc3NhZ2VSZWNlaXZlclF1ZXVlPigqcmVjZWl2ZXIpOwogICAgIExvY2tlciBpbmNvbWluZ01l
c3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9OwotICAgIGVucXVldWVNYXRj
aGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKCpyZWNlaXZlUXVldWUsIHJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRCk7Ci0gICAgbV9yZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJl
Y2VpdmVRdWV1ZSksIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgZW5xdWV1ZU1h
dGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2
ZXJNYXRjaGVyKTsKKyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVl
KSwgcmVjZWl2ZXJNYXRjaGVyKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNl
aXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07Ci0gICAgbV9yZWNlaXZlUXVl
dWVzLnJlbW92ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2
ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hN
ZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IGIzMTVkOThlZWNlNTJjOWIyYTM4NWVlYjFjNzQ3YzY0MWUz
MzMwYTMuLjc1NGMwOGVmYmExZTY2NThjN2U5Njc4Y2U0NTBlMWE0NGU5MmQ1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlY2VpdmVyTWF0Y2hlci5oIgog
I2luY2x1ZGUgIlRpbWVvdXQuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CkBAIC0yMzUsMTkgKzIzNiwyMSBAQCBwdWJsaWM6
CiAKICAgICAvLyBBZGRzIGEgbWVzc2FnZSByZWNlaXZlIHF1ZXVlLiBUaGUgY2xpZW50IHNob3Vs
ZCBtYWtlIHN1cmUgdGhlIGluc3RhbmNlIGlzIHJlbW92ZWQgYmVmb3JlIGl0IGdvZXMKICAgICAv
LyBvdXQgb2Ygc2NvcGUuCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VS
ZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsK
LQotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICAvLyBzdGQ6Om51bGxvcHQgUmVjZWl2ZXJNYXRj
aFNwZWMgbWF0Y2hlcyBhbGwgcmVjZWl2ZXJzLgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVR
dWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiwgUmVjZWl2ZXJNYXRjaGVyKTsKKyAgICB2b2lkIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyKTsKIAogICAgIC8vIEFkZHMg
YSBtZXNzYWdlIHJlY2VpZXZlIHF1ZXVlIHRoYXQgZGlzcGF0Y2hlcyB0aHJvdWdoIFdvcmtRdWV1
ZSB0byBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8gS2VlcHMgdGhlIFdvcmtRdWV1
ZSBhbmQgdGhlIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4gRGlzcGF0Y2hlZCB0YXNr
cyBrZWVwIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4KKyAgICAvLyBkZXN0aW5hdGlv
bklEID09IDAgbWF0Y2hlcyBhbGwgaWRzLgogICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
JiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwotICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQgPSAwKSB7IHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklEKTsgfQorICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwogCiAgICAgLy8gQWRk
cyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUgdGhhdCBkaXNwYXRjaGVzIHRocm91Z2ggVGhyZWFk
TWVzc2FnZVJlY2VpdmVyLgogICAgIC8vIEtlZXBzIHRoZSBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIg
YWxpdmUuIERpc3BhdGNoZWQgdGFza3Mga2VlcCB0aGUgVGhyZWFkTWVzc2FnZVJlY2VpdmVyIGFs
aXZlLgorICAgIC8vIGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIGFsbCBpZHMuCiAgICAgdm9p
ZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIqLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7Ci0gICAgdm9pZCByZW1vdmVUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCA9IDApIHsgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUs
IGRlc3RpbmF0aW9uSUQpOyB9CisgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIo
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKICAgICBib29sIG9w
ZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTM1MSw3ICszNTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoU3luY1JlcXVlc3RJRCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkoU3luY1JlcXVlc3RJRCwg
TWVzc2FnZU5hbWUsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCi0gICAg
dm9pZCBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdl
UmVjZWl2ZVF1ZXVlJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSBXVEZf
UkVRVUlSRVNfTE9DSyhtX2luY29taW5nTWVzc2FnZXNMb2NrKTsKKyAgICB2b2lkIGVucXVldWVN
YXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUm
LCBSZWNlaXZlck1hdGNoZXIpIFdURl9SRVFVSVJFU19MT0NLKG1faW5jb21pbmdNZXNzYWdlc0xv
Y2spOwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUuCiAgICAg
dm9pZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggZGYxNTIzMzRjZWI2NmMxMTRiNWU3
YmI4ODdiNTlmNDFlZThhOWI4NC4uOWNjYzRmMmZjMWY5ZWEzNmFiNzIyMDliNjkxZDg3NTRmNDE4
NzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgIlJlY2VpdmVyTWF0Y2hlci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02
Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQogICAgIE1l
c3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQog
ICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
SUQ7IH0KKyAgICBib29sIG1hdGNoZXMoY29uc3QgUmVjZWl2ZXJNYXRjaGVyJiBtYXRjaGVyKSBj
b25zdCB7IHJldHVybiBtYXRjaGVyLm1hdGNoZXMobWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZXN0
aW5hdGlvbklEKCkpOyB9CiAKICAgICBib29sIGlzU3luY01lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtZXNzYWdlSXNTeW5jKG1lc3NhZ2VOYW1lKCkpOyB9CiAgICAgU2hvdWxkRGlzcGF0Y2hXaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSBzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAppbmRleCBlNmRkYjM3ODc0ZjgzMzUzNDdjMTY0NGY0
MDgxMDYwMjJlMjBkMjIxLi5kZTJkNDE2ZDQ5OTNkMWRmOTg5NTUyOGYxOTZlYjYwZjFmNTE1YzRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcApAQCAtMjksNDQgKzI5LDY3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi12
b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3RvcmVUeXBlJiYgcXVldWUsIFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVy
TWF0Y2hlciBtYXRjaGVyKQogewotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgaWYgKG1f
cXVldWVzLmNvbnRhaW5zKGtleSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8y
MzgzOTEuCi0gICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSByZWNlaXZlciAiIDw8
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSkgPDwgIiBmb3IgZGVzdGluYXRpb24g
IiA8PCBkZXN0aW5hdGlvbklEKTsKKyAgICBpZiAoIW1hdGNoZXIucmVjZWl2ZXJOYW1lKSB7Cisg
ICAgICAgIEFTU0VSVCghbV9hbnlSZWNlaXZlclF1ZXVlKTsKKyAgICAgICAgbV9hbnlSZWNlaXZl
clF1ZXVlID0gV1RGTW92ZShxdWV1ZSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9x
dWV1ZXMuYWRkKGtleSwgV1RGTW92ZShxdWV1ZSkpOworICAgIHVpbnQ4X3QgcmVjZWl2ZXJOYW1l
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJOYW1lKTsKKyAgICBpZiAo
IW1hdGNoZXIuZGVzdGluYXRpb25JRCkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fYW55SURR
dWV1ZXMuYWRkKHJlY2VpdmVyTmFtZSwgV1RGTW92ZShxdWV1ZSkpOworICAgICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
YW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIz
ODM5MS4KKyAgICAgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSBhbnkgaWQgcmVj
ZWl2ZXIgIiA8PCBzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gcmVzdWx0ID0gbV9xdWV1ZXMuYWRk
KHN0ZDo6bWFrZV9wYWlyKHJlY2VpdmVyTmFtZSwgKm1hdGNoZXIuZGVzdGluYXRpb25JRCksIFdU
Rk1vdmUocXVldWUpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwOjpyZW1vdmUoUmVjZWl2ZXJNYXRjaGVyIG1hdGNoZXIpCiB7Ci0gICAgYXV0
byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUp
LCBkZXN0aW5hdGlvbklEKTsKLSAgICBpZiAoIW1fcXVldWVzLmNvbnRhaW5zKGtleSkpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5v
cmcvYi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCi0gICAgICAgIEFMV0FZU19MT0df
V0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUgLSBm
YWlsZWQgdG8gcmVtb3ZlIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2
ZXJOYW1lKSA8PCAiIHdpdGggZGVzdGluYXRpb24gIiA8PCBkZXN0aW5hdGlvbklEKTsKKyAgICBp
ZiAoIW1hdGNoZXIucmVjZWl2ZXJOYW1lKSB7CisgICAgICAgIEFTU0VSVChtX2FueVJlY2VpdmVy
UXVldWUpOworICAgICAgICBtX2FueVJlY2VpdmVyUXVldWUgPSBudWxscHRyOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHVpbnQ4X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJOYW1lKTsKKyAgICBpZiAoIW1hdGNoZXIuZGVzdGluYXRp
b25JRCkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fYW55SURRdWV1ZXMucmVtb3ZlKHJlY2Vp
dmVyTmFtZSk7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBhbiBhc3NlcnRpb24uIFNlZSB3ZWJraXQub3JnL2IvMjM3Njc0IGFuZCB3
ZWJraXQub3JnL2IvMjM4MzkxLgorICAgICAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShz
dHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcgZHVwbGlj
YXRlIGFueSBpZCByZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFt
ZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZXMucmVt
b3ZlKGtleSk7CisgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5yZW1vdmUoc3RkOjptYWtlX3Bh
aXIocmVjZWl2ZXJOYW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7CiB9CiAKIE1lc3NhZ2VSZWNlaXZlUXVldWUqIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXA6OmdldChjb25zdCBEZWNvZGVyJiBtZXNzYWdlKSBjb25zdAogewotICAg
IGlmIChtX3F1ZXVlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1
dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpLCAwKTsKLSAgICBhdXRvIGl0ID0gbV9xdWV1ZXMuZmluZChrZXkp
OwotICAgIGlmIChpdCA9PSBtX3F1ZXVlcy5lbmQoKSkgewotICAgICAgICBrZXkuc2Vjb25kID0g
bWVzc2FnZS5kZXN0aW5hdGlvbklEKCk7Ci0gICAgICAgIGlmIChrZXkuc2Vjb25kKQotICAgICAg
ICAgICAgaXQgPSBtX3F1ZXVlcy5maW5kKGtleSk7CisgICAgdWludDhfdCByZWNlaXZlck5hbWUg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Cisg
ICAgYXV0byBxdWV1ZUV4dHJhY3RvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJu
IHF1ZXVlLmdldCgpOyB9LAorICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkg
eyByZXR1cm4gcXVldWU7IH0KKyAgICApOworCisgICAgeworICAgICAgICBhdXRvIGl0ID0gbV9h
bnlJRFF1ZXVlcy5maW5kKHJlY2VpdmVyTmFtZSk7CisgICAgICAgIGlmIChpdCAhPSBtX2FueUlE
UXVldWVzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0
b3IsIGl0LT52YWx1ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1fcXVldWVz
LmZpbmQoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCBtZXNzYWdlLmRlc3RpbmF0aW9uSUQo
KSkpOworICAgICAgICBpZiAoaXQgIT0gbV9xdWV1ZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjp2aXNpdChxdWV1ZUV4dHJhY3RvciwgaXQtPnZhbHVlKTsKICAgICB9Ci0gICAgaWYg
KGl0ID09IG1fcXVldWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gc3RkOjp2aXNpdCgKLSAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgICAgIFtd
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0
dXJuIHF1ZXVlLmdldCgpOyB9LAotICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSog
cXVldWUpIHsgcmV0dXJuIHF1ZXVlOyB9Ci0gICAgICAgICksIGl0LT52YWx1ZSk7CisgICAgaWYg
KG1fYW55UmVjZWl2ZXJRdWV1ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRy
YWN0b3IsICptX2FueVJlY2VpdmVyUXVldWUpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmgKaW5kZXggZTQ0NDNhN2NkNmRkMWQwMTY5YjFhN2I4MzRjZTVjNzBlMmNlNzE3OS4uNjVj
MDg4ZjEzYTllNTNkMGQ2MzA2Mjc0ZWEzNjY0ZTJjZmQ0M2Y3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApAQCAtNDQsMTcg
KzQ0LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSwgbWVzc2FnZS5kZXN0aW5hdGlvbklEKCkpKTsKICAgICB9CiAKLSAgICAvLyBBZGRz
IGEgd2lsZGNhcmQgZmlsdGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4KLSAgICB2b2lkIGFkZChN
ZXNzYWdlUmVjZWl2ZVF1ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2
ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUp
KSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgcmVtb3ZlKFJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBhZGQoTWVzc2FnZVJl
Y2VpdmVRdWV1ZSYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7IGFkZEltcGwoU3Rv
cmVUeXBlKCZxdWV1ZSksIG1hdGNoZXIpOyB9CisgICAgdm9pZCBhZGQoc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VSZWNlaXZlUXVldWU+JiYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7
IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgbWF0Y2hlcik7IH0KKyAgICB2b2lk
IHJlbW92ZShSZWNlaXZlck1hdGNoZXIpOwogCiAgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZSogZ2V0
KGNvbnN0IERlY29kZXImKSBjb25zdDsKIHByaXZhdGU6CiAgICAgdXNpbmcgU3RvcmVUeXBlID0g
c3RkOjp2YXJpYW50PE1lc3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVJlY2VpdmVRdWV1ZT4+OwotICAgIHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBl
JiYsIFJlY2VpdmVyTWF0Y2hlcik7CiAgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNoTWFwPHN0ZDo6
cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgdXNpbmcgQW55SURRdWV1
ZU1hcCA9IEhhc2hNYXA8dWludDhfdCwgU3RvcmVUeXBlPjsKICAgICBRdWV1ZU1hcCBtX3F1ZXVl
czsKKyAgICBBbnlJRFF1ZXVlTWFwIG1fYW55SURRdWV1ZXM7CisgICAgc3RkOjpvcHRpb25hbDxT
dG9yZVR5cGU+IG1fYW55UmVjZWl2ZXJRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9SZWNlaXZlck1hdGNoZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWRmMTJkZGM2MWQyMWYxODJkZTVjNzRmMjZmYWIxMTQ3YTg2MWMyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmgKQEAgLTAs
MCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSVBDIHsK
Kworc3RydWN0IFJlY2VpdmVyTWF0Y2hlciB7CisgICAgLy8gTWF0Y2hlcyBhbGwgbWVzc2FnZXMu
CisgICAgUmVjZWl2ZXJNYXRjaGVyKCkgPSBkZWZhdWx0OworCisgICAgLy8gTWF0Y2hlcyBtZXNz
YWdlIHRvIHNwZWNpZmljIHJlY2VpdmVyLCBhbnkgZGVzdGluYXRpb24gSUQuCisgICAgUmVjZWl2
ZXJNYXRjaGVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCisgICAgICAgIDogcmVjZWl2ZXJO
YW1lKHJlY2VpdmVyTmFtZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdl
IHRvIHNwZWNpZmljIHJlY2VpdmVyLCBzcGVjaWZpYyBkZXN0aW5hdGlvbiBJRC4KKyAgICAvLyBO
b3RlOiBkZXN0aW5hdGlvbklEID09IDAgbWF0Y2hlcyBvbmx5IDAgaWRzLgorICAgIFJlY2VpdmVy
TWF0Y2hlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQorICAgICAgICA6IHJlY2VpdmVyTmFtZShyZWNlaXZlck5hbWUpCisgICAgICAgICwgZGVzdGlu
YXRpb25JRChkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBDcmVhdGVzIGEg
bWF0Y2hlciBmcm9tIHBhcmFtZXRlcnMgd2hlcmUgZGVzdGluYXRpb25JRCA9PSAwIG1lYW5zIGFu
eSBkZXN0aW50YXRpb24gSUQuCisgICAgc3RhdGljIFJlY2VpdmVyTWF0Y2hlciBjcmVhdGVGb3JM
ZWdhY3lBUEkoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbklEKQorICAgICAgICAgICAgcmV0dXJu
IFJlY2VpdmVyTWF0Y2hlciB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9OworICAgICAg
ICByZXR1cm4gUmVjZWl2ZXJNYXRjaGVyIHsgcmVjZWl2ZXJOYW1lIH07CisgICAgfQorCisgICAg
Ym9vbCBtYXRjaGVzKFJlY2VpdmVyTmFtZSBtYXRjaFJlY2VpdmVyTmFtZSwgdWludDY0X3QgbWF0
Y2hEZXN0aW5hdGlvbklEKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFyZWNlaXZlck5h
bWUgfHwgKCpyZWNlaXZlck5hbWUgPT0gbWF0Y2hSZWNlaXZlck5hbWUgJiYgKCFkZXN0aW5hdGlv
bklEIHx8ICpkZXN0aW5hdGlvbklEID09IG1hdGNoRGVzdGluYXRpb25JRCkpOworICAgIH0KKwor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVjZWl2ZXJOYW1lPiByZWNlaXZlck5hbWU7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZGVzdGluYXRpb25JRDsKK307CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
OTZhM2VhZjZhN2Q4ZjFmZDVkZThlYWJmOTA1MDEzZmU0OTFkYTFjNC4uMTk3YTU2YTM2YTY5MWUy
YWQ4NDc2NDc3OWFjMWM2N2RmOTQxMTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
dm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0lt
cGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmUKIHsKICAgICAvLyBGSVhNRTogQ2FuIHdlIGF2b2lkIHN5
bmNocm9ub3VzIGRpc3BhdGNoIGhlcmUgYnkgYWRqdXN0aW5nIHRoZSBhc3NlcnRpb24gaW4gYENv
bm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlYD8K
ICAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoWyZdIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMs
IHsgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEIH0pOwogICAgIH0pOwogICAgIG1fd29ya1F1
ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwogfQpAQCAtNTAsMjAgKzUwLDIwIEBAIHZv
aWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBs
KFJlY2VpdmVyTmFtZSByZWNlaXZlCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpz
dGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQogewog
ICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24t
PmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUg
fSk7CiAgICAgfSk7CiAgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7
CiB9CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNz
YWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24t
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNlaXZlck5hbWUgfSk7CiAgICAgbV93
b3JrUXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIHZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoeyByZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7CiAgICAgbV93b3JrUXVldWUucmVtb3ZlU3RyZWFt
Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjMDg4YTg3MTRlMDc3YzM0ZDMyZjNhYzc3MmVjNTZj
ZDc1NDdiMzMuLjliMjhjZTE4NjcyNTQzYWQwZTg2ZmJkNzlmMGExNzI5MTdiN2QwMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1
Miw2ICsxMzUyLDcgQEAKIAkJN0JDRjcwREUyNjE1RDA2RTAwRTRGQjcwIC8qIFNjb3BlZFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3MCAvKiBTY29wZWRSZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi87IH07CiAJCTdCRERBMzE5Mjc0N0MwNDAw
MDM4NjU5RSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07
CiAJCTdCRTM3RjkzMjdDN0NBNTEwMDdBNkNEMyAvKiBJUENTdHJlYW1UZXN0ZXJJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkUzN0Y5
MjI3QzdDNTE4MDA3QTZDRDMgLyogSVBDU3RyZWFtVGVzdGVySWRlbnRpZmllci5oICovOyB9Owor
CQk3QkU5MzI2MzI3RjVDNzVBMDBENUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkU5MzI2MjI3RjVDNzVBMDBE
NUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVyLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMy
RDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1
MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVB
QTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFF
MiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC01NTI2
LDYgKzU1MjcsNyBAQAogCQk3QkUzN0Y5NTI3QzdDRDkwMDA3QTZDRDMgLyogSVBDU3RyZWFtVGVz
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElQQ1N0cmVhbVRlc3Rlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTgg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0JFOTMyNjIyN0Y1Qzc1QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNlaXZlck1hdGNoZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZv
cm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdp
bkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNDcsNiAr
ODM0OSw3IEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZl
ck1hcC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVy
LmNwcCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5o
ICovLAorCQkJCTdCRTkzMjYyMjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZlck1hdGNoZXIuaCAq
LywKIAkJCQk3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRC
dWZmZXJDb3B5LmNwcCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVk
QnVmZmVyQ29weS5oICovLApAQCAtMTQ1MjQsNiArMTQ1MjcsNyBAQAogCQkJCTkzQjYzMUYzMjdB
QkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQjZBRTQ0MjYwOTc5OUMwMEI2RUQ1QSAvKiBSZWFzb25TUEku
aCBpbiBIZWFkZXJzICovLAorCQkJCTdCRTkzMjYzMjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZl
ck1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhEMEU4QiAv
KiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlC
MTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5Q0QyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456848</attachid>
            <date>2022-04-06 12:36:49 -0700</date>
            <delta_ts>2022-04-06 23:33:10 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-238608-20220406223647.patch</filename>
            <type>text/plain</type>
            <size>28471</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxZjBmZjNkMmU3NTZhZmIz
MTcxMjE5NGRmMjcxZjExOGUwZGNkYTkuLjRlOWVhNzNjNzc1MWU3ZTY2ODkyZDUyY2NjYTkyZWJh
MmJkODU5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjItMDQtMDYgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJUEM6OkNvbm5lY3Rpb24g
c2hvdWxkIHN1cHBvcnQgZGl2ZXJ0aW5nIGFsbCBtZXNzYWdlcyB0byBhIG1lc3NhZ2UgcXVldWUg
aW4gb3RoZXIgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2MDgKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAg
ICAgICAgUHJldmlvdXNseSwgaXQgd2FzIHBvc3NpYmxlIHRvIGRpdmVydCBhbGwgbWVzc2FnZXMg
dG8gY2VydGFpbiBSZWNlaXZlck5hbWUgdG8KKyAgICAgICAgYSBtZXNzYWdlIHF1ZXVlLiBUaGlz
IGlzIHVzZWQgaW4gSVBDIHN0cmVhbXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGQgYSBw
b3NzaWJpbGl0eSB0byBkaXZlcnQgYWxsIG1lc3NhZ2VzIHRvIGEgbWVzc2FnZSBxdWV1ZS4gSW5z
dGVhZCBvZgorICAgICAgICBwYXNzaW5nIFJlY2VpdmVyTmFtZSwgaWQgcGFpciB0byBDb25uZWN0
aW9uLCBwYXNzIG5ldyBzdHJ1Y3QgUmVjZWl2ZXJNYXRjaGVyLgorICAgICAgICBVc2UgUmVjZWl2
ZXJNYXRjaGVyIGluc3RlYWQgb2YgcGFpciBvcHRpb25hbDxSZWNlaXZlck5hbWU+LCBvcHRpb25h
bDxpZD4sIHNpbmNlCisgICAgICAgIG51bGxvcHQsIGlkIGlzIG5vdCBhIHZhbGlkIGNhc2UuCisg
ICAgICAgIFRoaXMgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZSBwYXRjaCBmb3IgdGhlIGNhc2Ugd2hl
cmUgSVBDOjpDb25uZWN0aW9uIGlzIGNyZWF0ZWQgZm9yCisgICAgICAgIHRoZSBzb2xlIHB1cnBv
c2Ugb2YgdXNpbmcgaXQgdG9nZXRoZXIgd2l0aCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAg
ICAgIFRoaXMgYWxzbyBjbGFyaWZpZXMgdGhlIG92ZXJsb2FkZWQgdXNlIG9mIGRlc3RpbmF0aW9u
SUQgMCBhcyBhIHdpbGRjYXJkIGFzIHdlbGwgYXMKKyAgICAgICAgYSB2YWxpZCBtZXNzYWdlIGRl
c3RpbmF0aW9uLgorCisgICAgICAgIEFsc28gaW1wbGVtZW50IHRoZSBwb3NzaWJpbGl0eSB0byBk
aXZlcnQgYWxsIG1lc3NhZ2VzIHRvIHBhcnRpY3VsYXIgUmVjZWl2ZXJOYW1lLAorICAgICAgICBp
ZCAwLiBQcmV2aW91c2x5IHRoaXMgd2FzIHNpZ25pZnlpbmcgdGhlIGRlc3RpbmF0aW9uIElEIHdp
bGRjYXJkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5
bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUp
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA6CisgICAgICAgIChJ
UEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwpOgorICAgICAgICAoSVBDOjpNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwOjpnZXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFk
ZCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1JlY2VpdmVyTWF0Y2hlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmguCisg
ICAgICAgIChJUEM6OlJlY2VpdmVyTWF0Y2hlcjo6UmVjZWl2ZXJNYXRjaGVyKToKKyAgICAgICAg
KElQQzo6UmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkpOgorICAgICAgICAoSVBD
OjpSZWNlaXZlck1hdGNoZXI6Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTA0
LTA2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgRnVu
Y3Rpb25EaXNwYXRjaGVyIHNob3VsZCBub3QgYmUgUmVmQ291bnRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA3YjdlMDlkMGFkYjU0NGY0YmRjNTg3N2Nm
NTJmMWJmODk3Y2IyYTBlLi42NmVkNTc2YTE0ZjU3NTE4YzA5NGIyMzRhYWYyMDk2ZmIwNjVhMjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtOTksNyAr
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQo
TWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAog
ICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLgotICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVj
dGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYs
IE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck1hdGNoZXIpOwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VT
dGF0ZT47CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
JiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKQogICAgIHJldHVybiBz
eW5jTWVzc2FnZVN0YXRlOwogfQogCi12b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6
OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1lc3NhZ2VS
ZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZVJl
Y2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVy
KQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8gZW5xdWV1ZU1hdGNo
aW5nTWVzc2FnZXNJbkNvbnRhaW5lciA9IFsmXShEZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlPiYgY29ubmVjdGlvbkFuZE1lc3NhZ2VzKSB7CiAgICAgICAgIERlcXVlPENvbm5lY3Rp
b25BbmRJbmNvbWluZ01lc3NhZ2U+IHJlc3Q7CiAgICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlv
bkFuZE1lc3NhZ2UgOiBjb25uZWN0aW9uQW5kTWVzc2FnZXMpIHsKLSAgICAgICAgICAgIGlmIChj
b25uZWN0aW9uQW5kTWVzc2FnZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25uZWN0aW9uICYmIGNv
bm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSByZWNl
aXZlck5hbWUgJiYgKGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQo
KSA9PSBkZXN0aW5hdGlvbklEIHx8ICFkZXN0aW5hdGlvbklEKSkKKyAgICAgICAgICAgIGlmIChj
b25uZWN0aW9uQW5kTWVzc2FnZS5jb25uZWN0aW9uLnB0cigpID09ICZjb25uZWN0aW9uICYmIGNv
bm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UtPm1hdGNoZXMocmVjZWl2ZXJNYXRjaGVyKSkKICAg
ICAgICAgICAgICAgICByZWNlaXZlUXVldWUuZW5xdWV1ZU1lc3NhZ2UoY29ubmVjdGlvbiwgV1RG
TW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZS5tZXNzYWdlKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgcmVzdC5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uQW5kTWVzc2FnZSkp
OwpAQCAtMzQwLDE1ICszNDAsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRFeGl0T25T
eW5jTWVzc2FnZVNlbmRGYWlsdXJlKGJvb2wgc2hvdWxkRXhpdE9uU3luY01lc3MKIAogLy8gRW5x
dWV1ZSBhbnkgcGVuZGluZyBtZXNzYWdlIHRvIHRoZSBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHRoYXQg
aXMgbWVhbnQgdG8gZ28gb24gdGhhdCBxdWV1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbWFpbnRh
aW4gdGhlIG9yZGVyaW5nIG9mCiAvLyBJUEMgbWVzc2FnZXMgYXMgc29tZSBtZXNzYWdlcyBtYXkg
Z2V0IHJlY2VpdmVkIG9uIHRoZSBJUEMgdGhyZWFkIGJlZm9yZSB0aGUgbWVzc2FnZSByZWNlaXZl
ciByZWdpc3RlcmVkIGl0c2VsZiBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENvbm5lY3Rpb246
OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNl
aXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2Fn
ZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVl
LCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewogICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOwogCi0gICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZW5xdWV1ZU1h
dGNoaW5nTWVzc2FnZXMoKnRoaXMsIHJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5lbnF1ZXVlTWF0Y2hp
bmdNZXNzYWdlcygqdGhpcywgcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOwogCiAgICAg
RGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiByZW1haW5pbmdJbmNvbWluZ01lc3NhZ2Vz
OwogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1faW5jb21pbmdNZXNzYWdlcykgewotICAgICAg
ICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAo
bWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9u
SUQpKQorICAgICAgICBpZiAobWVzc2FnZS0+bWF0Y2hlcyhyZWNlaXZlck1hdGNoZXIpKQogICAg
ICAgICAgICAgcmVjZWl2ZVF1ZXVlLmVucXVldWVNZXNzYWdlKCp0aGlzLCBXVEZNb3ZlKG1lc3Nh
Z2UpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVtYWluaW5nSW5jb21pbmdNZXNzYWdl
cy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CkBAIC0zNTYsMzMgKzM1Niw0NiBAQCB2b2lkIENv
bm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1l
c3NhZ2VSZWNlaXZlUXVldQogICAgIG1faW5jb21pbmdNZXNzYWdlcyA9IFdURk1vdmUocmVtYWlu
aW5nSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6YWRkTWVzc2FnZVJl
Y2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFt
ZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246
OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVl
LCBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQogewogICAgIExvY2tlciBpbmNvbWlu
Z01lc3NhZ2VzTG9ja2VyIHsgbV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9OwotICAgIGVucXVldWVN
YXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVRdWV1ZSwgcmVjZWl2
ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKHJlY2VpdmVR
dWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hl
cik7CisgICAgbV9yZWNlaXZlUXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hl
cik7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNl
aXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2lu
Y29taW5nTWVzc2FnZXNMb2NrIH07CisgICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShyZWNlaXZl
ck1hdGNoZXIpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
IHsKKyAgICBSZWNlaXZlck1hdGNoZXIgcmVjZWl2ZXJNYXRjaGVyID0gUmVjZWl2ZXJNYXRjaGVy
OjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKwogICAg
IGF1dG8gcmVjZWl2ZVF1ZXVlID0gbWFrZVVuaXF1ZTxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJR
dWV1ZT4od29ya1F1ZXVlLCByZWNlaXZlcik7CiAgICAgTG9ja2VyIGluY29taW5nTWVzc2FnZXNM
b2NrZXIgeyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07Ci0gICAgZW5xdWV1ZU1hdGNoaW5nTWVz
c2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKLSAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1
ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZSgqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNo
ZXIpOworICAgIG1fcmVjZWl2ZVF1ZXVlcy5hZGQoV1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNl
aXZlck1hdGNoZXIpOworfQorCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQoreworICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpj
cmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZv
aWQgQ29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogcmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCiB7CisgICAgUmVjZWl2ZXJNYXRjaGVyIHJlY2VpdmVyTWF0Y2hlciA9IFJlY2Vp
dmVyTWF0Y2hlcjo6Y3JlYXRlRm9yTGVnYWN5QVBJKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCk7CiAgICAgYXV0byByZWNlaXZlUXVldWUgPSBtYWtlVW5pcXVlPFRocmVhZE1lc3NhZ2VSZWNl
aXZlclF1ZXVlPigqcmVjZWl2ZXIpOwogICAgIExvY2tlciBpbmNvbWluZ01lc3NhZ2VzTG9ja2Vy
IHsgbV9pbmNvbWluZ01lc3NhZ2VzTG9jayB9OwotICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2Vz
VG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKCpyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGlu
YXRpb25JRCk7Ci0gICAgbV9yZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSks
IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2Fn
ZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJNYXRjaGVyKTsK
KyAgICBtX3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJN
YXRjaGVyKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
KFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lk
IENvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgcmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtX2luY29taW5nTWVzc2FnZXNMb2NrIH07Ci0gICAgbV9yZWNlaXZlUXVldWVzLnJlbW92ZShy
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkocmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2
ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCmluZGV4IGIzMTVkOThlZWNlNTJjOWIyYTM4NWVlYjFjNzQ3YzY0MWUzMzMwYTMuLjc1NGMw
OGVmYmExZTY2NThjN2U5Njc4Y2U0NTBlMWE0NGU5MmQ1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFbmNvZGVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlY2VpdmVyTWF0Y2hlci5oIgogI2luY2x1ZGUgIlRp
bWVvdXQuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvQ29uZGl0aW9uLmg+CkBAIC0yMzUsMTkgKzIzNiwyMSBAQCBwdWJsaWM6CiAKICAgICAvLyBB
ZGRzIGEgbWVzc2FnZSByZWNlaXZlIHF1ZXVlLiBUaGUgY2xpZW50IHNob3VsZCBtYWtlIHN1cmUg
dGhlIGluc3RhbmNlIGlzIHJlbW92ZWQgYmVmb3JlIGl0IGdvZXMKICAgICAvLyBvdXQgb2Ygc2Nv
cGUuCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUm
LCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKLQotICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQgPSAwKTsKKyAgICAvLyBzdGQ6Om51bGxvcHQgUmVjZWl2ZXJNYXRjaFNwZWMgbWF0Y2hl
cyBhbGwgcmVjZWl2ZXJzLgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdl
UmVjZWl2ZVF1ZXVlJiwgUmVjZWl2ZXJNYXRjaGVyKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyKTsKIAogICAgIC8vIEFkZHMgYSBtZXNzYWdlIHJl
Y2VpZXZlIHF1ZXVlIHRoYXQgZGlzcGF0Y2hlcyB0aHJvdWdoIFdvcmtRdWV1ZSB0byBXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8gS2VlcHMgdGhlIFdvcmtRdWV1ZSBhbmQgdGhlIFdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4gRGlzcGF0Y2hlZCB0YXNrcyBrZWVwIFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4KKyAgICAvLyBkZXN0aW5hdGlvbklEID09IDAgbWF0
Y2hlcyBhbGwgaWRzLgogICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2Vp
dmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCA9IDApOwotICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAw
KSB7IHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
KTsgfQorICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwogCiAgICAgLy8gQWRkcyBhIG1lc3NhZ2Ug
cmVjZWlldmUgcXVldWUgdGhhdCBkaXNwYXRjaGVzIHRocm91Z2ggVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyLgogICAgIC8vIEtlZXBzIHRoZSBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgYWxpdmUuIERpc3Bh
dGNoZWQgdGFza3Mga2VlcCB0aGUgVGhyZWFkTWVzc2FnZVJlY2VpdmVyIGFsaXZlLgorICAgIC8v
IGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIGFsbCBpZHMuCiAgICAgdm9pZCBhZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7Ci0gICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9
IDApIHsgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQpOyB9CisgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKICAgICBib29sIG9wZW4oKTsKICAgICB2
b2lkIGludmFsaWRhdGUoKTsKQEAgLTM1MSw3ICszNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoU3luY1JlcXVlc3RJRCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkoU3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUs
IFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCi0gICAgdm9pZCBlbnF1ZXVl
TWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVl
JiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKSBXVEZfUkVRVUlSRVNfTE9D
SyhtX2luY29taW5nTWVzc2FnZXNMb2NrKTsKKyAgICB2b2lkIGVucXVldWVNYXRjaGluZ01lc3Nh
Z2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck1h
dGNoZXIpIFdURl9SRVFVSVJFU19MT0NLKG1faW5jb21pbmdNZXNzYWdlc0xvY2spOwogCiAgICAg
Ly8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUuCiAgICAgdm9pZCBwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggZGYxNTIzMzRjZWI2NmMxMTRiNWU3YmI4ODdiNTlmNDFl
ZThhOWI4NC4uOWNjYzRmMmZjMWY5ZWEzNmFiNzIyMDliNjkxZDg3NTRmNDE4NzJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlJl
Y2VpdmVyTWF0Y2hlci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02Miw2ICs2Myw3IEBA
IHB1YmxpYzoKICAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQogICAgIE1lc3NhZ2VOYW1lIG1l
c3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KKyAgICBi
b29sIG1hdGNoZXMoY29uc3QgUmVjZWl2ZXJNYXRjaGVyJiBtYXRjaGVyKSBjb25zdCB7IHJldHVy
biBtYXRjaGVyLm1hdGNoZXMobWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZXN0aW5hdGlvbklEKCkp
OyB9CiAKICAgICBib29sIGlzU3luY01lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtZXNzYWdlSXNT
eW5jKG1lc3NhZ2VOYW1lKCkpOyB9CiAgICAgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSBzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcAppbmRleCBlNmRkYjM3ODc0ZjgzMzUzNDdjMTY0NGY0MDgxMDYwMjJlMjBk
MjIxLi5kZTJkNDE2ZDQ5OTNkMWRmOTg5NTUyOGYxOTZlYjYwZjFmNTE1YzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cApAQCAtMjksNDQgKzI5LDY3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi12b2lkIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXA6OmFkZEltcGwoU3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTmFtZSBy
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1lc3NhZ2VSZWNlaXZl
UXVldWVNYXA6OmFkZEltcGwoU3RvcmVUeXBlJiYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRj
aGVyKQogewotICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhf
dD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgaWYgKG1fcXVldWVzLmNvbnRh
aW5zKGtleSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlv
bi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQgYW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCi0gICAg
ICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSByZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSkgPDwgIiBmb3IgZGVzdGluYXRpb24gIiA8PCBkZXN0aW5h
dGlvbklEKTsKKyAgICBpZiAoIW1hdGNoZXIucmVjZWl2ZXJOYW1lKSB7CisgICAgICAgIEFTU0VS
VCghbV9hbnlSZWNlaXZlclF1ZXVlKTsKKyAgICAgICAgbV9hbnlSZWNlaXZlclF1ZXVlID0gV1RG
TW92ZShxdWV1ZSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZXMuYWRkKGtl
eSwgV1RGTW92ZShxdWV1ZSkpOworICAgIHVpbnQ4X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oKm1hdGNoZXIucmVjZWl2ZXJOYW1lKTsKKyAgICBpZiAoIW1hdGNoZXIuZGVz
dGluYXRpb25JRCkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fYW55SURRdWV1ZXMuYWRkKHJl
Y2VpdmVyTmFtZSwgV1RGTW92ZShxdWV1ZSkpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9u
LiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KKyAgICAg
ICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwOjphZGRJbXBsIC0gYWRkaW5nIGR1cGxpY2F0ZSBhbnkgaWQgcmVjZWl2ZXIgIiA8PCBz
dGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gcmVzdWx0ID0gbV9xdWV1ZXMuYWRkKHN0ZDo6bWFrZV9w
YWlyKHJlY2VpdmVyTmFtZSwgKm1hdGNoZXIuZGVzdGluYXRpb25JRCksIFdURk1vdmUocXVldWUp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12
b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
OjpyZW1vdmUoUmVjZWl2ZXJNYXRjaGVyIG1hdGNoZXIpCiB7Ci0gICAgYXV0byBrZXkgPSBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlv
bklEKTsKLSAgICBpZiAoIW1fcXVldWVzLmNvbnRhaW5zKGtleSkpIHsKLSAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQg
YW5kIHdlYmtpdC5vcmcvYi8yMzgzOTEuCi0gICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0o
c3RyZWFtIDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUgLSBmYWlsZWQgdG8gcmVt
b3ZlIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSA8PCAi
IHdpdGggZGVzdGluYXRpb24gIiA8PCBkZXN0aW5hdGlvbklEKTsKKyAgICBpZiAoIW1hdGNoZXIu
cmVjZWl2ZXJOYW1lKSB7CisgICAgICAgIEFTU0VSVChtX2FueVJlY2VpdmVyUXVldWUpOworICAg
ICAgICBtX2FueVJlY2VpdmVyUXVldWUgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHVpbnQ4X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNo
ZXIucmVjZWl2ZXJOYW1lKTsKKyAgICBpZiAoIW1hdGNoZXIuZGVzdGluYXRpb25JRCkgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fYW55SURRdWV1ZXMucmVtb3ZlKHJlY2VpdmVyTmFtZSk7Cisg
ICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBhbiBhc3NlcnRpb24uIFNlZSB3ZWJraXQub3JnL2IvMjM3Njc0IGFuZCB3ZWJraXQub3JnL2Iv
MjM4MzkxLgorICAgICAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1l
c3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcgZHVwbGljYXRlIGFueSBpZCBy
ZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSkpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZXMucmVtb3ZlKGtleSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5yZW1vdmUoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJO
YW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CiB9CiAKIE1lc3NhZ2VSZWNlaXZlUXVldWUqIE1lc3NhZ2VSZWNlaXZlUXVldWVN
YXA6OmdldChjb25zdCBEZWNvZGVyJiBtZXNzYWdlKSBjb25zdAogewotICAgIGlmIChtX3F1ZXVl
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8ga2V5ID0gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpLCAwKTsKLSAgICBhdXRvIGl0ID0gbV9xdWV1ZXMuZmluZChrZXkpOwotICAgIGlmIChp
dCA9PSBtX3F1ZXVlcy5lbmQoKSkgewotICAgICAgICBrZXkuc2Vjb25kID0gbWVzc2FnZS5kZXN0
aW5hdGlvbklEKCk7Ci0gICAgICAgIGlmIChrZXkuc2Vjb25kKQotICAgICAgICAgICAgaXQgPSBt
X3F1ZXVlcy5maW5kKGtleSk7CisgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgYXV0byBxdWV1
ZUV4dHJhY3RvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdldCgp
OyB9LAorICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1cm4gcXVl
dWU7IH0KKyAgICApOworCisgICAgeworICAgICAgICBhdXRvIGl0ID0gbV9hbnlJRFF1ZXVlcy5m
aW5kKHJlY2VpdmVyTmFtZSk7CisgICAgICAgIGlmIChpdCAhPSBtX2FueUlEUXVldWVzLmVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0b3IsIGl0LT52YWx1
ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1fcXVldWVzLmZpbmQoc3RkOjpt
YWtlX3BhaXIocmVjZWl2ZXJOYW1lLCBtZXNzYWdlLmRlc3RpbmF0aW9uSUQoKSkpOworICAgICAg
ICBpZiAoaXQgIT0gbV9xdWV1ZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp2aXNp
dChxdWV1ZUV4dHJhY3RvciwgaXQtPnZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGl0ID09IG1fcXVl
dWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjp2aXNp
dCgKLSAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgICAgIFtdKGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVlLmdl
dCgpOyB9LAotICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSogcXVldWUpIHsgcmV0
dXJuIHF1ZXVlOyB9Ci0gICAgICAgICksIGl0LT52YWx1ZSk7CisgICAgaWYgKG1fYW55UmVjZWl2
ZXJRdWV1ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0b3IsICptX2Fu
eVJlY2VpdmVyUXVldWUpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgKaW5kZXgg
ZTQ0NDNhN2NkNmRkMWQwMTY5YjFhN2I4MzRjZTVjNzBlMmNlNzE3OS4uNjVjMDg4ZjEzYTllNTNk
MGQ2MzA2Mjc0ZWEzNjY0ZTJjZmQ0M2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApAQCAtNDQsMTcgKzQ0LDE5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0ZDo6bWFrZV9wYWly
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVz
c2FnZS5kZXN0aW5hdGlvbklEKCkpKTsKICAgICB9CiAKLSAgICAvLyBBZGRzIGEgd2lsZGNhcmQg
ZmlsdGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4KLSAgICB2b2lkIGFkZChNZXNzYWdlUmVjZWl2
ZVF1ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKTsgfQotICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2
ZVF1ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgcmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBhZGQoTWVzc2FnZVJlY2VpdmVRdWV1ZSYg
cXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7IGFkZEltcGwoU3RvcmVUeXBlKCZxdWV1
ZSksIG1hdGNoZXIpOyB9CisgICAgdm9pZCBhZGQoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNl
aXZlUXVldWU+JiYgcXVldWUsIFJlY2VpdmVyTWF0Y2hlciBtYXRjaGVyKSB7IGFkZEltcGwoU3Rv
cmVUeXBlKFdURk1vdmUocXVldWUpKSwgbWF0Y2hlcik7IH0KKyAgICB2b2lkIHJlbW92ZShSZWNl
aXZlck1hdGNoZXIpOwogCiAgICAgTWVzc2FnZVJlY2VpdmVRdWV1ZSogZ2V0KGNvbnN0IERlY29k
ZXImKSBjb25zdDsKIHByaXZhdGU6CiAgICAgdXNpbmcgU3RvcmVUeXBlID0gc3RkOjp2YXJpYW50
PE1lc3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1
ZT4+OwotICAgIHZvaWQgYWRkSW1wbChTdG9yZVR5cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIGFkZEltcGwoU3RvcmVUeXBlJiYsIFJlY2VpdmVy
TWF0Y2hlcik7CiAgICAgdXNpbmcgUXVldWVNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90
LCB1aW50NjRfdD4sIFN0b3JlVHlwZT47CisgICAgdXNpbmcgQW55SURRdWV1ZU1hcCA9IEhhc2hN
YXA8dWludDhfdCwgU3RvcmVUeXBlPjsKICAgICBRdWV1ZU1hcCBtX3F1ZXVlczsKKyAgICBBbnlJ
RFF1ZXVlTWFwIG1fYW55SURRdWV1ZXM7CisgICAgc3RkOjpvcHRpb25hbDxTdG9yZVR5cGU+IG1f
YW55UmVjZWl2ZXJRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9SZWNlaXZlck1hdGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWRmMTJkZGM2
MWQyMWYxODJkZTVjNzRmMjZmYWIxMTQ3YTg2MWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmgKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSVBDIHsKKworc3RydWN0IFJl
Y2VpdmVyTWF0Y2hlciB7CisgICAgLy8gTWF0Y2hlcyBhbGwgbWVzc2FnZXMuCisgICAgUmVjZWl2
ZXJNYXRjaGVyKCkgPSBkZWZhdWx0OworCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdlIHRvIHNwZWNp
ZmljIHJlY2VpdmVyLCBhbnkgZGVzdGluYXRpb24gSUQuCisgICAgUmVjZWl2ZXJNYXRjaGVyKFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCisgICAgICAgIDogcmVjZWl2ZXJOYW1lKHJlY2VpdmVy
TmFtZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdlIHRvIHNwZWNpZmlj
IHJlY2VpdmVyLCBzcGVjaWZpYyBkZXN0aW5hdGlvbiBJRC4KKyAgICAvLyBOb3RlOiBkZXN0aW5h
dGlvbklEID09IDAgbWF0Y2hlcyBvbmx5IDAgaWRzLgorICAgIFJlY2VpdmVyTWF0Y2hlcihSZWNl
aXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgICAgICA6
IHJlY2VpdmVyTmFtZShyZWNlaXZlck5hbWUpCisgICAgICAgICwgZGVzdGluYXRpb25JRChkZXN0
aW5hdGlvbklEKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBDcmVhdGVzIGEgbWF0Y2hlciBmcm9t
IHBhcmFtZXRlcnMgd2hlcmUgZGVzdGluYXRpb25JRCA9PSAwIG1lYW5zIGFueSBkZXN0aW50YXRp
b24gSUQuCisgICAgc3RhdGljIFJlY2VpdmVyTWF0Y2hlciBjcmVhdGVGb3JMZWdhY3lBUEkoUmVj
ZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICB7Cisg
ICAgICAgIGlmIChkZXN0aW5hdGlvbklEKQorICAgICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTWF0
Y2hlciB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9OworICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJNYXRjaGVyIHsgcmVjZWl2ZXJOYW1lIH07CisgICAgfQorCisgICAgYm9vbCBtYXRjaGVz
KFJlY2VpdmVyTmFtZSBtYXRjaFJlY2VpdmVyTmFtZSwgdWludDY0X3QgbWF0Y2hEZXN0aW5hdGlv
bklEKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFyZWNlaXZlck5hbWUgfHwgKCpyZWNl
aXZlck5hbWUgPT0gbWF0Y2hSZWNlaXZlck5hbWUgJiYgKCFkZXN0aW5hdGlvbklEIHx8ICpkZXN0
aW5hdGlvbklEID09IG1hdGNoRGVzdGluYXRpb25JRCkpOworICAgIH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8UmVjZWl2ZXJOYW1lPiByZWNlaXZlck5hbWU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZGVzdGluYXRpb25JRDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDExOGIyMWY5YjBk
ODk0YmIzZTM5MzRiNzg5ODE0NjRhODUwN2NjYy4uMDU0NjM3MmJmYTkyYTMxYWRmZmU4NjhkMTAy
OTQyMmNlMTk5MDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFN0cmVhbU1lc3NhZ2VSZWNl
aXZlciYgcmVjZWkKIAogICAgIC8vIEZJWE1FOiBDYW4gd2UgYXZvaWQgc3luY2hyb25vdXMgZGlz
cGF0Y2ggaGVyZSBieSBhZGp1c3RpbmcgdGhlIGFzc2VydGlvbiBpbiBgQ29ubmVjdGlvbjo6ZW5x
dWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWVgPwogICAgIGNhbGxPbk1h
aW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VS
ZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQgfSk7CiAgICAgfSk7CiAgICAgbV93b3JrUXVldWUuYWRkU3RyZWFt
Q29ubmVjdGlvbigqdGhpcyk7CiB9CkBAIC01NywyMCArNTcsMjAgQEAgdm9pZCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWkKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRSZWNlaXZpbmdNZXNz
YWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQogewogICAgIGNhbGxPbk1haW5SdW5Mb29w
QW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVl
dWUoKnRoaXMsIHJlY2VpdmVyTmFtZSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUgfSk7CiAgICAgfSk7CiAgICAgbV93
b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIHZvaWQgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZl
ck5hbWUpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHJl
Y2VpdmVyTmFtZSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
KHsgcmVjZWl2ZXJOYW1lIH0pOwogICAgIG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rp
b24oKnRoaXMpOwogfQogCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246OnN0b3BSZWNlaXZp
bmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQogewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9KTsKICAgICBtX3dv
cmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKIAogICAgIGF1dG8ga2V5ID0g
c3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGlu
YXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmZDM4OGQxMGEzZmZhNDVkYzNkZDJmMGVmY2Y4ZThiZmU0NzZjM2YzLi43YTdh
YjdjMWYyZTg3YjhkMjkxMmJjMWM2Y2FkMjk1NjliYWY4NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNTIsNiArMTM1Miw3IEBA
CiAJCTdCQ0Y3MERFMjYxNUQwNkUwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdENvY29hLm1tICovOyB9OwogCQk3QkREQTMxOTI3NDdDMDQwMDAzODY1OUUgLyogKG51
bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OwogCQk3QkUzN0Y5MzI3
QzdDQTUxMDA3QTZDRDMgLyogSVBDU3RyZWFtVGVzdGVySWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JFMzdGOTIyN0M3QzUxODAwN0E2
Q0QzIC8qIElQQ1N0cmVhbVRlc3RlcklkZW50aWZpZXIuaCAqLzsgfTsKKwkJN0JFOTMyNjMyN0Y1
Qzc1QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JFOTMyNjIyN0Y1Qzc1QTAwRDVGRUZCIC8qIFJlY2Vp
dmVyTWF0Y2hlci5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4
NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5J
bmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYw
MDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNTUyMiw2ICs1NTIzLDcgQEAK
IAkJN0JFMzdGOTUyN0M3Q0Q5MDAwN0E2Q0QzIC8qIElQQ1N0cmVhbVRlc3Rlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJUENTdHJlYW1UZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTkzMjYy
MjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZlck1hdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVjZWl2ZXJNYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzQyLDYgKzgzNDQsNyBAQAogCQkJ
CTFBM0VFRDBEMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywKIAkJ
CQkxQUFCMDM3NzE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgKi8sCiAJCQkJ
MUFBQjAzNzgxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLywKKwkJCQk3QkU5
MzI2MjI3RjVDNzVBMDBENUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVyLmggKi8sCiAJCQkJN0JBQjEx
MEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAq
LywKIAkJCQkyREMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAg
Ki8sCiAJCQkJNUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAq
LywKQEAgLTE0NTA4LDYgKzE0NTExLDcgQEAKIAkJCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQg
LyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0I2QUU0NDI2MDk3OTlDMDBCNkVENUEgLyogUmVhc29uU1BJLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QkU5MzI2MzI3RjVDNzVBMDBENUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlEMjIzRkYyQkND
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456894</attachid>
            <date>2022-04-06 23:33:16 -0700</date>
            <delta_ts>2022-04-07 06:36:15 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-238608-20220407093314.patch</filename>
            <type>text/plain</type>
            <size>28717</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxZjBmZjNkMmU3NTZhZmIz
MTcxMjE5NGRmMjcxZjExOGUwZGNkYTkuLjRlOWVhNzNjNzc1MWU3ZTY2ODkyZDUyY2NjYTkyZWJh
MmJkODU5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjItMDQtMDYgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJUEM6OkNvbm5lY3Rpb24g
c2hvdWxkIHN1cHBvcnQgZGl2ZXJ0aW5nIGFsbCBtZXNzYWdlcyB0byBhIG1lc3NhZ2UgcXVldWUg
aW4gb3RoZXIgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2MDgKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAg
ICAgICAgUHJldmlvdXNseSwgaXQgd2FzIHBvc3NpYmxlIHRvIGRpdmVydCBhbGwgbWVzc2FnZXMg
dG8gY2VydGFpbiBSZWNlaXZlck5hbWUgdG8KKyAgICAgICAgYSBtZXNzYWdlIHF1ZXVlLiBUaGlz
IGlzIHVzZWQgaW4gSVBDIHN0cmVhbXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBZGQgYSBw
b3NzaWJpbGl0eSB0byBkaXZlcnQgYWxsIG1lc3NhZ2VzIHRvIGEgbWVzc2FnZSBxdWV1ZS4gSW5z
dGVhZCBvZgorICAgICAgICBwYXNzaW5nIFJlY2VpdmVyTmFtZSwgaWQgcGFpciB0byBDb25uZWN0
aW9uLCBwYXNzIG5ldyBzdHJ1Y3QgUmVjZWl2ZXJNYXRjaGVyLgorICAgICAgICBVc2UgUmVjZWl2
ZXJNYXRjaGVyIGluc3RlYWQgb2YgcGFpciBvcHRpb25hbDxSZWNlaXZlck5hbWU+LCBvcHRpb25h
bDxpZD4sIHNpbmNlCisgICAgICAgIG51bGxvcHQsIGlkIGlzIG5vdCBhIHZhbGlkIGNhc2UuCisg
ICAgICAgIFRoaXMgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZSBwYXRjaCBmb3IgdGhlIGNhc2Ugd2hl
cmUgSVBDOjpDb25uZWN0aW9uIGlzIGNyZWF0ZWQgZm9yCisgICAgICAgIHRoZSBzb2xlIHB1cnBv
c2Ugb2YgdXNpbmcgaXQgdG9nZXRoZXIgd2l0aCBJUEMgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAg
ICAgIFRoaXMgYWxzbyBjbGFyaWZpZXMgdGhlIG92ZXJsb2FkZWQgdXNlIG9mIGRlc3RpbmF0aW9u
SUQgMCBhcyBhIHdpbGRjYXJkIGFzIHdlbGwgYXMKKyAgICAgICAgYSB2YWxpZCBtZXNzYWdlIGRl
c3RpbmF0aW9uLgorCisgICAgICAgIEFsc28gaW1wbGVtZW50IHRoZSBwb3NzaWJpbGl0eSB0byBk
aXZlcnQgYWxsIG1lc3NhZ2VzIHRvIHBhcnRpY3VsYXIgUmVjZWl2ZXJOYW1lLAorICAgICAgICBp
ZCAwLiBQcmV2aW91c2x5IHRoaXMgd2FzIHNpZ25pZnlpbmcgdGhlIGRlc3RpbmF0aW9uIElEIHdp
bGRjYXJkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5
bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUp
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptYXRjaGVzIGNvbnN0KToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA6CisgICAgICAgIChJ
UEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwpOgorICAgICAgICAoSVBDOjpNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwOjpnZXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFk
ZCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1JlY2VpdmVyTWF0Y2hlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmguCisg
ICAgICAgIChJUEM6OlJlY2VpdmVyTWF0Y2hlcjo6UmVjZWl2ZXJNYXRjaGVyKToKKyAgICAgICAg
KElQQzo6UmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVGb3JMZWdhY3lBUEkpOgorICAgICAgICAoSVBD
OjpSZWNlaXZlck1hdGNoZXI6Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTA0
LTA2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgRnVu
Y3Rpb25EaXNwYXRjaGVyIHNob3VsZCBub3QgYmUgUmVmQ291bnRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA3YjdlMDlkMGFkYjU0NGY0YmRjNTg3N2Nm
NTJmMWJmODk3Y2IyYTBlLi45MTE3NzA4ZmQ4M2M1OTE5ZmU5MWRmZjFkMDYxMDI1M2MwNDU5NTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtOTksNyAr
OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQo
TWVzc2FnZU5hbWUsIHVpbnQ2NF90KT4mJiB3aWxsRGlzcGF0Y2hNZXNzYWdlID0geyB9KTsKIAog
ICAgIC8vIEFkZCBtYXRjaGluZyBwZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBwcm92aWRlZCBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLgotICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVj
dGlvbiYsIE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworICAgIHZvaWQgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYs
IE1lc3NhZ2VSZWNlaXZlUXVldWUmLCBjb25zdCBSZWNlaXZlck1hdGNoZXImKTsKIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVkPENvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGU+OwpAQCAtMTQxLDEzICsxNDEsMTMgQEAgQ29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZSYgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkKICAgICBy
ZXR1cm4gc3luY01lc3NhZ2VTdGF0ZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNlaXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdl
U3RhdGU6OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1l
c3NhZ2VSZWNlaXZlUXVldWUmIHJlY2VpdmVRdWV1ZSwgY29uc3QgUmVjZWl2ZXJNYXRjaGVyJiBy
ZWNlaXZlck1hdGNoZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAgYXV0
byBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc0luQ29udGFpbmVyID0gWyZdKERlcXVlPENvbm5lY3Rp
b25BbmRJbmNvbWluZ01lc3NhZ2U+JiBjb25uZWN0aW9uQW5kTWVzc2FnZXMpIHsKICAgICAgICAg
RGVxdWU8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gcmVzdDsKICAgICAgICAgZm9yIChh
dXRvJiBjb25uZWN0aW9uQW5kTWVzc2FnZSA6IGNvbm5lY3Rpb25BbmRNZXNzYWdlcykgewotICAg
ICAgICAgICAgaWYgKGNvbm5lY3Rpb25BbmRNZXNzYWdlLmNvbm5lY3Rpb24ucHRyKCkgPT0gJmNv
bm5lY3Rpb24gJiYgY29ubmVjdGlvbkFuZE1lc3NhZ2UubWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAoY29ubmVjdGlvbkFuZE1lc3NhZ2UubWVzc2FnZS0+
ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAg
ICAgICAgICAgaWYgKGNvbm5lY3Rpb25BbmRNZXNzYWdlLmNvbm5lY3Rpb24ucHRyKCkgPT0gJmNv
bm5lY3Rpb24gJiYgY29ubmVjdGlvbkFuZE1lc3NhZ2UubWVzc2FnZS0+bWF0Y2hlcyhyZWNlaXZl
ck1hdGNoZXIpKQogICAgICAgICAgICAgICAgIHJlY2VpdmVRdWV1ZS5lbnF1ZXVlTWVzc2FnZShj
b25uZWN0aW9uLCBXVEZNb3ZlKGNvbm5lY3Rpb25BbmRNZXNzYWdlLm1lc3NhZ2UpKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXN0LmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rp
b25BbmRNZXNzYWdlKSk7CkBAIC0zNDAsMTUgKzM0MCwxNSBAQCB2b2lkIENvbm5lY3Rpb246OnNl
dFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUoYm9vbCBzaG91bGRFeGl0T25TeW5j
TWVzcwogCiAvLyBFbnF1ZXVlIGFueSBwZW5kaW5nIG1lc3NhZ2UgdG8gdGhlIE1lc3NhZ2VSZWNl
aXZlUXVldWUgdGhhdCBpcyBtZWFudCB0byBnbyBvbiB0aGF0IHF1ZXVlLiBUaGlzIGlzIGltcG9y
dGFudCB0byBtYWludGFpbiB0aGUgb3JkZXJpbmcgb2YKIC8vIElQQyBtZXNzYWdlcyBhcyBzb21l
IG1lc3NhZ2VzIG1heSBnZXQgcmVjZWl2ZWQgb24gdGhlIElQQyB0aHJlYWQgYmVmb3JlIHRoZSBt
ZXNzYWdlIHJlY2VpdmVyIHJlZ2lzdGVyZWQgaXRzZWxmIG9uIHRoZSBtYWluIHRocmVhZC4KLXZv
aWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVl
dWUoTWVzc2FnZVJlY2VpdmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBDb25uZWN0aW9uOjplbnF1ZXVl
TWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVl
JiByZWNlaXZlUXVldWUsIGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgcmVjZWl2ZXJNYXRjaGVyKQog
ewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCi0gICAgU3luY01lc3NhZ2VTdGF0ZTo6
c2luZ2xldG9uKCkuZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoKnRoaXMsIHJlY2VpdmVRdWV1ZSwg
cmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5n
bGV0b24oKS5lbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcygqdGhpcywgcmVjZWl2ZVF1ZXVlLCByZWNl
aXZlck1hdGNoZXIpOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiByZW1h
aW5pbmdJbmNvbWluZ01lc3NhZ2VzOwogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1faW5jb21p
bmdNZXNzYWdlcykgewotICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0
aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAgICAgICBpZiAobWVzc2FnZS0+bWF0Y2hlcyhy
ZWNlaXZlck1hdGNoZXIpKQogICAgICAgICAgICAgcmVjZWl2ZVF1ZXVlLmVucXVldWVNZXNzYWdl
KCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVt
YWluaW5nSW5jb21pbmdNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CkBAIC0zNTYs
MzMgKzM1Niw0NiBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9N
ZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZlUXVldQogICAgIG1faW5jb21pbmdNZXNz
YWdlcyA9IFdURk1vdmUocmVtYWluaW5nSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAKLXZvaWQgQ29u
bmVjdGlvbjo6YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1ZXVlJiByZWNl
aXZlUXVldWUsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVzc2FnZVJlY2Vp
dmVRdWV1ZSYgcmVjZWl2ZVF1ZXVlLCBjb25zdCBSZWNlaXZlck1hdGNoZXImIHJlY2VpdmVyTWF0
Y2hlcikKIHsKICAgICBMb2NrZXIgaW5jb21pbmdNZXNzYWdlc0xvY2tlciB7IG1faW5jb21pbmdN
ZXNzYWdlc0xvY2sgfTsKLSAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2Vp
dmVRdWV1ZShyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Ci0gICAg
bV9yZWNlaXZlUXVldWVzLmFkZChyZWNlaXZlUXVldWUsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRp
b25JRCk7CisgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVldWUo
cmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOworICAgIG1fcmVjZWl2ZVF1ZXVlcy5hZGQo
cmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOworfQorCit2b2lkIENvbm5lY3Rpb246OnJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoY29uc3QgUmVjZWl2ZXJNYXRjaGVyJiByZWNlaXZlck1h
dGNoZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1faW5jb21pbmdNZXNzYWdlc0xvY2sgfTsK
KyAgICBtX3JlY2VpdmVRdWV1ZXMucmVtb3ZlKHJlY2VpdmVyTWF0Y2hlcik7CiB9CiAKIHZvaWQg
Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIm
IHJlY2VpdmVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogeworICAgIGF1dG8gcmVjZWl2ZXJN
YXRjaGVyID0gUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVXaXRoWmVyb0FzQW55RGVzdGluYXRpb24o
cmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKwogICAgIGF1dG8gcmVjZWl2ZVF1ZXVlID0g
bWFrZVVuaXF1ZTxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJRdWV1ZT4od29ya1F1ZXVlLCByZWNl
aXZlcik7CiAgICAgTG9ja2VyIGluY29taW5nTWVzc2FnZXNMb2NrZXIgeyBtX2luY29taW5nTWVz
c2FnZXNMb2NrIH07Ci0gICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZl
UXVldWUoKnJlY2VpdmVRdWV1ZSwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKLSAgICBt
X3JlY2VpdmVRdWV1ZXMuYWRkKFdURk1vdmUocmVjZWl2ZVF1ZXVlKSwgcmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2Vp
dmVRdWV1ZSgqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck1hdGNoZXIpOworICAgIG1fcmVjZWl2ZVF1
ZXVlcy5hZGQoV1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZlck1hdGNoZXIpOworfQorCit2
b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJNYXRjaGVyOjpjcmVhdGVXaXRoWmVyb0FzQW55RGVz
dGluYXRpb24ocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUs
IFRocmVhZE1lc3NhZ2VSZWNlaXZlciogcmVjZWl2ZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
CiB7CisgICAgYXV0byByZWNlaXZlck1hdGNoZXIgPSBSZWNlaXZlck1hdGNoZXI6OmNyZWF0ZVdp
dGhaZXJvQXNBbnlEZXN0aW5hdGlvbihyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAg
IGF1dG8gcmVjZWl2ZVF1ZXVlID0gbWFrZVVuaXF1ZTxUaHJlYWRNZXNzYWdlUmVjZWl2ZXJRdWV1
ZT4oKnJlY2VpdmVyKTsKICAgICBMb2NrZXIgaW5jb21pbmdNZXNzYWdlc0xvY2tlciB7IG1faW5j
b21pbmdNZXNzYWdlc0xvY2sgfTsKLSAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgqcmVjZWl2ZVF1ZXVlLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQp
OwotICAgIG1fcmVjZWl2ZVF1ZXVlcy5hZGQoV1RGTW92ZShyZWNlaXZlUXVldWUpLCByZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNz
YWdlUmVjZWl2ZVF1ZXVlKCpyZWNlaXZlUXVldWUsIHJlY2VpdmVyTWF0Y2hlcik7CisgICAgbV9y
ZWNlaXZlUXVldWVzLmFkZChXVEZNb3ZlKHJlY2VpdmVRdWV1ZSksIHJlY2VpdmVyTWF0Y2hlcik7
CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBDb25uZWN0
aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9pbmNv
bWluZ01lc3NhZ2VzTG9jayB9OwotICAgIG1fcmVjZWl2ZVF1ZXVlcy5yZW1vdmUocmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFJlY2Vp
dmVyTWF0Y2hlcjo6Y3JlYXRlV2l0aFplcm9Bc0FueURlc3RpbmF0aW9uKHJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCkpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJl
Y2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlciwgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+JiYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaAppbmRleCBiMzE1ZDk4ZWVjZTUyYzliMmEzODVlZWIxYzc0N2M2NDFlMzMzMGEzLi4y
YTNhMzIwNDhiNGM2ODFhNzc3ZGExMDJjMzE4MTM1M2ZkNGJiODNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRW5j
b2Rlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZWNlaXZlck1hdGNoZXIuaCIKICNpbmNsdWRl
ICJUaW1lb3V0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0NvbmRpdGlvbi5oPgpAQCAtMjM1LDE5ICsyMzYsMjEgQEAgcHVibGljOgogCiAgICAg
Ly8gQWRkcyBhIG1lc3NhZ2UgcmVjZWl2ZSBxdWV1ZS4gVGhlIGNsaWVudCBzaG91bGQgbWFrZSBz
dXJlIHRoZSBpbnN0YW5jZSBpcyByZW1vdmVkIGJlZm9yZSBpdCBnb2VzCiAgICAgLy8gb3V0IG9m
IHNjb3BlLgotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVRdWV1ZShNZXNzYWdlUmVjZWl2ZVF1
ZXVlJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7Ci0KLSAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEID0gMCk7CisgICAgLy8gc3RkOjpudWxsb3B0IFJlY2VpdmVyTWF0Y2hTcGVjIG1h
dGNoZXMgYWxsIHJlY2VpdmVycy4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoTWVz
c2FnZVJlY2VpdmVRdWV1ZSYsIGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYpOworICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShjb25zdCBSZWNlaXZlck1hdGNoZXImKTsKIAogICAgIC8v
IEFkZHMgYSBtZXNzYWdlIHJlY2VpZXZlIHF1ZXVlIHRoYXQgZGlzcGF0Y2hlcyB0aHJvdWdoIFdv
cmtRdWV1ZSB0byBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8gS2VlcHMgdGhlIFdv
cmtRdWV1ZSBhbmQgdGhlIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4gRGlzcGF0Y2hl
ZCB0YXNrcyBrZWVwIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciBhbGl2ZS4KKyAgICAvLyBkZXN0
aW5hdGlvbklEID09IDAgbWF0Y2hlcyBhbGwgaWRzLgogICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwotICAgIHZvaWQgcmVtb3ZlV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQgPSAwKSB7IHJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKTsgfQorICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwogCiAgICAg
Ly8gQWRkcyBhIG1lc3NhZ2UgcmVjZWlldmUgcXVldWUgdGhhdCBkaXNwYXRjaGVzIHRocm91Z2gg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyLgogICAgIC8vIEtlZXBzIHRoZSBUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIgYWxpdmUuIERpc3BhdGNoZWQgdGFza3Mga2VlcCB0aGUgVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyIGFsaXZlLgorICAgIC8vIGRlc3RpbmF0aW9uSUQgPT0gMCBtYXRjaGVzIGFsbCBpZHMuCiAg
ICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNz
YWdlUmVjZWl2ZXIqLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7Ci0gICAgdm9pZCByZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCA9IDApIHsgcmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQpOyB9CisgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKICAgICBi
b29sIG9wZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTM1MSw3ICszNTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoU3luY1JlcXVlc3RJRCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkoU3luY1JlcXVl
c3RJRCwgTWVzc2FnZU5hbWUsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwog
Ci0gICAgdm9pZCBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc1RvTWVzc2FnZVJlY2VpdmVRdWV1ZShN
ZXNzYWdlUmVjZWl2ZVF1ZXVlJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KSBXVEZfUkVRVUlSRVNfTE9DSyhtX2luY29taW5nTWVzc2FnZXNMb2NrKTsKKyAgICB2b2lkIGVu
cXVldWVNYXRjaGluZ01lc3NhZ2VzVG9NZXNzYWdlUmVjZWl2ZVF1ZXVlKE1lc3NhZ2VSZWNlaXZl
UXVldWUmLCBjb25zdCBSZWNlaXZlck1hdGNoZXImKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2luY29t
aW5nTWVzc2FnZXNMb2NrKTsKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiB3b3Jr
IHF1ZXVlLgogICAgIHZvaWQgcHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IGRmMTUyMzM0
Y2ViNjZjMTE0YjVlN2JiODg3YjU5ZjQxZWU4YTliODQuLjljY2M0ZjJmYzFmOWVhMzZhYjcyMjA5
YjY5MWQ4NzU0ZjQxODcyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNz
YWdlTmFtZXMuaCIKKyNpbmNsdWRlICJSZWNlaXZlck1hdGNoZXIuaCIKICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgUmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFt
ZSk7IH0KICAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZU5hbWU7IH0KICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CisgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFJlY2VpdmVyTWF0Y2hl
ciYgbWF0Y2hlcikgY29uc3QgeyByZXR1cm4gbWF0Y2hlci5tYXRjaGVzKG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgZGVzdGluYXRpb25JRCgpKTsgfQogCiAgICAgYm9vbCBpc1N5bmNNZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbWVzc2FnZUlzU3luYyhtZXNzYWdlTmFtZSgpKTsgfQogICAgIFNob3Vs
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgc2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKaW5kZXggZTZkZGIzNzg3NGY4
MzM1MzQ3YzE2NDRmNDA4MTA2MDIyZTIwZDIyMS4uNTgyZDI3ODE5OTkxNTdmZDIzMzQxOTY3MTdj
MzgwZGE3ZjAzMDMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKQEAgLTI5LDQ0ICsyOSw2NyBAQAogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAotdm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKFN0b3JlVHlw
ZSYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQordm9pZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjphZGRJbXBsKFN0b3JlVHlwZSYmIHF1
ZXVlLCBjb25zdCBSZWNlaXZlck1hdGNoZXImIG1hdGNoZXIpCiB7Ci0gICAgYXV0byBrZXkgPSBz
dGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5h
dGlvbklEKTsKLSAgICBpZiAobV9xdWV1ZXMuY29udGFpbnMoa2V5KSkgewotICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgYW4gYXNzZXJ0aW9uLiBTZWUgd2Via2l0Lm9yZy9iLzIzNzY3
NCBhbmQgd2Via2l0Lm9yZy9iLzIzODM5MS4KLSAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVB
TShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcgZHVw
bGljYXRlIHJlY2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSA8
PCAiIGZvciBkZXN0aW5hdGlvbiAiIDw8IGRlc3RpbmF0aW9uSUQpOworICAgIGlmICghbWF0Y2hl
ci5yZWNlaXZlck5hbWUpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FueVJlY2VpdmVyUXVldWUpOwor
ICAgICAgICBtX2FueVJlY2VpdmVyUXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlcy5hZGQoa2V5LCBXVEZNb3ZlKHF1ZXVlKSk7CisgICAg
dWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqbWF0Y2hlci5yZWNl
aXZlck5hbWUpOworICAgIGlmICghbWF0Y2hlci5kZXN0aW5hdGlvbklELmhhc192YWx1ZSgpKSB7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hbnlJRFF1ZXVlcy5hZGQocmVjZWl2ZXJOYW1lLCBX
VEZNb3ZlKHF1ZXVlKSk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBhc3NlcnRpb24uIFNlZSB3ZWJraXQu
b3JnL2IvMjM3Njc0IGFuZCB3ZWJraXQub3JnL2IvMjM4MzkxLgorICAgICAgICAgICAgQUxXQVlT
X0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZElt
cGwgLSBhZGRpbmcgZHVwbGljYXRlIGFueSBpZCByZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5hZGQoc3RkOjptYWtlX3BhaXIocmVjZWl2ZXJO
YW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSwgV1RGTW92ZShxdWV1ZSkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcDo6cmVtb3ZlKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OnJlbW92ZShjb25z
dCBSZWNlaXZlck1hdGNoZXImIG1hdGNoZXIpCiB7Ci0gICAgYXV0byBrZXkgPSBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsK
LSAgICBpZiAoIW1fcXVldWVzLmNvbnRhaW5zKGtleSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGFuIGFzc2VydGlvbi4gU2VlIHdlYmtpdC5vcmcvYi8yMzc2NzQgYW5kIHdl
YmtpdC5vcmcvYi8yMzgzOTEuCi0gICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFt
IDw8ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwOjpyZW1vdmUgLSBmYWlsZWQgdG8gcmVtb3ZlIHJl
Y2VpdmVyICIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSA8PCAiIHdpdGgg
ZGVzdGluYXRpb24gIiA8PCBkZXN0aW5hdGlvbklEKTsKKyAgICBpZiAoIW1hdGNoZXIucmVjZWl2
ZXJOYW1lKSB7CisgICAgICAgIEFTU0VSVChtX2FueVJlY2VpdmVyUXVldWUpOworICAgICAgICBt
X2FueVJlY2VpdmVyUXVldWUgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHVpbnQ4X3QgcmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKm1hdGNoZXIucmVj
ZWl2ZXJOYW1lKTsKKyAgICBpZiAoIW1hdGNoZXIuZGVzdGluYXRpb25JRC5oYXNfdmFsdWUoKSkg
eworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fYW55SURRdWV1ZXMucmVtb3ZlKHJlY2VpdmVyTmFt
ZSk7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBhbiBhc3NlcnRpb24uIFNlZSB3ZWJraXQub3JnL2IvMjM3Njc0IGFuZCB3ZWJraXQu
b3JnL2IvMjM4MzkxLgorICAgICAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0g
PDwgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXA6OmFkZEltcGwgLSBhZGRpbmcgZHVwbGljYXRlIGFu
eSBpZCByZWNlaXZlciAiIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSkpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZXMucmVtb3ZlKGtl
eSk7CisgICAgYXV0byByZXN1bHQgPSBtX3F1ZXVlcy5yZW1vdmUoc3RkOjptYWtlX3BhaXIocmVj
ZWl2ZXJOYW1lLCAqbWF0Y2hlci5kZXN0aW5hdGlvbklEKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CiB9CiAKIE1lc3NhZ2VSZWNlaXZlUXVldWUqIE1lc3NhZ2VSZWNlaXZl
UXVldWVNYXA6OmdldChjb25zdCBEZWNvZGVyJiBtZXNzYWdlKSBjb25zdAogewotICAgIGlmICht
X3F1ZXVlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8ga2V5
ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpLCAwKTsKLSAgICBhdXRvIGl0ID0gbV9xdWV1ZXMuZmluZChrZXkpOwotICAg
IGlmIChpdCA9PSBtX3F1ZXVlcy5lbmQoKSkgewotICAgICAgICBrZXkuc2Vjb25kID0gbWVzc2Fn
ZS5kZXN0aW5hdGlvbklEKCk7Ci0gICAgICAgIGlmIChrZXkuc2Vjb25kKQotICAgICAgICAgICAg
aXQgPSBtX3F1ZXVlcy5maW5kKGtleSk7CisgICAgdWludDhfdCByZWNlaXZlck5hbWUgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgYXV0
byBxdWV1ZUV4dHJhY3RvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1ZXVl
LmdldCgpOyB9LAorICAgICAgICBbXShNZXNzYWdlUmVjZWl2ZVF1ZXVlKiBxdWV1ZSkgeyByZXR1
cm4gcXVldWU7IH0KKyAgICApOworCisgICAgeworICAgICAgICBhdXRvIGl0ID0gbV9hbnlJRFF1
ZXVlcy5maW5kKHJlY2VpdmVyTmFtZSk7CisgICAgICAgIGlmIChpdCAhPSBtX2FueUlEUXVldWVz
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0b3IsIGl0
LT52YWx1ZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1fcXVldWVzLmZpbmQo
c3RkOjptYWtlX3BhaXIocmVjZWl2ZXJOYW1lLCBtZXNzYWdlLmRlc3RpbmF0aW9uSUQoKSkpOwor
ICAgICAgICBpZiAoaXQgIT0gbV9xdWV1ZXMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3Rk
Ojp2aXNpdChxdWV1ZUV4dHJhY3RvciwgaXQtPnZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGl0ID09
IG1fcXVldWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3Rk
Ojp2aXNpdCgKLSAgICAgICAgV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgICAgIFtdKGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYgcXVldWUpIHsgcmV0dXJuIHF1
ZXVlLmdldCgpOyB9LAotICAgICAgICAgICAgW10oTWVzc2FnZVJlY2VpdmVRdWV1ZSogcXVldWUp
IHsgcmV0dXJuIHF1ZXVlOyB9Ci0gICAgICAgICksIGl0LT52YWx1ZSk7CisgICAgaWYgKG1fYW55
UmVjZWl2ZXJRdWV1ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dmlzaXQocXVldWVFeHRyYWN0b3Is
ICptX2FueVJlY2VpdmVyUXVldWUpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgK
aW5kZXggZTQ0NDNhN2NkNmRkMWQwMTY5YjFhN2I4MzRjZTVjNzBlMmNlNzE3OS4uMWNiN2EyOGU0
NmE0Zjc2MGUwYjJjMGNlNmRmNzQ4OTAzYmVlNDI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaApAQCAtNDQsMTcgKzQ0LDIw
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFF1ZXVlTWFwOjppc1ZhbGlkS2V5KHN0ZDo6bWFr
ZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UubWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSwgbWVzc2FnZS5kZXN0aW5hdGlvbklEKCkpKTsKICAgICB9CiAKLSAgICAvLyBBZGRzIGEgd2ls
ZGNhcmQgZmlsdGVyIGlmIGRlc3RpbmF0aW9uSUQgPT0gMC4KLSAgICB2b2lkIGFkZChNZXNzYWdl
UmVjZWl2ZVF1ZXVlJiBxdWV1ZSwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCkgeyAgYWRkSW1wbChTdG9yZVR5cGUoJnF1ZXVlKSwgcmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
UmVjZWl2ZVF1ZXVlPiYmIHF1ZXVlLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKSB7IGFkZEltcGwoU3RvcmVUeXBlKFdURk1vdmUocXVldWUpKSwgcmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsgfQotICAgIHZvaWQgcmVtb3ZlKFJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBhZGQoTWVzc2FnZVJlY2VpdmVR
dWV1ZSYgcXVldWUsIGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYgbWF0Y2hlcikgeyBhZGRJbXBsKFN0
b3JlVHlwZSgmcXVldWUpLCBtYXRjaGVyKTsgfQorICAgIHZvaWQgYWRkKHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUmVjZWl2ZVF1ZXVlPiYmIHF1ZXVlLCBjb25zdCBSZWNlaXZlck1hdGNoZXImIG1h
dGNoZXIpIHsgYWRkSW1wbChTdG9yZVR5cGUoV1RGTW92ZShxdWV1ZSkpLCBtYXRjaGVyKTsgfQor
ICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYpOwogCiAgICAgTWVzc2FnZVJl
Y2VpdmVRdWV1ZSogZ2V0KGNvbnN0IERlY29kZXImKSBjb25zdDsKIHByaXZhdGU6CiAgICAgdXNp
bmcgU3RvcmVUeXBlID0gc3RkOjp2YXJpYW50PE1lc3NhZ2VSZWNlaXZlUXVldWUqLCBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZVJlY2VpdmVRdWV1ZT4+OwotICAgIHZvaWQgYWRkSW1wbChTdG9yZVR5
cGUmJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIGFk
ZEltcGwoU3RvcmVUeXBlJiYsIGNvbnN0IFJlY2VpdmVyTWF0Y2hlciYpOwogICAgIHVzaW5nIFF1
ZXVlTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBTdG9yZVR5cGU+
OworICAgIC8vIEtleSBpcyBSZWNlaXZlck5hbWUuIEZJWE1FOiBtYWtlIGl0IHBvc3NpYmxlIHRv
IHVzZSBSZWNlaXZlck5hbWUuCisgICAgdXNpbmcgQW55SURRdWV1ZU1hcCA9IEhhc2hNYXA8dWlu
dDhfdCwgU3RvcmVUeXBlPjsKICAgICBRdWV1ZU1hcCBtX3F1ZXVlczsKKyAgICBBbnlJRFF1ZXVl
TWFwIG1fYW55SURRdWV1ZXM7CisgICAgc3RkOjpvcHRpb25hbDxTdG9yZVR5cGU+IG1fYW55UmVj
ZWl2ZXJRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9SZWNlaXZlck1hdGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDgxY2NkYTQ3OWQ4YTE0
ZTY5YTQxYTZjOGYzMTM1NmJhY2FkZjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvUmVjZWl2ZXJNYXRjaGVyLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSVBDIHsKKworc3RydWN0IFJlY2VpdmVy
TWF0Y2hlciB7CisgICAgLy8gTWF0Y2hlcyBhbGwgbWVzc2FnZXMuCisgICAgUmVjZWl2ZXJNYXRj
aGVyKCkgPSBkZWZhdWx0OworCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdlIHRvIHNwZWNpZmljIHJl
Y2VpdmVyLCBhbnkgZGVzdGluYXRpb24gSUQuCisgICAgUmVjZWl2ZXJNYXRjaGVyKFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUpCisgICAgICAgIDogcmVjZWl2ZXJOYW1lKHJlY2VpdmVyTmFtZSkK
KyAgICB7CisgICAgfQorCisgICAgLy8gTWF0Y2hlcyBtZXNzYWdlIHRvIHNwZWNpZmljIHJlY2Vp
dmVyLCBzcGVjaWZpYyBkZXN0aW5hdGlvbiBJRC4KKyAgICAvLyBOb3RlOiBkZXN0aW5hdGlvbklE
ID09IDAgbWF0Y2hlcyBvbmx5IDAgaWRzLgorICAgIFJlY2VpdmVyTWF0Y2hlcihSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgICAgICA6IHJlY2Vp
dmVyTmFtZShyZWNlaXZlck5hbWUpCisgICAgICAgICwgZGVzdGluYXRpb25JRChkZXN0aW5hdGlv
bklEKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBDcmVhdGVzIGEgbWF0Y2hlciBmcm9tIHBhcmFt
ZXRlcnMgd2hlcmUgZGVzdGluYXRpb25JRCA9PSAwIG1lYW5zIGFueSBkZXN0aW50YXRpb24gSUQu
IERlcHJlY2F0ZWQuCisgICAgc3RhdGljIFJlY2VpdmVyTWF0Y2hlciBjcmVhdGVXaXRoWmVyb0Fz
QW55RGVzdGluYXRpb24oUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbklEKQorICAgICAgICAgICAg
cmV0dXJuIFJlY2VpdmVyTWF0Y2hlciB7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCB9Owor
ICAgICAgICByZXR1cm4gUmVjZWl2ZXJNYXRjaGVyIHsgcmVjZWl2ZXJOYW1lIH07CisgICAgfQor
CisgICAgYm9vbCBtYXRjaGVzKFJlY2VpdmVyTmFtZSBtYXRjaFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgbWF0Y2hEZXN0aW5hdGlvbklEKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFyZWNl
aXZlck5hbWUgfHwgKCpyZWNlaXZlck5hbWUgPT0gbWF0Y2hSZWNlaXZlck5hbWUgJiYgKCFkZXN0
aW5hdGlvbklEIHx8ICpkZXN0aW5hdGlvbklEID09IG1hdGNoRGVzdGluYXRpb25JRCkpOworICAg
IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8UmVjZWl2ZXJOYW1lPiByZWNlaXZlck5hbWU7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZGVzdGluYXRpb25JRDsKK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNDExOGIyMWY5YjBkODk0YmIzZTM5MzRiNzg5ODE0NjRhODUwN2NjYy4uMDU0NjM3MmJm
YTkyYTMxYWRmZmU4NjhkMTAyOTQyMmNlMTk5MDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2Vz
KFN0cmVhbU1lc3NhZ2VSZWNlaXZlciYgcmVjZWkKIAogICAgIC8vIEZJWE1FOiBDYW4gd2UgYXZv
aWQgc3luY2hyb25vdXMgZGlzcGF0Y2ggaGVyZSBieSBhZGp1c3RpbmcgdGhlIGFzc2VydGlvbiBp
biBgQ29ubmVjdGlvbjo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNUb01lc3NhZ2VSZWNlaXZlUXVl
dWVgPwogICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGlu
YXRpb25JRCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgq
dGhpcywgeyByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQgfSk7CiAgICAgfSk7CiAgICAgbV93
b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9CkBAIC01NywyMCArNTcsMjAg
QEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFN0
cmVhbU1lc3NhZ2VSZWNlaXZlciYgcmVjZWkKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKQogewogICAg
IGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJl0gewotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFk
ZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSk7CisgICAgICAgIG1fY29u
bmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgeyByZWNlaXZlck5hbWUgfSk7
CiAgICAgfSk7CiAgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7CiB9
CiAKIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFtZSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKHsgcmVjZWl2ZXJOYW1lIH0pOwogICAgIG1fd29ya1F1ZXVlLnJl
bW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb246OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fY29ubmVj
dGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZSh7IHJlY2VpdmVyTmFtZSwgZGVzdGluYXRp
b25JRCB9KTsKICAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsK
IAogICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVj
ZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZDM4OGQxMGEzZmZhNDVkYzNkZDJmMGVmY2Y4
ZThiZmU0NzZjM2YzLi43YTdhYjdjMWYyZTg3YjhkMjkxMmJjMWM2Y2FkMjk1NjliYWY4NDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEzNTIsNiArMTM1Miw3IEBACiAJCTdCQ0Y3MERFMjYxNUQwNkUwMEU0RkI3MCAvKiBTY29wZWRS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVk
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICovOyB9OwogCQk3QkREQTMxOTI3NDdD
MDQwMDAzODY1OUUgLyogKG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyB9OwogCQk3QkUzN0Y5MzI3QzdDQTUxMDA3QTZDRDMgLyogSVBDU3RyZWFtVGVzdGVySWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JF
MzdGOTIyN0M3QzUxODAwN0E2Q0QzIC8qIElQQ1N0cmVhbVRlc3RlcklkZW50aWZpZXIuaCAqLzsg
fTsKKwkJN0JFOTMyNjMyN0Y1Qzc1QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JFOTMyNjIyN0Y1Qzc1
QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hlci5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBD
MkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdD
MTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1
ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElE
aWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAt
NTUyMiw2ICs1NTIzLDcgQEAKIAkJN0JFMzdGOTUyN0M3Q0Q5MDAwN0E2Q0QzIC8qIElQQ1N0cmVh
bVRlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJUENTdHJlYW1UZXN0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1
RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCRTkzMjYyMjdGNUM3NUEwMEQ1RkVGQiAvKiBSZWNlaXZlck1hdGNoZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjZWl2ZXJNYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2lu
SW5mb3JtYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzQy
LDYgKzgzNDQsNyBAQAogCQkJCTFBM0VFRDBEMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCAqLywKIAkJCQkxQUFCMDM3NzE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNl
bmRlci5jcHAgKi8sCiAJCQkJMUFBQjAzNzgxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5k
ZXIuaCAqLywKKwkJCQk3QkU5MzI2MjI3RjVDNzVBMDBENUZFRkIgLyogUmVjZWl2ZXJNYXRjaGVy
LmggKi8sCiAJCQkJN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCAqLywKIAkJCQkyREMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hh
cmVkQnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJNUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNo
YXJlZEJ1ZmZlckNvcHkuaCAqLywKQEAgLTE0NTA4LDYgKzE0NTExLDcgQEAKIAkJCQk5M0I2MzFG
MzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0I2QUU0NDI2MDk3OTlDMDBCNkVENUEgLyogUmVhc29u
U1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkU5MzI2MzI3RjVDNzVBMDBENUZFRkIgLyogUmVj
ZWl2ZXJNYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBF
OEIgLyogUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUNEMjNGRjI1RjIwMDhDQTc1MSAvKiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>