<?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>231922</bug_id>
          
          <creation_ts>2021-10-18 17:00:05 -0700</creation_ts>
          <short_desc>Add NetworkProcess stubs for push subscriptions</short_desc>
          <delta_ts>2021-10-19 22:16:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>nham</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1805782</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-18 17:00:05 -0700</bug_when>
    <thetext>Add NetworkProcess stubs for push subscriptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805791</commentid>
    <comment_count>1</comment_count>
      <attachid>441659</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-18 17:10:33 -0700</bug_when>
    <thetext>Created attachment 441659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805797</commentid>
    <comment_count>2</comment_count>
      <attachid>441661</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-18 17:16:46 -0700</bug_when>
    <thetext>Created attachment 441661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805818</commentid>
    <comment_count>3</comment_count>
      <attachid>441668</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-18 18:08:15 -0700</bug_when>
    <thetext>Created attachment 441668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805881</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-18 21:39:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/84400696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805883</commentid>
    <comment_count>5</comment_count>
      <attachid>441668</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-18 21:42:57 -0700</bug_when>
    <thetext>Comment on attachment 441668
Patch

One note is that the IPC parser didn&apos;t seem to handle a return type of Expected&lt;enum:uint8_t PushPermissionState, ExceptionData&gt; properly (its codegen tried to emit an #include&lt;enum:uint8_t ...&gt; in the cpp file). For now that IPC message just returns an Expected&lt;uint8_t, ExceptionData&gt; until I can take a look at that codegen issue in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805919</commentid>
    <comment_count>6</comment_count>
      <attachid>441668</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-19 01:50:39 -0700</bug_when>
    <thetext>Comment on attachment 441668
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        via ServiceWorkerRegistration =&gt; ServiceWorkerContainer =&gt; SWClientConnection.

Do the existing tests fully cover this case?
Maybe it is too early to do, but maybe there are some things to test (network process crash).

&gt; Source/WebCore/Modules/push-api/PushSubscription.h:62
&gt; +    WEBCORE_EXPORT PushSubscription(ServiceWorkerRegistration*, String&amp;&amp; endpoint, std::optional&lt;EpochTimeStamp&gt; expirationTime, Ref&lt;PushSubscriptionOptions&gt;&amp;&amp;, Vector&lt;uint8_t&gt;&amp;&amp; clientECDHPublicKey, Vector&lt;uint8_t&gt;&amp;&amp; auth);

It would be better to pass a Ref&lt;ServiceWorkerRegistration&gt; if possible.
If the issue is PushSubscription creation in Internals, we can always change createPushSubscription to add a ServiceWorkerRegistration as parameter.

&gt; Source/WebCore/Modules/push-api/PushSubscription.h:64
&gt; +    RefPtr&lt;ServiceWorkerRegistration&gt; m_serviceWorkerRegistration;

Would be better as a Ref.

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.h:60
&gt; +bool PushSubscriptionData::decode(Decoder&amp; decoder, PushSubscriptionData&amp; data)

Would be better to use the modern form:
template&lt;class Decoder&gt; std::optional&lt;PushSubscriptionData&gt; PushSubscriptionData::decode(Decoder&amp; decoder)

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:557
&gt; +    auto options = PushSubscriptionOptions::create(true, WTFMove(data.serverVAPIDPublicKey));

true is a bit mysterious.
I guess bool userVisibleOnly = true would be clearer.

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:581
&gt; +        promise.resolve(result.releaseReturnValue());

Can we use promise.settle(WTFMove(result))?

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:599
&gt; +        promise.resolve(createPushSubscriptionFromData(protectedRegistration, WTFMove(*optionalPushSubscriptionData)).ptr());

This triggers some count churn.
I would write it as 
RefPtr&lt;PushSubscription&gt; subscription;
if (optionalPushSubscriptionData)
     subscription = createPushSubscriptionFromData(protectedRegistration, WTFMove(*optionalPushSubscriptionData));
promise.resolve(WTFMove(subscription));

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:611
&gt; +        promise.resolve(result.releaseReturnValue());

promise.settle as well?

&gt; Source/WebCore/workers/service/WorkerSWClientConnection.cpp:224
&gt; +void WorkerSWClientConnection::subscribeToPushService(ServiceWorkerRegistrationIdentifier registrationIdentifier, const Vector&lt;uint8_t&gt;&amp; applicationServerKey, SubscribeToPushServiceCallback&amp;&amp; callback)

Could we pass a Vector&lt;uint8_t&gt;&amp;&amp; to not copy it here? It seems at the push manager layer, we have a Vector&amp;&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806286</commentid>
    <comment_count>7</comment_count>
      <attachid>441788</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-19 13:54:53 -0700</bug_when>
    <thetext>Created attachment 441788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806381</commentid>
    <comment_count>8</comment_count>
      <attachid>441788</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-19 15:45:53 -0700</bug_when>
    <thetext>Comment on attachment 441788
Patch

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

&gt; Source/WebCore/Modules/push-api/PushSubscriptionData.cpp:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

nit: 2021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806425</commentid>
    <comment_count>9</comment_count>
      <attachid>441824</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-10-19 17:26:11 -0700</bug_when>
    <thetext>Created attachment 441824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806499</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-19 22:16:37 -0700</bug_when>
    <thetext>Committed r284518 (243261@main): &lt;https://commits.webkit.org/243261@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441824.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441659</attachid>
            <date>2021-10-18 17:10:33 -0700</date>
            <delta_ts>2021-10-18 17:16:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231922-20211018171032.patch</filename>
            <type>text/plain</type>
            <size>50394</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwY2U1Yjg5OGJiMzc1
NzVjOTlmMTU4YTljYjk2N2JiZDYxNmNmZS4uMjE3NDUxYjdjZDUxOWE2NmI2YzUzYjg2NDlkZDMw
NzAzOWEyN2FhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEwLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVi
cyBmb3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCb3RoIFB1c2hNYW5hZ2VyIGFuZCBQdXNoU3Vic2NyaXB0aW9uIG5v
dyBzZW5kIHRoZWlyIHN1YnNjcmlwdGlvbiByZXF1ZXN0cyB0byBOZXR3b3JrUHJvY2VzcworICAg
ICAgICB2aWEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiA9PiBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyID0+IFNXQ2xpZW50Q29ubmVjdGlvbi4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQdXNoTWFuYWdlcjo6c3Vic2NyaWJlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hNYW5h
Z2VyOjpnZXRTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFnZXI6OnBl
cm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lv
blN0YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6dW5zdWJzY3JpYmUpOgorICAg
ICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVh
dGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWN0
aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQdXNoU3Vi
c2NyaXB0aW9uRnJvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hQZXJtaXNzaW9u
U3RhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3Vic2Ny
aWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJT
V0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFBl
cm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oOgorCiAyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdv
cmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMjU4YmI3ZWNlYjE1NTEzZmM2MDA2M2MyZGM5MjI3NWMzNjFlYzQwNi4uM2QzNTQzNmNhMTE0
N2ZiOWVlNDE3ZjNjM2I1MzU5MDdmMWUzNzkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAyMS0xMC0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTmV0
d29ya1Byb2Nlc3Mgc3R1YnMgZm9yIHB1c2ggc3Vic2NyaXB0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3R1YnMgaW4gTmV0d29ya1By
b2Nlc3MgZm9yIHB1c2ggc3Vic2NyaXB0aW9uLXJlbGF0ZWQgSVBDLiBDdXJyZW50bHkgdGhlIHN0
dWJzIHJldHVybgorICAgICAgICB0aGF0IHN1YnNjcmliaW5nIGlzIHVuc3VwcG9ydGVkIGFuZCB0
aGF0IHRoZXJlIGFyZSBubyBhY3RpdmUgcHVzaCBzdWJzY3JpcHRpb25zLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNl
cnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVuc3Vic2Ny
aWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRv
UHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRD
b25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisKIDIwMjEtMTAtMTggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBjYWxsYmFjayB0
byBrbm93IHdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHZpYSAtW1dLV2ViVmlldyBfbG9h
ZFNlcnZpY2VXb3JrZXI6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNGM3ODUxMzJlM2M0OTQ4NGZk
OGMxMjQzNjQxNWI3NWIxMjBlOTJkMS4uYWMwNjBkZGE3ZDQ4MzNjZGU4ZjQyOTE2N2Y4NGMwNjRm
MzIzZDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTQsNiArMTU0LDkgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5S
ZXBsYWNlbWVudC5oCiAgICAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dC5oCiAKKyAgICBNb2R1bGVzL3B1c2gtYXBpL1B1c2hQZXJtaXNzaW9uU3RhdGUuaAorICAgIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaAorCiAgICAgTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgKICAgICBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKICAgICBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAppbmRleCBhY2E2Y2ZmMTgzZWRiZGUxMzdkNDIxNWI0
NWQwM2Q2OTI5NjlhYjQ4Li42NDJkNTBhYTgzOGU0ZjAyMGQwZDIyYjNmZjQwOTY5N2E4YTM4YTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUHVzaE1hbmFnZXI6OnN1YnNjcmliZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzdGQ6CiAgICAgfQogICAg
IAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQotICAgIGF1dG8ga2V5RGF0YSA9IGtleURhdGFSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBrZXlEYXRhID0ga2V5RGF0YVJlc3Vs
dC5yZXR1cm5WYWx1ZSgpOwogICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9ydFJhdyhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQSwgIlAtMjU2Il9zLCBXVEZNb3ZlKGtleURh
dGEpLCBmYWxzZSwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpOwogI2Vsc2UKICAgICBhdXRvIGtleSA9
IG51bGxwdHI7CkBAIC0xMTYsMTggKzExNiwxOCBAQCB2b2lkIFB1c2hNYW5hZ2VyOjpzdWJzY3Jp
YmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RkOgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IE5vdEFsbG93ZWRFcnJvciwgIlB1c2ggcGVybWlzc2lvbiB3YXMgZGVuaWVkIl9zIH0pOwor
ICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKGtl
eURhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQog
CiB2b2lkIFB1c2hNYW5hZ2VyOjpnZXRTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElE
TE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKIHsK
LSAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24oV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQg
UHVzaE1hbmFnZXI6OnBlcm1pc3Npb25TdGF0ZShzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25PcHRpb25zSW5pdD4mJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVyYXRp
b248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
b3B0aW9ucyk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmll
ZCk7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRl
LmgKaW5kZXggNzM3MGExYzhiMmQyMjkwZTBhYWEwZjk1NGFjNTZhNTY3Y2U4OTJlYi4uZjY2MTQ1
YzhhZmJiNmU3MTM0YWRlODc4MWFiM2UzMDBlYjVlNmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKQEAgLTM3LDQg
KzM3LDE1IEBAIGVudW0gY2xhc3MgUHVzaFBlcm1pc3Npb25TdGF0ZSA6IHVpbnQ4X3QgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0
ZSwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkLAorICAgICAg
ICBXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkLAorICAgICAgICBXZWJDb3Jl
OjpQdXNoUGVybWlzc2lvblN0YXRlOjpQcm9tcHQKKyAgICA+OworfTsKK30gLy8gbmFtZXNwYWNl
IFdURgorCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKaW5kZXggZDM1
NmQ3NGYzYTY5MTliZGYxYjk3Mjc2YzU2MzkyMjZhOWQ2NmMxNy4uNWQ5MWZhOGVkMDBmZDFjYWY3
NDY2ZTdhMjI1ZWJlYTNmOGY2YTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC0zNyw4
ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCi1QdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0
aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBp
cmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiYmIG9wdGlvbnMsIFZlY3Rv
cjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIHNoYXJl
ZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9lbmRwb2ludChXVEZNb3ZlKGVuZHBvaW50
KSkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbiogcmVnaXN0cmF0aW9uLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxF
cG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFJlZjxQdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cz4mJiBvcHRpb25zLCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0
b3I8dWludDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKKyAgICA6IG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24pCisgICAgLCBtX2VuZHBvaW50KFdURk1v
dmUoZW5kcG9pbnQpKQogICAgICwgbV9leHBpcmF0aW9uVGltZShleHBpcmF0aW9uVGltZSkKICAg
ICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9jbGllbnRFQ0RIUHVibGlj
S2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkpCkBAIC04Niw3ICs4OCwxMiBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hTdWJzY3JpcHRpb246OmdldEtl
eShQdXNoRW5jcnlwdGlvbktleQogCiB2b2lkIFB1c2hTdWJzY3JpcHRpb246OnVuc3Vic2NyaWJl
KERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQi
X3MgfSk7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyBzZXJ2aWNl
IHdvcmtlciBhc3NvY2lhdGVkIHdpdGggc3Vic2NyaXB0aW9uLiJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24tPnVuc3Vi
c2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdURk1vdmUocHJvbWlzZSkpOwogfQogCiBQdXNoU3Vic2Ny
aXB0aW9uSlNPTiBQdXNoU3Vic2NyaXB0aW9uOjp0b0pTT04oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAppbmRleCA5YTYx
NTljYjJiYmJkMjY2YjBjYzk5YThjOTgwODhhNDkyNzBjYWY0Li4zMTQwMmFkZGVlZjBhZjkyNDdl
ZjdmNzNiY2FlNzJhZmVkZDVhMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaApAQCAtNDEsNiArNDEsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczsKK2NsYXNzIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwogCiBj
bGFzcyBQdXNoU3Vic2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UHVzaFN1YnNjcmlwdGlv
bj4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFB1c2hTdWJzY3JpcHRpb24s
IFdFQkNPUkVfRVhQT1JUKTsKQEAgLTU3LDggKzU5LDkgQEAgcHVibGljOgogICAgIFB1c2hTdWJz
Y3JpcHRpb25KU09OIHRvSlNPTigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQ
T1JUIFB1c2hTdWJzY3JpcHRpb24oU3RyaW5nJiYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBv
Y2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lLCBSZWY8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+
JiYsIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90
PiYmIGF1dGgpOworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbiosIFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2No
VGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiYm
LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4m
JiBhdXRoKTsKIAorICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb247CiAgICAgU3RyaW5nIG1fZW5kcG9pbnQ7CiAgICAgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gbV9leHBpcmF0aW9uVGltZTsKICAgICBSZWY8UHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDEyOTFjNGI4YTA1YzFjYjMzOTA4NDU3OTcxOTFhYmFlMWJhMzlkYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQdXNoU3Vic2NyaXB0aW9uRGF0YSBQdXNo
U3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBQdXNoU3Vic2Ny
aXB0aW9uRGF0YSByZXN1bHQ7CisgICAgcmVzdWx0LmVuZHBvaW50ID0gZW5kcG9pbnQuaXNvbGF0
ZWRDb3B5KCk7CisgICAgcmVzdWx0LmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWU7Cisg
ICAgcmVzdWx0LnNlcnZlclZBUElEUHVibGljS2V5ID0gc2VydmVyVkFQSURQdWJsaWNLZXk7Cisg
ICAgcmVzdWx0LmNsaWVudEVDREhQdWJsaWNLZXkgPSBjbGllbnRFQ0RIUHVibGljS2V5OworICAg
IHJlc3VsdC5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCA9IHNoYXJlZEF1dGhlbnRpY2F0aW9u
U2VjcmV0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY0Y2RjYTVjMGExMjkwMDEyMGU3NjhlZWMyNWFkMTk5YTJlOTQ0YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25E
YXRhLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8V2ViQ29yZS9FcG9jaFRpbWVTdGFt
cC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKKyAgICBTdHJpbmcgZW5kcG9pbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWU7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcnZlclZBUElEUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50
OF90PiBjbGllbnRFQ0RIUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBzaGFyZWRBdXRo
ZW50aWNhdGlvblNlY3JldDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb25E
YXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFB1c2hTdWJz
Y3JpcHRpb25EYXRhJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQdXNo
U3Vic2NyaXB0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBlbmRwb2ludDsKKyAgICBlbmNvZGVyIDw8IGV4cGlyYXRpb25UaW1lOworICAg
IGVuY29kZXIgPDwgc2VydmVyVkFQSURQdWJsaWNLZXk7CisgICAgZW5jb2RlciA8PCBjbGllbnRF
Q0RIUHVibGljS2V5OworICAgIGVuY29kZXIgPDwgc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFB1c2hTdWJzY3JpcHRpb25EYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHVzaFN1YnNjcmlwdGlvbkRhdGEmIGRhdGEpCit7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZHBvaW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4cGlyYXRpb25UaW1lKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNl
cnZlclZBUElEUHVibGljS2V5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2hhcmVkQXV0aGVudGljYXRp
b25TZWNyZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3N2UyNDMzYzUwMTYzOTUyMGQwMTI3ZWQxYmI1NDBmZGEy
NzkyNmZhLi5mZTBlM2Q1NGVjM2Y0YTE4NjI0ZGEyMzhkMWE4NjljYzYwY2Y5MTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjIzLDYgKzIyMyw3IEBAIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0
dXJlSW5QaWN0dXJlV2luZG93LmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbi5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblB1c2hBUEkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWQ2ZTM1MDY4M2YzYjc0OWM4NjhiYzAyYWY5
ZDNjMzkyODZlMzlmMy4uOWE3OTdkOGE1NTVlNjBmM2I5MDdmYjRlOGZmYzY2Njk4NzJhNjBjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTQwNiw4ICs1NDA2LDkgQEAKIAkJRUIwRkI3MEEyNzBEMEIxQjAwRjc4MTBEIC8qIFB1
c2hTdWJzY3JpcHRpb25KU09OLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFQjBGQjcwMzI3MEQwQUVCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpT
T04uaCAqLzsgfTsKIAkJRUIwRkI3MEMyNzBEMEIyOTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRp
b25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQjBGQjcwNjI3MEQwQUVDMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCAq
LzsgfTsKIAkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRp
b25zSW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RUIwRkI3MDEyNzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5o
ICovOyB9OworCQlFQjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjhF
RDQxMjcxN0FCQTkwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgxMjcxMDA2NzEw
MDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmgg
Ki87IH07Ci0JCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM3
ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovOyB9OworCQlFQkI5
NzM4MjI3MTAwNjc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzcz
MkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oICovOyB9OwogCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVB
ODggLyogU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCRTVCMjI0MjQ1QTI2RUUwMDNBNUE4OCAvKiBT
UUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5
cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
ICovOyB9OwpAQCAtMTY4NTUsNiArMTY4NTYsOCBAQAogCQlFQjBGQjcwNTI3MEQwQUVCMDBGNzgx
MEQgLyogUHVzaFN1YnNjcmlwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMEZCNzA2MjcwRDBBRUMwMEY3ODEwRCAvKiBQ
dXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9u
T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjBGQjcwNzI3MEQwQUVD
MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2Ny
aXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMjhFRDQxMjcxN0FCQTkw
MDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vi
c2NyaXB0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjI4RUQ0MzI3
MTdBQkE5MDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFQkI5NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uUHVzaEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
UHVzaEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUy
MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMDA0Myw2ICsyMDA0Niw4IEBACiAJCQkJRUIwRkI3MDQyNzBEMEFFQjAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb24uY3BwICovLAogCQkJCUVCMEZCNzA3MjcwRDBBRUMw
MEY3ODEwRCAvKiBQdXNoU3Vic2NyaXB0aW9uLmggKi8sCiAJCQkJRUIwRkI3MDUyNzBEMEFFQjAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb24uaWRsICovLAorCQkJCUVCMjhFRDQzMjcxN0FCQTkw
MDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAgKi8sCisJCQkJRUIyOEVENDEyNzE3
QUJBOTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi8sCiAJCQkJRUIwRkI3MDMy
NzBEMEFFQjAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmggKi8sCiAJCQkJRUIwRkI3
MDIyNzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmlkbCAqLywKIAkJCQlF
QjBGQjZGQjI3MEQwQUU2MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwICov
LApAQCAtMzQ5MDgsNiArMzQ5MTMsNyBAQAogCQkJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAv
KiBQdXNoUGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q1MTFGNjI1MEMx
Q0JGMDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcw
OTI3MEQwQjE4MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRUIyOEVENDQyNzE3QUMxMTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFQjBGQjcwQTI3MEQwQjFCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlw
dGlvbkpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzBDMjcwRDBCMjkwMEY3ODEwRCAv
KiBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MEQy
NzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTIwZjI0ODVmMTFj
ODU4NjAxNDQxMTBmNmIxZDMzYTBjZDNiNDBiNC4uN2Y5ZGE5MWQzNzQ5MDYzMGFlYmJmMTRhOWYw
NzE5NDgzOGFhM2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjU0
Nyw3ICs2NTQ3LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IEludGVybmFsczo6Y3JlYXRl
UHVzaFN1YnNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGVuZHBvaW4KICAgICBWZWN0b3I8dWludDhf
dD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNs
aWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNESFB1YmxpY0tleS5ieXRlTGVuZ3Ro
KCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3RoKCkgfTsKIAotICAgIHJldHVybiBQ
dXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRp
bWUsIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUodXNlclZpc2libGVPbmx5LCBXVEZN
b3ZlKG15U2VydmVyVkFQSURQdWJsaWNLZXkpKSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNL
ZXkpLCBXVEZNb3ZlKG15QXV0aCkpOworICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVh
dGUobnVsbHB0ciwgV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFB1c2hTdWJz
Y3JpcHRpb25PcHRpb25zOjpjcmVhdGUodXNlclZpc2libGVPbmx5LCBXVEZNb3ZlKG15U2VydmVy
VkFQSURQdWJsaWNLZXkpKSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3Zl
KG15QXV0aCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1ZDBiZGYzZDE5ZmIwOWI4MjE1OGNh
ZThiM2ViOTI5MjM3MjllMTNmLi4xMzdlOTM1ODcwZjY5MzI2NDNhY2EyNjkyMGYzNzZlZDcwOTFh
NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlB1c2hQZXJtaXNz
aW9uU3RhdGUuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTg2LDYgKzg4LDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHdoZW5TZXJ2aWNlV29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxi
YWNrKSB7IGNhbGxiYWNrKCk7IH0KKyAgICAKKyAgICB1c2luZyBTdWJzY3JpYmVUb1B1c2hTZXJ2
aWNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFB1c2hTdWJz
Y3JpcHRpb25EYXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIHN1YnNjcmliZVRvUHVzaFNlcnZp
Y2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFN1YnNjcmliZVRvUHVzaFNlcnZpY2VDYWxsYmFj
ayYmKSA9IDA7CisgICAgCisgICAgdXNpbmcgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+OworICAg
IHZpcnR1YWwgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYm
KSA9IDA7CisgICAgCisgICAgdXNpbmcgR2V0UHVzaFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3Jp
cHRpb25EYXRhPj4mJik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2Fs
bGJhY2smJikgPSAwOworCisgICAgdXNpbmcgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxQdXNoUGVybWlzc2lvblN0YXRl
PiYmKT47CisgICAgdmlydHVhbCB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFj
ayYmKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI1MTM4MDlkZDhjZmNjM2ViY2Y0
MDg5ZWE0NTE5M2NiNzBkOWM4ZDAuLjUzNWQ5YjU0NzlhOTJkNTdiZTg0MzgwZDI3OWIwOGFkMjc3
OTE3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTUHVzaFN1YnNjcmlwdGlvbi5oIgog
I2luY2x1ZGUgIkpTU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MTcsOSArNTE5LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpkZXN0cm95Sm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIH0KIAogY29uc3Qg
Y2hhciogU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyIjsKLX0KK3sgcmV0dXJuICJT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyIjsgfQogCiBTV0NsaWVudENvbm5lY3Rpb24mIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpCiB7CkBAIC01NTAsNiAr
NTUwLDY2IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9u
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzCiAgICAgbV9yZWdpc3RyYXRpb25zLnJl
bW92ZShyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKIH0KIAorc3RhdGljIFJlZjxQdXNoU3Vi
c2NyaXB0aW9uPiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBQdXNoU3Vic2NyaXB0aW9uRGF0YSYmIGRhdGEpCit7
CisgICAgYXV0byBvcHRpb25zID0gUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZSh0cnVl
LCBXVEZNb3ZlKGRhdGEuc2VydmVyVkFQSURQdWJsaWNLZXkpKTsKKyAgICByZXR1cm4gUHVzaFN1
YnNjcmlwdGlvbjo6Y3JlYXRlKCZyZWdpc3RyYXRpb24sIFdURk1vdmUoZGF0YS5lbmRwb2ludCks
IGRhdGEuZXhwaXJhdGlvblRpbWUsIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoZGF0YS5jbGll
bnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShkYXRhLnNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0
KSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3Vic2NyaWJlVG9QdXNoU2Vy
dmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVTV0Ns
aWVudENvbm5lY3Rpb24oKS5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbi5pZGVu
dGlmaWVyKCksIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBbcHJvdGVjdGVkUmVnaXN0cmF0aW9uID0g
UmVmIHsgcmVnaXN0cmF0aW9uIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByb21pc2Uu
cmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJvbURhdGEocHJvdGVjdGVkUmVnaXN0cmF0
aW9uLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKyAgICB9KTsKK30KKwordm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQoreworICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlv
bigpLnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKGlkZW50aWZpZXIsIFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVzaFN1YnNjcmlwdGlv
bihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIERPTVByb21pc2VEZWZl
cnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+PiYmIHByb21p
c2UpCit7CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZ2V0UHVzaFN1YnNjcmlwdGlv
bihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCBbcHJvdGVjdGVkUmVnaXN0cmF0aW9uID0gUmVm
IHsgcmVnaXN0cmF0aW9uIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIG9wdGlvbmFsUHVzaFN1
YnNjcmlwdGlvbkRhdGEgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgIGlm
ICghb3B0aW9uYWxQdXNoU3Vic2NyaXB0aW9uRGF0YSkgeworICAgICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKGNyZWF0ZVB1c2hTdWJzY3JpcHRpb25Gcm9tRGF0YShwcm90ZWN0
ZWRSZWdpc3RyYXRpb24sIFdURk1vdmUoKm9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEpKS5w
dHIoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVz
aFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVyYXRpb248UHVzaFBlcm1pc3Npb25T
dGF0ZT4+JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRQ
dXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZpZXIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBwcm9taXNlLnJlc29sdmUocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9KTsK
K30KKwogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29u
dHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggZWZkZjA5NDI2YTc5
NjY0NDk1NTc0MTZlMzNjNjJlMmU2M2QwMWNjMy4uODdmNjg2MDhlNmNmMDQ5NTliMDZkMWRhOTQ4
Yjg4ZDBhMDdmYzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiUHVzaFBlcm1pc3Npb25TdGF0ZS5oIgorI2lu
Y2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTV1NlcnZlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JDbGll
bnQuaCIKQEAgLTgzLDYgKzg1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlv
bihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRp
b24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYpOwogCisgICAgdm9pZCBzdWJzY3JpYmVUb1B1
c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNl
PFB1c2hTdWJzY3JpcHRpb24+PiYmKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2
aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50
ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+Pj4mJik7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMRW51bWVyYXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworCiAgICAgU2Vy
dmljZVdvcmtlckpvYiogam9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyKTsKIAogICAgIHZv
aWQgc3RhcnRNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDMwZGI4ZDlh
YjAzY2QzOTYxMGUyYjExMDQyMTdlOTljZjNlYTI3ODQuLjBiNjgyOGM4ODdiYWUzYzBlYmViYTMw
MzI5YjI5ZTE5OWRjNmJhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTE2MSw2ICsx
NjEsNDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2NvbnRhaW5lci0+dW5yZWdpc3RlclJl
Z2lzdHJhdGlvbihpZGVudGlmaWVyKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4mJiBwcm9taXNlKQoreworICAgIGlmIChpc0Nv
bnRleHRTdG9wcGVkKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uKEludmFs
aWRTdGF0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRhaW5l
ci0+c3Vic2NyaWJlVG9QdXNoU2VydmljZSgqdGhpcywgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFdU
Rk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYm
IHByb21pc2UpCit7CisgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fY29udGFpbmVyLT51bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShp
ZGVudGlmaWVyKCksIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OmdldFB1c2hTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElETE51
bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAg
ICBpZiAoaXNDb250ZXh0U3RvcHBlZCgpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb250YWluZXItPmdldFB1c2hTdWJzY3JpcHRpb24oKnRoaXMsIFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9u
U3RhdGUoRE9NUHJvbWlzZURlZmVycmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3Rh
dGU+PiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fY29udGFpbmVyLT5nZXRQdXNoUGVybWlzc2lvblN0YXRl
KGlkZW50aWZpZXIoKSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbjo6dXBkYXRlU3RhdGVGcm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25TdGF0ZSBzdGF0ZSwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+JiYgc2VydmljZVdvcmtlcikK
IHsKICAgICBzd2l0Y2ggKHN0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCA3NDc2NjEx
OTY3Yjk0N2E3ZTJjMGRkMWI5MjdhMWZjOTI5Njk2ODkzLi41YTM0MmZkZmY5YWNlMDUwZjQ2NmYw
NmUyYzkyNjJlNDhiN2Y4OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTI5LDYgKzI5LDkg
QEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQdXNoUGVy
bWlzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUg
IlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTY5LDYgKzcyLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2
b2lkIHVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKKyAgICB2b2lkIHN1YnNj
cmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZl
cktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4m
Jik7CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShET01Qcm9taXNlRGVmZXJy
ZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKERPTVByb21p
c2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+PiYm
KTsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoRE9NUHJvbWlzZURlZmVycmVkPElE
TEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmKTsKKwogICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggMmUyNGYyNjQ3ZmViMmMwZTAxNjVmNTk5OTk2NWU3ZjVlYTAwMGEw
MC4uZTIwNzQzN2Y4NzcyMjRkZjc1MTM2ZDI2ZTA4YjYwMjY4OTY3MWIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKQEAgLTU3LDYgKzU3LDIyIEBAIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
fldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbigpCiAgICAgYXV0byB1bnJlZ2lzdGVyUmVxdWVzdHMg
PSBXVEZNb3ZlKG1fdW5yZWdpc3RlclJlcXVlc3RzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogdW5yZWdpc3RlclJlcXVlc3RzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJjb250ZXh0IHN0b3BwZWQiX3MgfSk7CisgICAgCisgICAgYXV0byBz
dWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHMgPSBXVEZNb3ZlKG1fc3Vic2NyaWJlVG9QdXNo
U2VydmljZVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3Vic2NyaWJlVG9Q
dXNoU2VydmljZVJlcXVlc3RzLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24g
eyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9wcGVkIl9zIH0pOworICAgIAorICAgIGF1dG8gdW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cyA9IFdURk1vdmUobV91bnN1YnNjcmliZUZy
b21QdXNoU2VydmljZVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogdW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2so
RXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3RvcHBlZCJfcyB9KTsKKyAgICAKKyAg
ICBhdXRvIGdldFB1c2hTdWJzY3JpcHRpb25SZXF1ZXN0cyA9IFdURk1vdmUobV9nZXRQdXNoU3Vi
c2NyaXB0aW9uUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRQdXNoU3Vi
c2NyaXB0aW9uUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7
IEFib3J0RXJyb3IsICJjb250ZXh0IHN0b3BwZWQiX3MgfSk7CisgICAgCisgICAgYXV0byBnZXRQ
dXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzID0gV1RGTW92ZShtX2dldFB1c2hQZXJtaXNzaW9u
U3RhdGVDYWxsYmFja3MpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRQdXNoUGVybWlz
c2lvblN0YXRlQ2FsbGJhY2tzLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24g
eyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9wcGVkIl9zIH0pOwogfQogCiB2b2lkIFdvcmtlclNX
Q2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKQEAgLTIwNSw2ICsyMjEsNzAgQEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rp
b246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxp
Y2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElk
ZW50aWZpZXI7CisgICAgbV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHMuYWRkKHJlcXVl
c3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBhcHBsaWNhdGlvblNlcnZlcktleV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5zdWJzY3JpYmVUb1B1c2hT
ZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBbdGhy
ZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkg
eworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0
SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3Bl
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3N1YnNjcmliZVRv
UHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBt
X3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFk
ID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyXSgp
IG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOworICAgICAgICBjb25u
ZWN0aW9uLnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgcmVz
dWx0KSB7CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3Jl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0oYXV0byYg
c2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlvbigpLm1fdW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBH
ZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9nZXRQ
dXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQs
IHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyXSgpIG11dGFibGUgewor
ICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLmdldFB1
c2hTdWJzY3JpcHRpb24ocmVnaXN0cmF0aW9uSWRlbnRpZmllciwgW3RocmVhZCA9IFdURk1vdmUo
dGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAg
IHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCkubV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVz
dHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSAr
K21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNh
bGxiYWNrcy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAK
KyAgICBjYWxsT25NYWluVGhyZWFkKFt0aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZp
ZXIsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCk7CisgICAgICAgIGNvbm5lY3Rpb24uZ2V0UHVzaFBlcm1pc3Npb25TdGF0
ZShyZWdpc3RyYXRpb25JZGVudGlmaWVyLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1
ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0Ns
aWVudENvbm5lY3Rpb24oKS5tX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3MudGFrZShy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IGM4NmVlNDU1
ZDMxMzI5NTdmMjk3OWZkZmRkOGIwMmU4OTFlMGMyMTguLjc3N2ZhYzczMWI1Y2ViZGJhNGI2YjNm
ZDU2YWY3ZTc3MWMwZGZkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTU3LDYgKzU3LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVsZUpvYihEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lk
IHNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBzdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2
aWNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2Vydmlj
ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVz
aFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24o
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25D
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxs
YmFjayYmKSBmaW5hbDsKIAogICAgIFJlZjxXb3JrZXJUaHJlYWQ+IG1fdGhyZWFkOwogCkBAIC02
NSw2ICs2OSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFJlZ2lzdHJh
dGlvbnNDYWxsYmFjaz4gbV9nZXRSZWdpc3RyYXRpb25zUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fd2hlblJlZ2lzdHJhdGlv
blJlYWR5UmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4+IG1fdW5yZWdpc3RlclJlcXVlc3RzOworICAgIEhh
c2hNYXA8dWludDY0X3QsIFN1YnNjcmliZVRvUHVzaFNlcnZpY2VDYWxsYmFjaz4gbV9zdWJzY3Jp
YmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjaz4gbV91bnN1YnNjcmliZUZyb21QdXNoU2VydmljZVJl
cXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFj
az4gbV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
R2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrPiBtX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVD
YWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDk4OGNjMTkwMTRlM2YxYTAwMWZhNjIzMjk5YWIy
YjU1NGY1YjBhODQuLmE1OGI0Y2ZkOTE4ZmY0MzZkZWE4MGQ4ZTRlMWQ5NjM2ZmNlNzRlNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC00NDgsNiArNDQ4LDM1
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAg
ICB9CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2
aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIFZlY3Rvcjx1aW50OF90PiYmIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFB1c2hTdWJzY3JpcHRpb25EYXRhLCBFeGNl
cHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0o
cmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgVU5VU0VEX1BBUkFNKGFwcGxpY2F0aW9uU2Vy
dmVyS2V5KTsKKyAgICAKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFeGNl
cHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiUHVzaCBwZXJtaXNzaW9uIHdhcyBkZW5pZWQi
X3MgfSkpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9t
UHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
cmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxi
b29sLCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBVTlVT
RURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgCisgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFN1
YnNjcmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBy
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0
ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+LCBFeGNlcHRpb25EYXRhPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CisgICAgCisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpvcHRpb25hbDxQdXNoU3Vi
c2NyaXB0aW9uRGF0YT4oc3RkOjpudWxsb3B0KSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8dWludDhfdCwgRXhjZXB0aW9uRGF0YT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwor
ICAgIAorICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFB1c2hQZXJt
aXNzaW9uU3RhdGU6OkRlbmllZCkpOworfQorCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29u
dGV4dENvbm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29ubmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb250ZXh0Q29ubmVjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjY0ZTViMzA0MzhlZDE2ZDBkMWQy
MGIyMzdlMzkzNTY2MTk2ZGIzNC4uNjk1N2FkZWY5MGZmNDNhOTUyYjM3NjkwMGE3ZDk5OTYwNjlm
YzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzMsNiArMzMs
OCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uT3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1B1c2hTdWJzY3JpcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZl
ci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgpAQCAtMTE4LDYgKzEyMCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsK
IAorICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXBwbGljYXRpb25TZXJ2
ZXJLZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V2ViQ29yZTo6UHVzaFN1YnNj
cmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24o
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0
aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGdldFB1
c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YT4mJik+JiYpOworCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKICAgICB2b2lkIGNvbnRyb2xDbGllbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyUmVn
aXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDFjOTQ2
YjBiYTVhZmY1M2RkZTFlMjYxZjFmOTRjMjMyNTlhYWU5NDUuLmUxZTJmM2JmOTI1ZDkyOTQxODk5
NzZjZTk0Yjg4ZjdkN2VmMTkzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDYsNiArNDYsMTEgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogCiAgICAgU2V0VGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIFN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpIC0+
ICgpIEFzeW5jCisKKyAgICBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFZlY3Rvcjx1aW50OF90PiBh
cHBsaWNhdGlvblNlcnZlcktleSkgLT4gKEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCisgICAgVW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+IHJlc3VsdCkgQXN5bmMKKyAgICBHZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3Rl
ZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYworICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUo
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikg
LT4gKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5
bmMgCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcAppbmRleCBlNGQ3MWZkMjNkZWJhNGRlYWQxYjEwZmRiOTQyM2JjMGI2ZTA0NjQ4Li5hZDRm
YjBhYjc4YzJkZGFmMjdjZGY3NDE2ZDEwNmNiOWRmNDc1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTI2NCw2ICsyNjQsNDIgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0b3Jl
UmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXIKICAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RvcmVSZWdp
c3RyYXRpb25zT25EaXNrIHsgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hT
ZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3Vic2NyaWJlVG9QdXNoU2VydmljZSB7IHJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIGFwcGxpY2F0aW9uU2VydmVyS2V5IH0sIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2socmVzdWx0
LmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKnJlc3Vs
dCkpOworICAgIH0pOworfQorCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpVbnN1YnNjcmliZUZyb21QdXNoU2VydmljZSB7IHJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsK
KyAgICAgICAgY2FsbGJhY2soKnJlc3VsdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hTdWJz
Y3JpcHRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRQdXNoU3Vic2NyaXB0aW9uIHsgcmVn
aXN0cmF0aW9uSWRlbnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpLnRvRXhjZXB0aW9uKCkp
OworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFB1c2hQ
ZXJtaXNzaW9uU3RhdGUgeyByZWdpc3RyYXRpb25JZGVudGlmaWVyIH0sIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2socmVzdWx0LmVy
cm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgIGNhbGxiYWNrKHN0YXRpY19jYXN0PFB1c2hQ
ZXJtaXNzaW9uU3RhdGU+KCpyZXN1bHQpKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CmluZGV4IDFiNTU0Yzk0NDlkYTRlYWEyNDYxN2YxMWExMWZhNzUzYjVkNmVhZjQuLjJhY2VkYjg0
YWMzNThhNzQ2NWViMTBiMjZhYzc4NmQyNTgzOTAxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC05
MCw2ICs5MCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9u
UHJvbWlzZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgZmlu
YWw7CiAgICAgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgCisgICAgdm9pZCBzdWJzY3JpYmVUb1B1
c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1
c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNo
U2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1
c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1
c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZv
aWQgc2NoZWR1bGVTdG9yYWdlSm9iKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRh
Jik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441661</attachid>
            <date>2021-10-18 17:16:46 -0700</date>
            <delta_ts>2021-10-18 18:20:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231922-20211018171646.patch</filename>
            <type>text/plain</type>
            <size>50082</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwY2U1Yjg5OGJiMzc1
NzVjOTlmMTU4YTljYjk2N2JiZDYxNmNmZS4uMjE3NDUxYjdjZDUxOWE2NmI2YzUzYjg2NDlkZDMw
NzAzOWEyN2FhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEwLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVi
cyBmb3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCb3RoIFB1c2hNYW5hZ2VyIGFuZCBQdXNoU3Vic2NyaXB0aW9uIG5v
dyBzZW5kIHRoZWlyIHN1YnNjcmlwdGlvbiByZXF1ZXN0cyB0byBOZXR3b3JrUHJvY2VzcworICAg
ICAgICB2aWEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiA9PiBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyID0+IFNXQ2xpZW50Q29ubmVjdGlvbi4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQdXNoTWFuYWdlcjo6c3Vic2NyaWJlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hNYW5h
Z2VyOjpnZXRTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFnZXI6OnBl
cm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lv
blN0YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6dW5zdWJzY3JpYmUpOgorICAg
ICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVh
dGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWN0
aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQdXNoU3Vi
c2NyaXB0aW9uRnJvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hQZXJtaXNzaW9u
U3RhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3Vic2Ny
aWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJT
V0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFBl
cm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oOgorCiAyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdv
cmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMjU4YmI3ZWNlYjE1NTEzZmM2MDA2M2MyZGM5MjI3NWMzNjFlYzQwNi4uM2QzNTQzNmNhMTE0
N2ZiOWVlNDE3ZjNjM2I1MzU5MDdmMWUzNzkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAyMS0xMC0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTmV0
d29ya1Byb2Nlc3Mgc3R1YnMgZm9yIHB1c2ggc3Vic2NyaXB0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3R1YnMgaW4gTmV0d29ya1By
b2Nlc3MgZm9yIHB1c2ggc3Vic2NyaXB0aW9uLXJlbGF0ZWQgSVBDLiBDdXJyZW50bHkgdGhlIHN0
dWJzIHJldHVybgorICAgICAgICB0aGF0IHN1YnNjcmliaW5nIGlzIHVuc3VwcG9ydGVkIGFuZCB0
aGF0IHRoZXJlIGFyZSBubyBhY3RpdmUgcHVzaCBzdWJzY3JpcHRpb25zLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNl
cnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVuc3Vic2Ny
aWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRv
UHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRD
b25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisKIDIwMjEtMTAtMTggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBjYWxsYmFjayB0
byBrbm93IHdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHZpYSAtW1dLV2ViVmlldyBfbG9h
ZFNlcnZpY2VXb3JrZXI6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNGM3ODUxMzJlM2M0OTQ4NGZk
OGMxMjQzNjQxNWI3NWIxMjBlOTJkMS4uYWMwNjBkZGE3ZDQ4MzNjZGU4ZjQyOTE2N2Y4NGMwNjRm
MzIzZDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTQsNiArMTU0LDkgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5S
ZXBsYWNlbWVudC5oCiAgICAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dC5oCiAKKyAgICBNb2R1bGVzL3B1c2gtYXBpL1B1c2hQZXJtaXNzaW9uU3RhdGUuaAorICAgIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaAorCiAgICAgTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgKICAgICBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKICAgICBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAppbmRleCBhY2E2Y2ZmMTgzZWRiZGUxMzdkNDIxNWI0
NWQwM2Q2OTI5NjlhYjQ4Li42NDJkNTBhYTgzOGU0ZjAyMGQwZDIyYjNmZjQwOTY5N2E4YTM4YTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUHVzaE1hbmFnZXI6OnN1YnNjcmliZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzdGQ6CiAgICAgfQogICAg
IAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQotICAgIGF1dG8ga2V5RGF0YSA9IGtleURhdGFSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBrZXlEYXRhID0ga2V5RGF0YVJlc3Vs
dC5yZXR1cm5WYWx1ZSgpOwogICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9ydFJhdyhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQSwgIlAtMjU2Il9zLCBXVEZNb3ZlKGtleURh
dGEpLCBmYWxzZSwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpOwogI2Vsc2UKICAgICBhdXRvIGtleSA9
IG51bGxwdHI7CkBAIC0xMTYsMTggKzExNiwxOCBAQCB2b2lkIFB1c2hNYW5hZ2VyOjpzdWJzY3Jp
YmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RkOgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IE5vdEFsbG93ZWRFcnJvciwgIlB1c2ggcGVybWlzc2lvbiB3YXMgZGVuaWVkIl9zIH0pOwor
ICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKGtl
eURhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQog
CiB2b2lkIFB1c2hNYW5hZ2VyOjpnZXRTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElE
TE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKIHsK
LSAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24oV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQg
UHVzaE1hbmFnZXI6OnBlcm1pc3Npb25TdGF0ZShzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25PcHRpb25zSW5pdD4mJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVyYXRp
b248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
b3B0aW9ucyk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmll
ZCk7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRl
LmgKaW5kZXggNzM3MGExYzhiMmQyMjkwZTBhYWEwZjk1NGFjNTZhNTY3Y2U4OTJlYi4uZjY2MTQ1
YzhhZmJiNmU3MTM0YWRlODc4MWFiM2UzMDBlYjVlNmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKQEAgLTM3LDQg
KzM3LDE1IEBAIGVudW0gY2xhc3MgUHVzaFBlcm1pc3Npb25TdGF0ZSA6IHVpbnQ4X3QgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0
ZSwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkLAorICAgICAg
ICBXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkLAorICAgICAgICBXZWJDb3Jl
OjpQdXNoUGVybWlzc2lvblN0YXRlOjpQcm9tcHQKKyAgICA+OworfTsKK30gLy8gbmFtZXNwYWNl
IFdURgorCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKaW5kZXggZDM1
NmQ3NGYzYTY5MTliZGYxYjk3Mjc2YzU2MzkyMjZhOWQ2NmMxNy4uNWQ5MWZhOGVkMDBmZDFjYWY3
NDY2ZTdhMjI1ZWJlYTNmOGY2YTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC0zNyw4
ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCi1QdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0
aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBp
cmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiYmIG9wdGlvbnMsIFZlY3Rv
cjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIHNoYXJl
ZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9lbmRwb2ludChXVEZNb3ZlKGVuZHBvaW50
KSkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbiogcmVnaXN0cmF0aW9uLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxF
cG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFJlZjxQdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cz4mJiBvcHRpb25zLCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0
b3I8dWludDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKKyAgICA6IG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24pCisgICAgLCBtX2VuZHBvaW50KFdURk1v
dmUoZW5kcG9pbnQpKQogICAgICwgbV9leHBpcmF0aW9uVGltZShleHBpcmF0aW9uVGltZSkKICAg
ICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9jbGllbnRFQ0RIUHVibGlj
S2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkpCkBAIC04Niw3ICs4OCwxMiBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hTdWJzY3JpcHRpb246OmdldEtl
eShQdXNoRW5jcnlwdGlvbktleQogCiB2b2lkIFB1c2hTdWJzY3JpcHRpb246OnVuc3Vic2NyaWJl
KERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQi
X3MgfSk7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyBzZXJ2aWNl
IHdvcmtlciBhc3NvY2lhdGVkIHdpdGggc3Vic2NyaXB0aW9uLiJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24tPnVuc3Vi
c2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdURk1vdmUocHJvbWlzZSkpOwogfQogCiBQdXNoU3Vic2Ny
aXB0aW9uSlNPTiBQdXNoU3Vic2NyaXB0aW9uOjp0b0pTT04oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAppbmRleCA5YTYx
NTljYjJiYmJkMjY2YjBjYzk5YThjOTgwODhhNDkyNzBjYWY0Li4zMTQwMmFkZGVlZjBhZjkyNDdl
ZjdmNzNiY2FlNzJhZmVkZDVhMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaApAQCAtNDEsNiArNDEsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczsKK2NsYXNzIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwogCiBj
bGFzcyBQdXNoU3Vic2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UHVzaFN1YnNjcmlwdGlv
bj4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFB1c2hTdWJzY3JpcHRpb24s
IFdFQkNPUkVfRVhQT1JUKTsKQEAgLTU3LDggKzU5LDkgQEAgcHVibGljOgogICAgIFB1c2hTdWJz
Y3JpcHRpb25KU09OIHRvSlNPTigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQ
T1JUIFB1c2hTdWJzY3JpcHRpb24oU3RyaW5nJiYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBv
Y2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lLCBSZWY8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+
JiYsIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90
PiYmIGF1dGgpOworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbiosIFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2No
VGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiYm
LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4m
JiBhdXRoKTsKIAorICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb247CiAgICAgU3RyaW5nIG1fZW5kcG9pbnQ7CiAgICAgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gbV9leHBpcmF0aW9uVGltZTsKICAgICBSZWY8UHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDEyOTFjNGI4YTA1YzFjYjMzOTA4NDU3OTcxOTFhYmFlMWJhMzlkYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQdXNoU3Vic2NyaXB0aW9uRGF0YSBQdXNo
U3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBQdXNoU3Vic2Ny
aXB0aW9uRGF0YSByZXN1bHQ7CisgICAgcmVzdWx0LmVuZHBvaW50ID0gZW5kcG9pbnQuaXNvbGF0
ZWRDb3B5KCk7CisgICAgcmVzdWx0LmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWU7Cisg
ICAgcmVzdWx0LnNlcnZlclZBUElEUHVibGljS2V5ID0gc2VydmVyVkFQSURQdWJsaWNLZXk7Cisg
ICAgcmVzdWx0LmNsaWVudEVDREhQdWJsaWNLZXkgPSBjbGllbnRFQ0RIUHVibGljS2V5OworICAg
IHJlc3VsdC5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCA9IHNoYXJlZEF1dGhlbnRpY2F0aW9u
U2VjcmV0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY0Y2RjYTVjMGExMjkwMDEyMGU3NjhlZWMyNWFkMTk5YTJlOTQ0YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25E
YXRhLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8V2ViQ29yZS9FcG9jaFRpbWVTdGFt
cC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKKyAgICBTdHJpbmcgZW5kcG9pbnQ7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWU7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcnZlclZBUElEUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50
OF90PiBjbGllbnRFQ0RIUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBzaGFyZWRBdXRo
ZW50aWNhdGlvblNlY3JldDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb25E
YXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFB1c2hTdWJz
Y3JpcHRpb25EYXRhJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQdXNo
U3Vic2NyaXB0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBlbmRwb2ludDsKKyAgICBlbmNvZGVyIDw8IGV4cGlyYXRpb25UaW1lOworICAg
IGVuY29kZXIgPDwgc2VydmVyVkFQSURQdWJsaWNLZXk7CisgICAgZW5jb2RlciA8PCBjbGllbnRF
Q0RIUHVibGljS2V5OworICAgIGVuY29kZXIgPDwgc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFB1c2hTdWJzY3JpcHRpb25EYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHVzaFN1YnNjcmlwdGlvbkRhdGEmIGRhdGEpCit7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZHBvaW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4cGlyYXRpb25UaW1lKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNl
cnZlclZBUElEUHVibGljS2V5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2hhcmVkQXV0aGVudGljYXRp
b25TZWNyZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3N2UyNDMzYzUwMTYzOTUyMGQwMTI3ZWQxYmI1NDBmZGEy
NzkyNmZhLi5mZTBlM2Q1NGVjM2Y0YTE4NjI0ZGEyMzhkMWE4NjljYzYwY2Y5MTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjIzLDYgKzIyMyw3IEBAIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0
dXJlSW5QaWN0dXJlV2luZG93LmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbi5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblB1c2hBUEkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWQ2ZTM1MDY4M2YzYjc0OWM4NjhiYzAyYWY5
ZDNjMzkyODZlMzlmMy4uOWE3OTdkOGE1NTVlNjBmM2I5MDdmYjRlOGZmYzY2Njk4NzJhNjBjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTQwNiw4ICs1NDA2LDkgQEAKIAkJRUIwRkI3MEEyNzBEMEIxQjAwRjc4MTBEIC8qIFB1
c2hTdWJzY3JpcHRpb25KU09OLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFQjBGQjcwMzI3MEQwQUVCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpT
T04uaCAqLzsgfTsKIAkJRUIwRkI3MEMyNzBEMEIyOTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRp
b25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQjBGQjcwNjI3MEQwQUVDMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCAq
LzsgfTsKIAkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRp
b25zSW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RUIwRkI3MDEyNzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5o
ICovOyB9OworCQlFQjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjhF
RDQxMjcxN0FCQTkwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgxMjcxMDA2NzEw
MDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmgg
Ki87IH07Ci0JCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM3
ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovOyB9OworCQlFQkI5
NzM4MjI3MTAwNjc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzcz
MkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oICovOyB9OwogCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVB
ODggLyogU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCRTVCMjI0MjQ1QTI2RUUwMDNBNUE4OCAvKiBT
UUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5
cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
ICovOyB9OwpAQCAtMTY4NTUsNiArMTY4NTYsOCBAQAogCQlFQjBGQjcwNTI3MEQwQUVCMDBGNzgx
MEQgLyogUHVzaFN1YnNjcmlwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMEZCNzA2MjcwRDBBRUMwMEY3ODEwRCAvKiBQ
dXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9u
T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjBGQjcwNzI3MEQwQUVD
MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2Ny
aXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMjhFRDQxMjcxN0FCQTkw
MDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vi
c2NyaXB0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjI4RUQ0MzI3
MTdBQkE5MDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFQkI5NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uUHVzaEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
UHVzaEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUy
MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMDA0Myw2ICsyMDA0Niw4IEBACiAJCQkJRUIwRkI3MDQyNzBEMEFFQjAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb24uY3BwICovLAogCQkJCUVCMEZCNzA3MjcwRDBBRUMw
MEY3ODEwRCAvKiBQdXNoU3Vic2NyaXB0aW9uLmggKi8sCiAJCQkJRUIwRkI3MDUyNzBEMEFFQjAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb24uaWRsICovLAorCQkJCUVCMjhFRDQzMjcxN0FCQTkw
MDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAgKi8sCisJCQkJRUIyOEVENDEyNzE3
QUJBOTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi8sCiAJCQkJRUIwRkI3MDMy
NzBEMEFFQjAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmggKi8sCiAJCQkJRUIwRkI3
MDIyNzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmlkbCAqLywKIAkJCQlF
QjBGQjZGQjI3MEQwQUU2MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwICov
LApAQCAtMzQ5MDgsNiArMzQ5MTMsNyBAQAogCQkJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAv
KiBQdXNoUGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q1MTFGNjI1MEMx
Q0JGMDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcw
OTI3MEQwQjE4MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRUIyOEVENDQyNzE3QUMxMTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFQjBGQjcwQTI3MEQwQjFCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlw
dGlvbkpTT04uaCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzBDMjcwRDBCMjkwMEY3ODEwRCAv
KiBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MEQy
NzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTIwZjI0ODVmMTFj
ODU4NjAxNDQxMTBmNmIxZDMzYTBjZDNiNDBiNC4uN2Y5ZGE5MWQzNzQ5MDYzMGFlYmJmMTRhOWYw
NzE5NDgzOGFhM2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjU0
Nyw3ICs2NTQ3LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IEludGVybmFsczo6Y3JlYXRl
UHVzaFN1YnNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGVuZHBvaW4KICAgICBWZWN0b3I8dWludDhf
dD4gbXlDbGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNs
aWVudEVDREhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNESFB1YmxpY0tleS5ieXRlTGVuZ3Ro
KCkgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3RoKCkgfTsKIAotICAgIHJldHVybiBQ
dXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRp
bWUsIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUodXNlclZpc2libGVPbmx5LCBXVEZN
b3ZlKG15U2VydmVyVkFQSURQdWJsaWNLZXkpKSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNL
ZXkpLCBXVEZNb3ZlKG15QXV0aCkpOworICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVh
dGUobnVsbHB0ciwgV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFB1c2hTdWJz
Y3JpcHRpb25PcHRpb25zOjpjcmVhdGUodXNlclZpc2libGVPbmx5LCBXVEZNb3ZlKG15U2VydmVy
VkFQSURQdWJsaWNLZXkpKSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3Zl
KG15QXV0aCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1ZDBiZGYzZDE5ZmIwOWI4MjE1OGNh
ZThiM2ViOTI5MjM3MjllMTNmLi4xMzdlOTM1ODcwZjY5MzI2NDNhY2EyNjkyMGYzNzZlZDcwOTFh
NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlB1c2hQZXJtaXNz
aW9uU3RhdGUuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTg2LDYgKzg4LDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHdoZW5TZXJ2aWNlV29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxi
YWNrKSB7IGNhbGxiYWNrKCk7IH0KKyAgICAKKyAgICB1c2luZyBTdWJzY3JpYmVUb1B1c2hTZXJ2
aWNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFB1c2hTdWJz
Y3JpcHRpb25EYXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIHN1YnNjcmliZVRvUHVzaFNlcnZp
Y2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFN1YnNjcmliZVRvUHVzaFNlcnZpY2VDYWxsYmFj
ayYmKSA9IDA7CisgICAgCisgICAgdXNpbmcgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+OworICAg
IHZpcnR1YWwgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYm
KSA9IDA7CisgICAgCisgICAgdXNpbmcgR2V0UHVzaFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3Jp
cHRpb25EYXRhPj4mJik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2Fs
bGJhY2smJikgPSAwOworCisgICAgdXNpbmcgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxQdXNoUGVybWlzc2lvblN0YXRl
PiYmKT47CisgICAgdmlydHVhbCB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFj
ayYmKSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI1MTM4MDlkZDhjZmNjM2ViY2Y0
MDg5ZWE0NTE5M2NiNzBkOWM4ZDAuLmU2OTExMDU2OTgwNDQ4NWUyZGNmMDBjNDIyYTMwYjI5ZTAz
NWVhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTUHVzaFN1YnNjcmlwdGlvbi5oIgog
I2luY2x1ZGUgIkpTU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01NTAsNiArNTUyLDY2IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24m
IHJlZ2lzCiAgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZShyZWdpc3RyYXRpb24uaWRlbnRpZmll
cigpKTsKIH0KIAorc3RhdGljIFJlZjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGVQdXNoU3Vic2Ny
aXB0aW9uRnJvbURhdGEoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBQ
dXNoU3Vic2NyaXB0aW9uRGF0YSYmIGRhdGEpCit7CisgICAgYXV0byBvcHRpb25zID0gUHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZSh0cnVlLCBXVEZNb3ZlKGRhdGEuc2VydmVyVkFQSURQ
dWJsaWNLZXkpKTsKKyAgICByZXR1cm4gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKCZyZWdpc3Ry
YXRpb24sIFdURk1vdmUoZGF0YS5lbmRwb2ludCksIGRhdGEuZXhwaXJhdGlvblRpbWUsIFdURk1v
dmUob3B0aW9ucyksIFdURk1vdmUoZGF0YS5jbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShk
YXRhLnNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25TZXJ2
ZXJLZXksIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+
JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5zdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIGFwcGxpY2F0aW9uU2VydmVy
S2V5LCBbcHJvdGVjdGVkUmVnaXN0cmF0aW9uID0gUmVmIHsgcmVnaXN0cmF0aW9uIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0
aW9uRnJvbURhdGEocHJvdGVjdGVkUmVnaXN0cmF0aW9uLCByZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCkpKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1bnN1
YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQor
eworICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2
aWNlKGlkZW50aWZpZXIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
JiByZWdpc3RyYXRpb24sIERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZh
Y2U8UHVzaFN1YnNjcmlwdGlvbj4+PiYmIHByb21pc2UpCit7CisgICAgZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkuZ2V0UHVzaFN1YnNjcmlwdGlvbihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigp
LCBbcHJvdGVjdGVkUmVnaXN0cmF0aW9uID0gUmVmIHsgcmVnaXN0cmF0aW9uIH0sIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBhdXRvIG9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgIGlmICghb3B0aW9uYWxQdXNoU3Vic2NyaXB0aW9u
RGF0YSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNyZWF0ZVB1
c2hTdWJzY3JpcHRpb25Gcm9tRGF0YShwcm90ZWN0ZWRSZWdpc3RyYXRpb24sIFdURk1vdmUoKm9w
dGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEpKS5wdHIoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMRW51bWVyYXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYgcHJvbWlzZSkKK3sKKyAgICBl
bnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRQdXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZp
ZXIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21p
c2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKICAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmgKaW5kZXggZWZkZjA5NDI2YTc5NjY0NDk1NTc0MTZlMzNjNjJlMmU2M2QwMWNj
My4uODdmNjg2MDhlNmNmMDQ5NTliMDZkMWRhOTQ4Yjg4ZDBhMDdmYzU0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRl
ICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVk
ZSAiUHVzaFBlcm1pc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCIKQEAgLTgzLDYgKzg1LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
Jik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
biYpOwogCisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+PiYmKTsKKyAg
ICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9p
ZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+Pj4m
Jik7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVyYXRpb248UHVzaFBl
cm1pc3Npb25TdGF0ZT4+JiYpOworCiAgICAgU2VydmljZVdvcmtlckpvYiogam9iKFNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc3RhcnRNZXNzYWdlcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uY3BwCmluZGV4IDMwZGI4ZDlhYjAzY2QzOTYxMGUyYjExMDQyMTdlOTljZjNl
YTI3ODQuLjBiNjgyOGM4ODdiYWUzYzBlYmViYTMwMzI5YjI5ZTE5OWRjNmJhNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5jcHAKQEAgLTE2MSw2ICsxNjEsNDYgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
ICAgICBtX2NvbnRhaW5lci0+dW5yZWdpc3RlclJlZ2lzdHJhdGlvbihpZGVudGlmaWVyKCksIFdU
Rk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnN1
YnNjcmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNl
cnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9u
Pj4mJiBwcm9taXNlKQoreworICAgIGlmIChpc0NvbnRleHRTdG9wcGVkKCkpIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRhaW5lci0+c3Vic2NyaWJlVG9QdXNoU2VydmljZSgq
dGhpcywgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lk
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKERP
TVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzQ29u
dGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24oSW52YWxp
ZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGFpbmVy
LT51bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShpZGVudGlmaWVyKCksIFdURk1vdmUocHJvbWlz
ZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hTdWJzY3Jp
cHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vi
c2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNDb250ZXh0U3RvcHBlZCgpKSB7
CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250YWluZXItPmdldFB1c2hTdWJzY3Jp
cHRpb24oKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoRE9NUHJvbWlzZURlZmVycmVkPElE
TEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmIHByb21pc2UpCit7CisgICAgaWYg
KGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24o
SW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29u
dGFpbmVyLT5nZXRQdXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZpZXIoKSwgV1RGTW92ZShwcm9t
aXNlKSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dXBkYXRlU3RhdGVG
cm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgUmVmUHRyPFNl
cnZpY2VXb3JrZXI+JiYgc2VydmljZVdvcmtlcikKIHsKICAgICBzd2l0Y2ggKHN0YXRlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaAppbmRleCA3NDc2NjExOTY3Yjk0N2E3ZTJjMGRkMWI5MjdhMWZjOTI5
Njk2ODkzLi41YTM0MmZkZmY5YWNlMDUwZjQ2NmYwNmUyYzkyNjJlNDhiN2Y4OTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmgKQEAgLTI5LDYgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNl
RGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQdXNoUGVybWlzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAi
UHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKQEAgLTY5LDYgKzcyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXIoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CiAKKyAgICB2b2lkIHN1YnNjcmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4mJik7CisgICAgdm9pZCB1bnN1YnNjcmliZUZy
b21QdXNoU2VydmljZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9p
ZCBnZXRQdXNoU3Vic2NyaXB0aW9uKERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJ
bnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+PiYmKTsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNz
aW9uU3RhdGUoRE9NUHJvbWlzZURlZmVycmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9u
U3RhdGU+PiYmKTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkOjpkZXJlZjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMmUyNGYyNjQ3
ZmViMmMwZTAxNjVmNTk5OTk2NWU3ZjVlYTAwMGEwMC4uZTIwNzQzN2Y4NzcyMjRkZjc1MTM2ZDI2
ZTA4YjYwMjY4OTY3MWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTU3LDYgKzU3LDIy
IEBAIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6fldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbigp
CiAgICAgYXV0byB1bnJlZ2lzdGVyUmVxdWVzdHMgPSBXVEZNb3ZlKG1fdW5yZWdpc3RlclJlcXVl
c3RzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogdW5yZWdpc3RlclJlcXVlc3RzLnZhbHVl
cygpKQogICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBUeXBlRXJyb3IsICJjb250ZXh0IHN0
b3BwZWQiX3MgfSk7CisgICAgCisgICAgYXV0byBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVz
dHMgPSBXVEZNb3ZlKG1fc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVlc3RzKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVlc3RzLnZhbHVlcygp
KQorICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9w
cGVkIl9zIH0pOworICAgIAorICAgIGF1dG8gdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1
ZXN0cyA9IFdURk1vdmUobV91bnN1YnNjcmliZUZyb21QdXNoU2VydmljZVJlcXVlc3RzKTsKKyAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0
cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNv
bnRleHQgc3RvcHBlZCJfcyB9KTsKKyAgICAKKyAgICBhdXRvIGdldFB1c2hTdWJzY3JpcHRpb25S
ZXF1ZXN0cyA9IFdURk1vdmUobV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMpOworICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBnZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMudmFsdWVzKCkp
CisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJjb250ZXh0IHN0b3Bw
ZWQiX3MgfSk7CisgICAgCisgICAgYXV0byBnZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tz
ID0gV1RGTW92ZShtX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3MpOworICAgIGZvciAo
YXV0byYgY2FsbGJhY2sgOiBnZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzLnZhbHVlcygp
KQorICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9w
cGVkIl9zIH0pOwogfQogCiB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdp
c3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVu
dFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTIwNSw2ICsyMjEsNzAg
QEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Cit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9zdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJl
cXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBhcHBsaWNhdGlvblNlcnZl
cktleV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKKyAgICAg
ICAgY29ubmVjdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1
ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0Ns
aWVudENvbm5lY3Rpb24oKS5tX3N1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtlKHJl
cXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3Vs
dCkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKytt
X2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNl
UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlm
aWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBj
b25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLnVuc3Vic2NyaWJlRnJvbVB1c2hT
ZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCks
IHJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICB0aHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBj
cm9zc1RocmVhZENvcHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUp
LnN3Q2xpZW50Q29ubmVjdGlvbigpLm1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0
cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVj
dGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0
UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMuYWRk
KHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9u
TWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb25JZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0g
U2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bigpOworICAgICAgICBjb25uZWN0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24ocmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJd
KGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1
bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFj
ayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9u
KCkubV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAg
IH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwor
ICAgIG1fZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrcy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aHJl
YWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXJd
KCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CisgICAgICAgIGNv
bm5lY3Rpb24uZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShyZWdpc3RyYXRpb25JZGVudGlmaWVyLCBb
dGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3Vs
dCkgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1
ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNj
b3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldFB1c2hQ
ZXJtaXNzaW9uU3RhdGVDYWxsYmFja3MudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xp
ZW50Q29ubmVjdGlvbi5oCmluZGV4IGM4NmVlNDU1ZDMxMzI5NTdmMjk3OWZkZmRkOGIwMmU4OTFl
MGMyMTguLjc3N2ZhYzczMWI1Y2ViZGJhNGI2YjNmZDU2YWY3ZTc3MWMwZGZkNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRD
b25uZWN0aW9uLmgKQEAgLTU3LDYgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVs
ZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9p
ZCBzY2hlZHVsZUpvYihEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2Vy
dmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4m
JikgZmluYWw7CisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9u
U2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIFJlZjxX
b3JrZXJUaHJlYWQ+IG1fdGhyZWFkOwogCkBAIC02NSw2ICs2OSwxMCBAQCBwcml2YXRlOgogICAg
IEhhc2hNYXA8dWludDY0X3QsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjaz4gbV9nZXRSZWdpc3Ry
YXRpb25zUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2hlblJlZ2lzdHJhdGlvblJl
YWR5Q2FsbGJhY2s+IG1fd2hlblJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHM7CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4+
IG1fdW5yZWdpc3RlclJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFN1YnNjcmliZVRv
UHVzaFNlcnZpY2VDYWxsYmFjaz4gbV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHM7Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjaz4g
bV91bnN1YnNjcmliZUZyb21QdXNoU2VydmljZVJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0
X3QsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjaz4gbV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVx
dWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxi
YWNrPiBtX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4
IDk4OGNjMTkwMTRlM2YxYTAwMWZhNjIzMjk5YWIyYjU1NGY1YjBhODQuLmE1OGI0Y2ZkOTE4ZmY0
MzZkZWE4MGQ4ZTRlMWQ5NjM2ZmNlNzRlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCkBAIC00NDgsNiArNDQ4LDM1IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICB9CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFZlY3Rvcjx1aW50
OF90PiYmIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFB1c2hTdWJzY3JpcHRpb25EYXRhLCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Cisg
ICAgVU5VU0VEX1BBUkFNKGFwcGxpY2F0aW9uU2VydmVyS2V5KTsKKyAgICAKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9y
LCAiUHVzaCBwZXJtaXNzaW9uIHdhcyBkZW5pZWQiX3MgfSkpOworfQorCit2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBFeGNlcHRpb25EYXRhPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CisgICAgCisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworfQorCit2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlv
bkRhdGE+LCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBV
TlVTRURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgCisgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4oc3RkOjpudWxsb3B0
KSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0
YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dWludDhfdCwg
RXhjZXB0aW9uRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BB
UkFNKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIAorICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmllZCkpOworfQor
CiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7CiAgICAgYXV0
byYgY29ubmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mPihjb250ZXh0Q29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmgKaW5kZXggMjY0ZTViMzA0MzhlZDE2ZDBkMWQyMGIyMzdlMzkzNTY2MTk2ZGIzNC4uNjk1N2Fk
ZWY5MGZmNDNhOTUyYjM3NjkwMGE3ZDk5OTYwNjlmYzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXhj
ZXB0aW9uT3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQ
ZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hTdWJzY3JpcHRpb25EYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTE4LDYgKzEyMCwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKICAg
ICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAorICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNo
U2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVmVj
dG9yPHVpbnQ4X3Q+JiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsK
KyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworCiAg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNl
KTsKICAgICB2b2lkIGNvbnRyb2xDbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDFjOTQ2YjBiYTVhZmY1M2RkZTFlMjYxZjFmOTRjMjMy
NTlhYWU5NDUuLmUxZTJmM2JmOTI1ZDkyOTQxODk5NzZjZTk0Yjg4ZjdkN2VmMTkzMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
NDYsNiArNDYsMTEgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNv
dW50ZWQgewogCiAgICAgU2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAg
IFN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpIC0+ICgpIEFzeW5jCisKKyAgICBTdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIsIFZlY3Rvcjx1aW50OF90PiBhcHBsaWNhdGlvblNlcnZlcktleSkgLT4gKEV4
cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiByZXN1bHQpIEFzeW5jCisgICAgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4
cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKKyAgICBH
ZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1
c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3lu
YworICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMgCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBlNGQ3MWZkMjNkZWJhNGRl
YWQxYjEwZmRiOTQyM2JjMGI2ZTA0NjQ4Li5hZDRmYjBhYjc4YzJkZGFmMjdjZGY3NDE2ZDEwNmNi
OWRmNDc1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI2NCw2ICsyNjQsNDIgQEAgdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXIKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6U3RvcmVSZWdpc3RyYXRpb25zT25EaXNrIHsgfSwgV1RGTW92
ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3Vic2NyaWJl
VG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0
aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6U3Vic2NyaWJlVG9QdXNoU2VydmljZSB7IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGFwcGxp
Y2F0aW9uU2VydmVyS2V5IH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gY2FsbGJhY2socmVzdWx0LmVycm9yKCkudG9FeGNlcHRpb24oKSk7Cisg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKnJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpVbnN1
YnNjcmliZUZyb21QdXNoU2VydmljZSB7IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhy
ZXN1bHQuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgY2FsbGJhY2soKnJlc3VsdCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vic2Ny
aXB0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpHZXRQdXNoU3Vic2NyaXB0aW9uIHsgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9LCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNr
KHJlc3VsdC5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KCpyZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Omdl
dFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFB1c2hQZXJtaXNzaW9uU3RhdGUgeyByZWdpc3RyYXRp
b25JZGVudGlmaWVyIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbGJhY2socmVzdWx0LmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAg
ICAgIGNhbGxiYWNrKHN0YXRpY19jYXN0PFB1c2hQZXJtaXNzaW9uU3RhdGU+KCpyZXN1bHQpKTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFiNTU0Yzk0NDlkYTRlYWEyNDYx
N2YxMWExMWZhNzUzYjVkNmVhZjQuLjJhY2VkYjg0YWMzNThhNzQ2NWViMTBiMjZhYzc4NmQyNTgz
OTAxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC05MCw2ICs5MCwxMSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgZmluYWw7CiAgICAgdm9pZCBzdG9yZVJlZ2lzdHJh
dGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CisgICAgCisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxp
Y2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3Rh
dGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdlSm9iKGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAK
</data>
<flag name="commit-queue"
          id="465995"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441668</attachid>
            <date>2021-10-18 18:08:15 -0700</date>
            <delta_ts>2021-10-19 13:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231922-20211018180814.patch</filename>
            <type>text/plain</type>
            <size>50076</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwY2U1Yjg5OGJiMzc1
NzVjOTlmMTU4YTljYjk2N2JiZDYxNmNmZS4uMjE3NDUxYjdjZDUxOWE2NmI2YzUzYjg2NDlkZDMw
NzAzOWEyN2FhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEwLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVi
cyBmb3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCb3RoIFB1c2hNYW5hZ2VyIGFuZCBQdXNoU3Vic2NyaXB0aW9uIG5v
dyBzZW5kIHRoZWlyIHN1YnNjcmlwdGlvbiByZXF1ZXN0cyB0byBOZXR3b3JrUHJvY2VzcworICAg
ICAgICB2aWEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiA9PiBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyID0+IFNXQ2xpZW50Q29ubmVjdGlvbi4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQdXNoTWFuYWdlcjo6c3Vic2NyaWJlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hNYW5h
Z2VyOjpnZXRTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFnZXI6OnBl
cm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lv
blN0YXRlLmg6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6dW5zdWJzY3JpYmUpOgorICAg
ICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVh
dGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWN0
aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQdXNoU3Vi
c2NyaXB0aW9uRnJvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFB1c2hQZXJtaXNzaW9u
U3RhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3Vic2Ny
aWJlVG9QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJT
V0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFBl
cm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oOgorCiAyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdv
cmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMjU4YmI3ZWNlYjE1NTEzZmM2MDA2M2MyZGM5MjI3NWMzNjFlYzQwNi4uM2QzNTQzNmNhMTE0
N2ZiOWVlNDE3ZjNjM2I1MzU5MDdmMWUzNzkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAyMS0xMC0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTmV0
d29ya1Byb2Nlc3Mgc3R1YnMgZm9yIHB1c2ggc3Vic2NyaXB0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3R1YnMgaW4gTmV0d29ya1By
b2Nlc3MgZm9yIHB1c2ggc3Vic2NyaXB0aW9uLXJlbGF0ZWQgSVBDLiBDdXJyZW50bHkgdGhlIHN0
dWJzIHJldHVybgorICAgICAgICB0aGF0IHN1YnNjcmliaW5nIGlzIHVuc3VwcG9ydGVkIGFuZCB0
aGF0IHRoZXJlIGFyZSBubyBhY3RpdmUgcHVzaCBzdWJzY3JpcHRpb25zLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNl
cnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVuc3Vic2Ny
aWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRv
UHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRD
b25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisKIDIwMjEtMTAtMTggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBjYWxsYmFjayB0
byBrbm93IHdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHZpYSAtW1dLV2ViVmlldyBfbG9h
ZFNlcnZpY2VXb3JrZXI6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNGM3ODUxMzJlM2M0OTQ4NGZk
OGMxMjQzNjQxNWI3NWIxMjBlOTJkMS4uYWMwNjBkZGE3ZDQ4MzNjZGU4ZjQyOTE2N2Y4NGMwNjRm
MzIzZDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTQsNiArMTU0LDkgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5S
ZXBsYWNlbWVudC5oCiAgICAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dC5oCiAKKyAgICBNb2R1bGVzL3B1c2gtYXBpL1B1c2hQZXJtaXNzaW9uU3RhdGUuaAorICAgIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaAorCiAgICAgTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgKICAgICBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKICAgICBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAppbmRleCBhY2E2Y2ZmMTgzZWRiZGUxMzdkNDIxNWI0
NWQwM2Q2OTI5NjlhYjQ4Li42NDJkNTBhYTgzOGU0ZjAyMGQwZDIyYjNmZjQwOTY5N2E4YTM4YTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUHVzaE1hbmFnZXI6OnN1YnNjcmliZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzdGQ6CiAgICAgfQogICAg
IAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQotICAgIGF1dG8ga2V5RGF0YSA9IGtleURhdGFSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBrZXlEYXRhID0ga2V5RGF0YVJlc3Vs
dC5yZXR1cm5WYWx1ZSgpOwogICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9ydFJhdyhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQSwgIlAtMjU2Il9zLCBXVEZNb3ZlKGtleURh
dGEpLCBmYWxzZSwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpOwogI2Vsc2UKICAgICBhdXRvIGtleSA9
IG51bGxwdHI7CkBAIC0xMTYsMTggKzExNiwxOCBAQCB2b2lkIFB1c2hNYW5hZ2VyOjpzdWJzY3Jp
YmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RkOgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IE5vdEFsbG93ZWRFcnJvciwgIlB1c2ggcGVybWlzc2lvbiB3YXMgZGVuaWVkIl9zIH0pOwor
ICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKGtl
eURhdGFSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQog
CiB2b2lkIFB1c2hNYW5hZ2VyOjpnZXRTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElE
TE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKIHsK
LSAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24oV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQg
UHVzaE1hbmFnZXI6OnBlcm1pc3Npb25TdGF0ZShzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25PcHRpb25zSW5pdD4mJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVyYXRp
b248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
b3B0aW9ucyk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmll
ZCk7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRl
LmgKaW5kZXggNzM3MGExYzhiMmQyMjkwZTBhYWEwZjk1NGFjNTZhNTY3Y2U4OTJlYi4uZjY2MTQ1
YzhhZmJiNmU3MTM0YWRlODc4MWFiM2UzMDBlYjVlNmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKQEAgLTM3LDQg
KzM3LDE1IEBAIGVudW0gY2xhc3MgUHVzaFBlcm1pc3Npb25TdGF0ZSA6IHVpbnQ4X3QgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0
ZSwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkLAorICAgICAg
ICBXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlOjpHcmFudGVkLAorICAgICAgICBXZWJDb3Jl
OjpQdXNoUGVybWlzc2lvblN0YXRlOjpQcm9tcHQKKyAgICA+OworfTsKK30gLy8gbmFtZXNwYWNl
IFdURgorCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKaW5kZXggZDM1
NmQ3NGYzYTY5MTliZGYxYjk3Mjc2YzU2MzkyMjZhOWQ2NmMxNy4uNWQ5MWZhOGVkMDBmZDFjYWY3
NDY2ZTdhMjI1ZWJlYTNmOGY2YTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC0zNyw4
ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCi1QdXNoU3Vic2NyaXB0aW9uOjpQdXNoU3Vic2NyaXB0
aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBp
cmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiYmIG9wdGlvbnMsIFZlY3Rv
cjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90PiYmIHNoYXJl
ZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9lbmRwb2ludChXVEZNb3ZlKGVuZHBvaW50
KSkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbiogcmVnaXN0cmF0aW9uLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpvcHRpb25hbDxF
cG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFJlZjxQdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cz4mJiBvcHRpb25zLCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0
b3I8dWludDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkKKyAgICA6IG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24pCisgICAgLCBtX2VuZHBvaW50KFdURk1v
dmUoZW5kcG9pbnQpKQogICAgICwgbV9leHBpcmF0aW9uVGltZShleHBpcmF0aW9uVGltZSkKICAg
ICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9jbGllbnRFQ0RIUHVibGlj
S2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkpCkBAIC04Niw3ICs4OCwxMiBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hTdWJzY3JpcHRpb246OmdldEtl
eShQdXNoRW5jcnlwdGlvbktleQogCiB2b2lkIFB1c2hTdWJzY3JpcHRpb246OnVuc3Vic2NyaWJl
KERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQi
X3MgfSk7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyBzZXJ2aWNl
IHdvcmtlciBhc3NvY2lhdGVkIHdpdGggc3Vic2NyaXB0aW9uLiJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24tPnVuc3Vi
c2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdURk1vdmUocHJvbWlzZSkpOwogfQogCiBQdXNoU3Vic2Ny
aXB0aW9uSlNPTiBQdXNoU3Vic2NyaXB0aW9uOjp0b0pTT04oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAppbmRleCA5YTYx
NTljYjJiYmJkMjY2YjBjYzk5YThjOTgwODhhNDkyNzBjYWY0Li4zMTQwMmFkZGVlZjBhZjkyNDdl
ZjdmNzNiY2FlNzJhZmVkZDVhMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uaApAQCAtNDEsNiArNDEsOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczsKK2NsYXNzIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwogCiBj
bGFzcyBQdXNoU3Vic2NyaXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UHVzaFN1YnNjcmlwdGlv
bj4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFB1c2hTdWJzY3JpcHRpb24s
IFdFQkNPUkVfRVhQT1JUKTsKQEAgLTU3LDggKzU5LDkgQEAgcHVibGljOgogICAgIFB1c2hTdWJz
Y3JpcHRpb25KU09OIHRvSlNPTigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQ
T1JUIFB1c2hTdWJzY3JpcHRpb24oU3RyaW5nJiYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBv
Y2hUaW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lLCBSZWY8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+
JiYsIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rvcjx1aW50OF90
PiYmIGF1dGgpOworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbiosIFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2No
VGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiYm
LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4m
JiBhdXRoKTsKIAorICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb247CiAgICAgU3RyaW5nIG1fZW5kcG9pbnQ7CiAgICAgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gbV9leHBpcmF0aW9uVGltZTsKICAgICBSZWY8UHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDEyOTFjNGI4YTA1YzFjYjMzOTA4NDU3OTcxOTFhYmFlMWJhMzlkYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQdXNoU3Vic2NyaXB0aW9uRGF0YSBQdXNo
U3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBQdXNoU3Vic2Ny
aXB0aW9uRGF0YSByZXN1bHQ7CisgICAgcmVzdWx0LmVuZHBvaW50ID0gZW5kcG9pbnQuaXNvbGF0
ZWRDb3B5KCk7CisgICAgcmVzdWx0LmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWU7Cisg
ICAgcmVzdWx0LnNlcnZlclZBUElEUHVibGljS2V5ID0gc2VydmVyVkFQSURQdWJsaWNLZXk7Cisg
ICAgcmVzdWx0LmNsaWVudEVDREhQdWJsaWNLZXkgPSBjbGllbnRFQ0RIUHVibGljS2V5OworICAg
IHJlc3VsdC5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCA9IHNoYXJlZEF1dGhlbnRpY2F0aW9u
U2VjcmV0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIwOTMxOTRiYWU0NmU3ZmJhMDA3MjFjMjdlMDVlNzY3ODY5MmM4ZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25E
YXRhLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiRXBvY2hUaW1lU3RhbXAuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKKyAgICBTdHJpbmcgZW5kcG9pbnQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWU7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHNlcnZlclZBUElEUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBj
bGllbnRFQ0RIUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBzaGFyZWRBdXRoZW50aWNh
dGlvblNlY3JldDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hTdWJzY3JpcHRpb25EYXRhIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFB1c2hTdWJzY3JpcHRp
b25EYXRhJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQdXNoU3Vic2Ny
aXB0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBlbmRwb2ludDsKKyAgICBlbmNvZGVyIDw8IGV4cGlyYXRpb25UaW1lOworICAgIGVuY29k
ZXIgPDwgc2VydmVyVkFQSURQdWJsaWNLZXk7CisgICAgZW5jb2RlciA8PCBjbGllbnRFQ0RIUHVi
bGljS2V5OworICAgIGVuY29kZXIgPDwgc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQ7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFB1c2hTdWJzY3JpcHRpb25EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgUHVzaFN1YnNjcmlwdGlvbkRhdGEmIGRhdGEpCit7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZHBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4cGlyYXRpb25UaW1lKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNlcnZlclZB
UElEUHVibGljS2V5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNy
ZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCA3N2UyNDMzYzUwMTYzOTUyMGQwMTI3ZWQxYmI1NDBmZGEyNzkyNmZh
Li5mZTBlM2Q1NGVjM2Y0YTE4NjI0ZGEyMzhkMWE4NjljYzYwY2Y5MTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMjIzLDYgKzIyMyw3IEBAIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0dXJlSW5Q
aWN0dXJlV2luZG93LmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCiBNb2R1bGVz
L3B1c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNj
cmlwdGlvbi5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAogTW9kdWxlcy9wdXNo
LWFwaS9QdXNoTWFuYWdlci5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvblB1c2hBUEkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWQ2ZTM1MDY4M2YzYjc0OWM4NjhiYzAyYWY5ZDNjMzky
ODZlMzlmMy4uOWE3OTdkOGE1NTVlNjBmM2I5MDdmYjRlOGZmYzY2Njk4NzJhNjBjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTQwNiw4ICs1NDA2LDkgQEAKIAkJRUIwRkI3MEEyNzBEMEIxQjAwRjc4MTBEIC8qIFB1c2hTdWJz
Y3JpcHRpb25KU09OLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFQjBGQjcwMzI3MEQwQUVCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpTT04uaCAq
LzsgfTsKIAkJRUIwRkI3MEMyNzBEMEIyOTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjBG
QjcwNjI3MEQwQUVDMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCAqLzsgfTsK
IAkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIwRkI3
MDEyNzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oICovOyB9
OworCQlFQjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjhFRDQxMjcx
N0FCQTkwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgxMjcxMDA2NzEwMDc3MzJF
RiAvKiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmggKi87IH07
Ci0JCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM3ODI3MTAw
NjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovOyB9OworCQlFQkI5NzM4MjI3
MTAwNjc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzczMkVGIC8q
IFB1c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uUHVzaEFQSS5oICovOyB9OwogCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCRTVCMjI0MjQ1QTI2RUUwMDNBNUE4OCAvKiBTUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252
ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwICovOyB9
OwpAQCAtMTY4NTUsNiArMTY4NTYsOCBAQAogCQlFQjBGQjcwNTI3MEQwQUVCMDBGNzgxMEQgLyog
UHVzaFN1YnNjcmlwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbi5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMEZCNzA2MjcwRDBBRUMwMEY3ODEwRCAvKiBQdXNoU3Vi
c2NyaXB0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjBGQjcwNzI3MEQwQUVDMDBGNzgx
MEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMjhFRDQxMjcxN0FCQTkwMDVGMDM5
MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0
aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjI4RUQ0MzI3MTdBQkE5
MDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
QkI5NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
UHVzaEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUyMDA3NzMy
RUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMDA0Myw2ICsyMDA0Niw4IEBACiAJCQkJRUIwRkI3MDQyNzBEMEFFQjAwRjc4MTBE
IC8qIFB1c2hTdWJzY3JpcHRpb24uY3BwICovLAogCQkJCUVCMEZCNzA3MjcwRDBBRUMwMEY3ODEw
RCAvKiBQdXNoU3Vic2NyaXB0aW9uLmggKi8sCiAJCQkJRUIwRkI3MDUyNzBEMEFFQjAwRjc4MTBE
IC8qIFB1c2hTdWJzY3JpcHRpb24uaWRsICovLAorCQkJCUVCMjhFRDQzMjcxN0FCQTkwMDVGMDM5
MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAgKi8sCisJCQkJRUIyOEVENDEyNzE3QUJBOTAw
NUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi8sCiAJCQkJRUIwRkI3MDMyNzBEMEFF
QjAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmggKi8sCiAJCQkJRUIwRkI3MDIyNzBE
MEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmlkbCAqLywKIAkJCQlFQjBGQjZG
QjI3MEQwQUU2MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwICovLApAQCAt
MzQ5MDgsNiArMzQ5MTMsNyBAQAogCQkJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNo
UGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAy
RURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcwOTI3MEQw
QjE4MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUIy
OEVENDQyNzE3QUMxMTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFQjBGQjcwQTI3MEQwQjFCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpT
T04uaCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzBDMjcwRDBCMjkwMEY3ODEwRCAvKiBQdXNo
U3Vic2NyaXB0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MEQyNzBEMEIy
RTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTIwZjI0ODVmMTFjODU4NjAx
NDQxMTBmNmIxZDMzYTBjZDNiNDBiNC4uN2Y5ZGE5MWQzNzQ5MDYzMGFlYmJmMTRhOWYwNzE5NDgz
OGFhM2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjU0Nyw3ICs2
NTQ3LDcgQEAgUmVmUHRyPFB1c2hTdWJzY3JpcHRpb24+IEludGVybmFsczo6Y3JlYXRlUHVzaFN1
YnNjcmlwdGlvbihjb25zdCBTdHJpbmcmIGVuZHBvaW4KICAgICBWZWN0b3I8dWludDhfdD4gbXlD
bGllbnRFQ0RIUHVibGljS2V5IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNsaWVudEVD
REhQdWJsaWNLZXkuZGF0YSgpKSwgY2xpZW50RUNESFB1YmxpY0tleS5ieXRlTGVuZ3RoKCkgfTsK
ICAgICBWZWN0b3I8dWludDhfdD4gbXlBdXRoIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGF1dGguZGF0YSgpKSwgYXV0aC5ieXRlTGVuZ3RoKCkgfTsKIAotICAgIHJldHVybiBQdXNoU3Vi
c2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFB1
c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUodXNlclZpc2libGVPbmx5LCBXVEZNb3ZlKG15
U2VydmVyVkFQSURQdWJsaWNLZXkpKSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNLZXkpLCBX
VEZNb3ZlKG15QXV0aCkpOworICAgIHJldHVybiBQdXNoU3Vic2NyaXB0aW9uOjpjcmVhdGUobnVs
bHB0ciwgV1RGTW92ZShteUVuZHBvaW50KSwgZXhwaXJhdGlvblRpbWUsIFB1c2hTdWJzY3JpcHRp
b25PcHRpb25zOjpjcmVhdGUodXNlclZpc2libGVPbmx5LCBXVEZNb3ZlKG15U2VydmVyVkFQSURQ
dWJsaWNLZXkpKSwgV1RGTW92ZShteUNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3ZlKG15QXV0
aCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1ZDBiZGYzZDE5ZmIwOWI4MjE1OGNhZThiM2Vi
OTI5MjM3MjllMTNmLi4xMzdlOTM1ODcwZjY5MzI2NDNhY2EyNjkyMGYzNzZlZDcwOTFhNmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVj
dGlvbi5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlB1c2hQZXJtaXNzaW9uU3Rh
dGUuaCIKKyNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTg2LDYgKzg4LDE4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHdoZW5TZXJ2aWNlV29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7
IGNhbGxiYWNrKCk7IH0KKyAgICAKKyAgICB1c2luZyBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFB1c2hTdWJzY3JpcHRp
b25EYXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIHN1YnNjcmliZVRvUHVzaFNlcnZpY2UoU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXBwbGljYXRpb25TZXJ2ZXJLZXksIFN1YnNjcmliZVRvUHVzaFNlcnZpY2VDYWxsYmFjayYmKSA9
IDA7CisgICAgCisgICAgdXNpbmcgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+OworICAgIHZpcnR1
YWwgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSA9IDA7
CisgICAgCisgICAgdXNpbmcgR2V0UHVzaFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25E
YXRhPj4mJik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2sm
JikgPSAwOworCisgICAgdXNpbmcgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxQdXNoUGVybWlzc2lvblN0YXRlPiYmKT47
CisgICAgdmlydHVhbCB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSA9
IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI1MTM4MDlkZDhjZmNjM2ViY2Y0MDg5ZWE0
NTE5M2NiNzBkOWM4ZDAuLmU2OTExMDU2OTgwNDQ4NWUyZGNmMDBjNDIyYTMwYjI5ZTAzNWVhZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTUHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1
ZGUgIkpTU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIkxlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCkBAIC01NTAsNiArNTUyLDY2IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lz
CiAgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZShyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsK
IH0KIAorc3RhdGljIFJlZjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9u
RnJvbURhdGEoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBQdXNoU3Vi
c2NyaXB0aW9uRGF0YSYmIGRhdGEpCit7CisgICAgYXV0byBvcHRpb25zID0gUHVzaFN1YnNjcmlw
dGlvbk9wdGlvbnM6OmNyZWF0ZSh0cnVlLCBXVEZNb3ZlKGRhdGEuc2VydmVyVkFQSURQdWJsaWNL
ZXkpKTsKKyAgICByZXR1cm4gUHVzaFN1YnNjcmlwdGlvbjo6Y3JlYXRlKCZyZWdpc3RyYXRpb24s
IFdURk1vdmUoZGF0YS5lbmRwb2ludCksIGRhdGEuZXhwaXJhdGlvblRpbWUsIFdURk1vdmUob3B0
aW9ucyksIFdURk1vdmUoZGF0YS5jbGllbnRFQ0RIUHVibGljS2V5KSwgV1RGTW92ZShkYXRhLnNo
YXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljYXRpb25TZXJ2ZXJLZXks
IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+JiYgcHJv
bWlzZSkKK3sKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5zdWJzY3JpYmVUb1B1c2hT
ZXJ2aWNlKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBb
cHJvdGVjdGVkUmVnaXN0cmF0aW9uID0gUmVmIHsgcmVnaXN0cmF0aW9uIH0sIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHByb21pc2UucmVzb2x2ZShjcmVhdGVQdXNoU3Vic2NyaXB0aW9uRnJv
bURhdGEocHJvdGVjdGVkUmVnaXN0cmF0aW9uLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkp
KTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1bnN1YnNjcmli
ZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQoreworICAg
IGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKGlk
ZW50aWZpZXIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24sIERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8UHVz
aFN1YnNjcmlwdGlvbj4+PiYmIHByb21pc2UpCit7CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0
aW9uKCkuZ2V0UHVzaFN1YnNjcmlwdGlvbihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCBbcHJv
dGVjdGVkUmVnaXN0cmF0aW9uID0gUmVmIHsgcmVnaXN0cmF0aW9uIH0sIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvIG9wdGlvbmFsUHVzaFN1YnNjcmlwdGlvbkRhdGEgPSByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CisgICAgICAgIGlmICghb3B0aW9uYWxQdXNoU3Vic2NyaXB0aW9uRGF0YSkg
eworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNyZWF0ZVB1c2hTdWJz
Y3JpcHRpb25Gcm9tRGF0YShwcm90ZWN0ZWRSZWdpc3RyYXRpb24sIFdURk1vdmUoKm9wdGlvbmFs
UHVzaFN1YnNjcmlwdGlvbkRhdGEpKS5wdHIoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51
bWVyYXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVT
V0NsaWVudENvbm5lY3Rpb24oKS5nZXRQdXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZpZXIsIFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBwcm9taXNlLnJlc29sdmUocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKICAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmgKaW5kZXggZWZkZjA5NDI2YTc5NjY0NDk1NTc0MTZlMzNjNjJlMmU2M2QwMWNjMy4uODdm
Njg2MDhlNmNmMDQ5NTliMDZkMWRhOTQ4Yjg4ZDBhMDdmYzU0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBA
IC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJRExU
eXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiUHVz
aFBlcm1pc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKICNpbmNs
dWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlci5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCIKQEAgLTgzLDYgKzg1LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJik7CiAg
ICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYpOwog
CisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+PiYmKTsKKyAgICB2b2lk
IHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9pZCBnZXRQ
dXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+Pj4mJik7Cisg
ICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVyYXRpb248UHVzaFBlcm1pc3Np
b25TdGF0ZT4+JiYpOworCiAgICAgU2VydmljZVdvcmtlckpvYiogam9iKFNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc3RhcnRNZXNzYWdlcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwCmluZGV4IDMwZGI4ZDlhYjAzY2QzOTYxMGUyYjExMDQyMTdlOTljZjNlYTI3ODQu
LjBiNjgyOGM4ODdiYWUzYzBlYmViYTMwMzI5YjI5ZTE5OWRjNmJhNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5jcHAKQEAgLTE2MSw2ICsxNjEsNDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBt
X2NvbnRhaW5lci0+dW5yZWdpc3RlclJlZ2lzdHJhdGlvbihpZGVudGlmaWVyKCksIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnN1YnNjcmli
ZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktl
eSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4mJiBw
cm9taXNlKQoreworICAgIGlmIChpc0NvbnRleHRTdG9wcGVkKCkpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2NvbnRhaW5lci0+c3Vic2NyaWJlVG9QdXNoU2VydmljZSgqdGhpcywg
YXBwbGljYXRpb25TZXJ2ZXJLZXksIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKERPTVByb21p
c2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzQ29udGV4dFN0
b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRl
RXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGFpbmVyLT51bnN1
YnNjcmliZUZyb21QdXNoU2VydmljZShpZGVudGlmaWVyKCksIFdURk1vdmUocHJvbWlzZSkpOwor
fQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hTdWJzY3JpcHRpb24o
RE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0
aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNDb250ZXh0U3RvcHBlZCgpKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250YWluZXItPmdldFB1c2hTdWJzY3JpcHRpb24o
KnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoRE9NUHJvbWlzZURlZmVycmVkPElETEVudW1l
cmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzQ29u
dGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24oSW52YWxp
ZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGFpbmVy
LT5nZXRQdXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZpZXIoKSwgV1RGTW92ZShwcm9taXNlKSk7
Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dXBkYXRlU3RhdGVGcm9tU2Vy
dmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgUmVmUHRyPFNlcnZpY2VX
b3JrZXI+JiYgc2VydmljZVdvcmtlcikKIHsKICAgICBzd2l0Y2ggKHN0YXRlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uaAppbmRleCA3NDc2NjExOTY3Yjk0N2E3ZTJjMGRkMWI5MjdhMWZjOTI5Njk2ODkz
Li41YTM0MmZkZmY5YWNlMDUwZjQ2NmYwNmUyYzkyNjJlNDhiN2Y4OTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmgKQEAgLTI5LDYgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKKyNpbmNsdWRlICJQdXNoUGVybWlzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiUHVzaFN1
YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFi
bGUuaCIKQEAgLTY5LDYgKzcyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKKyAgICB2b2lkIHN1YnNjcmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVy
ZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4mJik7CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNo
U2VydmljZShET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9pZCBnZXRQ
dXNoU3Vic2NyaXB0aW9uKERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZh
Y2U8UHVzaFN1YnNjcmlwdGlvbj4+PiYmKTsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUoRE9NUHJvbWlzZURlZmVycmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+
PiYmKTsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVk
OjpkZXJlZjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMmUyNGYyNjQ3ZmViMmMw
ZTAxNjVmNTk5OTk2NWU3ZjVlYTAwMGEwMC4uZTIwNzQzN2Y4NzcyMjRkZjc1MTM2ZDI2ZTA4YjYw
MjY4OTY3MWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTU3LDYgKzU3LDIyIEBAIFdv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6fldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbigpCiAgICAg
YXV0byB1bnJlZ2lzdGVyUmVxdWVzdHMgPSBXVEZNb3ZlKG1fdW5yZWdpc3RlclJlcXVlc3RzKTsK
ICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogdW5yZWdpc3RlclJlcXVlc3RzLnZhbHVlcygpKQog
ICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBUeXBlRXJyb3IsICJjb250ZXh0IHN0b3BwZWQi
X3MgfSk7CisgICAgCisgICAgYXV0byBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHMgPSBX
VEZNb3ZlKG1fc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVlc3RzLnZhbHVlcygpKQorICAg
ICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9wcGVkIl9z
IH0pOworICAgIAorICAgIGF1dG8gdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cyA9
IFdURk1vdmUobV91bnN1YnNjcmliZUZyb21QdXNoU2VydmljZVJlcXVlc3RzKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cy52YWx1
ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQg
c3RvcHBlZCJfcyB9KTsKKyAgICAKKyAgICBhdXRvIGdldFB1c2hTdWJzY3JpcHRpb25SZXF1ZXN0
cyA9IFdURk1vdmUobV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMpOworICAgIGZvciAoYXV0
byYgY2FsbGJhY2sgOiBnZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMudmFsdWVzKCkpCisgICAg
ICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJjb250ZXh0IHN0b3BwZWQiX3Mg
fSk7CisgICAgCisgICAgYXV0byBnZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzID0gV1RG
TW92ZShtX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3MpOworICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBnZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzLnZhbHVlcygpKQorICAg
ICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9wcGVkIl9z
IH0pOwogfQogCiB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRp
b24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwg
UmVnaXN0cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTIwNSw2ICsyMjEsNzAgQEAgdm9p
ZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lk
IFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hT
ZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9zdWJzY3JpYmVUb1B1c2hT
ZXJ2aWNlUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJ
ZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBhcHBsaWNhdGlvblNlcnZlcktleV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29u
bmVjdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGFw
cGxpY2F0aW9uU2VydmVyS2V5LCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRl
bnRpZmllcl0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRD
b3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENv
bm5lY3Rpb24oKS5tX3N1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtlKHJlcXVlc3RJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwor
ICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0p
OworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYm
IGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RS
ZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVxdWVz
dHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCBy
ZWdpc3RyYXRpb25JZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0
aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNl
KHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVl
c3RJZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xp
ZW50Q29ubmVjdGlvbigpLm1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtl
KHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBy
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVz
dElkZW50aWZpZXI7CisgICAgbV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMuYWRkKHJlcXVl
c3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25J
ZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2Vydmlj
ZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwor
ICAgICAgICBjb25uZWN0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24ocmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8m
JiByZXN1bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXShh
dXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCkubV9n
ZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
dm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
R2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1f
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrcy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICAKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aHJlYWQgPSBt
X3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXJdKCkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CisgICAgICAgIGNvbm5lY3Rp
b24uZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShyZWdpc3RyYXRpb25JZGVudGlmaWVyLCBbdGhyZWFk
ID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgewor
ICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRl
bnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldFB1c2hQZXJtaXNz
aW9uU3RhdGVDYWxsYmFja3MudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxv
b3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbi5oCmluZGV4IGM4NmVlNDU1ZDMxMzI5NTdmMjk3OWZkZmRkOGIwMmU4OTFlMGMyMTgu
Ljc3N2ZhYzczMWI1Y2ViZGJhNGI2YjNmZDU2YWY3ZTc3MWMwZGZkNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uLmgKQEAgLTU3LDYgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUpvYklu
U2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBzY2hl
ZHVsZUpvYihEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2VydmVyKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBEb2N1bWVudE9yV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4mJikgZmlu
YWw7CisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVy
S2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1
bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFB1
c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdl
dFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIFJlZjxXb3JrZXJU
aHJlYWQ+IG1fdGhyZWFkOwogCkBAIC02NSw2ICs2OSwxMCBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8dWludDY0X3QsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjaz4gbV9nZXRSZWdpc3RyYXRpb25z
UmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2Fs
bGJhY2s+IG1fd2hlblJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4+IG1fdW5y
ZWdpc3RlclJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFN1YnNjcmliZVRvUHVzaFNl
cnZpY2VDYWxsYmFjaz4gbV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHM7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjaz4gbV91bnN1
YnNjcmliZUZyb21QdXNoU2VydmljZVJlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEdl
dFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjaz4gbV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHM7
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrPiBt
X2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDk4OGNj
MTkwMTRlM2YxYTAwMWZhNjIzMjk5YWIyYjU1NGY1YjBhODQuLmE1OGI0Y2ZkOTE4ZmY0MzZkZWE4
MGQ4ZTRlMWQ5NjM2ZmNlNzRlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCkBAIC00NDgsNiArNDQ4LDM1IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1
cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICB9CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFZlY3Rvcjx1aW50OF90PiYm
IGFwcGxpY2F0aW9uU2VydmVyS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFB1
c2hTdWJzY3JpcHRpb25EYXRhLCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgVU5V
U0VEX1BBUkFNKGFwcGxpY2F0aW9uU2VydmVyS2V5KTsKKyAgICAKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiUHVz
aCBwZXJtaXNzaW9uIHdhcyBkZW5pZWQiX3MgfSkpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRpZmllcik7
CisgICAgCisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworfQorCit2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+
LCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBVTlVTRURf
UEFSQU0ocmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpvcHRpb25hbDxQdXNoU3Vic2NyaXB0aW9uRGF0YT4oc3RkOjpudWxsb3B0KSk7Cit9
CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dWludDhfdCwgRXhjZXB0
aW9uRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIAorICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmllZCkpOworfQorCiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29u
bmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihj
b250ZXh0Q29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5k
ZXggMjY0ZTViMzA0MzhlZDE2ZDBkMWQyMGIyMzdlMzkzNTY2MTk2ZGIzNC4uNjk1N2FkZWY5MGZm
NDNhOTUyYjM3NjkwMGE3ZDk5OTYwNjlmYzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9u
T3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQZXJtaXNz
aW9uU3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hTdWJzY3JpcHRpb25EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTE4LDYgKzEyMCwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKICAgICB2b2lk
IHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAorICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNoU2Vydmlj
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVmVjdG9yPHVp
bnQ4X3Q+JiYgYXBwbGljYXRpb25TZXJ2ZXJLZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+JiYpPiYmKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2
b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JiYpPiYmKTsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworCiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKICAg
ICB2b2lkIGNvbnRyb2xDbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IDFjOTQ2YjBiYTVhZmY1M2RkZTFlMjYxZjFmOTRjMjMyNTlhYWU5
NDUuLmUxZTJmM2JmOTI1ZDkyOTQxODk5NzZjZTk0Yjg4ZjdkN2VmMTkzMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDYsNiAr
NDYsMTEgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQg
ewogCiAgICAgU2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIFN0b3Jl
UmVnaXN0cmF0aW9uc09uRGlzaygpIC0+ICgpIEFzeW5jCisKKyAgICBTdWJzY3JpYmVUb1B1c2hT
ZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIFZlY3Rvcjx1aW50OF90PiBhcHBsaWNhdGlvblNlcnZlcktleSkgLT4gKEV4cGVjdGVk
PFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBy
ZXN1bHQpIEFzeW5jCisgICAgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVk
PGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKKyAgICBHZXRQdXNo
U3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJz
Y3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYworICAg
IEdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMgCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBlNGQ3MWZkMjNkZWJhNGRlYWQxYjEw
ZmRiOTQyM2JjMGI2ZTA0NjQ4Li5hZDRmYjBhYjc4YzJkZGFmMjdjZGY3NDE2ZDEwNmNiOWRmNDc1
ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI2NCw2ICsyNjQsNDIgQEAgdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXIKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6U3RvcmVSZWdpc3RyYXRpb25zT25EaXNrIHsgfSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3Vic2NyaWJlVG9QdXNo
U2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2Vy
dmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3Vi
c2NyaWJlVG9QdXNoU2VydmljZSB7IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGFwcGxpY2F0aW9u
U2VydmVyS2V5IH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbGJhY2socmVzdWx0LmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoKnJlc3VsdCkpOworICAgIH0pOworfQorCit2b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgVW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpVbnN1YnNjcmli
ZUZyb21QdXNoU2VydmljZSB7IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhyZXN1bHQu
ZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgY2FsbGJhY2soKnJlc3VsdCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9u
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpH
ZXRQdXNoU3Vic2NyaXB0aW9uIHsgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9LCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3Vs
dC5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpyZXN1
bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hQ
ZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OkdldFB1c2hQZXJtaXNzaW9uU3RhdGUgeyByZWdpc3RyYXRpb25JZGVu
dGlmaWVyIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsbGJhY2socmVzdWx0LmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgIGNh
bGxiYWNrKHN0YXRpY19jYXN0PFB1c2hQZXJtaXNzaW9uU3RhdGU+KCpyZXN1bHQpKTsKKyAgICB9
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFiNTU0Yzk0NDlkYTRlYWEyNDYxN2YxMWEx
MWZhNzUzYjVkNmVhZjQuLjJhY2VkYjg0YWMzNThhNzQ2NWViMTBiMjZhYzc4NmQyNTgzOTAxOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5oCkBAIC05MCw2ICs5MCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JikgZmluYWw7CiAgICAgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNP
bkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAg
CisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9u
U2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxs
YmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdlSm9iKGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441788</attachid>
            <date>2021-10-19 13:54:53 -0700</date>
            <delta_ts>2021-10-19 17:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231922-20211019135452.patch</filename>
            <type>text/plain</type>
            <size>63003</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwY2U1Yjg5OGJiMzc1
NzVjOTlmMTU4YTljYjk2N2JiZDYxNmNmZS4uOGY4M2Y2Nzg1YTg1ZjRmZDU2ZTJkN2NhMjE3OGY4
MjgxZWE5OTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTEwLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVi
cyBmb3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgIEJvdGggUHVzaE1hbmFnZXIgYW5kIFB1c2hTdWJzY3JpcHRpb24gbm93
IHNlbmQgdGhlaXIgc3Vic2NyaXB0aW9uIHJlcXVlc3RzIHRvIE5ldHdvcmtQcm9jZXNzCisgICAg
ICAgIHZpYSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uID0+IFNlcnZpY2VXb3JrZXJDb250YWlu
ZXIgPT4gU1dDbGllbnRDb25uZWN0aW9uLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlB1c2hNYW5hZ2VyOjpzdWJzY3JpYmUpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFn
ZXI6OmdldFN1YnNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQdXNoTWFuYWdlcjo6cGVy
bWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hQZXJtaXNzaW9u
U3RhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6UHVzaFN1YnNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjp1bnN1YnNjcmliZSk6CisgICAg
ICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hTdWJzY3JpcHRpb25EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnM6OlB1c2hTdWJzY3JpcHRpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjp1c2VyVmlzaWJsZU9ubHkgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVzaFN1
YnNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpn
ZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0UHVzaFN1YnNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRQ
dXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbjo6fldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNo
U2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246Omdl
dFB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmg6CisKIDIwMjEtMTAtMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBjYWxsYmFjayB0byBrbm93IHdo
ZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHZpYSAtW1dLV2ViVmlldyBfbG9hZFNlcnZpY2VX
b3JrZXI6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyNThiYjdlY2ViMTU1MTNmYzYwMDYzYzJkYzkyMjc1YzM2MWVj
NDA2Li5kMWUwMjgzNjIyMDAxNDQ1OTIzNTBhMWRjNTVjMDZkZTJlYjk4MDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTE4ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVicyBmb3IgcHVzaCBzdWJzY3JpcHRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZGVkIHN0
dWJzIGluIE5ldHdvcmtQcm9jZXNzIGZvciBwdXNoIHN1YnNjcmlwdGlvbi1yZWxhdGVkIElQQy4g
Q3VycmVudGx5IHRoZSBzdHVicyByZXR1cm4KKyAgICAgICAgdGhhdCBzdWJzY3JpYmluZyBpcyB1
bnN1cHBvcnRlZCBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gYWN0aXZlIHB1c2ggc3Vic2NyaXB0aW9u
cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgor
CiAyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEg
LVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDRj
Nzg1MTMyZTNjNDk0ODRmZDhjMTI0MzY0MTViNzViMTIwZTkyZDEuLmFjMDYwZGRhN2Q0ODMzY2Rl
OGY0MjkxNjdmODRjMDY0ZjMyM2Q4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTU0LDYgKzE1
NCw5IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAogICAgIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lv
blN0YXRlLmgKKyAgICBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKKwog
ICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oCiAgICAg
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oCiAgICAg
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKaW5kZXggYWNhNmNmZjE4
M2VkYmRlMTM3ZDQyMTViNDVkMDNkNjkyOTY5YWI0OC4uNjQyZDUwYWE4MzhlNGYwMjBkMGQyMmIz
ZmY0MDk2OTdhOGEzOGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNo
LWFwaS9QdXNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFw
aS9QdXNoTWFuYWdlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFB1c2hNYW5hZ2VyOjpz
dWJzY3JpYmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
c3RkOgogICAgIH0KICAgICAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKLSAgICBhdXRvIGtleURh
dGEgPSBrZXlEYXRhUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGF1dG8ga2V5RGF0
YSA9IGtleURhdGFSZXN1bHQucmV0dXJuVmFsdWUoKTsKICAgICBhdXRvIGtleSA9IENyeXB0b0tl
eUVDOjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0EsICJQLTI1NiJf
cywgV1RGTW92ZShrZXlEYXRhKSwgZmFsc2UsIENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICNlbHNl
CiAgICAgYXV0byBrZXkgPSBudWxscHRyOwpAQCAtMTE2LDE4ICsxMTYsMTggQEAgdm9pZCBQdXNo
TWFuYWdlcjo6c3Vic2NyaWJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHN0ZDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJQdXNoIHBlcm1pc3Npb24gd2Fz
IGRlbmllZCJfcyB9KTsKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uc3Vic2NyaWJl
VG9QdXNoU2VydmljZShrZXlEYXRhUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBQdXNoTWFuYWdlcjo6Z2V0U3Vic2NyaXB0aW9uKERPTVBy
b21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+
PiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOworICAgIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXRQdXNoU3Vic2NyaXB0aW9uKFdURk1vdmUocHJvbWlz
ZSkpOwogfQogCiB2b2lkIFB1c2hNYW5hZ2VyOjpwZXJtaXNzaW9uU3RhdGUoc3RkOjpvcHRpb25h
bDxQdXNoU3Vic2NyaXB0aW9uT3B0aW9uc0luaXQ+JiYgb3B0aW9ucywgRE9NUHJvbWlzZURlZmVy
cmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmIHByb21pc2UpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIHByb21pc2UucmVzb2x2ZShQdXNoUGVybWlz
c2lvblN0YXRlOjpEZW5pZWQpOworICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXRQ
dXNoUGVybWlzc2lvblN0YXRlKFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aFBlcm1pc3Npb25TdGF0ZS5oCmluZGV4IDczNzBhMWM4YjJkMjI5MGUwYWFhMGY5NTRhYzU2YTU2
N2NlODkyZWIuLmY2NjE0NWM4YWZiYjZlNzEzNGFkZTg3ODFhYjNlMzAwZWI1ZTZkM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25T
dGF0ZS5oCkBAIC0zNyw0ICszNywxNSBAQCBlbnVtIGNsYXNzIFB1c2hQZXJtaXNzaW9uU3RhdGUg
OiB1aW50OF90IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0
ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlB1
c2hQZXJtaXNzaW9uU3RhdGUsCisgICAgICAgIFdlYkNvcmU6OlB1c2hQZXJtaXNzaW9uU3RhdGU6
OkRlbmllZCwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6R3JhbnRlZCwK
KyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6UHJvbXB0CisgICAgPjsKK307
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRp
b24uY3BwCmluZGV4IGQzNTZkNzRmM2E2OTE5YmRmMWI5NzI3NmM1NjM5MjI2YTlkNjZjMTcuLjU5
NDNjODNkMmVlMmEyMmM4ZGMwNWJjNTczNTliMjk4ZWFkYzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNj
cmlwdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KIApAQCAtMzcsMTAgKzM4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCi1QdXNoU3Vic2NyaXB0
aW9uOjpQdXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVw
b2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25z
PiYmIG9wdGlvbnMsIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rv
cjx1aW50OF90PiYmIHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9lbmRwb2lu
dChXVEZNb3ZlKGVuZHBvaW50KSkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24o
UmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uLCBTdHJpbmcmJiBl
bmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZl
Y3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBj
bGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlv
blNlY3JldCkKKyAgICA6IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lz
dHJhdGlvbikpCisgICAgLCBtX2VuZHBvaW50KFdURk1vdmUoZW5kcG9pbnQpKQogICAgICwgbV9l
eHBpcmF0aW9uVGltZShleHBpcmF0aW9uVGltZSkKLSAgICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9w
dGlvbnMpKQorICAgICwgbV9vcHRpb25zKFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUo
V1RGTW92ZShzZXJ2ZXJWQVBJRFB1YmxpY0tleSkpKQogICAgICwgbV9jbGllbnRFQ0RIUHVibGlj
S2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkpCiAgICAgLCBtX3NoYXJlZEF1dGhlbnRp
Y2F0aW9uU2VjcmV0KFdURk1vdmUoc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKQogewpAQCAt
ODYsNyArODgsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hT
dWJzY3JpcHRpb246OmdldEtleShQdXNoRW5jcnlwdGlvbktleQogCiB2b2lkIFB1c2hTdWJzY3Jp
cHRpb246OnVuc3Vic2NyaWJlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21p
c2UpCiB7Ci0gICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJOb3QgaW1wbGVtZW50ZWQiX3MgfSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LT51bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogUHVz
aFN1YnNjcmlwdGlvbkpTT04gUHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmgKaW5k
ZXggOWE2MTU5Y2IyYmJiZDI2NmIwY2M5OWE4Yzk4MDg4YTQ5MjcwY2FmNC4uY2I4ODc0OGU2NjU0
NjdkMzY1ZjBmOGI2ZTEwMGRmMWU4NTRkNWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM7CitjbGFz
cyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOworY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjsKIAogY2xhc3MgUHVzaFN1YnNjcmlwdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFB1c2hTdWJz
Y3JpcHRpb24+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChQdXNoU3Vic2Ny
aXB0aW9uLCBXRUJDT1JFX0VYUE9SVCk7CkBAIC01Nyw4ICs1OSw5IEBAIHB1YmxpYzoKICAgICBQ
dXNoU3Vic2NyaXB0aW9uSlNPTiB0b0pTT04oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBXRUJD
T1JFX0VYUE9SVCBQdXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlv
bmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zPiYmLCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8
dWludDhfdD4mJiBhdXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQdXNoU3Vic2NyaXB0aW9uKFJl
ZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYm
IHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGlj
S2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKIAorICAgIFJlZjxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb247CiAgICAgU3RyaW5nIG1fZW5k
cG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gbV9leHBpcmF0aW9uVGlt
ZTsKICAgICBSZWY8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDEyOTFjNGI4YTA1YzFjYjMzOTA4NDU3OTcxOTFhYmFlMWJhMzlk
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbkRhdGEuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQdXNoU3Vi
c2NyaXB0aW9uRGF0YSBQdXNoU3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K3sKKyAgICBQdXNoU3Vic2NyaXB0aW9uRGF0YSByZXN1bHQ7CisgICAgcmVzdWx0LmVuZHBvaW50
ID0gZW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVzdWx0LmV4cGlyYXRpb25UaW1lID0g
ZXhwaXJhdGlvblRpbWU7CisgICAgcmVzdWx0LnNlcnZlclZBUElEUHVibGljS2V5ID0gc2VydmVy
VkFQSURQdWJsaWNLZXk7CisgICAgcmVzdWx0LmNsaWVudEVDREhQdWJsaWNLZXkgPSBjbGllbnRF
Q0RIUHVibGljS2V5OworICAgIHJlc3VsdC5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCA9IHNo
YXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0
aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0
aW9uRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3OWZmYzkyZTlmOGUyZTczNDAxMTMzZjA3NDNmMjUxYWQw
MTQ4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBp
L1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiRXBv
Y2hUaW1lU3RhbXAuaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKKyAgICBTdHJpbmcgZW5k
cG9pbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFcG9jaFRpbWVTdGFtcD4gZXhwaXJh
dGlvblRpbWU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcnZlclZBUElEUHVibGljS2V5OworICAg
IFZlY3Rvcjx1aW50OF90PiBjbGllbnRFQ0RIUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50OF90
PiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hT
dWJzY3JpcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUHVz
aFN1YnNjcmlwdGlvbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgZW5kcG9pbnQ7CisgICAgZW5jb2RlciA8PCBleHBpcmF0aW9uVGltZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZlclZBUElEUHVibGljS2V5OworICAgIGVuY29kZXIgPDwgY2xpZW50
RUNESFB1YmxpY0tleTsKKyAgICBlbmNvZGVyIDw8IHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQdXNoU3Vic2Ny
aXB0aW9uRGF0YT4gUHVzaFN1YnNjcmlwdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFB1c2hTdWJzY3JpcHRpb25EYXRhIHJlc3VsdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5lbmRwb2ludCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhwaXJhdGlvblRpbWUpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNlcnZl
clZBUElEUHVibGljS2V5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGllbnRFQ0RIUHVibGljS2V5KSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaGFyZWRB
dXRoZW50aWNhdGlvblNlY3JldCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAppbmRleCBhZDAyYWE5
ZTcyMjRiMjcxMmY0NTNiMzc0ZjBhOTI1ZmM4NjY3ZmYxLi4xOTNjMTQxNTE2MWNjYmViYzYyMjRh
ZTUzOGNkYzZkYTdlNWZlZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcApAQCAtMzQsOSArMzQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQ
dXNoU3Vic2NyaXB0aW9uT3B0aW9ucyk7CiAKLVB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpQdXNo
U3Vic2NyaXB0aW9uT3B0aW9ucyhib29sIHVzZXJWaXNpYmxlT25seSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgc2VydmVyVkFQSURQdWJsaWNLZXkpCi0gICAgOiBtX3VzZXJWaXNpYmxlT25seSh1c2VyVmlz
aWJsZU9ubHkpCi0gICAgLCBtX3NlcnZlclZBUElEUHVibGljS2V5KFdURk1vdmUoc2VydmVyVkFQ
SURQdWJsaWNLZXkpKQorUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OlB1c2hTdWJzY3JpcHRpb25P
cHRpb25zKFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5KQorICAgIDogbV9z
ZXJ2ZXJWQVBJRFB1YmxpY0tleShXVEZNb3ZlKHNlcnZlclZBUElEUHVibGljS2V5KSkKIHsKIH0K
IApAQCAtNDQsNyArNDMsNyBAQCBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczo6flB1c2hTdWJzY3Jp
cHRpb25PcHRpb25zKCkgPSBkZWZhdWx0OwogCiBib29sIFB1c2hTdWJzY3JpcHRpb25PcHRpb25z
Ojp1c2VyVmlzaWJsZU9ubHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZXJWaXNpYmxlT25s
eTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBQdXNoU3Vi
c2NyaXB0aW9uT3B0aW9uczo6c2VydmVyVkFQSURQdWJsaWNLZXkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uT3B0
aW9ucy5oCmluZGV4IDRiZTU4MGY3ZGZlZGNkZDA0NjRhNDJmYzA3YzJhODZiZDE5MjZiNTUuLjQw
MzNjN2NmYWUwODMzOGQyNTBhYTViM2Y4Njk3OGE2YTM2ZjJkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25z
LmgKQEAgLTM4LDE5ICszOCwxOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQdXNo
U3Vic2NyaXB0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zPiB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoUHVzaFN1YnNjcmlw
dGlvbk9wdGlvbnMsIFdFQkNPUkVfRVhQT1JUKTsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFB1c2hTdWJzY3JpcHRpb25PcHRpb25zKTsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHVzaFN1YnNjcmlwdGlvbk9wdGlv
bnMoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB+
UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMoKTsKKyAgICB+UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMo
KTsKIAogICAgIGJvb2wgdXNlclZpc2libGVPbmx5KCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXBwbGljYXRpb25TZXJ2ZXJLZXkoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucyhi
b29sIHVzZXJWaXNpYmxlT25seSwgVmVjdG9yPHVpbnQ4X3Q+JiZhcHBsaWNhdGlvblNlcnZlcktl
eSk7CisgICAgZXhwbGljaXQgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMoVmVjdG9yPHVpbnQ4X3Q+
JiZhcHBsaWNhdGlvblNlcnZlcktleSk7CiAKLSAgICBib29sIG1fdXNlclZpc2libGVPbmx5Owog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX3NlcnZlclZBUElEUHVibGljS2V5OwogICAgIG11dGFibGUg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fYXBwbGljYXRpb25TZXJ2ZXJLZXk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCA3N2UyNDMzYzUwMTYzOTUyMGQwMTI3ZWQxYmI1NDBmZGEyNzkyNmZhLi5m
ZTBlM2Q1NGVjM2Y0YTE4NjI0ZGEyMzhkMWE4NjljYzYwY2Y5MTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMjIzLDYgKzIyMyw3IEBAIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0dXJlSW5QaWN0
dXJlV2luZG93LmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCiBNb2R1bGVzL3B1
c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlw
dGlvbi5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCiBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAogTW9kdWxlcy9wdXNoLWFw
aS9QdXNoTWFuYWdlci5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvblB1c2hBUEkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNWQ2ZTM1MDY4M2YzYjc0OWM4NjhiYzAyYWY5ZDNjMzkyODZl
MzlmMy4uOWE3OTdkOGE1NTVlNjBmM2I5MDdmYjRlOGZmYzY2Njk4NzJhNjBjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQw
Niw4ICs1NDA2LDkgQEAKIAkJRUIwRkI3MEEyNzBEMEIxQjAwRjc4MTBEIC8qIFB1c2hTdWJzY3Jp
cHRpb25KU09OLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQjBGQjcwMzI3MEQwQUVCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpTT04uaCAqLzsg
fTsKIAkJRUIwRkI3MEMyNzBEMEIyOTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjBGQjcw
NjI3MEQwQUVDMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJ
RUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIwRkI3MDEy
NzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oICovOyB9Owor
CQlFQjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjhFRDQxMjcxN0FC
QTkwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgxMjcxMDA2NzEwMDc3MzJFRiAv
KiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmggKi87IH07Ci0J
CUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM3ODI3MTAwNjUx
MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovOyB9OworCQlFQkI5NzM4MjI3MTAw
Njc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzczMkVGIC8qIFB1
c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uUHVzaEFQSS5oICovOyB9OwogCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyogU1FM
aXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVCRTVCMjI0MjQ1QTI2RUUwMDNBNUE4OCAvKiBTUUxpdGVTdGF0
ZW1lbnRBdXRvUmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJz
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
QkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwICovOyB9OwpA
QCAtMTY4NTUsNiArMTY4NTYsOCBAQAogCQlFQjBGQjcwNTI3MEQwQUVCMDBGNzgxMEQgLyogUHVz
aFN1YnNjcmlwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbi5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUVCMEZCNzA2MjcwRDBBRUMwMEY3ODEwRCAvKiBQdXNoU3Vic2Ny
aXB0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjBGQjcwNzI3MEQwQUVDMDBGNzgxMEQg
LyogUHVzaFN1YnNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMjhFRDQxMjcxN0FCQTkwMDVGMDM5MyAv
KiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9u
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjI4RUQ0MzI3MTdBQkE5MDA1
RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVz
aFN1YnNjcmlwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5
NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVz
aEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUyMDA3NzMyRUYg
LyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDA0Myw2ICsyMDA0Niw4IEBACiAJCQkJRUIwRkI3MDQyNzBEMEFFQjAwRjc4MTBEIC8q
IFB1c2hTdWJzY3JpcHRpb24uY3BwICovLAogCQkJCUVCMEZCNzA3MjcwRDBBRUMwMEY3ODEwRCAv
KiBQdXNoU3Vic2NyaXB0aW9uLmggKi8sCiAJCQkJRUIwRkI3MDUyNzBEMEFFQjAwRjc4MTBEIC8q
IFB1c2hTdWJzY3JpcHRpb24uaWRsICovLAorCQkJCUVCMjhFRDQzMjcxN0FCQTkwMDVGMDM5MyAv
KiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAgKi8sCisJCQkJRUIyOEVENDEyNzE3QUJBOTAwNUYw
MzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi8sCiAJCQkJRUIwRkI3MDMyNzBEMEFFQjAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmggKi8sCiAJCQkJRUIwRkI3MDIyNzBEMEFF
QTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmlkbCAqLywKIAkJCQlFQjBGQjZGQjI3
MEQwQUU2MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwICovLApAQCAtMzQ5
MDgsNiArMzQ5MTMsNyBAQAogCQkJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVy
bWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURD
NTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcwOTI3MEQwQjE4
MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUIyOEVE
NDQyNzE3QUMxMTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFQjBGQjcwQTI3MEQwQjFCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpTT04u
aCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzBDMjcwRDBCMjkwMEY3ODEwRCAvKiBQdXNoU3Vi
c2NyaXB0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MEQyNzBEMEIyRTAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTIwZjI0ODVmMTFjODU4NjAxNDQx
MTBmNmIxZDMzYTBjZDNiNDBiNC4uYzM4NzY4N2M0ZDE3ZDQyZDcxOGUwYmFmNTE5YjBiZTYxNTQ5
MTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTIyLDYgKzEyMiw3
IEBACiAjaW5jbHVkZSAiSW50ZXJuYWxzU2V0TGlrZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJKU1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRl
Z3kuaCIKQEAgLTY1NDAsMTQgKzY1NDEsMTQgQEAgdm9pZCBJbnRlcm5hbHM6OnJldGFpblRleHRJ
dGVyYXRvckZvckRvY3VtZW50Q29udGVudCgpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1SZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gSW50ZXJuYWxzOjpjcmVhdGVQdXNoU3Vic2Ny
aXB0aW9uKGNvbnN0IFN0cmluZyYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3Rh
bXA+IGV4cGlyYXRpb25UaW1lLCBib29sIHVzZXJWaXNpYmxlT25seSwgY29uc3QgQXJyYXlCdWZm
ZXImIHNlcnZlclZBUElEUHVibGljS2V5LCBjb25zdCBBcnJheUJ1ZmZlciYgY2xpZW50RUNESFB1
YmxpY0tleSwgY29uc3QgQXJyYXlCdWZmZXImIGF1dGgpCitSZWZQdHI8UHVzaFN1YnNjcmlwdGlv
bj4gSW50ZXJuYWxzOjpjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbiwgY29uc3QgU3RyaW5nJiBlbmRwb2ludCwgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIGNvbnN0IEFycmF5QnVmZmVy
JiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgY29uc3QgQXJyYXlCdWZmZXImIGNsaWVudEVDREhQdWJs
aWNLZXksIGNvbnN0IEFycmF5QnVmZmVyJiBhdXRoKQogewogICAgIGF1dG8gbXlFbmRwb2ludCA9
IGVuZHBvaW50OwogICAgIFZlY3Rvcjx1aW50OF90PiBteVNlcnZlclZBUElEUHVibGljS2V5IHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlcnZlclZBUElEUHVibGljS2V5LmRhdGEoKSks
IHNlcnZlclZBUElEUHVibGljS2V5LmJ5dGVMZW5ndGgoKSB9OwogICAgIFZlY3Rvcjx1aW50OF90
PiBteUNsaWVudEVDREhQdWJsaWNLZXkgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY2xp
ZW50RUNESFB1YmxpY0tleS5kYXRhKCkpLCBjbGllbnRFQ0RIUHVibGljS2V5LmJ5dGVMZW5ndGgo
KSB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBteUF1dGggeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXV0aC5kYXRhKCkpLCBhdXRoLmJ5dGVMZW5ndGgoKSB9OwogCi0gICAgcmV0dXJuIFB1
c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKG15RW5kcG9pbnQpLCBleHBpcmF0aW9uVGlt
ZSwgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZSh1c2VyVmlzaWJsZU9ubHksIFdURk1v
dmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSkpLCBXVEZNb3ZlKG15Q2xpZW50RUNESFB1YmxpY0tl
eSksIFdURk1vdmUobXlBdXRoKSk7CisgICAgcmV0dXJuIFB1c2hTdWJzY3JpcHRpb246OmNyZWF0
ZShXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIFdURk1vdmUobXlFbmRwb2ludCksIGV4cGlyYXRpb25U
aW1lLCBXVEZNb3ZlKG15U2VydmVyVkFQSURQdWJsaWNLZXkpLCBXVEZNb3ZlKG15Q2xpZW50RUNE
SFB1YmxpY0tleSksIFdURk1vdmUobXlBdXRoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggMjgxMDIyZTZkODcyYmIwNmE4Y2U3N2YzYTJjN2RlODIxM2Fj
NzkyMC4uNWYyOTBjNjRlMWQ0YWMxZWJhZWZjMmUyMzhmNTYwNDJiZWU4ZjE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMjQsNyArMTI0LDkgQEAgY2xhc3MgVGV4dFRyYWNr
Q3VlR2VuZXJpYzsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3Mg
UHVzaFN1YnNjcmlwdGlvbjsKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CitjbGFzcyBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKQEAgLTE0NCwx
MCArMTQ2LDYgQEAgY2xhc3MgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOwogI2VuZGlmCiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLWNsYXNzIFB1c2hTdWJzY3JpcHRp
b247Ci0jZW5kaWYKLQogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlz
ZURlZmVycmVkOwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsK
QEAgLTExOTksNyArMTE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldGFpblRleHRJdGVyYXRv
ckZvckRvY3VtZW50Q29udGVudCgpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKGNvbnN0IFN0
cmluZyYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25U
aW1lLCBib29sIHVzZXJWaXNpYmxlT25seSwgY29uc3QgQXJyYXlCdWZmZXImIHNlcnZlclZBUElE
UHVibGljS2V5LCBjb25zdCBBcnJheUJ1ZmZlciYgY2xpZW50RUNESFB1YmxpY0tleSwgY29uc3Qg
QXJyYXlCdWZmZXImIGF1dGgpOworICAgIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGVQ
dXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBjb25zdCBT
dHJpbmcmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9u
VGltZSwgY29uc3QgQXJyYXlCdWZmZXImIHNlcnZlclZBUElEUHVibGljS2V5LCBjb25zdCBBcnJh
eUJ1ZmZlciYgY2xpZW50RUNESFB1YmxpY0tleSwgY29uc3QgQXJyYXlCdWZmZXImIGF1dGgpOwog
I2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
YjgxN2Q2NzE5NzliYTdjM2Q0ZmNkZjg3YzZjZmQ3MzgzMGM0Yjg5Mi4uZTBjODA1YTRlZTQ4NjVm
YWIwN2I3ZjkxYmJkOGM0ZWVkNzg2M2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtMTA2Niw1ICsxMDY2LDUgQEAgZW51bSBBdXRvcGxheVBvbGljeSB7CiAKICAgICB1
bmRlZmluZWQgcmV0YWluVGV4dEl0ZXJhdG9yRm9yRG9jdW1lbnRDb250ZW50KCk7CiAKLSAgICBb
Q29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFB1c2hTdWJzY3JpcHRpb24gY3JlYXRlUHVzaFN1
YnNjcmlwdGlvbihVU1ZTdHJpbmcgZW5kcG9pbnQsIEVwb2NoVGltZVN0YW1wPyBleHBpcmF0aW9u
VGltZSwgYm9vbGVhbiB1c2VyVmlzaWJsZU9ubHksIEFycmF5QnVmZmVyIHNlcnZlclZBUElEUHVi
bGljS2V5LCBBcnJheUJ1ZmZlciBjbGllbnRFQ0RIUHVibGljS2V5LCBBcnJheUJ1ZmZlciBhdXRo
KTsKKyAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFB1c2hTdWJzY3JpcHRpb24gY3Jl
YXRlUHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIHJlZ2lzdHJhdGlv
biwgVVNWU3RyaW5nIGVuZHBvaW50LCBFcG9jaFRpbWVTdGFtcD8gZXhwaXJhdGlvblRpbWUsIEFy
cmF5QnVmZmVyIHNlcnZlclZBUElEUHVibGljS2V5LCBBcnJheUJ1ZmZlciBjbGllbnRFQ0RIUHVi
bGljS2V5LCBBcnJheUJ1ZmZlciBhdXRoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNWQwYmRmM2QxOWZiMDli
ODIxNThjYWU4YjNlYjkyOTIzNzI5ZTEzZi4uMTM3ZTkzNTg3MGY2OTMyNjQzYWNhMjY5MjBmMzc2
ZWQ3MDkxYTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiRG9jdW1l
bnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJQdXNo
UGVybWlzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC04Niw2ICs4OCwxOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2so
KTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aGVuU2VydmljZVdvcmtlcklzVGVybWluYXRlZEZvclRl
c3RpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CisgICAgCisgICAgdXNpbmcgU3Vic2NyaWJlVG9Q
dXNoU2VydmljZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4mJik+OworICAgIHZpcnR1YWwgdm9pZCBzdWJzY3JpYmVUb1B1
c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNl
Q2FsbGJhY2smJikgPSAwOworICAgIAorICAgIHVzaW5nIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2
aWNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYp
PjsKKyAgICB2aXJ0dWFsIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJikgPSAwOworICAgIAorICAgIHVzaW5nIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxQdXNo
U3Vic2NyaXB0aW9uRGF0YT4+JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHVzaFN1YnNjcmlw
dGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFN1YnNjcmlw
dGlvbkNhbGxiYWNrJiYpID0gMDsKKworICAgIHVzaW5nIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8UHVzaFBlcm1pc3Np
b25TdGF0ZT4mJik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoUGVybWlzc2lvblN0YXRl
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAyNTEzODA5ZGQ4Y2Zj
YzNlYmNmNDA4OWVhNDUxOTNjYjcwZDljOGQwLi42YzU5ZThkODUxY2M0MjlmNGZjNzQ2OWI2ZTRk
OWMzZjFjOGEwMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0zOCwxMiArMzgsMTQgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJKU1B1c2hTdWJzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJKU1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRl
ICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25PcHRpb25zLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTUwLDYgKzU1Miw1NSBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uJiByZWdpcwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9uLmlk
ZW50aWZpZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWY8UHVzaFN1YnNjcmlwdGlvbj4gY3JlYXRlUHVz
aFN1YnNjcmlwdGlvbkZyb21EYXRhKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiByZWdp
c3RyYXRpb24sIFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gUHVz
aFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUocmVnaXN0cmF0aW9uKSwgV1RGTW92ZShkYXRh
LmVuZHBvaW50KSwgZGF0YS5leHBpcmF0aW9uVGltZSwgV1RGTW92ZShkYXRhLnNlcnZlclZBUElE
UHVibGljS2V5KSwgV1RGTW92ZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3ZlKGRh
dGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZl
cktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4m
JiBwcm9taXNlKQoreworICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLnN1YnNjcmliZVRv
UHVzaFNlcnZpY2UocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgYXBwbGljYXRpb25TZXJ2ZXJL
ZXksIFtwcm90ZWN0ZWRSZWdpc3RyYXRpb24gPSBSZWYgeyByZWdpc3RyYXRpb24gfSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNyZWF0ZVB1c2hTdWJzY3JpcHRp
b25Gcm9tRGF0YShXVEZNb3ZlKHByb3RlY3RlZFJlZ2lzdHJhdGlvbiksIHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkpOworICAgIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHBy
b21pc2UpCit7CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkudW5zdWJzY3JpYmVGcm9t
UHVzaFNlcnZpY2UoaWRlbnRpZmllciwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNo
U3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgRE9N
UHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9u
Pj4+JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRQdXNo
U3Vic2NyaXB0aW9uKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIFtwcm90ZWN0ZWRSZWdpc3Ry
YXRpb24gPSBSZWYgeyByZWdpc3RyYXRpb24gfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gb3B0
aW9uYWxQdXNoU3Vic2NyaXB0aW9uRGF0YSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
KyAgICAgICAgaWYgKCFvcHRpb25hbFB1c2hTdWJzY3JpcHRpb25EYXRhKSB7CisgICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBwcm9taXNlLnJlc29sdmUoY3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21E
YXRhKFdURk1vdmUocHJvdGVjdGVkUmVnaXN0cmF0aW9uKSwgV1RGTW92ZSgqb3B0aW9uYWxQdXNo
U3Vic2NyaXB0aW9uRGF0YSkpLnB0cigpKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExFbnVtZXJh
dGlvbjxQdXNoUGVybWlzc2lvblN0YXRlPj4mJiBwcm9taXNlKQoreworICAgIGVuc3VyZVNXQ2xp
ZW50Q29ubmVjdGlvbigpLmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoaWRlbnRpZmllciwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2
ZW50KCkKIHsKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggZWZkZjA5NDI2YTc5NjY0NDk1NTc0MTZlMzNj
NjJlMmU2M2QwMWNjMy4uODdmNjg2MDhlNmNmMDQ5NTliMDZkMWRhOTQ4Yjg4ZDBhMDdmYzU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCisjaW5jbHVkZSAiUHVzaFBlcm1pc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJT
V1NlcnZlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCIKQEAgLTgzLDYg
Kzg1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiYpOwogCisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9u
U2VydmVyS2V5LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRp
b24+PiYmKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4m
Jik7CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFB1c2hTdWJz
Y3JpcHRpb24+Pj4mJik7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVy
YXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworCiAgICAgU2VydmljZVdvcmtlckpvYiog
am9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc3RhcnRNZXNzYWdl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDMwZGI4ZDlhYjAzY2QzOTYxMGUyYjEx
MDQyMTdlOTljZjNlYTI3ODQuLjBiNjgyOGM4ODdiYWUzYzBlYmViYTMwMzI5YjI5ZTE5OWRjNmJh
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTE2MSw2ICsxNjEsNDYgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKICAgICBtX2NvbnRhaW5lci0+dW5yZWdpc3RlclJlZ2lzdHJhdGlvbihpZGVu
dGlmaWVyKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBh
cHBsaWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNo
U3Vic2NyaXB0aW9uPj4mJiBwcm9taXNlKQoreworICAgIGlmIChpc0NvbnRleHRTdG9wcGVkKCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRhaW5lci0+c3Vic2NyaWJlVG9Q
dXNoU2VydmljZSgqdGhpcywgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVuc3Vic2NyaWJlRnJvbVB1
c2hTZXJ2aWNlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7Cisg
ICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fY29udGFpbmVyLT51bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShpZGVudGlmaWVyKCksIFdU
Rk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Omdl
dFB1c2hTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVy
ZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNDb250ZXh0
U3RvcHBlZCgpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3Rh
dGVFcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250YWluZXItPmdl
dFB1c2hTdWJzY3JpcHRpb24oKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoRE9NUHJvbWlz
ZURlZmVycmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmIHByb21pc2Up
Cit7CisgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fY29udGFpbmVyLT5nZXRQdXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZpZXIoKSwg
V1RGTW92ZShwcm9taXNlKSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6
dXBkYXRlU3RhdGVGcm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0
ZSwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+JiYgc2VydmljZVdvcmtlcikKIHsKICAgICBzd2l0Y2gg
KHN0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCA3NDc2NjExOTY3Yjk0N2E3ZTJjMGRk
MWI5MjdhMWZjOTI5Njk2ODkzLi44OWVjOTczZjVmZjY3YTM2YzdhMTRjOTZmMGE1NmQxODdhMzQ5
OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTI5LDYgKzI5LDkgQEAKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQdXNoUGVybWlzc2lvblN0YXRlLmgi
CisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5j
bHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTQyLDExICs0NSwxMSBAQCBjbGFzcyBTZXJ2aWNl
V29ya2VyOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKIAogY2xhc3MgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24+LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24pOworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24sIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IGdldE9yQ3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWY8U2VydmljZVdvcmtlckNvbnRhaW5lcj4mJiwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJik7CiAKLSAgICB+U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKCk7CiAKICAgICBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpc3RyYXRpb25EYXRhLmlkZW50aWZpZXI7IH0KIApAQCAtNjksNiArNzIsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQg
dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAorICAgIHZvaWQgc3Vic2NyaWJl
VG9QdXNoU2VydmljZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+PiYmKTsK
KyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPiYmKTsKKyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURl
ZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYpOwor
ICAgIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51
bWVyYXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworCiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
aWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsCmluZGV4IGRkOGIyMmUzN2UxN2Y4YzAxODA4MzlmZjFlYjQ4NjRiNjMyZjMyNjcu
LjBjZWIzZThkZjY2YzlhYzU5NjE5MzJkOTNlMGQzNDBkZWViZWRjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAg
U2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPShXaW5kb3csU2VydmljZVdvcmtlciksCisgICAg
RXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JL
RVIsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyRW5hYmxlZCwKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDJlMjRmMjY0
N2ZlYjJjMGUwMTY1ZjU5OTk5NjVlN2Y1ZWEwMDBhMDAuLmUyMDc0MzdmODc3MjI0ZGY3NTEzNmQy
NmUwOGI2MDI2ODk2NzFiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1Nywy
MiBAQCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24o
KQogICAgIGF1dG8gdW5yZWdpc3RlclJlcXVlc3RzID0gV1RGTW92ZShtX3VucmVnaXN0ZXJSZXF1
ZXN0cyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHVucmVnaXN0ZXJSZXF1ZXN0cy52YWx1
ZXMoKSkKICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiY29udGV4dCBz
dG9wcGVkIl9zIH0pOworICAgIAorICAgIGF1dG8gc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVl
c3RzID0gV1RGTW92ZShtX3N1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cyk7CisgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IHN1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cy52YWx1ZXMo
KSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3Rv
cHBlZCJfcyB9KTsKKyAgICAKKyAgICBhdXRvIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVx
dWVzdHMgPSBXVEZNb3ZlKG1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cyk7Cisg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVxdWVz
dHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJj
b250ZXh0IHN0b3BwZWQiX3MgfSk7CisgICAgCisgICAgYXV0byBnZXRQdXNoU3Vic2NyaXB0aW9u
UmVxdWVzdHMgPSBXVEZNb3ZlKG1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzKTsKKyAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzLnZhbHVlcygp
KQorICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9w
cGVkIl9zIH0pOworICAgIAorICAgIGF1dG8gZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNr
cyA9IFdURk1vdmUobV9nZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrcy52YWx1ZXMo
KSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3Rv
cHBlZCJfcyB9KTsKIH0KIAogdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVn
aXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0yMDUsNiArMjIxLDcw
IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2Uo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwgU3Vic2NyaWJl
VG9QdXNoU2VydmljZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fc3Vic2NyaWJl
VG9QdXNoU2VydmljZVJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCBy
ZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYXBwbGljYXRpb25TZXJ2
ZXJLZXldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CisgICAg
ICAgIGNvbm5lY3Rpb24uc3Vic2NyaWJlVG9QdXNoU2VydmljZShyZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBhcHBsaWNhdGlvblNlcnZlcktleSwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVx
dWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dD
bGllbnRDb25uZWN0aW9uKCkubV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHMudGFrZShy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsr
bV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV91bnN1YnNjcmliZUZyb21QdXNoU2Vydmlj
ZVJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi51bnN1YnNjcmliZUZyb21QdXNo
U2VydmljZShyZWdpc3RyYXRpb25JZGVudGlmaWVyLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQp
LCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgdGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0g
Y3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3Bl
KS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVxdWVz
dHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb246OmdldFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFN1YnNjcmlwdGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFz
dFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIAorICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0
cmF0aW9uSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9
IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rp
b24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5nZXRQdXNoU3Vic2NyaXB0aW9uKHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVy
XShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
a0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVz
dWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlv
bigpLm1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAg
ICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0
YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsK
KyAgICBtX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3MuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhy
ZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVy
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOworICAgICAgICBj
b25uZWN0aW9uLmdldFB1c2hQZXJtaXNzaW9uU3RhdGUocmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
W3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1
bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBz
Y29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCkubV9nZXRQdXNo
UGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICB9LCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCBjODZlZTQ1NWQzMTMyOTU3ZjI5NzlmZGZkZDhiMDJlODkx
ZTBjMjE4Li43NzdmYWM3MzFiNWNlYmRiYTRiNmIzZmQ1NmFmN2U3NzFjMGRmZDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC01Nyw2ICs1NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1
bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZv
aWQgc2NoZWR1bGVKb2IoRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVsZVVucmVnaXN0ZXJKb2JJblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRPcldvcmtl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+
JiYpIGZpbmFsOworICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNoU2VydmljZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlv
blNlcnZlcktleSwgU3Vic2NyaWJlVG9QdXNoU2VydmljZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICBSZWY8
V29ya2VyVGhyZWFkPiBtX3RocmVhZDsKIApAQCAtNjUsNiArNjksMTAgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2s+IG1fZ2V0UmVnaXN0
cmF0aW9uc1JlcXVlc3RzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdoZW5SZWdpc3RyYXRpb25S
ZWFkeUNhbGxiYWNrPiBtX3doZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+
PiBtX3VucmVnaXN0ZXJSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlQ2FsbGJhY2s+IG1fc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVlc3RzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2s+
IG1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2s+IG1fZ2V0UHVzaFN1YnNjcmlwdGlvblJl
cXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxs
YmFjaz4gbV9nZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCA5ODhjYzE5MDE0ZTNmMWEwMDFmYTYyMzI5OWFiMmI1NTRmNWIwYTg0Li5hNThiNGNmZDkxOGZm
NDM2ZGVhODBkOGU0ZTFkOTYzNmZjZTc0ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtNDQ4LDYgKzQ0OCwzNSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgfQogfQogCit2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBWZWN0b3I8dWlu
dDhfdD4mJiBhcHBsaWNhdGlvblNlcnZlcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxQdXNoU3Vic2NyaXB0aW9uRGF0YSwgRXhjZXB0aW9uRGF0YT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwor
ICAgIFVOVVNFRF9QQVJBTShhcHBsaWNhdGlvblNlcnZlcktleSk7CisgICAgCisgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIlB1c2ggcGVybWlzc2lvbiB3YXMgZGVuaWVkIl9zIH0pKTsKK30KKwordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgRXhjZXB0aW9uRGF0YT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOworICAgIAorICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKK30KKwordm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25EYXRhPiwgRXhjZXB0aW9uRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIAorICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+KHN0ZDo6bnVsbG9w
dCkpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFBlcm1pc3Npb25T
dGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ4X3Qs
IEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFVOVVNFRF9Q
QVJBTShyZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICAKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDx1aW50OF90PihQdXNoUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpKTsKK30K
Kwogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewogICAgIGF1
dG8mIGNvbm5lY3Rpb24gPSAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJj4oY29udGV4dENvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCmluZGV4IDI2NGU1YjMwNDM4ZWQxNmQwZDFkMjBiMjM3ZTM5MzU2NjE5NmRiMzQuLjY5NTdh
ZGVmOTBmZjQzYTk1MmIzNzY5MDBhN2Q5OTk2MDY5ZmMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbk9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdXNo
UGVybWlzc2lvblN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdXNoU3Vic2NyaXB0aW9uRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExOCw2ICsxMjAsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAg
ICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHN1YnNjcmliZVRvUHVz
aFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFZl
Y3Rvcjx1aW50OF90PiYmIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7
CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE+LCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKwog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJj
ZSk7CiAgICAgdm9pZCBjb250cm9sQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAxYzk0NmIwYmE1YWZmNTNkZGUxZTI2MWYxZjk0YzIz
MjU5YWFlOTQ1Li5lMWUyZjNiZjkyNWQ5Mjk0MTg5OTc2Y2U5NGI4OGY3ZDdlZjE5MzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTQ2LDYgKzQ2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZD
b3VudGVkIHsKIAogICAgIFNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKICAg
ICBTdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKSAtPiAoKSBBc3luYworCisgICAgU3Vic2NyaWJl
VG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4gYXBwbGljYXRpb25TZXJ2ZXJLZXkpIC0+IChF
eHBlY3RlZDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4gcmVzdWx0KSBBc3luYworICAgIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChF
eHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCisgICAg
R2V0UHVzaFN1YnNjcmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5
bmMKKyAgICBHZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDx1aW50OF90LCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jIAogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggZTRkNzFmZDIzZGViYTRk
ZWFkMWIxMGZkYjk0MjNiYzBiNmUwNDY0OC4uYWQ0ZmIwYWI3OGMyZGRhZjI3Y2RmNzQxNmQxMDZj
YjlkZjQ3NWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yNjQsNiArMjY0LDQyIEBAIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0b3JlUmVnaXN0cmF0aW9uc09uRGlzayB7IH0sIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmli
ZVRvUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNh
dGlvblNlcnZlcktleSwgU3Vic2NyaWJlVG9QdXNoU2VydmljZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlN1YnNjcmliZVRvUHVzaFNlcnZpY2UgeyByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBhcHBs
aWNhdGlvblNlcnZlcktleSB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOwor
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UgeyByZWdpc3RyYXRpb25JZGVudGlmaWVyIH0sIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
cmVzdWx0LmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgIGNhbGxiYWNrKCpyZXN1bHQp
OworICAgIH0pOworfQorCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNj
cmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6R2V0UHVzaFN1YnNjcmlwdGlvbiB7IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhyZXN1bHQuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92
ZSgqcmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpn
ZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlIHsgcmVnaXN0cmF0
aW9uSWRlbnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAg
ICAgICBjYWxsYmFjayhzdGF0aWNfY2FzdDxQdXNoUGVybWlzc2lvblN0YXRlPigqcmVzdWx0KSk7
CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAxYjU1NGM5NDQ5ZGE0ZWFhMjQ2
MTdmMTFhMTFmYTc1M2I1ZDZlYWY0Li4yYWNlZGI4NGFjMzU4YTc0NjVlYjEwYjI2YWM3ODZkMjU4
MzkwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtOTAsNiArOTAsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZpbmFsOwogICAgIHZvaWQgc3RvcmVSZWdpc3Ry
YXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OworICAgIAorICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBs
aWNhdGlvblNlcnZlcktleSwgU3Vic2NyaWJlVG9QdXNoU2VydmljZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoUGVybWlzc2lvblN0
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNThiMGU2YWQyZDlh
NDYyZDU5NmM1ZTAxMTBmNTNjNjg3ODY2ZmQwNC4uODE2ZTYyM2UxYjk4ZDczZjdmZDA3ZDY2M2My
MDY0NTNmNTIyOGJjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTE5ICBCZW4gTmhh
bSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVicyBm
b3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIE1vZGlmeSBQdXNoU3Vic2NyaXB0aW9uIHRlc3RzIHRvIHBhc3MgaW4gYSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLgorCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkv
ZW1wdHlXb3JrZXIuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoTWFuYWdlci13b3JrZXIuanMuCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVz
aE1hbmFnZXIuYW55LmpzOgorICAgICAgICAoZWxzZS5wcm9taXNlX3Rlc3QuYXN5bmMgdGVzdCk6
CisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbi5odHRwcy5hbnkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRp
b24uaHR0cHMuYW55LmpzOgorICAgICAgICAocHJvbWlzZV90ZXN0LmFzeW5jIHRlc3QpOgorICAg
ICAgICAocHJvbWlzZV90ZXN0KToKKyAgICAgICAgKHRlc3QpOiBEZWxldGVkLgorCiAyMDIxLTEw
LTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtjc3MtZmxleGJveF0gRG8gbm90IGNsYW1wIGZsZXggYmFzZSBzaXplIHdpdGgge21pbnxtYXh9
LXtoZWlnaHR8d2lkdGh9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9lbXB0eVdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL2VtcHR5V29y
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVkM2I0ZDY3NGQzNjQxYjg4YWJjZmY2MmE3YTdkNzFmNjgyYzIz
ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9lbXB0
eVdvcmtlci5qcwpAQCAtMCwwICsxIEBACisvLyBUaGlzIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBp
cyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaE1hbmFnZXItd29y
a2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaE1hbmFnZXItd29ya2Vy
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDNiNGQ2NzRkMzY0MWI4OGFiY2Zm
NjJhN2E3ZDcxZjY4MmMyMzg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hNYW5hZ2VyLXdvcmtl
ci5qcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS8vIFRoaXMgc2VydmljZSB3b3JrZXIg
c2NyaXB0IGlzIGludGVudGlvbmFsbHkgbGVmdCBibGFuay4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoTWFu
YWdlci5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoTWFuYWdlci5h
bnkuanMKaW5kZXggMzliZWQ1YzAyM2Y0MmYxMTZkZWE1Y2U0ZjZkYzA1MWZiMDcyZmRhZi4uMGJj
NmIzNjgyMDA3NGMyNzUxYjU0NWQ1MzMwOGJiNjY1NWMwOGE3MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaE1hbmFnZXIuYW55LmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hNYW5hZ2VyLmFueS5qcwpAQCAtMzQsNyArMzQsNyBA
QCBpZiAoaXNTZXJ2aWNlV29ya2VyKSB7CiAgICAgICAgIGlmIChyZWdpc3RyYXRpb24pIHsKICAg
ICAgICAgICAgIGF3YWl0IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24udW5yZWdpc3RlcigpOwog
ICAgICAgICB9Ci0gICAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCJwdXNoTWFuYWdlci13b3JrZXIuanMiKTsKKyAgICAgICAgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoImVtcHR5V29y
a2VyLmpzIik7CiAgICAgICAgIHB1c2hNYW5hZ2VyID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2Vy
OwogCiAgICAgICAgIGxldCBzZXJ2aWNlV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0
aW9uLmh0dHBzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uLmh0dHBzLmFueS1leHBlY3RlZC50eHQKaW5kZXggYzZkODk3ZmNm
MzgzZDI5MWY3NGMwM2NjYTAzYTMwNGQ5NDIwMmU4OS4uYWNhYzViY2IzOGM1Y2Q3MDlkODJhNTUy
YmEyZGFkODNlMGE4MjE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbi5odHRwcy5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb24uaHR0cHMuYW55LWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDUgQEAKIAorUEFTUyB3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3b3Jr
ZXIKIFBBU1MgUHVzaFN1YnNjcmlwdGlvbiBnZXR0ZXJzCitQQVNTIHVucmVnaXN0ZXIgc2Vydmlj
ZSB3b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVz
aFN1YnNjcmlwdGlvbi5odHRwcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uLmh0dHBzLmFueS5qcwppbmRleCAzZDE3NWRmN2RmMzNhZWEzZTQy
YTZlNWYyZjhlZGUxODBlMTI0MjNiLi4zMTgwN2JhMTZlNTllYTdjOTNlZWFjMGExN2RhNjA2ZTAy
ZjE3YjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vi
c2NyaXB0aW9uLmh0dHBzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uLmh0dHBzLmFueS5qcwpAQCAtMTQsMTcgKzE0LDM3IEBAIGZ1bmN0
aW9uIGJ5dGVzRnJvbShidWYpIHsKICAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgVWludDhBcnJh
eShidWYpKTsKIH0KIAotdGVzdCgoKSA9PiB7CitsZXQgcmVnaXN0cmF0aW9uID0gbnVsbDsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uKCk7CisgICAgaWYgKHJlZ2lz
dHJhdGlvbikgeworICAgICAgICBhd2FpdCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnVucmVn
aXN0ZXIoKTsKKyAgICB9CisgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoImVtcHR5V29ya2VyLmpzIik7CisgICAgYXNzZXJ0X3RydWUoIXJl
Z2lzdHJhdGlvbi5hY3RpdmUsICJzZXJ2aWNlIHdvcmtlciBzaG91bGQgYmUgaW5zdGFsbGluZyIp
OworCisgICAgbGV0IHNlcnZpY2VXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZyB8fCBy
ZWdpc3RyYXRpb24ud2FpdGluZzsKKyAgICBhc3NlcnRfdHJ1ZSghIXNlcnZpY2VXb3JrZXIsICJy
ZWdpc3RyYXRpb24gc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNlcnZpY2Ugd29ya2VyIik7
CisKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNlcnZpY2VX
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9PiB7CisgICAgICAgICAg
ICBpZiAoc2VydmljZVdvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpCisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30sICJ3YWl0IGZvciBhY3RpdmUg
c2VydmljZSB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKICAgICBhc3NlcnRfdHJ1
ZSghIXdpbmRvdy5pbnRlcm5hbHMsICJ0ZXN0IHJlcXVpcmVzIGludGVybmFscyIpOwogCi0gICAg
bGV0IHVzZXJWaXNpYmxlT25seSA9IHRydWU7Ci0gICAgbGV0IHN1YnNjcmlwdGlvbiA9IHdpbmRv
dy5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNjcmlwdGlvbihlbmRwb2ludCwgZXhwaXJhdGlvblRp
bWUsIHVzZXJWaXNpYmxlT25seSwga2V5MUJ1ZmZlciwga2V5MkJ1ZmZlciwgYXV0aEJ1ZmZlcik7
CisgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHdpbmRvdy5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNj
cmlwdGlvbihyZWdpc3RyYXRpb24sIGVuZHBvaW50LCBleHBpcmF0aW9uVGltZSwga2V5MUJ1ZmZl
ciwga2V5MkJ1ZmZlciwgYXV0aEJ1ZmZlcik7CiAgICAgYXNzZXJ0X3RydWUoc3Vic2NyaXB0aW9u
IGluc3RhbmNlb2YgUHVzaFN1YnNjcmlwdGlvbik7CiAKICAgICBhc3NlcnRfZXF1YWxzKHN1YnNj
cmlwdGlvbi5lbmRwb2ludCwgZW5kcG9pbnQpOwogICAgIGFzc2VydF9lcXVhbHMoc3Vic2NyaXB0
aW9uLmV4cGlyYXRpb25UaW1lLCBleHBpcmF0aW9uVGltZSk7CiAgICAgYXNzZXJ0X3RydWUoc3Vi
c2NyaXB0aW9uLm9wdGlvbnMgPT09IHN1YnNjcmlwdGlvbi5vcHRpb25zLCAib3B0aW9ucyBzaG91
bGQgYWx3YXlzIHJldHVybiBzYW1lIG9iamVjdCIpOwotICAgIGFzc2VydF9lcXVhbHMoc3Vic2Ny
aXB0aW9uLm9wdGlvbnMudXNlclZpc2libGVPbmx5LCB1c2VyVmlzaWJsZU9ubHkpOworICAgIGFz
c2VydF9lcXVhbHMoc3Vic2NyaXB0aW9uLm9wdGlvbnMudXNlclZpc2libGVPbmx5LCB0cnVlKTsK
ICAgICBhc3NlcnRfdHJ1ZShzdWJzY3JpcHRpb24ub3B0aW9ucy5hcHBsaWNhdGlvblNlcnZlcktl
eSA9PT0gc3Vic2NyaXB0aW9uLm9wdGlvbnMuYXBwbGljYXRpb25TZXJ2ZXJLZXksICJhcHBsaWNh
dGlvblNlcnZlcktleSBzaG91bGQgcmV0dXJuIHNhbWUgb2JqZWN0Iik7CiAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhieXRlc0Zyb20oc3Vic2NyaXB0aW9uLm9wdGlvbnMuYXBwbGljYXRpb25TZXJ2
ZXJLZXkpLCBieXRlc0Zyb20oa2V5MUJ1ZmZlcikpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
Ynl0ZXNGcm9tKHN1YnNjcmlwdGlvbi5nZXRLZXkoJ3AyNTZkaCcpKSwgYnl0ZXNGcm9tKGtleTJC
dWZmZXIpKTsKQEAgLTM3LDQgKzU3LDggQEAgdGVzdCgoKSA9PiB7CiAgICAgYXNzZXJ0X2VxdWFs
cyhPYmplY3Qua2V5cyhvYmoua2V5cykubGVuZ3RoLCAyKTsKICAgICBhc3NlcnRfZXF1YWxzKG9i
ai5rZXlzLnAyNTZkaCwga2V5MkJhc2U2NFVSTCk7CiAgICAgYXNzZXJ0X2VxdWFscyhvYmoua2V5
cy5hdXRoLCBhdXRoQmFzZTY0VVJMKTsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHJlc29sdmUoKSk7CiB9LCAiUHVzaFN1YnNjcmlwdGlvbiBnZXR0ZXJzIik7CisKK3Byb21p
c2VfdGVzdCgodGVzdCkgPT4gcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKSwgInVucmVnaXN0ZXIg
c2VydmljZSB3b3JrZXIiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441824</attachid>
            <date>2021-10-19 17:26:11 -0700</date>
            <delta_ts>2021-10-19 22:16:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231922-20211019172610.patch</filename>
            <type>text/plain</type>
            <size>63003</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwY2U1Yjg5OGJiMzc1
NzVjOTlmMTU4YTljYjk2N2JiZDYxNmNmZS4uOGY4M2Y2Nzg1YTg1ZjRmZDU2ZTJkN2NhMjE3OGY4
MjgxZWE5OTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTEwLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVi
cyBmb3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgIEJvdGggUHVzaE1hbmFnZXIgYW5kIFB1c2hTdWJzY3JpcHRpb24gbm93
IHNlbmQgdGhlaXIgc3Vic2NyaXB0aW9uIHJlcXVlc3RzIHRvIE5ldHdvcmtQcm9jZXNzCisgICAg
ICAgIHZpYSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uID0+IFNlcnZpY2VXb3JrZXJDb250YWlu
ZXIgPT4gU1dDbGllbnRDb25uZWN0aW9uLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlB1c2hNYW5hZ2VyOjpzdWJzY3JpYmUpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFn
ZXI6OmdldFN1YnNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQdXNoTWFuYWdlcjo6cGVy
bWlzc2lvblN0YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hQZXJtaXNzaW9u
U3RhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbjo6UHVzaFN1YnNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uOjp1bnN1YnNjcmliZSk6CisgICAg
ICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hTdWJzY3JpcHRpb25EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFN1
YnNjcmlwdGlvbk9wdGlvbnM6OlB1c2hTdWJzY3JpcHRpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjp1c2VyVmlzaWJsZU9ubHkgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVzaFN1
YnNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpn
ZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0UHVzaFN1YnNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRQ
dXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbjo6fldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNo
U2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246Omdl
dFB1c2hTdWJzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmg6CisKIDIwMjEtMTAtMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBjYWxsYmFjayB0byBrbm93IHdo
ZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHZpYSAtW1dLV2ViVmlldyBfbG9hZFNlcnZpY2VX
b3JrZXI6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyNThiYjdlY2ViMTU1MTNmYzYwMDYzYzJkYzkyMjc1YzM2MWVj
NDA2Li5kMWUwMjgzNjIyMDAxNDQ1OTIzNTBhMWRjNTVjMDZkZTJlYjk4MDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTE4ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVicyBmb3IgcHVzaCBzdWJzY3JpcHRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZGVkIHN0
dWJzIGluIE5ldHdvcmtQcm9jZXNzIGZvciBwdXNoIHN1YnNjcmlwdGlvbi1yZWxhdGVkIElQQy4g
Q3VycmVudGx5IHRoZSBzdHVicyByZXR1cm4KKyAgICAgICAgdGhhdCBzdWJzY3JpYmluZyBpcyB1
bnN1cHBvcnRlZCBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gYWN0aXZlIHB1c2ggc3Vic2NyaXB0aW9u
cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNjcmlwdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgor
CiAyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEg
LVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDRj
Nzg1MTMyZTNjNDk0ODRmZDhjMTI0MzY0MTViNzViMTIwZTkyZDEuLmFjMDYwZGRhN2Q0ODMzY2Rl
OGY0MjkxNjdmODRjMDY0ZjMyM2Q4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTU0LDYgKzE1
NCw5IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAogICAgIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lv
blN0YXRlLmgKKyAgICBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKKwog
ICAgIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oCiAgICAg
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oCiAgICAg
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKaW5kZXggYWNhNmNmZjE4
M2VkYmRlMTM3ZDQyMTViNDVkMDNkNjkyOTY5YWI0OC4uNjQyZDUwYWE4MzhlNGYwMjBkMGQyMmIz
ZmY0MDk2OTdhOGEzOGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNo
LWFwaS9QdXNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFw
aS9QdXNoTWFuYWdlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFB1c2hNYW5hZ2VyOjpz
dWJzY3JpYmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
c3RkOgogICAgIH0KICAgICAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKLSAgICBhdXRvIGtleURh
dGEgPSBrZXlEYXRhUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGF1dG8ga2V5RGF0
YSA9IGtleURhdGFSZXN1bHQucmV0dXJuVmFsdWUoKTsKICAgICBhdXRvIGtleSA9IENyeXB0b0tl
eUVDOjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0EsICJQLTI1NiJf
cywgV1RGTW92ZShrZXlEYXRhKSwgZmFsc2UsIENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICNlbHNl
CiAgICAgYXV0byBrZXkgPSBudWxscHRyOwpAQCAtMTE2LDE4ICsxMTYsMTggQEAgdm9pZCBQdXNo
TWFuYWdlcjo6c3Vic2NyaWJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHN0ZDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJQdXNoIHBlcm1pc3Npb24gd2Fz
IGRlbmllZCJfcyB9KTsKKyAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uc3Vic2NyaWJl
VG9QdXNoU2VydmljZShrZXlEYXRhUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBQdXNoTWFuYWdlcjo6Z2V0U3Vic2NyaXB0aW9uKERPTVBy
b21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8UHVzaFN1YnNjcmlwdGlvbj4+
PiYmIHByb21pc2UpCiB7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKG51bGxwdHIpOworICAgIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXRQdXNoU3Vic2NyaXB0aW9uKFdURk1vdmUocHJvbWlz
ZSkpOwogfQogCiB2b2lkIFB1c2hNYW5hZ2VyOjpwZXJtaXNzaW9uU3RhdGUoc3RkOjpvcHRpb25h
bDxQdXNoU3Vic2NyaXB0aW9uT3B0aW9uc0luaXQ+JiYgb3B0aW9ucywgRE9NUHJvbWlzZURlZmVy
cmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmIHByb21pc2UpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIHByb21pc2UucmVzb2x2ZShQdXNoUGVybWlz
c2lvblN0YXRlOjpEZW5pZWQpOworICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXRQ
dXNoUGVybWlzc2lvblN0YXRlKFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aFBlcm1pc3Npb25TdGF0ZS5oCmluZGV4IDczNzBhMWM4YjJkMjI5MGUwYWFhMGY5NTRhYzU2YTU2
N2NlODkyZWIuLmY2NjE0NWM4YWZiYjZlNzEzNGFkZTg3ODFhYjNlMzAwZWI1ZTZkM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25T
dGF0ZS5oCkBAIC0zNyw0ICszNywxNSBAQCBlbnVtIGNsYXNzIFB1c2hQZXJtaXNzaW9uU3RhdGUg
OiB1aW50OF90IHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0
ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlB1
c2hQZXJtaXNzaW9uU3RhdGUsCisgICAgICAgIFdlYkNvcmU6OlB1c2hQZXJtaXNzaW9uU3RhdGU6
OkRlbmllZCwKKyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6R3JhbnRlZCwK
KyAgICAgICAgV2ViQ29yZTo6UHVzaFBlcm1pc3Npb25TdGF0ZTo6UHJvbXB0CisgICAgPjsKK307
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRp
b24uY3BwCmluZGV4IGQzNTZkNzRmM2E2OTE5YmRmMWI5NzI3NmM1NjM5MjI2YTlkNjZjMTcuLjU5
NDNjODNkMmVlMmEyMmM4ZGMwNWJjNTczNTliMjk4ZWFkYzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNj
cmlwdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KIApAQCAtMzcsMTAgKzM4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFB1c2hTdWJzY3JpcHRpb24pOwogCi1QdXNoU3Vic2NyaXB0
aW9uOjpQdXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVw
b2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25z
PiYmIG9wdGlvbnMsIFZlY3Rvcjx1aW50OF90PiYmIGNsaWVudEVDREhQdWJsaWNLZXksIFZlY3Rv
cjx1aW50OF90PiYmIHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0KQotICAgIDogbV9lbmRwb2lu
dChXVEZNb3ZlKGVuZHBvaW50KSkKK1B1c2hTdWJzY3JpcHRpb246OlB1c2hTdWJzY3JpcHRpb24o
UmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uLCBTdHJpbmcmJiBl
bmRwb2ludCwgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZl
Y3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBj
bGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaGFyZWRBdXRoZW50aWNhdGlv
blNlY3JldCkKKyAgICA6IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lz
dHJhdGlvbikpCisgICAgLCBtX2VuZHBvaW50KFdURk1vdmUoZW5kcG9pbnQpKQogICAgICwgbV9l
eHBpcmF0aW9uVGltZShleHBpcmF0aW9uVGltZSkKLSAgICAsIG1fb3B0aW9ucyhXVEZNb3ZlKG9w
dGlvbnMpKQorICAgICwgbV9vcHRpb25zKFB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpjcmVhdGUo
V1RGTW92ZShzZXJ2ZXJWQVBJRFB1YmxpY0tleSkpKQogICAgICwgbV9jbGllbnRFQ0RIUHVibGlj
S2V5KFdURk1vdmUoY2xpZW50RUNESFB1YmxpY0tleSkpCiAgICAgLCBtX3NoYXJlZEF1dGhlbnRp
Y2F0aW9uU2VjcmV0KFdURk1vdmUoc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKQogewpAQCAt
ODYsNyArODgsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IFB1c2hT
dWJzY3JpcHRpb246OmdldEtleShQdXNoRW5jcnlwdGlvbktleQogCiB2b2lkIFB1c2hTdWJzY3Jp
cHRpb246OnVuc3Vic2NyaWJlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21p
c2UpCiB7Ci0gICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJOb3QgaW1wbGVtZW50ZWQiX3MgfSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LT51bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogUHVz
aFN1YnNjcmlwdGlvbkpTT04gUHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmgKaW5k
ZXggOWE2MTU5Y2IyYmJiZDI2NmIwY2M5OWE4Yzk4MDg4YTQ5MjcwY2FmNC4uY2I4ODc0OGU2NjU0
NjdkMzY1ZjBmOGI2ZTEwMGRmMWU4NTRkNWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmgKQEAgLTQxLDYgKzQxLDggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM7CitjbGFz
cyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOworY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjsKIAogY2xhc3MgUHVzaFN1YnNjcmlwdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFB1c2hTdWJz
Y3JpcHRpb24+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChQdXNoU3Vic2Ny
aXB0aW9uLCBXRUJDT1JFX0VYUE9SVCk7CkBAIC01Nyw4ICs1OSw5IEBAIHB1YmxpYzoKICAgICBQ
dXNoU3Vic2NyaXB0aW9uSlNPTiB0b0pTT04oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBXRUJD
T1JFX0VYUE9SVCBQdXNoU3Vic2NyaXB0aW9uKFN0cmluZyYmIGVuZHBvaW50LCBzdGQ6Om9wdGlv
bmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZSwgUmVmPFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zPiYmLCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGljS2V5LCBWZWN0b3I8
dWludDhfdD4mJiBhdXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQdXNoU3Vic2NyaXB0aW9uKFJl
ZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBTdHJpbmcmJiBlbmRwb2ludCwgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIFZlY3Rvcjx1aW50OF90PiYm
IHNlcnZlclZBUElEUHVibGljS2V5LCBWZWN0b3I8dWludDhfdD4mJiBjbGllbnRFQ0RIUHVibGlj
S2V5LCBWZWN0b3I8dWludDhfdD4mJiBhdXRoKTsKIAorICAgIFJlZjxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uPiBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb247CiAgICAgU3RyaW5nIG1fZW5k
cG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gbV9leHBpcmF0aW9uVGlt
ZTsKICAgICBSZWY8UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjFhM2ZlY2E1MzYyMTNiNGU1M2M0ZTBlZDJhYTdiYThjNjRlYzE5
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbkRhdGEuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQdXNoU3Vi
c2NyaXB0aW9uRGF0YSBQdXNoU3Vic2NyaXB0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K3sKKyAgICBQdXNoU3Vic2NyaXB0aW9uRGF0YSByZXN1bHQ7CisgICAgcmVzdWx0LmVuZHBvaW50
ID0gZW5kcG9pbnQuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVzdWx0LmV4cGlyYXRpb25UaW1lID0g
ZXhwaXJhdGlvblRpbWU7CisgICAgcmVzdWx0LnNlcnZlclZBUElEUHVibGljS2V5ID0gc2VydmVy
VkFQSURQdWJsaWNLZXk7CisgICAgcmVzdWx0LmNsaWVudEVDREhQdWJsaWNLZXkgPSBjbGllbnRF
Q0RIUHVibGljS2V5OworICAgIHJlc3VsdC5zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCA9IHNo
YXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0
aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0
aW9uRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3OWZmYzkyZTlmOGUyZTczNDAxMTMzZjA3NDNmMjUxYWQw
MTQ4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBp
L1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiRXBv
Y2hUaW1lU3RhbXAuaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IFB1c2hTdWJzY3JpcHRpb25EYXRhIHsKKyAgICBTdHJpbmcgZW5k
cG9pbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFcG9jaFRpbWVTdGFtcD4gZXhwaXJh
dGlvblRpbWU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcnZlclZBUElEUHVibGljS2V5OworICAg
IFZlY3Rvcjx1aW50OF90PiBjbGllbnRFQ0RIUHVibGljS2V5OworICAgIFZlY3Rvcjx1aW50OF90
PiBzaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hT
dWJzY3JpcHRpb25EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRpb25EYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUHVz
aFN1YnNjcmlwdGlvbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgZW5kcG9pbnQ7CisgICAgZW5jb2RlciA8PCBleHBpcmF0aW9uVGltZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZlclZBUElEUHVibGljS2V5OworICAgIGVuY29kZXIgPDwgY2xpZW50
RUNESFB1YmxpY0tleTsKKyAgICBlbmNvZGVyIDw8IHNoYXJlZEF1dGhlbnRpY2F0aW9uU2VjcmV0
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQdXNoU3Vic2Ny
aXB0aW9uRGF0YT4gUHVzaFN1YnNjcmlwdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFB1c2hTdWJzY3JpcHRpb25EYXRhIHJlc3VsdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5lbmRwb2ludCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhwaXJhdGlvblRpbWUpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNlcnZl
clZBUElEUHVibGljS2V5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGllbnRFQ0RIUHVibGljS2V5KSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaGFyZWRB
dXRoZW50aWNhdGlvblNlY3JldCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAppbmRleCBhZDAyYWE5
ZTcyMjRiMjcxMmY0NTNiMzc0ZjBhOTI1ZmM4NjY3ZmYxLi4xOTNjMTQxNTE2MWNjYmViYzYyMjRh
ZTUzOGNkYzZkYTdlNWZlZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcApAQCAtMzQsOSArMzQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQ
dXNoU3Vic2NyaXB0aW9uT3B0aW9ucyk7CiAKLVB1c2hTdWJzY3JpcHRpb25PcHRpb25zOjpQdXNo
U3Vic2NyaXB0aW9uT3B0aW9ucyhib29sIHVzZXJWaXNpYmxlT25seSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgc2VydmVyVkFQSURQdWJsaWNLZXkpCi0gICAgOiBtX3VzZXJWaXNpYmxlT25seSh1c2VyVmlz
aWJsZU9ubHkpCi0gICAgLCBtX3NlcnZlclZBUElEUHVibGljS2V5KFdURk1vdmUoc2VydmVyVkFQ
SURQdWJsaWNLZXkpKQorUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OlB1c2hTdWJzY3JpcHRpb25P
cHRpb25zKFZlY3Rvcjx1aW50OF90PiYmIHNlcnZlclZBUElEUHVibGljS2V5KQorICAgIDogbV9z
ZXJ2ZXJWQVBJRFB1YmxpY0tleShXVEZNb3ZlKHNlcnZlclZBUElEUHVibGljS2V5KSkKIHsKIH0K
IApAQCAtNDQsNyArNDMsNyBAQCBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uczo6flB1c2hTdWJzY3Jp
cHRpb25PcHRpb25zKCkgPSBkZWZhdWx0OwogCiBib29sIFB1c2hTdWJzY3JpcHRpb25PcHRpb25z
Ojp1c2VyVmlzaWJsZU9ubHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZXJWaXNpYmxlT25s
eTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBQdXNoU3Vi
c2NyaXB0aW9uT3B0aW9uczo6c2VydmVyVkFQSURQdWJsaWNLZXkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uT3B0
aW9ucy5oCmluZGV4IDRiZTU4MGY3ZGZlZGNkZDA0NjRhNDJmYzA3YzJhODZiZDE5MjZiNTUuLjQw
MzNjN2NmYWUwODMzOGQyNTBhYTViM2Y4Njk3OGE2YTM2ZjJkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25z
LmgKQEAgLTM4LDE5ICszOCwxOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQdXNo
U3Vic2NyaXB0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zPiB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoUHVzaFN1YnNjcmlw
dGlvbk9wdGlvbnMsIFdFQkNPUkVfRVhQT1JUKTsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFB1c2hTdWJzY3JpcHRpb25PcHRpb25zKTsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFB1c2hTdWJzY3JpcHRpb25PcHRpb25zPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHVzaFN1YnNjcmlwdGlvbk9wdGlv
bnMoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB+
UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMoKTsKKyAgICB+UHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMo
KTsKIAogICAgIGJvb2wgdXNlclZpc2libGVPbmx5KCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXBwbGljYXRpb25TZXJ2ZXJLZXkoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucyhi
b29sIHVzZXJWaXNpYmxlT25seSwgVmVjdG9yPHVpbnQ4X3Q+JiZhcHBsaWNhdGlvblNlcnZlcktl
eSk7CisgICAgZXhwbGljaXQgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMoVmVjdG9yPHVpbnQ4X3Q+
JiZhcHBsaWNhdGlvblNlcnZlcktleSk7CiAKLSAgICBib29sIG1fdXNlclZpc2libGVPbmx5Owog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX3NlcnZlclZBUElEUHVibGljS2V5OwogICAgIG11dGFibGUg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fYXBwbGljYXRpb25TZXJ2ZXJLZXk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCA3N2UyNDMzYzUwMTYzOTUyMGQwMTI3ZWQxYmI1NDBmZGEyNzkyNmZhLi5m
ZTBlM2Q1NGVjM2Y0YTE4NjI0ZGEyMzhkMWE4NjljYzYwY2Y5MTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMjIzLDYgKzIyMyw3IEBAIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0dXJlSW5QaWN0
dXJlV2luZG93LmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCiBNb2R1bGVzL3B1
c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlw
dGlvbi5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwCiBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAogTW9kdWxlcy9wdXNoLWFw
aS9QdXNoTWFuYWdlci5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvblB1c2hBUEkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNWQ2ZTM1MDY4M2YzYjc0OWM4NjhiYzAyYWY5ZDNjMzkyODZl
MzlmMy4uOWE3OTdkOGE1NTVlNjBmM2I5MDdmYjRlOGZmYzY2Njk4NzJhNjBjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQw
Niw4ICs1NDA2LDkgQEAKIAkJRUIwRkI3MEEyNzBEMEIxQjAwRjc4MTBEIC8qIFB1c2hTdWJzY3Jp
cHRpb25KU09OLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQjBGQjcwMzI3MEQwQUVCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpTT04uaCAqLzsg
fTsKIAkJRUIwRkI3MEMyNzBEMEIyOTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjBGQjcw
NjI3MEQwQUVDMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJ
RUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIwRkI3MDEy
NzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oICovOyB9Owor
CQlFQjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjhFRDQxMjcxN0FC
QTkwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgxMjcxMDA2NzEwMDc3MzJFRiAv
KiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmggKi87IH07Ci0J
CUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM3ODI3MTAwNjUx
MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovOyB9OworCQlFQkI5NzM4MjI3MTAw
Njc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzczMkVGIC8qIFB1
c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uUHVzaEFQSS5oICovOyB9OwogCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyogU1FM
aXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVCRTVCMjI0MjQ1QTI2RUUwMDNBNUE4OCAvKiBTUUxpdGVTdGF0
ZW1lbnRBdXRvUmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJz
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
QkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwICovOyB9OwpA
QCAtMTY4NTUsNiArMTY4NTYsOCBAQAogCQlFQjBGQjcwNTI3MEQwQUVCMDBGNzgxMEQgLyogUHVz
aFN1YnNjcmlwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbi5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUVCMEZCNzA2MjcwRDBBRUMwMEY3ODEwRCAvKiBQdXNoU3Vic2Ny
aXB0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uT3B0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjBGQjcwNzI3MEQwQUVDMDBGNzgxMEQg
LyogUHVzaFN1YnNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMjhFRDQxMjcxN0FCQTkwMDVGMDM5MyAv
KiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9u
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjI4RUQ0MzI3MTdBQkE5MDA1
RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVz
aFN1YnNjcmlwdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5
NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVz
aEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUyMDA3NzMyRUYg
LyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDA0Myw2ICsyMDA0Niw4IEBACiAJCQkJRUIwRkI3MDQyNzBEMEFFQjAwRjc4MTBEIC8q
IFB1c2hTdWJzY3JpcHRpb24uY3BwICovLAogCQkJCUVCMEZCNzA3MjcwRDBBRUMwMEY3ODEwRCAv
KiBQdXNoU3Vic2NyaXB0aW9uLmggKi8sCiAJCQkJRUIwRkI3MDUyNzBEMEFFQjAwRjc4MTBEIC8q
IFB1c2hTdWJzY3JpcHRpb24uaWRsICovLAorCQkJCUVCMjhFRDQzMjcxN0FCQTkwMDVGMDM5MyAv
KiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5jcHAgKi8sCisJCQkJRUIyOEVENDEyNzE3QUJBOTAwNUYw
MzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi8sCiAJCQkJRUIwRkI3MDMyNzBEMEFFQjAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmggKi8sCiAJCQkJRUIwRkI3MDIyNzBEMEFF
QTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25KU09OLmlkbCAqLywKIAkJCQlFQjBGQjZGQjI3
MEQwQUU2MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnMuY3BwICovLApAQCAtMzQ5
MDgsNiArMzQ5MTMsNyBAQAogCQkJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVy
bWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURD
NTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcwOTI3MEQwQjE4
MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUIyOEVE
NDQyNzE3QUMxMTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFQjBGQjcwQTI3MEQwQjFCMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbkpTT04u
aCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzBDMjcwRDBCMjkwMEY3ODEwRCAvKiBQdXNoU3Vi
c2NyaXB0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MEQyNzBEMEIyRTAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTIwZjI0ODVmMTFjODU4NjAxNDQx
MTBmNmIxZDMzYTBjZDNiNDBiNC4uYzM4NzY4N2M0ZDE3ZDQyZDcxOGUwYmFmNTE5YjBiZTYxNTQ5
MTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTIyLDYgKzEyMiw3
IEBACiAjaW5jbHVkZSAiSW50ZXJuYWxzU2V0TGlrZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJKU1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRl
Z3kuaCIKQEAgLTY1NDAsMTQgKzY1NDEsMTQgQEAgdm9pZCBJbnRlcm5hbHM6OnJldGFpblRleHRJ
dGVyYXRvckZvckRvY3VtZW50Q29udGVudCgpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1SZWZQdHI8UHVzaFN1YnNjcmlwdGlvbj4gSW50ZXJuYWxzOjpjcmVhdGVQdXNoU3Vic2Ny
aXB0aW9uKGNvbnN0IFN0cmluZyYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3Rh
bXA+IGV4cGlyYXRpb25UaW1lLCBib29sIHVzZXJWaXNpYmxlT25seSwgY29uc3QgQXJyYXlCdWZm
ZXImIHNlcnZlclZBUElEUHVibGljS2V5LCBjb25zdCBBcnJheUJ1ZmZlciYgY2xpZW50RUNESFB1
YmxpY0tleSwgY29uc3QgQXJyYXlCdWZmZXImIGF1dGgpCitSZWZQdHI8UHVzaFN1YnNjcmlwdGlv
bj4gSW50ZXJuYWxzOjpjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbiwgY29uc3QgU3RyaW5nJiBlbmRwb2ludCwgc3RkOjpv
cHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWUsIGNvbnN0IEFycmF5QnVmZmVy
JiBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgY29uc3QgQXJyYXlCdWZmZXImIGNsaWVudEVDREhQdWJs
aWNLZXksIGNvbnN0IEFycmF5QnVmZmVyJiBhdXRoKQogewogICAgIGF1dG8gbXlFbmRwb2ludCA9
IGVuZHBvaW50OwogICAgIFZlY3Rvcjx1aW50OF90PiBteVNlcnZlclZBUElEUHVibGljS2V5IHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNlcnZlclZBUElEUHVibGljS2V5LmRhdGEoKSks
IHNlcnZlclZBUElEUHVibGljS2V5LmJ5dGVMZW5ndGgoKSB9OwogICAgIFZlY3Rvcjx1aW50OF90
PiBteUNsaWVudEVDREhQdWJsaWNLZXkgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY2xp
ZW50RUNESFB1YmxpY0tleS5kYXRhKCkpLCBjbGllbnRFQ0RIUHVibGljS2V5LmJ5dGVMZW5ndGgo
KSB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBteUF1dGggeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXV0aC5kYXRhKCkpLCBhdXRoLmJ5dGVMZW5ndGgoKSB9OwogCi0gICAgcmV0dXJuIFB1
c2hTdWJzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKG15RW5kcG9pbnQpLCBleHBpcmF0aW9uVGlt
ZSwgUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnM6OmNyZWF0ZSh1c2VyVmlzaWJsZU9ubHksIFdURk1v
dmUobXlTZXJ2ZXJWQVBJRFB1YmxpY0tleSkpLCBXVEZNb3ZlKG15Q2xpZW50RUNESFB1YmxpY0tl
eSksIFdURk1vdmUobXlBdXRoKSk7CisgICAgcmV0dXJuIFB1c2hTdWJzY3JpcHRpb246OmNyZWF0
ZShXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIFdURk1vdmUobXlFbmRwb2ludCksIGV4cGlyYXRpb25U
aW1lLCBXVEZNb3ZlKG15U2VydmVyVkFQSURQdWJsaWNLZXkpLCBXVEZNb3ZlKG15Q2xpZW50RUNE
SFB1YmxpY0tleSksIFdURk1vdmUobXlBdXRoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggMjgxMDIyZTZkODcyYmIwNmE4Y2U3N2YzYTJjN2RlODIxM2Fj
NzkyMC4uNWYyOTBjNjRlMWQ0YWMxZWJhZWZjMmUyMzhmNTYwNDJiZWU4ZjE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMjQsNyArMTI0LDkgQEAgY2xhc3MgVGV4dFRyYWNr
Q3VlR2VuZXJpYzsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3Mg
UHVzaFN1YnNjcmlwdGlvbjsKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CitjbGFzcyBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKQEAgLTE0NCwx
MCArMTQ2LDYgQEAgY2xhc3MgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOwogI2VuZGlmCiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLWNsYXNzIFB1c2hTdWJzY3JpcHRp
b247Ci0jZW5kaWYKLQogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlz
ZURlZmVycmVkOwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsK
QEAgLTExOTksNyArMTE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldGFpblRleHRJdGVyYXRv
ckZvckRvY3VtZW50Q29udGVudCgpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKGNvbnN0IFN0
cmluZyYgZW5kcG9pbnQsIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGlyYXRpb25U
aW1lLCBib29sIHVzZXJWaXNpYmxlT25seSwgY29uc3QgQXJyYXlCdWZmZXImIHNlcnZlclZBUElE
UHVibGljS2V5LCBjb25zdCBBcnJheUJ1ZmZlciYgY2xpZW50RUNESFB1YmxpY0tleSwgY29uc3Qg
QXJyYXlCdWZmZXImIGF1dGgpOworICAgIFJlZlB0cjxQdXNoU3Vic2NyaXB0aW9uPiBjcmVhdGVQ
dXNoU3Vic2NyaXB0aW9uKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiYmLCBjb25zdCBT
dHJpbmcmIGVuZHBvaW50LCBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9u
VGltZSwgY29uc3QgQXJyYXlCdWZmZXImIHNlcnZlclZBUElEUHVibGljS2V5LCBjb25zdCBBcnJh
eUJ1ZmZlciYgY2xpZW50RUNESFB1YmxpY0tleSwgY29uc3QgQXJyYXlCdWZmZXImIGF1dGgpOwog
I2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
YjgxN2Q2NzE5NzliYTdjM2Q0ZmNkZjg3YzZjZmQ3MzgzMGM0Yjg5Mi4uZTBjODA1YTRlZTQ4NjVm
YWIwN2I3ZjkxYmJkOGM0ZWVkNzg2M2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtMTA2Niw1ICsxMDY2LDUgQEAgZW51bSBBdXRvcGxheVBvbGljeSB7CiAKICAgICB1
bmRlZmluZWQgcmV0YWluVGV4dEl0ZXJhdG9yRm9yRG9jdW1lbnRDb250ZW50KCk7CiAKLSAgICBb
Q29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFB1c2hTdWJzY3JpcHRpb24gY3JlYXRlUHVzaFN1
YnNjcmlwdGlvbihVU1ZTdHJpbmcgZW5kcG9pbnQsIEVwb2NoVGltZVN0YW1wPyBleHBpcmF0aW9u
VGltZSwgYm9vbGVhbiB1c2VyVmlzaWJsZU9ubHksIEFycmF5QnVmZmVyIHNlcnZlclZBUElEUHVi
bGljS2V5LCBBcnJheUJ1ZmZlciBjbGllbnRFQ0RIUHVibGljS2V5LCBBcnJheUJ1ZmZlciBhdXRo
KTsKKyAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFB1c2hTdWJzY3JpcHRpb24gY3Jl
YXRlUHVzaFN1YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIHJlZ2lzdHJhdGlv
biwgVVNWU3RyaW5nIGVuZHBvaW50LCBFcG9jaFRpbWVTdGFtcD8gZXhwaXJhdGlvblRpbWUsIEFy
cmF5QnVmZmVyIHNlcnZlclZBUElEUHVibGljS2V5LCBBcnJheUJ1ZmZlciBjbGllbnRFQ0RIUHVi
bGljS2V5LCBBcnJheUJ1ZmZlciBhdXRoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNWQwYmRmM2QxOWZiMDli
ODIxNThjYWU4YjNlYjkyOTIzNzI5ZTEzZi4uMTM3ZTkzNTg3MGY2OTMyNjQzYWNhMjY5MjBmMzc2
ZWQ3MDkxYTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiRG9jdW1l
bnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJQdXNo
UGVybWlzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC04Niw2ICs4OCwxOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2so
KTsgfQogICAgIHZpcnR1YWwgdm9pZCB3aGVuU2VydmljZVdvcmtlcklzVGVybWluYXRlZEZvclRl
c3RpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CisgICAgCisgICAgdXNpbmcgU3Vic2NyaWJlVG9Q
dXNoU2VydmljZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4mJik+OworICAgIHZpcnR1YWwgdm9pZCBzdWJzY3JpYmVUb1B1
c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNl
Q2FsbGJhY2smJikgPSAwOworICAgIAorICAgIHVzaW5nIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2
aWNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPGJvb2w+JiYp
PjsKKyAgICB2aXJ0dWFsIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJikgPSAwOworICAgIAorICAgIHVzaW5nIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxQdXNo
U3Vic2NyaXB0aW9uRGF0YT4+JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHVzaFN1YnNjcmlw
dGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFN1YnNjcmlw
dGlvbkNhbGxiYWNrJiYpID0gMDsKKworICAgIHVzaW5nIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8UHVzaFBlcm1pc3Np
b25TdGF0ZT4mJik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoUGVybWlzc2lvblN0YXRl
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAyNTEzODA5ZGQ4Y2Zj
YzNlYmNmNDA4OWVhNDUxOTNjYjcwZDljOGQwLi42YzU5ZThkODUxY2M0MjlmNGZjNzQ2OWI2ZTRk
OWMzZjFjOGEwMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0zOCwxMiArMzgsMTQgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJKU1B1c2hTdWJzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJKU1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRl
ICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25PcHRpb25zLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTUwLDYgKzU1Miw1NSBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uJiByZWdpcwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9uLmlk
ZW50aWZpZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWY8UHVzaFN1YnNjcmlwdGlvbj4gY3JlYXRlUHVz
aFN1YnNjcmlwdGlvbkZyb21EYXRhKFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiByZWdp
c3RyYXRpb24sIFB1c2hTdWJzY3JpcHRpb25EYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gUHVz
aFN1YnNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUocmVnaXN0cmF0aW9uKSwgV1RGTW92ZShkYXRh
LmVuZHBvaW50KSwgZGF0YS5leHBpcmF0aW9uVGltZSwgV1RGTW92ZShkYXRhLnNlcnZlclZBUElE
UHVibGljS2V5KSwgV1RGTW92ZShkYXRhLmNsaWVudEVDREhQdWJsaWNLZXkpLCBXVEZNb3ZlKGRh
dGEuc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZl
cktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4m
JiBwcm9taXNlKQoreworICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLnN1YnNjcmliZVRv
UHVzaFNlcnZpY2UocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgYXBwbGljYXRpb25TZXJ2ZXJL
ZXksIFtwcm90ZWN0ZWRSZWdpc3RyYXRpb24gPSBSZWYgeyByZWdpc3RyYXRpb24gfSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNyZWF0ZVB1c2hTdWJzY3JpcHRp
b25Gcm9tRGF0YShXVEZNb3ZlKHByb3RlY3RlZFJlZ2lzdHJhdGlvbiksIHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkpOworICAgIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHBy
b21pc2UpCit7CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkudW5zdWJzY3JpYmVGcm9t
UHVzaFNlcnZpY2UoaWRlbnRpZmllciwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNo
U3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgRE9N
UHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9u
Pj4+JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRQdXNo
U3Vic2NyaXB0aW9uKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIFtwcm90ZWN0ZWRSZWdpc3Ry
YXRpb24gPSBSZWYgeyByZWdpc3RyYXRpb24gfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gb3B0
aW9uYWxQdXNoU3Vic2NyaXB0aW9uRGF0YSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
KyAgICAgICAgaWYgKCFvcHRpb25hbFB1c2hTdWJzY3JpcHRpb25EYXRhKSB7CisgICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBwcm9taXNlLnJlc29sdmUoY3JlYXRlUHVzaFN1YnNjcmlwdGlvbkZyb21E
YXRhKFdURk1vdmUocHJvdGVjdGVkUmVnaXN0cmF0aW9uKSwgV1RGTW92ZSgqb3B0aW9uYWxQdXNo
U3Vic2NyaXB0aW9uRGF0YSkpLnB0cigpKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExFbnVtZXJh
dGlvbjxQdXNoUGVybWlzc2lvblN0YXRlPj4mJiBwcm9taXNlKQoreworICAgIGVuc3VyZVNXQ2xp
ZW50Q29ubmVjdGlvbigpLmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoaWRlbnRpZmllciwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKK30KKwogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2
ZW50KCkKIHsKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggZWZkZjA5NDI2YTc5NjY0NDk1NTc0MTZlMzNj
NjJlMmU2M2QwMWNjMy4uODdmNjg2MDhlNmNmMDQ5NTliMDZkMWRhOTQ4Yjg4ZDBhMDdmYzU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQu
aCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCisjaW5jbHVkZSAiUHVzaFBlcm1pc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlB1c2hTdWJz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJT
V1NlcnZlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCIKQEAgLTgzLDYg
Kzg1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiYpOwogCisgICAgdm9pZCBzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9u
U2VydmVyS2V5LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRp
b24+PiYmKTsKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4m
Jik7CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFB1c2hTdWJz
Y3JpcHRpb24+Pj4mJik7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVy
YXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworCiAgICAgU2VydmljZVdvcmtlckpvYiog
am9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc3RhcnRNZXNzYWdl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDMwZGI4ZDlhYjAzY2QzOTYxMGUyYjEx
MDQyMTdlOTljZjNlYTI3ODQuLjBiNjgyOGM4ODdiYWUzYzBlYmViYTMwMzI5YjI5ZTE5OWRjNmJh
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTE2MSw2ICsxNjEsNDYgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKICAgICBtX2NvbnRhaW5lci0+dW5yZWdpc3RlclJlZ2lzdHJhdGlvbihpZGVu
dGlmaWVyKCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBh
cHBsaWNhdGlvblNlcnZlcktleSwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxQdXNo
U3Vic2NyaXB0aW9uPj4mJiBwcm9taXNlKQoreworICAgIGlmIChpc0NvbnRleHRTdG9wcGVkKCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRhaW5lci0+c3Vic2NyaWJlVG9Q
dXNoU2VydmljZSgqdGhpcywgYXBwbGljYXRpb25TZXJ2ZXJLZXksIFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVuc3Vic2NyaWJlRnJvbVB1
c2hTZXJ2aWNlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7Cisg
ICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fY29udGFpbmVyLT51bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShpZGVudGlmaWVyKCksIFdU
Rk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Omdl
dFB1c2hTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVy
ZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNDb250ZXh0
U3RvcHBlZCgpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3Rh
dGVFcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250YWluZXItPmdl
dFB1c2hTdWJzY3JpcHRpb24oKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoRE9NUHJvbWlz
ZURlZmVycmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3RhdGU+PiYmIHByb21pc2Up
Cit7CisgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fY29udGFpbmVyLT5nZXRQdXNoUGVybWlzc2lvblN0YXRlKGlkZW50aWZpZXIoKSwg
V1RGTW92ZShwcm9taXNlKSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6
dXBkYXRlU3RhdGVGcm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0
ZSwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+JiYgc2VydmljZVdvcmtlcikKIHsKICAgICBzd2l0Y2gg
KHN0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCA3NDc2NjExOTY3Yjk0N2E3ZTJjMGRk
MWI5MjdhMWZjOTI5Njk2ODkzLi44OWVjOTczZjVmZjY3YTM2YzdhMTRjOTZmMGE1NmQxODdhMzQ5
OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTI5LDYgKzI5LDkgQEAKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
SlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJQdXNoUGVybWlzc2lvblN0YXRlLmgi
CisjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5j
bHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTQyLDExICs0NSwxMSBAQCBjbGFzcyBTZXJ2aWNl
V29ya2VyOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKIAogY2xhc3MgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24+LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24pOworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24sIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IGdldE9yQ3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWY8U2VydmljZVdvcmtlckNvbnRhaW5lcj4mJiwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJik7CiAKLSAgICB+U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKCk7CiAKICAgICBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpc3RyYXRpb25EYXRhLmlkZW50aWZpZXI7IH0KIApAQCAtNjksNiArNzIsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQg
dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAorICAgIHZvaWQgc3Vic2NyaWJl
VG9QdXNoU2VydmljZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uU2VydmVyS2V5
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFB1c2hTdWJzY3JpcHRpb24+PiYmKTsK
KyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPiYmKTsKKyAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oRE9NUHJvbWlzZURl
ZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYpOwor
ICAgIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51
bWVyYXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworCiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
aWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaWRsCmluZGV4IGRkOGIyMmUzN2UxN2Y4YzAxODA4MzlmZjFlYjQ4NjRiNjMyZjMyNjcu
LjBjZWIzZThkZjY2YzlhYzU5NjE5MzJkOTNlMGQzNDBkZWViZWRjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAg
U2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPShXaW5kb3csU2VydmljZVdvcmtlciksCisgICAg
RXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JL
RVIsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyRW5hYmxlZCwKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDJlMjRmMjY0
N2ZlYjJjMGUwMTY1ZjU5OTk5NjVlN2Y1ZWEwMDBhMDAuLmUyMDc0MzdmODc3MjI0ZGY3NTEzNmQy
NmUwOGI2MDI2ODk2NzFiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1Nywy
MiBAQCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24o
KQogICAgIGF1dG8gdW5yZWdpc3RlclJlcXVlc3RzID0gV1RGTW92ZShtX3VucmVnaXN0ZXJSZXF1
ZXN0cyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHVucmVnaXN0ZXJSZXF1ZXN0cy52YWx1
ZXMoKSkKICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiY29udGV4dCBz
dG9wcGVkIl9zIH0pOworICAgIAorICAgIGF1dG8gc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVl
c3RzID0gV1RGTW92ZShtX3N1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cyk7CisgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IHN1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cy52YWx1ZXMo
KSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3Rv
cHBlZCJfcyB9KTsKKyAgICAKKyAgICBhdXRvIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVx
dWVzdHMgPSBXVEZNb3ZlKG1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cyk7Cisg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVxdWVz
dHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJj
b250ZXh0IHN0b3BwZWQiX3MgfSk7CisgICAgCisgICAgYXV0byBnZXRQdXNoU3Vic2NyaXB0aW9u
UmVxdWVzdHMgPSBXVEZNb3ZlKG1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzKTsKKyAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzLnZhbHVlcygp
KQorICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9w
cGVkIl9zIH0pOworICAgIAorICAgIGF1dG8gZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNr
cyA9IFdURk1vdmUobV9nZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzKTsKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrcy52YWx1ZXMo
KSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3Rv
cHBlZCJfcyB9KTsKIH0KIAogdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVn
aXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC0yMDUsNiArMjIxLDcw
IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmliZVRvUHVzaFNlcnZpY2Uo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblNlcnZlcktleSwgU3Vic2NyaWJl
VG9QdXNoU2VydmljZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fc3Vic2NyaWJl
VG9QdXNoU2VydmljZVJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCBy
ZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYXBwbGljYXRpb25TZXJ2
ZXJLZXldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CisgICAg
ICAgIGNvbm5lY3Rpb24uc3Vic2NyaWJlVG9QdXNoU2VydmljZShyZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBhcHBsaWNhdGlvblNlcnZlcktleSwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVx
dWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dD
bGllbnRDb25uZWN0aW9uKCkubV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlUmVxdWVzdHMudGFrZShy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsr
bV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV91bnN1YnNjcmliZUZyb21QdXNoU2Vydmlj
ZVJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi51bnN1YnNjcmliZUZyb21QdXNo
U2VydmljZShyZWdpc3RyYXRpb25JZGVudGlmaWVyLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQp
LCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgdGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0g
Y3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3Bl
KS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlUmVxdWVz
dHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb246OmdldFB1c2hTdWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFN1YnNjcmlwdGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFz
dFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIAorICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0
cmF0aW9uSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9
IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rp
b24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5nZXRQdXNoU3Vic2NyaXB0aW9uKHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVy
XShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
a0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVz
dWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlv
bigpLm1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAg
ICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0
YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsK
KyAgICBtX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFja3MuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhy
ZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVy
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOworICAgICAgICBj
b25uZWN0aW9uLmdldFB1c2hQZXJtaXNzaW9uU3RhdGUocmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
W3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1
bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBz
Y29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCkubV9nZXRQdXNo
UGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICB9LCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCBjODZlZTQ1NWQzMTMyOTU3ZjI5NzlmZGZkZDhiMDJlODkx
ZTBjMjE4Li43NzdmYWM3MzFiNWNlYmRiYTRiNmIzZmQ1NmFmN2U3NzFjMGRmZDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC01Nyw2ICs1NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1
bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZv
aWQgc2NoZWR1bGVKb2IoRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVsZVVucmVnaXN0ZXJKb2JJblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRPcldvcmtl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+
JiYpIGZpbmFsOworICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNoU2VydmljZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlv
blNlcnZlcktleSwgU3Vic2NyaWJlVG9QdXNoU2VydmljZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICBSZWY8
V29ya2VyVGhyZWFkPiBtX3RocmVhZDsKIApAQCAtNjUsNiArNjksMTAgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2s+IG1fZ2V0UmVnaXN0
cmF0aW9uc1JlcXVlc3RzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdoZW5SZWdpc3RyYXRpb25S
ZWFkeUNhbGxiYWNrPiBtX3doZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+
PiBtX3VucmVnaXN0ZXJSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdWJzY3JpYmVU
b1B1c2hTZXJ2aWNlQ2FsbGJhY2s+IG1fc3Vic2NyaWJlVG9QdXNoU2VydmljZVJlcXVlc3RzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2s+
IG1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2s+IG1fZ2V0UHVzaFN1YnNjcmlwdGlvblJl
cXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxs
YmFjaz4gbV9nZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCA5ODhjYzE5MDE0ZTNmMWEwMDFmYTYyMzI5OWFiMmI1NTRmNWIwYTg0Li5hNThiNGNmZDkxOGZm
NDM2ZGVhODBkOGU0ZTFkOTYzNmZjZTc0ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtNDQ4LDYgKzQ0OCwzNSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgfQogfQogCit2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3Vic2NyaWJlVG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBWZWN0b3I8dWlu
dDhfdD4mJiBhcHBsaWNhdGlvblNlcnZlcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxQdXNoU3Vic2NyaXB0aW9uRGF0YSwgRXhjZXB0aW9uRGF0YT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwor
ICAgIFVOVVNFRF9QQVJBTShhcHBsaWNhdGlvblNlcnZlcktleSk7CisgICAgCisgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIlB1c2ggcGVybWlzc2lvbiB3YXMgZGVuaWVkIl9zIH0pKTsKK30KKwordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgRXhjZXB0aW9uRGF0YT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOworICAgIAorICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKK30KKwordm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFB1c2hTdWJzY3JpcHRp
b25EYXRhPiwgRXhjZXB0aW9uRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIAorICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6b3B0aW9uYWw8UHVzaFN1YnNjcmlwdGlvbkRhdGE+KHN0ZDo6bnVsbG9w
dCkpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UHVzaFBlcm1pc3Npb25T
dGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ4X3Qs
IEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFVOVVNFRF9Q
QVJBTShyZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICAKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGF0aWNfY2FzdDx1aW50OF90PihQdXNoUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpKTsKK30K
Kwogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewogICAgIGF1
dG8mIGNvbm5lY3Rpb24gPSAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJj4oY29udGV4dENvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCmluZGV4IDI2NGU1YjMwNDM4ZWQxNmQwZDFkMjBiMjM3ZTM5MzU2NjE5NmRiMzQuLjY5NTdh
ZGVmOTBmZjQzYTk1MmIzNzY5MDBhN2Q5OTk2MDY5ZmMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbk9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdXNo
UGVybWlzc2lvblN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QdXNoU3Vic2NyaXB0aW9uRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExOCw2ICsxMjAsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAg
ICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHN1YnNjcmliZVRvUHVz
aFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFZl
Y3Rvcjx1aW50OF90PiYmIGFwcGxpY2F0aW9uU2VydmVyS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7
CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE+LCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKwog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJj
ZSk7CiAgICAgdm9pZCBjb250cm9sQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAxYzk0NmIwYmE1YWZmNTNkZGUxZTI2MWYxZjk0YzIz
MjU5YWFlOTQ1Li5lMWUyZjNiZjkyNWQ5Mjk0MTg5OTc2Y2U5NGI4OGY3ZDdlZjE5MzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTQ2LDYgKzQ2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiBOb3RSZWZD
b3VudGVkIHsKIAogICAgIFNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKICAg
ICBTdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKSAtPiAoKSBBc3luYworCisgICAgU3Vic2NyaWJl
VG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4gYXBwbGljYXRpb25TZXJ2ZXJLZXkpIC0+IChF
eHBlY3RlZDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YSwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4gcmVzdWx0KSBBc3luYworICAgIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChF
eHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCisgICAg
R2V0UHVzaFN1YnNjcmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
dXNoU3Vic2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5
bmMKKyAgICBHZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDx1aW50OF90LCBXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jIAogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggZTRkNzFmZDIzZGViYTRk
ZWFkMWIxMGZkYjk0MjNiYzBiNmUwNDY0OC4uYWQ0ZmIwYWI3OGMyZGRhZjI3Y2RmNzQxNmQxMDZj
YjlkZjQ3NWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yNjQsNiArMjY0LDQyIEBAIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0b3JlUmVnaXN0cmF0aW9uc09uRGlzayB7IH0sIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN1YnNjcmli
ZVRvUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNh
dGlvblNlcnZlcktleSwgU3Vic2NyaWJlVG9QdXNoU2VydmljZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlN1YnNjcmliZVRvUHVzaFNlcnZpY2UgeyByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBhcHBs
aWNhdGlvblNlcnZlcktleSB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOwor
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5z
dWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UgeyByZWdpc3RyYXRpb25JZGVudGlmaWVyIH0sIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2so
cmVzdWx0LmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgIGNhbGxiYWNrKCpyZXN1bHQp
OworICAgIH0pOworfQorCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVzaFN1YnNj
cmlwdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6R2V0UHVzaFN1YnNjcmlwdGlvbiB7IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFj
ayhyZXN1bHQuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92
ZSgqcmVzdWx0KSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpn
ZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlIHsgcmVnaXN0cmF0
aW9uSWRlbnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAg
ICAgICBjYWxsYmFjayhzdGF0aWNfY2FzdDxQdXNoUGVybWlzc2lvblN0YXRlPigqcmVzdWx0KSk7
CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAxYjU1NGM5NDQ5ZGE0ZWFhMjQ2
MTdmMTFhMTFmYTc1M2I1ZDZlYWY0Li4yYWNlZGI4NGFjMzU4YTc0NjVlYjEwYjI2YWM3ODZkMjU4
MzkwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtOTAsNiArOTAsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZpbmFsOwogICAgIHZvaWQgc3RvcmVSZWdpc3Ry
YXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OworICAgIAorICAgIHZvaWQgc3Vic2NyaWJlVG9QdXNoU2VydmljZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBs
aWNhdGlvblNlcnZlcktleSwgU3Vic2NyaWJlVG9QdXNoU2VydmljZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoUGVybWlzc2lvblN0
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNThiMGU2YWQyZDlh
NDYyZDU5NmM1ZTAxMTBmNTNjNjg3ODY2ZmQwNC4uODE2ZTYyM2UxYjk4ZDczZjdmZDA3ZDY2M2My
MDY0NTNmNTIyOGJjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTE5ICBCZW4gTmhh
bSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVicyBm
b3IgcHVzaCBzdWJzY3JpcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIE1vZGlmeSBQdXNoU3Vic2NyaXB0aW9uIHRlc3RzIHRvIHBhc3MgaW4gYSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLgorCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkv
ZW1wdHlXb3JrZXIuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoTWFuYWdlci13b3JrZXIuanMuCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVz
aE1hbmFnZXIuYW55LmpzOgorICAgICAgICAoZWxzZS5wcm9taXNlX3Rlc3QuYXN5bmMgdGVzdCk6
CisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaFN1YnNjcmlwdGlvbi5odHRwcy5hbnkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRp
b24uaHR0cHMuYW55LmpzOgorICAgICAgICAocHJvbWlzZV90ZXN0LmFzeW5jIHRlc3QpOgorICAg
ICAgICAocHJvbWlzZV90ZXN0KToKKyAgICAgICAgKHRlc3QpOiBEZWxldGVkLgorCiAyMDIxLTEw
LTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtjc3MtZmxleGJveF0gRG8gbm90IGNsYW1wIGZsZXggYmFzZSBzaXplIHdpdGgge21pbnxtYXh9
LXtoZWlnaHR8d2lkdGh9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9lbXB0eVdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL2VtcHR5V29y
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVkM2I0ZDY3NGQzNjQxYjg4YWJjZmY2MmE3YTdkNzFmNjgyYzIz
ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9lbXB0
eVdvcmtlci5qcwpAQCAtMCwwICsxIEBACisvLyBUaGlzIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBp
cyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaE1hbmFnZXItd29y
a2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaE1hbmFnZXItd29ya2Vy
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDNiNGQ2NzRkMzY0MWI4OGFiY2Zm
NjJhN2E3ZDcxZjY4MmMyMzg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hNYW5hZ2VyLXdvcmtl
ci5qcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS8vIFRoaXMgc2VydmljZSB3b3JrZXIg
c2NyaXB0IGlzIGludGVudGlvbmFsbHkgbGVmdCBibGFuay4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoTWFu
YWdlci5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoTWFuYWdlci5h
bnkuanMKaW5kZXggMzliZWQ1YzAyM2Y0MmYxMTZkZWE1Y2U0ZjZkYzA1MWZiMDcyZmRhZi4uMGJj
NmIzNjgyMDA3NGMyNzUxYjU0NWQ1MzMwOGJiNjY1NWMwOGE3MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaE1hbmFnZXIuYW55LmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hNYW5hZ2VyLmFueS5qcwpAQCAtMzQsNyArMzQsNyBA
QCBpZiAoaXNTZXJ2aWNlV29ya2VyKSB7CiAgICAgICAgIGlmIChyZWdpc3RyYXRpb24pIHsKICAg
ICAgICAgICAgIGF3YWl0IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24udW5yZWdpc3RlcigpOwog
ICAgICAgICB9Ci0gICAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCJwdXNoTWFuYWdlci13b3JrZXIuanMiKTsKKyAgICAgICAgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoImVtcHR5V29y
a2VyLmpzIik7CiAgICAgICAgIHB1c2hNYW5hZ2VyID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2Vy
OwogCiAgICAgICAgIGxldCBzZXJ2aWNlV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vic2NyaXB0
aW9uLmh0dHBzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uLmh0dHBzLmFueS1leHBlY3RlZC50eHQKaW5kZXggYzZkODk3ZmNm
MzgzZDI5MWY3NGMwM2NjYTAzYTMwNGQ5NDIwMmU4OS4uYWNhYzViY2IzOGM1Y2Q3MDlkODJhNTUy
YmEyZGFkODNlMGE4MjE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1h
cGkvcHVzaFN1YnNjcmlwdGlvbi5odHRwcy5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hTdWJzY3JpcHRpb24uaHR0cHMuYW55LWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDUgQEAKIAorUEFTUyB3YWl0IGZvciBhY3RpdmUgc2VydmljZSB3b3Jr
ZXIKIFBBU1MgUHVzaFN1YnNjcmlwdGlvbiBnZXR0ZXJzCitQQVNTIHVucmVnaXN0ZXIgc2Vydmlj
ZSB3b3JrZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVz
aFN1YnNjcmlwdGlvbi5odHRwcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uLmh0dHBzLmFueS5qcwppbmRleCAzZDE3NWRmN2RmMzNhZWEzZTQy
YTZlNWYyZjhlZGUxODBlMTI0MjNiLi4zMTgwN2JhMTZlNTllYTdjOTNlZWFjMGExN2RhNjA2ZTAy
ZjE3YjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoU3Vi
c2NyaXB0aW9uLmh0dHBzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFw
aS9wdXNoU3Vic2NyaXB0aW9uLmh0dHBzLmFueS5qcwpAQCAtMTQsMTcgKzE0LDM3IEBAIGZ1bmN0
aW9uIGJ5dGVzRnJvbShidWYpIHsKICAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgVWludDhBcnJh
eShidWYpKTsKIH0KIAotdGVzdCgoKSA9PiB7CitsZXQgcmVnaXN0cmF0aW9uID0gbnVsbDsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uKCk7CisgICAgaWYgKHJlZ2lz
dHJhdGlvbikgeworICAgICAgICBhd2FpdCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnVucmVn
aXN0ZXIoKTsKKyAgICB9CisgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoImVtcHR5V29ya2VyLmpzIik7CisgICAgYXNzZXJ0X3RydWUoIXJl
Z2lzdHJhdGlvbi5hY3RpdmUsICJzZXJ2aWNlIHdvcmtlciBzaG91bGQgYmUgaW5zdGFsbGluZyIp
OworCisgICAgbGV0IHNlcnZpY2VXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZyB8fCBy
ZWdpc3RyYXRpb24ud2FpdGluZzsKKyAgICBhc3NlcnRfdHJ1ZSghIXNlcnZpY2VXb3JrZXIsICJy
ZWdpc3RyYXRpb24gc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNlcnZpY2Ugd29ya2VyIik7
CisKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNlcnZpY2VX
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9PiB7CisgICAgICAgICAg
ICBpZiAoc2VydmljZVdvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpCisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30sICJ3YWl0IGZvciBhY3RpdmUg
c2VydmljZSB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKICAgICBhc3NlcnRfdHJ1
ZSghIXdpbmRvdy5pbnRlcm5hbHMsICJ0ZXN0IHJlcXVpcmVzIGludGVybmFscyIpOwogCi0gICAg
bGV0IHVzZXJWaXNpYmxlT25seSA9IHRydWU7Ci0gICAgbGV0IHN1YnNjcmlwdGlvbiA9IHdpbmRv
dy5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNjcmlwdGlvbihlbmRwb2ludCwgZXhwaXJhdGlvblRp
bWUsIHVzZXJWaXNpYmxlT25seSwga2V5MUJ1ZmZlciwga2V5MkJ1ZmZlciwgYXV0aEJ1ZmZlcik7
CisgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHdpbmRvdy5pbnRlcm5hbHMuY3JlYXRlUHVzaFN1YnNj
cmlwdGlvbihyZWdpc3RyYXRpb24sIGVuZHBvaW50LCBleHBpcmF0aW9uVGltZSwga2V5MUJ1ZmZl
ciwga2V5MkJ1ZmZlciwgYXV0aEJ1ZmZlcik7CiAgICAgYXNzZXJ0X3RydWUoc3Vic2NyaXB0aW9u
IGluc3RhbmNlb2YgUHVzaFN1YnNjcmlwdGlvbik7CiAKICAgICBhc3NlcnRfZXF1YWxzKHN1YnNj
cmlwdGlvbi5lbmRwb2ludCwgZW5kcG9pbnQpOwogICAgIGFzc2VydF9lcXVhbHMoc3Vic2NyaXB0
aW9uLmV4cGlyYXRpb25UaW1lLCBleHBpcmF0aW9uVGltZSk7CiAgICAgYXNzZXJ0X3RydWUoc3Vi
c2NyaXB0aW9uLm9wdGlvbnMgPT09IHN1YnNjcmlwdGlvbi5vcHRpb25zLCAib3B0aW9ucyBzaG91
bGQgYWx3YXlzIHJldHVybiBzYW1lIG9iamVjdCIpOwotICAgIGFzc2VydF9lcXVhbHMoc3Vic2Ny
aXB0aW9uLm9wdGlvbnMudXNlclZpc2libGVPbmx5LCB1c2VyVmlzaWJsZU9ubHkpOworICAgIGFz
c2VydF9lcXVhbHMoc3Vic2NyaXB0aW9uLm9wdGlvbnMudXNlclZpc2libGVPbmx5LCB0cnVlKTsK
ICAgICBhc3NlcnRfdHJ1ZShzdWJzY3JpcHRpb24ub3B0aW9ucy5hcHBsaWNhdGlvblNlcnZlcktl
eSA9PT0gc3Vic2NyaXB0aW9uLm9wdGlvbnMuYXBwbGljYXRpb25TZXJ2ZXJLZXksICJhcHBsaWNh
dGlvblNlcnZlcktleSBzaG91bGQgcmV0dXJuIHNhbWUgb2JqZWN0Iik7CiAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhieXRlc0Zyb20oc3Vic2NyaXB0aW9uLm9wdGlvbnMuYXBwbGljYXRpb25TZXJ2
ZXJLZXkpLCBieXRlc0Zyb20oa2V5MUJ1ZmZlcikpOwogICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
Ynl0ZXNGcm9tKHN1YnNjcmlwdGlvbi5nZXRLZXkoJ3AyNTZkaCcpKSwgYnl0ZXNGcm9tKGtleTJC
dWZmZXIpKTsKQEAgLTM3LDQgKzU3LDggQEAgdGVzdCgoKSA9PiB7CiAgICAgYXNzZXJ0X2VxdWFs
cyhPYmplY3Qua2V5cyhvYmoua2V5cykubGVuZ3RoLCAyKTsKICAgICBhc3NlcnRfZXF1YWxzKG9i
ai5rZXlzLnAyNTZkaCwga2V5MkJhc2U2NFVSTCk7CiAgICAgYXNzZXJ0X2VxdWFscyhvYmoua2V5
cy5hdXRoLCBhdXRoQmFzZTY0VVJMKTsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHJlc29sdmUoKSk7CiB9LCAiUHVzaFN1YnNjcmlwdGlvbiBnZXR0ZXJzIik7CisKK3Byb21p
c2VfdGVzdCgodGVzdCkgPT4gcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKSwgInVucmVnaXN0ZXIg
c2VydmljZSB3b3JrZXIiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>