<?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>201506</bug_id>
          
          <creation_ts>2019-09-05 05:25:34 -0700</creation_ts>
          <short_desc>Remove ServiceWorkerProcessProxy</short_desc>
          <delta_ts>2019-09-09 10:03:22 -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>Service Workers</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568106</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 05:25:34 -0700</bug_when>
    <thetext>Remove ServiceWorkerProcessProxy and use WebProcessProxy directly.
This will allow us to run service workers inside already launched regular web processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568109</commentid>
    <comment_count>1</comment_count>
      <attachid>378077</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 06:34:57 -0700</bug_when>
    <thetext>Created attachment 378077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568114</commentid>
    <comment_count>2</comment_count>
      <attachid>378081</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 07:16:32 -0700</bug_when>
    <thetext>Created attachment 378081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568477</commentid>
    <comment_count>3</comment_count>
      <attachid>378182</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-06 04:50:49 -0700</bug_when>
    <thetext>Created attachment 378182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568523</commentid>
    <comment_count>4</comment_count>
      <attachid>378182</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-06 08:47:17 -0700</bug_when>
    <thetext>Comment on attachment 378182
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerProvider.cpp:70
&gt; +        if (dummyDocumentIdentifiers.contains(document-&gt;identifier()))

Why cannot we simply use if (!document-&gt;page() || document-&gt;page()-&gt;isUtilityPage()) continue; ?

&gt; Source/WebCore/workers/service/context/SWContextManager.cpp:180
&gt; +HashSet&lt;DocumentIdentifier&gt; SWContextManager::dummyDocumentIdentifiers() const

Not convinced this is needed.

&gt; Source/WebCore/workers/service/context/SWContextManager.cpp:193
&gt; +        m_pendingServiceWorkerTerminationRequests.add(serviceWorker-&gt;identifier(), makeUnique&lt;ServiceWorkerTerminationRequest&gt;(*this, serviceWorker-&gt;identifier(), 10_s));

We likely want a global constant for this 10_s.

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h:79
&gt; +    DocumentIdentifier dummyDocumentIdentifier() const { return m_document-&gt;identifier(); }

Not convinced this is needed.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:137
&gt; +Ref&lt;WebProcessProxy&gt; WebProcessProxy::createForServiceWorkers(WebProcessPool&amp; processPool, RegistrableDomain&amp;&amp; registrableDomain, WebsiteDataStore&amp; websiteDataStore)

Why do we want a new createForServiceWorkers() factory function? Why cannot we use the regular create() and then have a setter for the service worker information (e.g. WebProcessProxy::initializeServiceWorkerInformation())?
I imagine that in the future, the WebProcessProxy may already be running (for a page) and we&apos;ll need to add the service worker information to it after the fact, so such setter would be useful anyway.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:292
&gt; +        launchOptions.extraInitializationData.add(&quot;service-worker-process&quot;_s, &quot;1&quot;_s);

Looks like this is going to need to change at some point if we want process sharing between service workers and pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569076</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 00:25:17 -0700</bug_when>
    <thetext>I&apos;ll reduce the patch to removing ServiceWorkerProcessProxy only, we can then progressively land the changes to make service workers coexist with real pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569085</commentid>
    <comment_count>6</comment_count>
      <attachid>378355</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 00:47:26 -0700</bug_when>
    <thetext>Created attachment 378355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569086</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 00:49:00 -0700</bug_when>
    <thetext>&gt; Why do we want a new createForServiceWorkers() factory function? Why cannot
&gt; we use the regular create() and then have a setter for the service worker
&gt; information (e.g. WebProcessProxy::initializeServiceWorkerInformation())?
&gt; I imagine that in the future, the WebProcessProxy may already be running
&gt; (for a page) and we&apos;ll need to add the service worker information to it
&gt; after the fact, so such setter would be useful anyway.

I kept it this way for now, m_registrableDomain is fully controlled by WebProcessProxy for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569148</commentid>
    <comment_count>8</comment_count>
      <attachid>378355</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 08:52:54 -0700</bug_when>
    <thetext>Comment on attachment 378355
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569169</commentid>
    <comment_count>9</comment_count>
      <attachid>378355</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-09 10:02:21 -0700</bug_when>
    <thetext>Comment on attachment 378355
Patch

Clearing flags on attachment: 378355

Committed r249647: &lt;https://trac.webkit.org/changeset/249647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569170</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-09 10:02:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569172</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-09 10:03:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/55186170&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378077</attachid>
            <date>2019-09-05 06:34:57 -0700</date>
            <delta_ts>2019-09-05 07:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201506-20190905153455.patch</filename>
            <type>text/plain</type>
            <size>41723</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxMzQ3MGVlYjk3Yzg3
YzkyOTAxNWZhNDNjYjcyMTBjYjExNmU5Zi4uN2FmZDRkY2U4ZDk5MDhlNTc3ODUyNTdhMzhkM2Vi
YjMzNGJmMGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyk6
CisgICAgICAgIE1ha2Ugc3VyZSB0byBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHVzZWQg
dG8gaG9vayBzZXJ2aWNlIHdvcmtlcnMgYXMgc2VydmljZSB3b3JrZXIgY2xpZW50cy4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmR1bW15RG9jdW1lbnRJZGVudGlmaWVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2Vydmlj
ZVdvcmtlcnMpOgorICAgICAgICBBZGQgYSByb3V0aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29y
a2Vycy4KKyAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCB3aGVuIHRoZSBjb25uZWN0aW9uIHRvIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgaXMgbG9zdC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisKIDIwMTktMDktMDQgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bQ2xhbmddIElu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAoMTEyMiwyMCk6IGVycm9yOiBjYW5ub3QgZGVjb21wb3Nl
IHRoaXMgdHlwZTsgJ3N0ZDo6dHVwbGVfc2l6ZTxjb25zdCBXVEY6OktleVZhbHVlUGFpcjxXVEY6
OlN0cmluZywgV1RGOjpSZWZQdHI8V1RGOjpKU09OSW1wbDo6VmFsdWUsIFdURjo6RHVtYlB0clRy
YWl0czxXVEY6OkpTT05JbXBsOjpWYWx1ZT4gPiA+Pjo6dmFsdWUnIGlzIG5vdCBhIHZhbGlkIGlu
dGVncmFsIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFiZjg3NWRiNjYxZTQzZGQ2NzRi
OGRmZTZjNmIuLmJhNTQ0YWVlYjRhOTI2YWY2NjYzZmM4Mzk3YzNhYTgwY2UwOWZhOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHVzaW5nIGEgc3BlY2lmaWMgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgbW92ZSB0aGUgbG9n
aWMgZGlyZWN0bHkgaW4gV2ViUHJvY2Vzc1Byb3h5LgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cg
dXMgaW4gdGhlIGZ1dHVyZSB0byBydW4gYSBzZXJ2aWNlIHdvcmtlciBpbiBhIHByb2Nlc3MgdGhh
dCBhbHJlYWR5IHJ1bnMgYSB3ZWIgcGFnZSwKKyAgICAgICAgdGh1cyBzYXZpbmcgdGhlIG5lZWQg
dG8gc3BpbiBvZmYgYSBuZXcgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBu
ZXcgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyBtZXRob2QgaW5zdGVh
ZCBvZiBjcmVhdGluZyBhCisgICAgICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuIFRoZSBi
ZWhhdmlvciBpcyB0aGVuIHNpbWlsYXI6IGEgcHJvY2VzcyBydW5uaW5nIGEgc2VydmljZSB3b3Jr
ZXIgY2Fubm90IHJ1biBhIHBhZ2UuCisKKyAgICAgICAgVG8gcHJlcGFyZSBmb3IgdGhhdCwgd2Ug
ZG8gdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorICAgICAgICAtIE9uIG5ldHdvcmsgcHJvY2VzcyBj
cmFzaCwgb25seSBraWxsIGEgcHJvY2VzcyBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBpZiBubyB3
ZWIgcGFnZSBpcyBydW5uaW5nLgorICAgICAgICBPdGhlcndpc2UsIGp1c3Qgc3RvcCB0aGUgc2Vy
dmljZSB3b3JrZXJzLgorICAgICAgICAtIE1ha2Ugc3VyZSB0byBub3QgcmVnaXN0ZXIgZHVtbXkg
ZG9jdW1lbnRzIGFzIHNlcnZpY2Ugd29ya2VyIGNsaWVudHMKKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2VyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lcjo6c2hvdWxkQmVBY3RpdmUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJV
c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lz
dGVyZWRTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpp
c1NlcnZpY2VXb3JrZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhbkJlQWRkZWRUb1dlYlByb2Nlc3ND
YWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNz
ZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEV4Y2Vl
ZENQVUxpbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5Ojppc1J1bm5pbmdTZXJ2aWNlV29ya2VycyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5
KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKToKKwogMjAxOS0wOS0wNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNb2JpbGVTYWZh
cmkgbWF5IGNyYXNoIHdoZW4gaW52b2tpbmcgdGhlIEMrKyBsYW1iZGEgaW4gLVtXS0NvbnRlbnRW
aWV3IF9zaGFyZUZvcldlYlZpZXc6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAppbmRleCA3YmJhYzVjYTQxNDBi
M2M3NjgzMWNiYWQ3ZjQzNzZhNGY5YWRkOTUwLi5kMTJkNDZlYmUyNzQwYTUyOTNmNmI4Y2IwMzAx
NzNhZmE5NjdkZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNjMsMTEgKzYzLDE0IEBAIGJvb2wg
U2VydmljZVdvcmtlclByb3ZpZGVyOjptYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JP
cmlnaW4oUEFMOjpTZXNzaW9uCiAKIHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRzKCkKIHsKKyAgICBhdXRvIGR1bW15RG9jdW1lbnRJZGVudGlm
aWVycyA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmR1bW15RG9jdW1lbnRJZGVudGlm
aWVycygpOworCiAgICAgc2V0TWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VycygpOwogICAg
IGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAg
ICAgYXV0byBzZXNzaW9uSUQgPSBkb2N1bWVudC0+c2Vzc2lvbklEKCk7CisgICAgICAgIGlmIChk
dW1teURvY3VtZW50SWRlbnRpZmllcnMuY29udGFpbnMoZG9jdW1lbnQtPmlkZW50aWZpZXIoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpjYW5T
ZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShkb2N1bWVudC0+dXJsKCkucHJvdG9jb2woKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQotICAgICAgICAgICAgZG9jdW1lbnQtPnNldFNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCZzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vz
c2lvbklEKSk7CisgICAgICAgICAgICBkb2N1bWVudC0+c2V0U2VydmljZVdvcmtlckNvbm5lY3Rp
b24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihkb2N1bWVudC0+c2Vzc2lvbklE
KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNzc0ZjM4NWYxOGFi
YmE4MTI4OGI3OTE0YWM5YzkxZWIyNTE0NGYzNS4uZjQ0YjJkN2JlZjcxNTYwM2M4MDllMTc2MzM3
ZDliNjlmNTJlZGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTE3Nyw2ICsxNzcsMjQg
QEAgU1dDb250ZXh0TWFuYWdlcjo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdDo6U2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWUKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QodGltZW91dCk7CiB9CiAKK0hhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiBTV0NvbnRleHRN
YW5hZ2VyOjpkdW1teURvY3VtZW50SWRlbnRpZmllcnMoKSBjb25zdAoreworICAgIEhhc2hTZXQ8
RG9jdW1lbnRJZGVudGlmaWVyPiBpZHM7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyIDog
bV93b3JrZXJNYXAudmFsdWVzKCkpCisgICAgICAgIGlkcy5hZGQoc2VydmljZVdvcmtlci0+ZHVt
bXlEb2N1bWVudElkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIGlkczsKK30KKwordm9pZCBTV0Nv
bnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdvcmtlcnMoKQoreworICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcnMgPSBXVEZNb3ZlKG1fd29ya2VyTWFwKTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VX
b3JrZXIgOiBzZXJ2aWNlV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBzZXJ2aWNlV29ya2Vy
LT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisgICAgICAgIG1fcGVuZGluZ1NlcnZp
Y2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChzZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVy
KCksIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIHNl
cnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKSwgMTBfcykpOworICAgICAgICBzZXJ2aWNlV29ya2Vy
LT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlMGMwODQ5MmMzNTIxN2EyMzZl
MjMyYzA2YmM1YWI2MzY3ODg2YTEuLmVmYTJiYTEwZjgxMmY4Zjg5YzE5ZDMwMDZmOWIwYTkyYzRm
ZTA5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTg3LDYgKzg3LDEwIEBAIHB1YmxpYzoKIAog
ICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7
IH0KIAorICAgIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiBkdW1teURvY3VtZW50SWRlbnRp
ZmllcnMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNlcnZpY2VX
b3JrZXJzKCk7CisKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBmNDZjZmQxNDc4YWVhMjc0
ZDIxOTAzNjIzMjM1YzM2M2QzMjNmZDg3Li44NTQ5NmJlNjUzNjg0Yzc1Yjc4MGIzYTBiY2M2MjEy
Mzg0ZTMyMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNzYsNiAr
NzYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRp
Zmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVGZXRjaChTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogCisgICAgRG9jdW1lbnRJZGVudGlm
aWVyIGR1bW15RG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC0+
aWRlbnRpZmllcigpOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiB1c2VyQWdlbnQsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJiwgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDMxM2VjMGFmM2I3ZjYyYmZjNzVlZTliZThjOGU5YmY4OTA0ODU3NTQu
Ljg5ZjU2NDUyYzYxMjAxZjNmZmVhMTJlNjkyNmM3YTlkYmI1NGRiZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMjUxLDcgKzI1MSw2IEBAIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAogVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCi1VSVByb2Nlc3Mv
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVz
dC5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCAzZGQxMGU1ZjhkMmY0NmFl
OTExNDMyYjc3NjNlMTkxNTgyZDYyNTZhLi4zNzQ5NzdiMzc3ZTE3OWRhN2RkMTY0YjVmNWRlMTYw
NGE5ZWJhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQxLDcgKzQxLDcgQEAKICNpbXBvcnQgIl9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0
YVN0b3JlRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgotI2ltcG9y
dCA8V2ViS2l0L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CkBAIC01NzgsNyArNTc4
LDcgQEAgLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXIKIHsKLSAgICByZXR1cm4gV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojpo
YXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAKaW5kZXggN2JmYzI2NTQ1N2Y1N2FmOTMyN2RjZDM1YTAwM2M5OTkwMDA1ZWE1Ni4u
OTEzYmE2YTRlMTMwOTllYzQ2MzcwMjJjNDkwYjQxMDQ3YzBjZWFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBCYWNrZ3JvdW5kUHJv
Y2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNob3VsZEJlQWN0aXZlKCkgY29uc3QKIHsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGFyZSBh
bHdheXMgaW4gdGhlIGJhY2tncm91bmQuCi0gICAgaWYgKG1fd2ViUHJvY2Vzc1Byb3h5LmlzU2Vy
dmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAobV93ZWJQcm9jZXNzUHJveHkuaXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuICFtX3dl
YlByb2Nlc3NQcm94eS52aXNpYmxlUGFnZUNvdW50KCkgJiYgbV93ZWJQcm9jZXNzUHJveHkucGFn
ZUNvdW50KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3
ZjlkYjE2NWY2NDQwZjJiMTQwYi4uYTVlYjM3MWJlYTBlMzA2ZTNjZTg1ZDQwMzkzYzg1MDgxZTY2
NTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDUsOSArMTQ1LDkgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25SZXF1ZXMKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKICAgICBS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbjsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQ
cm94eSkpIHsKKyAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkpIHsKICAgICAgICAgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IHRydWU7Ci0gICAgICAgIHJl
Z2lzdHJhYmxlRG9tYWluID0gZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2Vi
UHJvY2Vzc1Byb3h5KS5yZWdpc3RyYWJsZURvbWFpbigpOworICAgICAgICByZWdpc3RyYWJsZURv
bWFpbiA9IHdlYlByb2Nlc3NQcm94eS5zZXJ2aWNlV29ya2VyUmVnaXN0cmFibGVEb21haW4oKTsK
ICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGIzYTQyY2QwNzFmNTQxZjMwNGUyNWE0YTNiMGNiZDUwNDUwNWU5MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgotI2luY2x1ZGUgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAi
V2ViUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0j
aW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLVJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCi17Ci0g
ICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7
IHBvb2wsIHJlZ2lzdHJhYmxlRG9tYWluLCBzdG9yZSB9KTsKLSAgICBwcm94eS0+Y29ubmVjdCgp
OwotICAgIHJldHVybiBwcm94eTsKLX0KLQotU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkK
LSAgICA6IFdlYlByb2Nlc3NQcm94eSB7IHBvb2wsICZzdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vIH0K
LSAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCi0gICAgLCBtX3Nl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQotICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQotewotfQotCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp+U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSgpCi17Ci19Ci0KLWJvb2wgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6aGFzUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9y
eSkKLXsKLSAgICBTdHJpbmcgcmVnaXN0cmF0aW9uRmlsZSA9IFdlYkNvcmU6OnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHJlZ2lzdHJhdGlvbkZpbGUpOwotfQot
Ci12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQotewotICAgIFdlYlByb2Nl
c3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKLQotICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNz
Il9zLCAiMSJfcyk7Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgcmVnaXN0cmFibGVEb21haW4oKS5zdHJpbmcoKSk7
Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vz
c2lvbklEKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVs
dFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCBpbml0aWFsU2Vzc2lvbklELnZhbHVlT3IoUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgfSwgMCk7Ci19Ci0KLXZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpT
ZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwYzFhNWIyYjAxNjY4MDg5YjM2MTQy
ZWY5MWUzZGQzMmZiNGFiMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKLXN0cnVj
dCBXZWJQcmVmZXJlbmNlc1N0b3JlOwotCi1jbGFzcyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
IGZpbmFsIDogcHVibGljIFdlYlByb2Nlc3NQcm94eSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB+
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpOwotCi0gICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
Ci0KLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7Ci0gICAgdm9pZCBzZXRVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0K
LSAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKCkgY29uc3QgeyByZXR1
cm4gbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7IH0KLSAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0K
LQotcHJpdmF0ZToKLSAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKLSAgICB2b2lkIGdldExh
dW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgZmluYWw7Ci0KLSAg
ICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0KLSAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7Ci0gICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZUlEOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KSB7IHJldHVybiB3ZWJQcm9j
ZXNzUHJveHkuaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZTMyZWI0Mzc2MzU0MGI5NmEw
MTE4MzMzODQxMjFlZjAwOTNhNWI2Yi4uZDMxNzlmZGRjMmM4MjM2NmQxOGM1Y2ZjZDJmNTI5YzVl
MWU2NzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2lu
Y2x1ZGUgIlVJR2FtZXBhZC5oIgpAQCAtODYsNiArODUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzV2FybWluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CkBAIC03MjMsNyArNzIzLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmlzRW1wdHkoKSkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzIHsgfSk7CiAKLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVh
dGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgYXV0
byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JT
ZXJ2aWNlV29ya2VycygqdGhpcywgcmVnaXN0cmFibGVEb21haW4sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKIAogICAgIHVwZGF0ZVBy
b2Nlc3NBc3NlcnRpb25zKCk7CkBAIC03MzIsOSArNzMyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm8KICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyID0gc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5wdHIoKTsKICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5UHRyLT5zdGFydChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2VydmljZVdvcmtl
clByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCku
c3RvcmUoKSwgc2Vzc2lvbklEKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgc2Vzc2lvbklELnZhbHVlT3IoUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5zZXRVc2Vy
QWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eVB0ci0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJV
c2VyQWdlbnQpOwogfQogI2VuZGlmCiAKQEAgLTExNDAsOCArMTE0MCw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdv
cmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKSB7Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9j
ZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93bmNhc3Q8U2VydmljZVdvcmtl
clByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChw
cm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7CisgICAgICAgIGF1dG8qIHJlbW92
ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UocHJvY2Vzcy0+c2Vydmlj
ZVdvcmtlclJlZ2lzdHJhYmxlRG9tYWluKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92
ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBwcm9jZXNzKTsKICAgICAgICAgdXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBXZWJQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0
ZURhdGFTdG9yZSYgdwogICAgICAgICBpZiAocHJvY2VzcyA9PSBtX3ByZXdhcm1lZFByb2Nlc3Mg
fHwgcHJvY2VzcyA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5KQogICAgICAgICAgICAgY29udGludWU7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBpZiAoaXM8U2VydmljZVdvcmtl
clByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKQorICAgICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgICAg
IGlmIChtdXN0TWF0Y2hEYXRhU3RvcmUgJiYgJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAh
PSAmd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTEyNTUsMTIgKzEyNTUsMTIgQEAgUmVmPFdlYlBhZ2VQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgUmVmPEFQSToKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VD
bGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBBU1NFUlQoIWlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9j
ZXNzKSk7CisgICAgQVNTRVJUKCFwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKTsK
IAogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKICAgICAgICAgbV9zZXJ2
aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CiAgICAgICAg
IGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3MtPnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTEyODgs
NyArMTI4OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Nl
cnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7CiAgICAgZm9yIChhdXRvKiBzZXJ2aWNl
V29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkKLSAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnNldFVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQpOworICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2V0U2VydmljZVdvcmtlclVz
ZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOwogfQogCiBib29sIFdlYlByb2Nlc3NQ
b29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3Rv
cmUmIHN0b3JlKQpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5
SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8K
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAg
cmV0dXJuIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2VycyhzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKKyAgICAgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KICNlbmRpZgpAQCAtMjIxMiwxMCArMjIxMiw5IEBA
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgZm9yIChhdXRvKiBzZXJ2aWNl
V29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAg
ICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3MtPndlYlBhZ2VQcm94eUlEKCkgPT0gcGFnZUlE
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIHJldHVybiBXVEY6OmFueU9m
KG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSwgW3BhZ2VJRF0oYXV0byogcHJvY2Vz
cykgeworICAgICAgICByZXR1cm4gcHJvY2Vzcy0+aGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShw
YWdlSUQpOworICAgIH0pOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZjk0MzY3ZmJhOWMxZjY2ZjRiM2M5
NDBkZTE2NzRiOGRkYTZhNTdhNC4uOTFhNjIzMjcyNmNhZmFlNmIyYjY2ODY0ZWVjMDk3MDExZDYy
ODAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zOCw3
ICszOCw2IEBACiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCi0jaW5j
bHVkZSAiU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHRDbGllbnQuaCIKQEAgLTEwMCw3ICs5OSw2IEBAIGNsYXNzIERvd25sb2FkUHJveHk7CiBj
bGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNzIFVJR2FtZXBh
ZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7Ci1jbGFzcyBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OwogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogY2xhc3MgV2Vi
QXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsKQEAgLTM4Miw3
ICszODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFn
ZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4pOwotICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtlclByb3hp
ZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KKyAgICBjb25z
dCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQcm9jZXNzUHJveHkqPiYg
c2VydmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdv
cmtlcihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdv
cmtlciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2
aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXI7IH0KICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAtNjIwLDcgKzYxOCw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgeyBudWxscHRyIH07CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViUHJvY2Vz
c1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwogICAgIGJvb2wgbV93YWl0aW5nRm9y
V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAyNzhlYjgzNDRmYzM1NDEzMDUzZDNmY2YzMWQ4ZDJlMDZlMDY1ZWNlLi43M2VjM2ZkZDA1YmFk
YjZkNDJkNTlhMDg4ZmEyZjQ2ZTcyYTYzNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uLmgiCkBAIC0xMzMsNiArMTM0LDE0IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0
CiAgICAgcmV0dXJuIHByb3h5OwogfQogCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0
YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigq
bmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJl
d2FybWVkOjpObykpOworICAgIHByb3h5LT5tX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAg
IHByb3h5LT5jb25uZWN0KCk7CisgICAgcmV0dXJuIHByb3h5OworfQorCiBXZWJQcm9jZXNzUHJv
eHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2FybWVkKQogICAg
IDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJhY2tncm91
bmRQcmlvcml0eSgpKQogICAgICwgbV9yZXNwb25zaXZlbmVzc1RpbWVyKCp0aGlzKQpAQCAtMjc3
LDYgKzI4NiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdAogICAgICAgICBwcm9jZXNzUG9v
bCgpLnNldFNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKGZhbHNl
KTsKICAgICAgICAgbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JU
ZXN0aW5nID0gdHJ1ZTsKICAgICB9CisKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pIHsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQo
InNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsICIxIl9zKTsKKyAgICAgICAgbGF1bmNoT3B0aW9u
cy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKKyAg
ICB9CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV1BFKQpAQCAtNzUxLDkg
Kzc2NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQog
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAg
IGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHNlcnZp
Y2Ugd29ya2VyIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUsIGtpbGwgaXQgb3Vyc2VsdmVz
IHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZv
cm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNp
dmUoKSBUZXJtaW5hdGluZyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIHdpdGggcGlkICVkIGJlY2F1
c2UgaXQgaXMgdW5yZXNwb25zaXZlIiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAg
Ly8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMg
c2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0
aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkg
JiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJm
b3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25z
aXZlKCkgVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyB3aXRoIHBp
ZCAlZCBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVy
KCkpOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC04ODYsNyArOTAwLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90
IGlkZW50aWZpZXIpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9j
ZXNzQ2FjaGUoKSBjb25zdAogewotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkpCisg
ICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChXZWJLaXQ6OmlzSW5zcGVjdG9yUHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2woKSkp
CkBAIC0xMjAyLDcgKzEyMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJv
Y2Vzc1N1c3BlbnNpb24oKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0
YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAoaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2JhY2tncm91bmRU
b2tlbiB8fCAhbV9mb3JlZ3JvdW5kVG9rZW4pOwpAQCAtMTM3OCwxMCArMTM5Miw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRDUFVMaW1pdCgpCiAgICAgaWYgKGhhc1Zpc2libGVQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
KQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdl
YlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQ1BVTGltaXQoKSBUZXJtaW5hdGluZyBTZXJ2aWNlIFdv
cmtlciBwcm9jZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5k
IENQVSBsaW1pdCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGVsc2UKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNz
UHJveHk6OmRpZEV4Y2VlZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dyb3VuZCBXZWJQcm9j
ZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1p
dCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBl
cmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRDUFVMaW1p
dCgpIFRlcm1pbmF0aW5nIGJhY2tncm91bmQgV2ViUHJvY2VzcyB3aXRoIHBpZCAlZCB0aGF0IGhh
cyBleGNlZWRlZCB0aGUgYmFja2dyb3VuZCBDUFUgbGltaXQiLCB0aGlzLCBwcm9jZXNzSWRlbnRp
ZmllcigpKTsKICAgICBsb2dEaWFnbm9zdGljTWVzc2FnZUZvclJlc291cmNlTGltaXRUZXJtaW5h
dGlvbihEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4Y2VlZGVkQmFja2dyb3VuZENQVUxpbWl0S2V5
KCkpOwogICAgIHJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4
Y2VlZGVkQ1BVTGltaXQpOwogfQpAQCAtMTQ4MCw2ICsxNDkxLDI1IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQo
KQogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElE
KCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQs
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwg
c2Vzc2lvbklEIH0sIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3sKKyAgICBBU1NFUlQobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7Cit9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9y
ZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBBU1NFUlQobV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNL
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGUzYWVkNTFj
MzRmMTczZmRkMGJjZTg1OTQ3NTk1YTdiOGY1MzhkYjEuLmQxNDNiOWMzZmMwMmNlMzRmZWFiY2My
N2FjMDUzN2IxMmEwMDQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBlbnVtIGNs
YXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
MDksNiArMTEwLDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNoUHJvY2Vz
cyA6IGJvb2wgeyBObywgWWVzIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBT
aG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vz
c1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3Rv
cmUmKTsKKwogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvcldl
YlBhZ2VzV2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJveHkmKT4mKTsKQEAgLTE0
OSw3ICsxNTIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7IC8vIFRo
aXMgaXMgd2hhdCBpcyByZXBvcnRlZCB0byBBY3Rpdml0eU1vbml0b3IuCiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgc2VydmljZVdvcmtlclJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlZ2lzdHJhYmxlRG9tYWluOyB9CiAKICAgICB2b2lk
IGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCkBA
IC0zMDksNiArMzEzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIGZpbmFsIHsgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ6OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ6OmRlcmVmKCk7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBzdGFydEZvclNlcnZpY2VXb3Jr
ZXJzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOworICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAm
JiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09
IHBhZ2VQcm94eUlEOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdlYlByb2Nlc3NQcm94
eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCk7CiAKQEAg
LTQ3Niw2ICs0ODgsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBNZWRp
YUNhcHR1cmVTYW5kYm94RXh0ZW5zaW9ucyBtX21lZGlhQ2FwdHVyZVNhbmRib3hFeHRlbnNpb25z
IHsgU2FuZGJveEV4dGVuc2lvblR5cGU6Ok5vbmUgfTsKICNlbmRpZgorCisgICAgc3RydWN0IFNl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluOworICAgICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
c2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICB9OworICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDI0YTQzZmI3MWFlYzg1NjMxNTIwOTNkMTA5NzhkMDgyNjFkOTBjZTcuLjM5
MjQ5MzQxOGFlODg2NTdjOWUyMjU4NzE1MDJkODhlNWY2MDliNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODc5LDcgKzg3OSw2IEBA
CiAJCTQxNDM3NTFDMjBFQUVBMkQwMEZBRDA2QyAvKiBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5z
YiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTQzNzUxQjIwRUFFQTFFMDBGQUQwNkMgLyogY24ubWljcm9kb25lLmNt
Yi5zYWZhcmkuc2IgKi87IH07CiAJCTQxNEREMzc5MjBCRjQzRjUwMDY5NTlGQiAvKiBjb20uY2lz
Y28ud2ViZXgucGx1Z2luLmdwYzY0LnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTRERDM3ODIwQkY0M0VBMDA2OTU5RkIgLyogY29tLmNpc2NvLndl
YmV4LnBsdWdpbi5ncGM2NC5zYiAqLzsgfTsKIAkJNDE0REQzN0EyMEJGNDlBNTAwNjk1OUZCIC8q
IGNvbS5jaXNjby53ZWJleC5wbHVnaW4uZ3BjNjQuc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3gg
UHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0REQzNzgyMEJG
NDNFQTAwNjk1OUZCIC8qIGNvbS5jaXNjby53ZWJleC5wbHVnaW4uZ3BjNjQuc2IgKi87IH07Ci0J
CTQxNERFREQ3MUY5RURERTUwMDQ3QzQwRCAvKiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERURENTFG
OUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oICovOyB9OwogCQk0
MTU3RTRCMDIwRTJFQ0RGMDBBNkMwRDcgLyogY29tLmdvb2dsZS5vMWRicm93c2VycGx1Z2luLnNi
IGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNTdFNEFGMjBFMkVDOTgwMEE2QzBENyAvKiBjb20uZ29vZ2xlLm8xZGJy
b3dzZXJwbHVnaW4uc2IgKi87IH07CiAJCTQxNzY5MDE0MjJGREQ0MUIwMEIxNTc2RCAvKiBOZXR3
b3JrUlRDUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTc2OTAxMzIyRkRENDFCMDBCMTU3NkQgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1t
ICovOyB9OwogCQk0MTc5MTVBRjIyNTZCQjc1MDBENkY5N0UgLyogV2ViU29ja2V0Q2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTE1QUQy
MjU2QkI3NDAwRDZGOTdFIC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKQEAgLTMxMzgsOCAr
MzEzNyw2IEBACiAJCTQxM0NDRDRGMjBERUJDMkYwMDY1QTIxQSAvKiBjb20uZ29vZ2xlLmdvb2ds
ZXRhbGticm93c2VycGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5nb29nbGUu
Z29vZ2xldGFsa2Jyb3dzZXJwbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNDM3NTFCMjBFQUVBMUUwMEZBRDA2QyAvKiBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0REQzNzgyMEJGNDNFQTAwNjk1OUZCIC8qIGNvbS5j
aXNjby53ZWJleC5wbHVnaW4uZ3BjNjQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmNp
c2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDE0REVERDUxRjlFRERERjAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTRERURENjFGOUVEREUwMDA0N0M0
MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1MTg1MzUyMjI3MDRGNTAwNTQzMEM2IC8qIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTUxODUz
NjIyMjcwNEY2MDA1NDMwQzYgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1MTg1MzgyMjI3MEY1MzAwNTQzMEM2IC8q
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc3NzIsOCArNzc2OSw2IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3
QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0Rjcw
MDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1
QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKLQkJCQk0MTRERURENjFGOUVE
REUwMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgKi8sCi0JCQkJNDE0
REVERDUxRjlFRERERjAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCAqLywK
IAkJCQk1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICov
LAogCQkJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICov
LAogCQkJCTUxNUM0MTVBMjA3RDc0RTAwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3Bw
ICovLApAQCAtOTczNyw3ICs5NzMyLDYgQEAKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAg
LyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhG
MzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDE0REVERDcxRjlFRERFNTAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZG
QSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQw
MEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkVC
NkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRhZTEy
MGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5ODA3N2I2ZDhjMC4uZWFmZWY3NzI5N2JjYmI3YTUyNWZm
ODdmZTM4MjYwZmE4ZTQ3NWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTI2MCw4ICsxMjYwLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9j
ZXNzIGlzIGdvbmUiKTsKLSAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKKyAgICAgICAgaWYg
KG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSBuZXR3b3Jr
IHByb2Nlc3MgaXMgZ29uZSIpOworICAgICAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
dG9wQWxsU2VydmljZVdvcmtlcnMoKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTgyOSw3ICsxODMy
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUcKIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRzKCkKIHsKLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byByZWdp
c3RlciBzZXJ2aWNlIHdvcmtlciBkdW1teSBkb2N1bWVudHMuCiAgICAgQVNTRVJUKCFTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgIFNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378081</attachid>
            <date>2019-09-05 07:16:32 -0700</date>
            <delta_ts>2019-09-06 04:50:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201506-20190905161631.patch</filename>
            <type>text/plain</type>
            <size>44093</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxMzQ3MGVlYjk3Yzg3
YzkyOTAxNWZhNDNjYjcyMTBjYjExNmU5Zi4uN2FmZDRkY2U4ZDk5MDhlNTc3ODUyNTdhMzhkM2Vi
YjMzNGJmMGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyk6
CisgICAgICAgIE1ha2Ugc3VyZSB0byBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHVzZWQg
dG8gaG9vayBzZXJ2aWNlIHdvcmtlcnMgYXMgc2VydmljZSB3b3JrZXIgY2xpZW50cy4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmR1bW15RG9jdW1lbnRJZGVudGlmaWVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2Vydmlj
ZVdvcmtlcnMpOgorICAgICAgICBBZGQgYSByb3V0aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29y
a2Vycy4KKyAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCB3aGVuIHRoZSBjb25uZWN0aW9uIHRvIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgaXMgbG9zdC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisKIDIwMTktMDktMDQgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bQ2xhbmddIElu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAoMTEyMiwyMCk6IGVycm9yOiBjYW5ub3QgZGVjb21wb3Nl
IHRoaXMgdHlwZTsgJ3N0ZDo6dHVwbGVfc2l6ZTxjb25zdCBXVEY6OktleVZhbHVlUGFpcjxXVEY6
OlN0cmluZywgV1RGOjpSZWZQdHI8V1RGOjpKU09OSW1wbDo6VmFsdWUsIFdURjo6RHVtYlB0clRy
YWl0czxXVEY6OkpTT05JbXBsOjpWYWx1ZT4gPiA+Pjo6dmFsdWUnIGlzIG5vdCBhIHZhbGlkIGlu
dGVncmFsIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFiZjg3NWRiNjYxZTQzZGQ2NzRi
OGRmZTZjNmIuLmJhNTQ0YWVlYjRhOTI2YWY2NjYzZmM4Mzk3YzNhYTgwY2UwOWZhOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHVzaW5nIGEgc3BlY2lmaWMgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgbW92ZSB0aGUgbG9n
aWMgZGlyZWN0bHkgaW4gV2ViUHJvY2Vzc1Byb3h5LgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cg
dXMgaW4gdGhlIGZ1dHVyZSB0byBydW4gYSBzZXJ2aWNlIHdvcmtlciBpbiBhIHByb2Nlc3MgdGhh
dCBhbHJlYWR5IHJ1bnMgYSB3ZWIgcGFnZSwKKyAgICAgICAgdGh1cyBzYXZpbmcgdGhlIG5lZWQg
dG8gc3BpbiBvZmYgYSBuZXcgcHJvY2Vzcy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBu
ZXcgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyBtZXRob2QgaW5zdGVh
ZCBvZiBjcmVhdGluZyBhCisgICAgICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuIFRoZSBi
ZWhhdmlvciBpcyB0aGVuIHNpbWlsYXI6IGEgcHJvY2VzcyBydW5uaW5nIGEgc2VydmljZSB3b3Jr
ZXIgY2Fubm90IHJ1biBhIHBhZ2UuCisKKyAgICAgICAgVG8gcHJlcGFyZSBmb3IgdGhhdCwgd2Ug
ZG8gdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorICAgICAgICAtIE9uIG5ldHdvcmsgcHJvY2VzcyBj
cmFzaCwgb25seSBraWxsIGEgcHJvY2VzcyBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBpZiBubyB3
ZWIgcGFnZSBpcyBydW5uaW5nLgorICAgICAgICBPdGhlcndpc2UsIGp1c3Qgc3RvcCB0aGUgc2Vy
dmljZSB3b3JrZXJzLgorICAgICAgICAtIE1ha2Ugc3VyZSB0byBub3QgcmVnaXN0ZXIgZHVtbXkg
ZG9jdW1lbnRzIGFzIHNlcnZpY2Ugd29ya2VyIGNsaWVudHMKKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2VyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lcjo6c2hvdWxkQmVBY3RpdmUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJV
c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lz
dGVyZWRTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpp
c1NlcnZpY2VXb3JrZXJQYWdlSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhbkJlQWRkZWRUb1dlYlByb2Nlc3ND
YWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNz
ZXJ0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEV4Y2Vl
ZENQVUxpbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5Ojppc1J1bm5pbmdTZXJ2aWNlV29ya2VycyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5
KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKToKKwogMjAxOS0wOS0wNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNb2JpbGVTYWZh
cmkgbWF5IGNyYXNoIHdoZW4gaW52b2tpbmcgdGhlIEMrKyBsYW1iZGEgaW4gLVtXS0NvbnRlbnRW
aWV3IF9zaGFyZUZvcldlYlZpZXc6XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAppbmRleCA3YmJhYzVjYTQxNDBi
M2M3NjgzMWNiYWQ3ZjQzNzZhNGY5YWRkOTUwLi5kMTJkNDZlYmUyNzQwYTUyOTNmNmI4Y2IwMzAx
NzNhZmE5NjdkZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNjMsMTEgKzYzLDE0IEBAIGJvb2wg
U2VydmljZVdvcmtlclByb3ZpZGVyOjptYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JP
cmlnaW4oUEFMOjpTZXNzaW9uCiAKIHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRzKCkKIHsKKyAgICBhdXRvIGR1bW15RG9jdW1lbnRJZGVudGlm
aWVycyA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmR1bW15RG9jdW1lbnRJZGVudGlm
aWVycygpOworCiAgICAgc2V0TWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VycygpOwogICAg
IGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAg
ICAgYXV0byBzZXNzaW9uSUQgPSBkb2N1bWVudC0+c2Vzc2lvbklEKCk7CisgICAgICAgIGlmIChk
dW1teURvY3VtZW50SWRlbnRpZmllcnMuY29udGFpbnMoZG9jdW1lbnQtPmlkZW50aWZpZXIoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpjYW5T
ZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShkb2N1bWVudC0+dXJsKCkucHJvdG9jb2woKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQotICAgICAgICAgICAgZG9jdW1lbnQtPnNldFNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCZzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vz
c2lvbklEKSk7CisgICAgICAgICAgICBkb2N1bWVudC0+c2V0U2VydmljZVdvcmtlckNvbm5lY3Rp
b24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihkb2N1bWVudC0+c2Vzc2lvbklE
KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNzc0ZjM4NWYxOGFi
YmE4MTI4OGI3OTE0YWM5YzkxZWIyNTE0NGYzNS4uZjQ0YjJkN2JlZjcxNTYwM2M4MDllMTc2MzM3
ZDliNjlmNTJlZGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTE3Nyw2ICsxNzcsMjQg
QEAgU1dDb250ZXh0TWFuYWdlcjo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdDo6U2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWUKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QodGltZW91dCk7CiB9CiAKK0hhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiBTV0NvbnRleHRN
YW5hZ2VyOjpkdW1teURvY3VtZW50SWRlbnRpZmllcnMoKSBjb25zdAoreworICAgIEhhc2hTZXQ8
RG9jdW1lbnRJZGVudGlmaWVyPiBpZHM7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyIDog
bV93b3JrZXJNYXAudmFsdWVzKCkpCisgICAgICAgIGlkcy5hZGQoc2VydmljZVdvcmtlci0+ZHVt
bXlEb2N1bWVudElkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIGlkczsKK30KKwordm9pZCBTV0Nv
bnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdvcmtlcnMoKQoreworICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcnMgPSBXVEZNb3ZlKG1fd29ya2VyTWFwKTsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VX
b3JrZXIgOiBzZXJ2aWNlV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBzZXJ2aWNlV29ya2Vy
LT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisgICAgICAgIG1fcGVuZGluZ1NlcnZp
Y2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChzZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVy
KCksIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIHNl
cnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKSwgMTBfcykpOworICAgICAgICBzZXJ2aWNlV29ya2Vy
LT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlMGMwODQ5MmMzNTIxN2EyMzZl
MjMyYzA2YmM1YWI2MzY3ODg2YTEuLmVmYTJiYTEwZjgxMmY4Zjg5YzE5ZDMwMDZmOWIwYTkyYzRm
ZTA5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTg3LDYgKzg3LDEwIEBAIHB1YmxpYzoKIAog
ICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7
IH0KIAorICAgIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiBkdW1teURvY3VtZW50SWRlbnRp
ZmllcnMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNlcnZpY2VX
b3JrZXJzKCk7CisKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBmNDZjZmQxNDc4YWVhMjc0
ZDIxOTAzNjIzMjM1YzM2M2QzMjNmZDg3Li44NTQ5NmJlNjUzNjg0Yzc1Yjc4MGIzYTBiY2M2MjEy
Mzg0ZTMyMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNzYsNiAr
NzYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRp
Zmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVGZXRjaChTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogCisgICAgRG9jdW1lbnRJZGVudGlm
aWVyIGR1bW15RG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC0+
aWRlbnRpZmllcigpOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiB1c2VyQWdlbnQsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJiwgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDMxM2VjMGFmM2I3ZjYyYmZjNzVlZTliZThjOGU5YmY4OTA0ODU3NTQu
Ljg5ZjU2NDUyYzYxMjAxZjNmZmVhMTJlNjkyNmM3YTlkYmI1NGRiZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMjUxLDcgKzI1MSw2IEBAIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAogVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCi1VSVByb2Nlc3Mv
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVz
dC5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCAzZGQxMGU1ZjhkMmY0NmFl
OTExNDMyYjc3NjNlMTkxNTgyZDYyNTZhLi4zNzQ5NzdiMzc3ZTE3OWRhN2RkMTY0YjVmNWRlMTYw
NGE5ZWJhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQxLDcgKzQxLDcgQEAKICNpbXBvcnQgIl9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0
YVN0b3JlRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgotI2ltcG9y
dCA8V2ViS2l0L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CkBAIC01NzgsNyArNTc4
LDcgQEAgLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXIKIHsKLSAgICByZXR1cm4gV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojpo
YXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAKaW5kZXggN2JmYzI2NTQ1N2Y1N2FmOTMyN2RjZDM1YTAwM2M5OTkwMDA1ZWE1Ni4u
OTEzYmE2YTRlMTMwOTllYzQ2MzcwMjJjNDkwYjQxMDQ3YzBjZWFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBCYWNrZ3JvdW5kUHJv
Y2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNob3VsZEJlQWN0aXZlKCkgY29uc3QKIHsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGFyZSBh
bHdheXMgaW4gdGhlIGJhY2tncm91bmQuCi0gICAgaWYgKG1fd2ViUHJvY2Vzc1Byb3h5LmlzU2Vy
dmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAobV93ZWJQcm9jZXNzUHJveHkuaXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuICFtX3dl
YlByb2Nlc3NQcm94eS52aXNpYmxlUGFnZUNvdW50KCkgJiYgbV93ZWJQcm9jZXNzUHJveHkucGFn
ZUNvdW50KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3
ZjlkYjE2NWY2NDQwZjJiMTQwYi4uYTVlYjM3MWJlYTBlMzA2ZTNjZTg1ZDQwMzkzYzg1MDgxZTY2
NTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDUsOSArMTQ1LDkgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25SZXF1ZXMKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKICAgICBS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbjsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQ
cm94eSkpIHsKKyAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkpIHsKICAgICAgICAgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IHRydWU7Ci0gICAgICAgIHJl
Z2lzdHJhYmxlRG9tYWluID0gZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2Vi
UHJvY2Vzc1Byb3h5KS5yZWdpc3RyYWJsZURvbWFpbigpOworICAgICAgICByZWdpc3RyYWJsZURv
bWFpbiA9IHdlYlByb2Nlc3NQcm94eS5zZXJ2aWNlV29ya2VyUmVnaXN0cmFibGVEb21haW4oKTsK
ICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGIzYTQyY2QwNzFmNTQxZjMwNGUyNWE0YTNiMGNiZDUwNDUwNWU5MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgotI2luY2x1ZGUgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaCIKLSNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAi
V2ViUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0j
aW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLVJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCi17Ci0g
ICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7
IHBvb2wsIHJlZ2lzdHJhYmxlRG9tYWluLCBzdG9yZSB9KTsKLSAgICBwcm94eS0+Y29ubmVjdCgp
OwotICAgIHJldHVybiBwcm94eTsKLX0KLQotU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkK
LSAgICA6IFdlYlByb2Nlc3NQcm94eSB7IHBvb2wsICZzdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vIH0K
LSAgICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCi0gICAgLCBtX3Nl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQotICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlEKFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQotewotfQotCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp+U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSgpCi17Ci19Ci0KLWJvb2wgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6aGFzUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9y
eSkKLXsKLSAgICBTdHJpbmcgcmVnaXN0cmF0aW9uRmlsZSA9IFdlYkNvcmU6OnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHJlZ2lzdHJhdGlvbkZpbGUpOwotfQot
Ci12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQotewotICAgIFdlYlByb2Nl
c3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKLQotICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNz
Il9zLCAiMSJfcyk7Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgcmVnaXN0cmFibGVEb21haW4oKS5zdHJpbmcoKSk7
Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vz
c2lvbklEKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVs
dFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCBpbml0aWFsU2Vzc2lvbklELnZhbHVlT3IoUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgfSwgMCk7Ci19Ci0KLXZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpT
ZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwYzFhNWIyYjAxNjY4MDg5YjM2MTQy
ZWY5MWUzZGQzMmZiNGFiMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKLXN0cnVj
dCBXZWJQcmVmZXJlbmNlc1N0b3JlOwotCi1jbGFzcyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
IGZpbmFsIDogcHVibGljIFdlYlByb2Nlc3NQcm94eSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB+
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpOwotCi0gICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
Ci0KLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7Ci0gICAgdm9pZCBzZXRVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0K
LSAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKCkgY29uc3QgeyByZXR1
cm4gbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7IH0KLSAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0K
LQotcHJpdmF0ZToKLSAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKLSAgICB2b2lkIGdldExh
dW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgZmluYWw7Ci0KLSAg
ICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0KLSAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7Ci0gICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZUlEOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KSB7IHJldHVybiB3ZWJQcm9j
ZXNzUHJveHkuaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZTMyZWI0Mzc2MzU0MGI5NmEw
MTE4MzMzODQxMjFlZjAwOTNhNWI2Yi4uYjU5MmM4MmU1ODA3MWQ1MGU3M2NlYWZiMzhhNTIwYzAx
YzIzNTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2lu
Y2x1ZGUgIlVJR2FtZXBhZC5oIgpAQCAtODYsNiArODUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzV2FybWluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CkBAIC03MjMsNyArNzIzLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmlzRW1wdHkoKSkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzIHsgfSk7CiAKLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVh
dGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgYXV0
byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JT
ZXJ2aWNlV29ya2VycygqdGhpcywgcmVnaXN0cmFibGVEb21haW4sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKIAogICAgIHVwZGF0ZVBy
b2Nlc3NBc3NlcnRpb25zKCk7CkBAIC03MzIsOSArNzMyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm8KICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyID0gc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5wdHIoKTsKICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5UHRyLT5zdGFydChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2VydmljZVdvcmtl
clByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCku
c3RvcmUoKSwgc2Vzc2lvbklEKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgc2Vzc2lvbklELnZhbHVlT3IoUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5zZXRVc2Vy
QWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eVB0ci0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJV
c2VyQWdlbnQpOwogfQogI2VuZGlmCiAKQEAgLTExNDAsOCArMTE0MCw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdv
cmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKSB7Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9j
ZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93bmNhc3Q8U2VydmljZVdvcmtl
clByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChw
cm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7CisgICAgICAgIGF1dG8qIHJlbW92
ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UocHJvY2Vzcy0+c2Vydmlj
ZVdvcmtlclJlZ2lzdHJhYmxlRG9tYWluKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92
ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBwcm9jZXNzKTsKICAgICAgICAgdXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBXZWJQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0
ZURhdGFTdG9yZSYgdwogICAgICAgICBpZiAocHJvY2VzcyA9PSBtX3ByZXdhcm1lZFByb2Nlc3Mg
fHwgcHJvY2VzcyA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5KQogICAgICAgICAgICAgY29udGludWU7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBpZiAoaXM8U2VydmljZVdvcmtl
clByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKQorICAgICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgICAg
IGlmIChtdXN0TWF0Y2hEYXRhU3RvcmUgJiYgJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAh
PSAmd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTEyNTUsMTIgKzEyNTUsMTIgQEAgUmVmPFdlYlBhZ2VQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgUmVmPEFQSToKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VD
bGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBBU1NFUlQoIWlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9j
ZXNzKSk7CisgICAgQVNTRVJUKCFwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKTsK
IAogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKICAgICAgICAgbV9zZXJ2
aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CiAgICAgICAg
IGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpOworICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3MtPnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTEyODgs
NyArMTI4OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Nl
cnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7CiAgICAgZm9yIChhdXRvKiBzZXJ2aWNl
V29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkKLSAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnNldFVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQpOworICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2V0U2VydmljZVdvcmtlclVz
ZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOwogfQogCiBib29sIFdlYlByb2Nlc3NQ
b29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3Rv
cmUmIHN0b3JlKQpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5
SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8K
IAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAg
cmV0dXJuIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2VycyhzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKKyAgICAgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KICNlbmRpZgpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBp
ZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9mb3JlZ3JvdW5kV2Vi
UHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBk
byBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAg
ICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcmVnaXN0cmFibGVE
b21haW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICAg
ICAgICAgICAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNz
LT5zZXJ2aWNlV29ya2VyUmVnaXN0cmFibGVEb21haW4oKTsKICAgICAgICAgICAgICAgICBpZiAo
IW1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNG
b3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChyZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdv
cmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
ICAgICAgICAgfQpAQCAtMjE1Niw3ICsyMTU2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy5pc0VtcHR5KCkgJiYgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ug
d2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWdpc3Ry
YWJsZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmFi
bGVEb21haW4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQogICAgICAg
ICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LmFkZChyZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQpAQCAtMjIxMiwxMCAr
MjIxMiw5IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgZm9yIChhdXRv
KiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMo
KSkgewotICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3MtPndlYlBhZ2VQcm94eUlEKCkg
PT0gcGFnZUlEKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIHJldHVybiBX
VEY6OmFueU9mKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSwgW3BhZ2VJRF0oYXV0
byogcHJvY2VzcykgeworICAgICAgICByZXR1cm4gcHJvY2Vzcy0+aGFzU2VydmljZVdvcmtlclBh
Z2VQcm94eShwYWdlSUQpOworICAgIH0pOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZjk0MzY3ZmJhOWMx
ZjY2ZjRiM2M5NDBkZTE2NzRiOGRkYTZhNTdhNC4uOTFhNjIzMjcyNmNhZmFlNmIyYjY2ODY0ZWVj
MDk3MDExZDYyODAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlN0
YXRpc3RpY3NSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHRDbGllbnQuaCIKQEAgLTEwMCw3ICs5OSw2IEBAIGNsYXNzIERvd25sb2Fk
UHJveHk7CiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKIGNsYXNz
IFVJR2FtZXBhZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7Ci1jbGFz
cyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OwogY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5Owog
Y2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsK
QEAgLTM4Miw3ICszODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwotICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdv
cmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0K
KyAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQcm9jZXNz
UHJveHkqPiYgc2VydmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9y
U2VydmljZVdvcmtlcihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9y
U2VydmljZVdvcmtlciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNh
dGVGb3JTZXJ2aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZUZvclNlcnZpY2VXb3JrZXI7IH0KICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAtNjIwLDcgKzYxOCw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgeyBudWxs
cHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwg
V2ViUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwogICAgIGJvb2wgbV93
YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25E
ZWxheSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAyNzhlYjgzNDRmYzM1NDEzMDUzZDNmY2YzMWQ4ZDJlMDZlMDY1ZWNlLi43M2Vj
M2ZkZDA1YmFkYjZkNDJkNTlhMDg4ZmEyZjQ2ZTcyYTYzNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0xMzMsNiArMTM0LDE0IEBAIFJlZjxXZWJQcm9jZXNz
UHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgV2Vic2l0CiAgICAgcmV0dXJuIHByb3h5OwogfQogCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIGF1dG8gcHJveHkgPSBh
ZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3Rv
cmUsIElzUHJld2FybWVkOjpObykpOworICAgIHByb3h5LT5tX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworICAgIHByb3h5LT5jb25uZWN0KCk7CisgICAgcmV0dXJuIHByb3h5OworfQorCiBXZWJQ
cm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2Fy
bWVkKQogICAgIDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNB
dEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9yZXNwb25zaXZlbmVzc1RpbWVyKCp0aGlz
KQpAQCAtMjc3LDYgKzI4NiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0
aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdAogICAgICAgICBw
cm9jZXNzUG9vbCgpLnNldFNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0
aW5nKGZhbHNlKTsKICAgICAgICAgbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5j
aEZhaWxGb3JUZXN0aW5nID0gdHJ1ZTsKICAgICB9CisKKyAgICBpZiAobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pIHsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsICIxIl9zKTsKKyAgICAgICAgbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJhYmxlLWRvbWFp
biJfcywgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlZ2lzdHJhYmxlRG9tYWluLnN0cmlu
ZygpKTsKKyAgICB9CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV1BFKQpA
QCAtNzUxLDkgKzc2NSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3Bv
bnNpdmUoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3Mp
CiAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYg
dGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUsIGtpbGwgaXQg
b3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAg
ICBpZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVV
bnJlc3BvbnNpdmUoKSBUZXJtaW5hdGluZyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIHdpdGggcGlk
ICVkIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBv
bmx5IHJ1bnMgc2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBh
cmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VX
b3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21l
VW5yZXNwb25zaXZlKCkgVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2Vz
cyB3aXRoIHBpZCAlZCBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIsIHRoaXMsIHByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC04ODYsNyAr
OTAwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2Vu
KHVpbnQ2NF90IGlkZW50aWZpZXIpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVk
VG9XZWJQcm9jZXNzQ2FjaGUoKSBjb25zdAogewotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9j
ZXNzKCkpCisgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChXZWJLaXQ6OmlzSW5zcGVjdG9yUHJvY2Vzc1Bvb2wocHJvY2Vz
c1Bvb2woKSkpCkBAIC0xMjAyLDcgKzEyMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
Q2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24oKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFz
c2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAoaXNSdW5u
aW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2Jh
Y2tncm91bmRUb2tlbiB8fCAhbV9mb3JlZ3JvdW5kVG9rZW4pOwpAQCAtMTM3OCwxMCArMTM5Miw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRDUFVMaW1pdCgpCiAgICAgaWYgKGhh
c1Zpc2libGVQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcs
ICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQ1BVTGltaXQoKSBUZXJtaW5hdGluZyBT
ZXJ2aWNlIFdvcmtlciBwcm9jZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBi
YWNrZ3JvdW5kIENQVSBsaW1pdCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGVs
c2UKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBX
ZWJQcm9jZXNzUHJveHk6OmRpZEV4Y2VlZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dyb3Vu
ZCBXZWJQcm9jZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5k
IENQVSBsaW1pdCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNl
ZWRDUFVMaW1pdCgpIFRlcm1pbmF0aW5nIGJhY2tncm91bmQgV2ViUHJvY2VzcyB3aXRoIHBpZCAl
ZCB0aGF0IGhhcyBleGNlZWRlZCB0aGUgYmFja2dyb3VuZCBDUFUgbGltaXQiLCB0aGlzLCBwcm9j
ZXNzSWRlbnRpZmllcigpKTsKICAgICBsb2dEaWFnbm9zdGljTWVzc2FnZUZvclJlc291cmNlTGlt
aXRUZXJtaW5hdGlvbihEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4Y2VlZGVkQmFja2dyb3VuZENQ
VUxpbWl0S2V5KCkpOwogICAgIHJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25S
ZWFzb246OkV4Y2VlZGVkQ1BVTGltaXQpOwogfQpAQCAtMTQ4MCw2ICsxNDkxLDI1IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2Ny
ZWVuSW5wdXQoKQogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBh
Z2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFn
ZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlE
LCBzdG9yZSwgc2Vzc2lvbklEIH0sIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0
U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3sKKyAgICBB
U1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwg
MCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVy
ZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBBU1NF
UlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUg
fSwgMCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNT
QUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4
IGUzYWVkNTFjMzRmMTczZmRkMGJjZTg1OTQ3NTk1YTdiOGY1MzhkYjEuLmQxNDNiOWMzZmMwMmNl
MzRmZWFiY2MyN2FjMDUzN2IxMmEwMDQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC0xMDksNiArMTEwLDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1
bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nl
c3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJl
d2FybWVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsK
KyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMo
V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKwogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyB2
b2lkIGZvcldlYlBhZ2VzV2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJveHkmKT4m
KTsKQEAgLTE0OSw3ICsxNTIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFjdGl2ZVBhZ2VzRG9t
YWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4m
Jik7IC8vIFRoaXMgaXMgd2hhdCBpcyByZXBvcnRlZCB0byBBY3Rpdml0eU1vbml0b3IuCiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgc2VydmljZVdvcmtlclJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlZ2lzdHJhYmxlRG9tYWluOyB9CiAK
ICAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCkBAIC0zMDksNiArMzEzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIGZpbmFs
IHsgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGZpbmFs
IHsgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmKCk7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBzdGFydEZvclNl
cnZpY2VXb3JrZXJzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7
CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOworICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQ
cm94eUlEID09IHBhZ2VQcm94eUlEOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1l
ZCk7CiAKQEAgLTQ3Niw2ICs0ODgsMTMgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBNZWRpYUNhcHR1cmVTYW5kYm94RXh0ZW5zaW9ucyBtX21lZGlhQ2FwdHVyZVNhbmRib3hF
eHRlbnNpb25zIHsgU2FuZGJveEV4dGVuc2lvblR5cGU6Ok5vbmUgfTsKICNlbmRpZgorCisgICAg
c3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOworICAgICAgICBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKKyAgICB9OworICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRleCA0ZWEzYWMyMjIxZTJiNTAxNWM2MGU1MGYz
N2M5ZDQ1MTEwMjUzYTNmLi4zN2VjZTJmNDU3NmRjZjg5NzA4NmI3ZTlkYmRiNWU1ZGVlODNiZTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9v
bEdMaWIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBwYXJh
bWV0ZXJzLmlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBwcm9jZXNzLmlzU2VydmljZVdvcmtlclBy
b2Nlc3MoKTsKKyAgICBwYXJhbWV0ZXJzLmlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBwcm9jZXNz
LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMuaXNTZXJ2
aWNlV29ya2VyUHJvY2VzcykgewogICAgICAgICBwYXJhbWV0ZXJzLmhvc3RDbGllbnRGaWxlRGVz
Y3JpcHRvciA9IHdwZV9yZW5kZXJlcl9ob3N0X2NyZWF0ZV9jbGllbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI0YTQzZmI3MWFl
Yzg1NjMxNTIwOTNkMTA5NzhkMDgyNjFkOTBjZTcuLjM5MjQ5MzQxOGFlODg2NTdjOWUyMjU4NzE1
MDJkODhlNWY2MDliNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODc5LDcgKzg3OSw2IEBACiAJCTQxNDM3NTFDMjBFQUVBMkQwMEZB
RDA2QyAvKiBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJv
eCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQzNzUxQjIw
RUFFQTFFMDBGQUQwNkMgLyogY24ubWljcm9kb25lLmNtYi5zYWZhcmkuc2IgKi87IH07CiAJCTQx
NEREMzc5MjBCRjQzRjUwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgucGx1Z2luLmdwYzY0LnNi
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERDM3
ODIwQkY0M0VBMDA2OTU5RkIgLyogY29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYiAqLzsg
fTsKIAkJNDE0REQzN0EyMEJGNDlBNTAwNjk1OUZCIC8qIGNvbS5jaXNjby53ZWJleC5wbHVnaW4u
Z3BjNjQuc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0REQzNzgyMEJGNDNFQTAwNjk1OUZCIC8qIGNvbS5jaXNj
by53ZWJleC5wbHVnaW4uZ3BjNjQuc2IgKi87IH07Ci0JCTQxNERFREQ3MUY5RURERTUwMDQ3QzQw
RCAvKiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERURENTFGOUVERERGMDA0N0M0MEQgLyogU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5oICovOyB9OwogCQk0MTU3RTRCMDIwRTJFQ0RGMDBBNkMwRDcg
LyogY29tLmdvb2dsZS5vMWRicm93c2VycGx1Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94
IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTdFNEFGMjBF
MkVDOTgwMEE2QzBENyAvKiBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2IgKi87IH07CiAJ
CTQxNzY5MDE0MjJGREQ0MUIwMEIxNTc2RCAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2OTAxMzIyRkRENDFC
MDBCMTU3NkQgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1tICovOyB9OwogCQk0MTc5MTVBRjIyNTZC
Qjc1MDBENkY5N0UgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTE1QUQyMjU2QkI3NDAwRDZGOTdFIC8qIFdlYlNv
Y2tldENoYW5uZWwuaCAqLzsgfTsKQEAgLTMxMzgsOCArMzEzNyw2IEBACiAJCTQxM0NDRDRGMjBE
RUJDMkYwMDY1QTIxQSAvKiBjb20uZ29vZ2xlLmdvb2dsZXRhbGticm93c2VycGx1Z2luLnNiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5nb29nbGUuZ29vZ2xldGFsa2Jyb3dzZXJwbHVnaW4u
c2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDM3NTFCMjBFQUVBMUUwMEZBRDA2
QyAvKiBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBj
bi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE0REQzNzgyMEJGNDNFQTAwNjk1OUZCIC8qIGNvbS5jaXNjby53ZWJleC5wbHVnaW4uZ3BjNjQu
c2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5z
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE0REVERDUxRjlFRERERjAwNDdDNDBE
IC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTRERURENjFGOUVEREUwMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1
MTg1MzUyMjI3MDRGNTAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckZldGNoVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTUxODUzNjIyMjcwNEY2MDA1NDMwQzYgLyogU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE1MTg1MzgyMjI3MEY1MzAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2su
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3NzIsOCArNzc2
OSw2IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVz
c1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2lu
Z1dhcm5pbmcuaCAqLywKLQkJCQk0MTRERURENjFGOUVEREUwMDA0N0M0MEQgLyogU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5jcHAgKi8sCi0JCQkJNDE0REVERDUxRjlFRERERjAwNDdDNDBEIC8q
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCAqLywKIAkJCQk1MUE0RDVBODE2Q0FDNEZGMDAw
RTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLAogCQkJCTUxNEJERUQyMTZDOThFREQw
MEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovLAogCQkJCTUxNUM0MTVBMjA3RDc0RTAw
MDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwICovLApAQCAtOTczNyw3ICs5NzMyLDYg
QEAKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2Vj
S2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0REVERDcx
RjlFRERFNTAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVD
b2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRhZTEyMGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5
ODA3N2I2ZDhjMC4uZWFmZWY3NzI5N2JjYmI3YTUyNWZmODdmZTM4MjYwZmE4ZTQ3NWI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTI2MCw4ICsxMjYwLDEx
IEBAIHZvaWQgV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkgewot
ICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2Vz
cyBpcyBleGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIGdvbmUiKTsKLSAgICAgICAg
X2V4aXQoRVhJVF9TVUNDRVNTKTsKKyAgICAgICAgaWYgKG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBw
cm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgZ29uZSIpOworICAg
ICAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2VydmljZVdvcmtlcnMoKTsK
ICAgICB9CiAjZW5kaWYKIApAQCAtMTgyOSw3ICsxODMyLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3Qg
cGFnZUcKIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkK
IHsKLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byByZWdpc3RlciBzZXJ2aWNlIHdvcmtlciBkdW1t
eSBkb2N1bWVudHMuCiAgICAgQVNTRVJUKCFTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCkpOwogICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378182</attachid>
            <date>2019-09-06 04:50:49 -0700</date>
            <delta_ts>2019-09-09 00:47:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201506-20190906135047.patch</filename>
            <type>text/plain</type>
            <size>44312</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0YTRlN2RmOWQyYTU0
ZDRiZGFkMjY0MTdlN2FjNzc3N2ZlZTk1My4uODYzZWRkNjEzNjEyOGFlYzZjODk3NWNmMzEzMjJj
NWY3NWU3N2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyk6
CisgICAgICAgIE1ha2Ugc3VyZSB0byBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHVzZWQg
dG8gaG9vayBzZXJ2aWNlIHdvcmtlcnMgYXMgc2VydmljZSB3b3JrZXIgY2xpZW50cy4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmR1bW15RG9jdW1lbnRJZGVudGlmaWVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2Vydmlj
ZVdvcmtlcnMpOgorICAgICAgICBBZGQgYSByb3V0aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29y
a2Vycy4KKyAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCB3aGVuIHRoZSBjb25uZWN0aW9uIHRvIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgaXMgbG9zdC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisKIDIwMTktMDktMDYgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFlVViBidWZm
ZXJzIG9uIGlNWCBwbGF0Zm9ybXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIFJHQkEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMDc5NTljYTg4NDVjOGU0NDU3MTE2YzE4ZDRlYTBkYTAzMzVjNzJlYS4uYTAxZjZkZWFjMGI1
ODBlY2QzNzYxMDEyMjZmZjFlMTNjOWE0OTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAxOS0wOS0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgdXNpbmcgYSBzcGVjaWZpYyBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBtb3ZlIHRoZSBsb2dpYyBkaXJlY3RseSBpbiBXZWJQcm9j
ZXNzUHJveHkuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB1cyBpbiB0aGUgZnV0dXJlIHRvIHJ1
biBhIHNlcnZpY2Ugd29ya2VyIGluIGEgcHJvY2VzcyB0aGF0IGFscmVhZHkgcnVucyBhIHdlYiBw
YWdlLAorICAgICAgICB0aHVzIHNhdmluZyB0aGUgbmVlZCB0byBzcGluIG9mZiBhIG5ldyBwcm9j
ZXNzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZUZvclNlcnZpY2VXb3JrZXJzIG1ldGhvZCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEKKyAgICAg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS4gVGhlIGJlaGF2aW9yIGlzIHRoZW4gc2ltaWxh
cjogYSBwcm9jZXNzIHJ1bm5pbmcgYSBzZXJ2aWNlIHdvcmtlciBjYW5ub3QgcnVuIGEgcGFnZS4K
KworICAgICAgICBUbyBwcmVwYXJlIGZvciB0aGF0LCB3ZSBkbyB0aGUgZm9sbG93aW5nIGNoYW5n
ZXM6CisgICAgICAgIC0gT24gbmV0d29yayBwcm9jZXNzIGNyYXNoLCBvbmx5IGtpbGwgYSBwcm9j
ZXNzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGlmIG5vIHdlYiBwYWdlIGlzIHJ1bm5pbmcuCisg
ICAgICAgIE90aGVyd2lzZSwganVzdCBzdG9wIHRoZSBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAg
IC0gTWFrZSBzdXJlIHRvIG5vdCByZWdpc3RlciBkdW1teSBkb2N1bWVudHMgYXMgc2VydmljZSB3
b3JrZXIgY2xpZW50cworCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjpzaG91bGRCZUFj
dGl2ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRCBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Y2FuQmVBZGRlZFRvV2ViUHJvY2Vzc0NhY2hlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQ1BVTGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFn
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzUnVubmluZ1NlcnZpY2VX
b3JrZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6Omhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkpOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudHMpOgorCiAyMDE5LTA5LTA2ICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3JpZmZp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gRG8gbm90IGVuYWJsZSB0aGUgc2Fu
ZGJveCBpbiBTbmFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDdiYmFjNWNhNDE0MGIzYzc2ODMxY2Jh
ZDdmNDM3NmE0ZjlhZGQ5NTAuLmQxMmQ0NmViZTI3NDBhNTI5M2Y2YjhjYjAzMDE3M2FmYTk2N2Rl
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBAIC02MywxMSArNjMsMTQgQEAgYm9vbCBTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6Om1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihQQUw6
OlNlc3Npb24KIAogdm9pZCBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudHMoKQogeworICAgIGF1dG8gZHVtbXlEb2N1bWVudElkZW50aWZpZXJzID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZHVtbXlEb2N1bWVudElkZW50aWZpZXJzKCk7CisK
ICAgICBzZXRNYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKCk7CiAgICAgZm9yIChhdXRv
KiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBhdXRvIHNl
c3Npb25JRCA9IGRvY3VtZW50LT5zZXNzaW9uSUQoKTsKKyAgICAgICAgaWYgKGR1bW15RG9jdW1l
bnRJZGVudGlmaWVycy5jb250YWlucyhkb2N1bWVudC0+aWRlbnRpZmllcigpKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VXb3Jr
ZXJzSGFuZGxlVVJMU2NoZW1lKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkpCi0gICAgICAgICAgICBkb2N1bWVudC0+c2V0U2VydmljZVdvcmtlckNv
bm5lY3Rpb24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5zZXRTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigmc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGRvY3VtZW50LT5zZXNzaW9uSUQoKSkpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA3NzRmMzg1ZjE4YWJiYTgxMjg4Yjc5
MTRhYzljOTFlYjI1MTQ0ZjM1Li5mNDRiMmQ3YmVmNzE1NjAzYzgwOWUxNzYzMzdkOWI2OWY1MmVk
YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTc3LDYgKzE3NywyNCBAQCBTV0NvbnRl
eHRNYW5hZ2VyOjpTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0OjpTZXJ2aWNlV29ya2Vy
VGVybWluYXRpb25SZXF1ZQogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lb3V0
KTsKIH0KIAorSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+IFNXQ29udGV4dE1hbmFnZXI6OmR1
bW15RG9jdW1lbnRJZGVudGlmaWVycygpIGNvbnN0Cit7CisgICAgSGFzaFNldDxEb2N1bWVudElk
ZW50aWZpZXI+IGlkczsKKyAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXIgOiBtX3dvcmtlck1h
cC52YWx1ZXMoKSkKKyAgICAgICAgaWRzLmFkZChzZXJ2aWNlV29ya2VyLT5kdW1teURvY3VtZW50
SWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gaWRzOworfQorCit2b2lkIFNXQ29udGV4dE1hbmFn
ZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2VycygpCit7CisgICAgYXV0byBzZXJ2aWNlV29ya2VycyA9
IFdURk1vdmUobV93b3JrZXJNYXApOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlciA6IHNl
cnZpY2VXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIHNlcnZpY2VXb3JrZXItPnNldEFzVGVy
bWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKyAgICAgICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRl
cm1pbmF0aW9uUmVxdWVzdHMuYWRkKHNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKSwgbWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgc2VydmljZVdvcmtl
ci0+aWRlbnRpZmllcigpLCAxMF9zKSk7CisgICAgICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgp
LnN0b3AoW10geyB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggZmUwYzA4NDkyYzM1MjE3YTIzNmUyMzJjMDZiYzVh
YjYzNjc4ODZhMS4uZWZhMmJhMTBmODEyZjhmODljMTlkMzAwNmY5YjBhOTJjNGZlMDlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgogCiAgICAgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIHsgcmV0dXJuIG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsgfQogCisgICAg
SGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+IGR1bW15RG9jdW1lbnRJZGVudGlmaWVycygpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2VydmljZVdvcmtlcnMoKTsK
KwogcHJpdmF0ZToKICAgICBTV0NvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGY0NmNmZDE0NzhhZWEyNzRkMjE5MDM2MjMy
MzVjMzYzZDMyM2ZkODcuLjg1NDk2YmU2NTM2ODRjNzViNzgwYjNhMGJjYzYyMTIzODRlMzIwMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC03Niw2ICs3Niw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UoU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAKKyAgICBEb2N1bWVudElkZW50aWZpZXIgZHVtbXlE
b2N1bWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LT5pZGVudGlmaWVy
KCk7IH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlk
ZXImLCBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
aW5kZXggMzEzZWMwYWYzYjdmNjJiZmM3NWVlOWJlOGM4ZTliZjg5MDQ4NTc1NC4uODlmNTY0NTJj
NjEyMDFmM2ZmZWExMmU2OTI2YzdhOWRiYjU0ZGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNTEsNyAr
MjUxLDYgQEAgVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CiBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKLVVJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcAogVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAogVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDNkZDEwZTVmOGQyZjQ2YWU5MTE0MzJiNzc2
M2UxOTE1ODJkNjI1NmEuLjM3NDk3N2IzNzdlMTc5ZGE3ZGQxNjRiNWY1ZGUxNjA0YTllYmFjNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQpAQCAtNDEsNyArNDEsNyBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+Ci0jaW1wb3J0IDxXZWJLaXQv
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYXRp
b25EYXRhYmFzZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTU3OCw3ICs1NzgsNyBAQCAtICh2
b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21w
bGV0aW9uSGFuZGxlcgogCiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcgogewot
ICAgIHJldHVybiBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2Vycyhfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNl
RmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKIH0KIAogLSAoaWQgPF9XS1dlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZT4pX2RlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcApp
bmRleCA3YmZjMjY1NDU3ZjU3YWY5MzI3ZGNkMzVhMDAzYzk5OTAwMDVlYTU2Li45MTNiYTZhNGUx
MzA5OWVjNDYzNzAyMmM0OTBiNDEwNDdjMGNlYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIEJhY2tncm91bmRQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6c2hvdWxkQmVBY3RpdmUoKSBjb25zdAogewogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIC8vIFNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYXJlIGFsd2F5cyBpbiB0
aGUgYmFja2dyb3VuZC4KLSAgICBpZiAobV93ZWJQcm9jZXNzUHJveHkuaXNTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpKQorICAgIGlmIChtX3dlYlByb2Nlc3NQcm94eS5pc1J1bm5pbmdTZXJ2aWNlV29y
a2VycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gIW1fd2ViUHJvY2Vzc1By
b3h5LnZpc2libGVQYWdlQ291bnQoKSAmJiBtX3dlYlByb2Nlc3NQcm94eS5wYWdlQ291bnQoKTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0NDkwMWE4YzM4N2I3ODAwNTA5ODdmOWRiMTY1ZjY0
NDBmMmIxNDBiLi4zMTE0NmJmNjFjZjczZjhkMDJkMzY2ZjQ2NzRmNWY1NzljYzVhMTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTE0NSw5ICsxNDUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvblJlcXVlcwog
ICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwogICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewor
ICAgIGlmICh3ZWJQcm9jZXNzUHJveHkuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkgewogICAg
ICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgcmVnaXN0cmFibGVE
b21haW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJv
eHkpLnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gd2Vi
UHJvY2Vzc1Byb3h5LnJlZ2lzdHJhYmxlRG9tYWluKCk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiM2E0MmNkMDcxZjU0MWYzMDRlMjVh
NGEzYjBjYmQ1MDQ1MDVlOTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCIKLQot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24uaCIKLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmgiCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCi0jaW5j
bHVkZSAiV2ViQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgotI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8U2VydmljZVdv
cmtlclByb2Nlc3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb29sJiBwb29sLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQotewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJl
ZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCByZWdpc3RyYWJsZURvbWFp
biwgc3RvcmUgfSk7Ci0gICAgcHJveHktPmNvbm5lY3QoKTsKLSAgICByZXR1cm4gcHJveHk7Ci19
Ci0KLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHko
V2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCi0gICAgOiBXZWJQcm9jZXNzUHJveHkg
eyBwb29sLCAmc3RvcmUsIElzUHJld2FybWVkOjpObyB9Ci0gICAgLCBtX3JlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKQotICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQo
V2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLSAgICAsIG1fc2VydmljZVdvcmtl
clBhZ2VJRChQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKLXsKLX0KLQotU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6flNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKQotewotfQotCi1ib29s
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhj
b25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpCi17Ci0gICAgU3RyaW5nIHJlZ2lz
dHJhdGlvbkZpbGUgPSBXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VG
aWxlbmFtZShzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhyZWdpc3RyYXRpb25GaWxlKTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9u
cyYgbGF1bmNoT3B0aW9ucykKLXsKLSAgICBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlv
bnMobGF1bmNoT3B0aW9ucyk7Ci0KLSAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRp
b25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgIjEiX3MpOwotICAgIGxhdW5j
aE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4i
X3MsIHJlZ2lzdHJhYmxlRG9tYWluKCkuc3RyaW5nKCkpOwotfQotCi12b2lkIFNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBP
cHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCkKLXsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJ
RCgpLCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VyUGFnZUlELCBz
dG9yZSwgaW5pdGlhbFNlc3Npb25JRC52YWx1ZU9yKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpIH0sIDApOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnNl
dFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKLXsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50
IH0sIDApOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCi17Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ4MGMxYTViMmIwMTY2ODA4OWIzNjE0MmVmOTFlM2RkMzJmYjRhYjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Ci1zdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsK
LQotY2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJQcm9j
ZXNzUHJveHkgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgflNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkoKTsKLQotICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25z
dCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwotCi0gICAgdm9pZCBzdGFydChjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxT
ZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7Ci0K
LSAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4o
KSB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9Ci0gICAgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VQ
cm94eUlEOyB9Ci0gICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5Ci0gICAgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVu
Y2hlcjo6TGF1bmNoT3B0aW9ucyYpIGZpbmFsOwotCi0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQ
cm9jZXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwotCi0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1f
c2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwotICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1f
c2VydmljZVdvcmtlclBhZ2VJRDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkm
IHdlYlByb2Nlc3NQcm94eSkgeyByZXR1cm4gd2ViUHJvY2Vzc1Byb3h5LmlzU2VydmljZVdvcmtl
clByb2Nlc3MoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IGUzMmViNDM3NjM1NDBiOTZhMDExODMzMzg0MTIxZWYwMDkzYTViNmIu
Ljc4ZDA1NTU0YzdhZGFjNTBjOTAzN2M3ZTI3MzM0MTlkMmRkZGVkYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNs
dWRlICJQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVk
ZSAiU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRh
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJVSUdhbWVwYWQuaCIKQEAg
LTg2LDYgKzg1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJv
Y2Vzc1dhcm1pbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oPgpAQCAtNzIzLDggKzcyMyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvCiAgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAg
IHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50cyB7IH0pOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
ID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCByZWdpc3RyYWJsZURv
bWFpbiwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5h
ZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
cHRyKCkpOworICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQ
cm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LmFkZChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5yZWdpc3RyYWJsZURvbWFpbigpLCBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKIAogICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRp
b25zKCk7CiAgICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CkBAIC03MzIsOSArNzMyLDkgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm8KICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyID0gc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKTsKICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RG
TW92ZShzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5UHRyLT5zdGFydChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVu
Y2VzKCkuc3RvcmUoKSwgc2Vzc2lvbklEKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
UHRyLT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJl
bmNlcyA/IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgc2Vzc2lvbklELnZhbHVlT3IoUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyVXNl
ckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5z
ZXRVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eVB0ci0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQpOwogfQogI2VuZGlmCiAKQEAgLTExNDAsOCArMTE0MCw4IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cykKICAgICB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKSB7Ci0gICAgICAgIGF1dG8qIHJlbW92
ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAg
IGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7CisgICAgICAgIGF1dG8q
IHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UocHJvY2Vzcy0+
cmVnaXN0cmFibGVEb21haW4oKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nl
c3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucygpOwogICAgIH0KQEAgLTEyMDEsNyArMTIwMSw3IEBAIFdlYlByb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0
b3JlJiB3CiAgICAgICAgIGlmIChwcm9jZXNzID09IG1fcHJld2FybWVkUHJvY2VzcyB8fCBwcm9j
ZXNzID09IG1fZHVtbXlQcm9jZXNzUHJveHkpCiAgICAgICAgICAgICBjb250aW51ZTsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5PigqcHJvY2VzcykpCisgICAgICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNl
V29ya2VycygpKQogICAgICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICAgICAgaWYgKG11
c3RNYXRjaERhdGFTdG9yZSAmJiAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJz
aXRlRGF0YVN0b3JlKQpAQCAtMTI1NSwxMiArMTI1NSwxMiBAQCBSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8
QVBJOgogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwg
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEFTU0VSVCghaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKTsK
KyAgICBBU1NFUlQoIXByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpOwogCiAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewogICAgICAgICBtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKICAgICAgICAgZm9yIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1
ZXMoKSkKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT51cGRhdGVQcmVmZXJlbmNl
c1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7CisgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy0+dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fc2Vy
dmljZVdvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTI4OCw3ICsxMjg4
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2VydmljZVdv
cmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKQotICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+c2V0VXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7
CisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50
KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om1h
eUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgV2Vic2l0ZURhdGFTdG9yZSYgc3Rv
cmUpCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogCiAgICAg
cmV0dXJuIG1fbWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycy5lbnN1cmUoc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgWyZdIHsKICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
dGhpcyBjb21wdXRhdGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgotICAgICAgICByZXR1cm4g
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6aGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOworICAgICAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJh
c2VGaWxlbmFtZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogI2VuZGlmCkBAIC0yMTQ2LDkgKzIxNDYsOSBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2ZvcmVncm91bmRXZWJQcm9jZXNz
Q291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRl
ciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAg
IGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9
IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOworICAgICAgICAgICAg
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0
cmFibGVEb21haW4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZFRva2Vuc0Zv
clNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQotICAg
ICAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmFkZChyZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxl
cigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgICAgICAgICAgICAgICAgICBtX2Zv
cmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9iYWNrZ3Jv
dW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjE1Niw5ICsyMTU2LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRl
UHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nl
cy5pc0VtcHR5KCkgJiYgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2Ug
aGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VX
b3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vz
cy0+cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxl
RG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9i
YWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQocmVnaXN0cmFibGVE
b21haW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyMTIsMTAg
KzIyMTIsOSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIGZvciAoYXV0
byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVz
KCkpIHsKLSAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzLT53ZWJQYWdlUHJveHlJRCgp
ID09IHBhZ2VJRCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICByZXR1cm4g
V1RGOjphbnlPZihtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCksIFtwYWdlSURdKGF1
dG8qIHByb2Nlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3MtPmhhc1NlcnZpY2VXb3JrZXJQ
YWdlUHJveHkocGFnZUlEKTsKKyAgICB9KTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGY5NDM2N2ZiYTlj
MWY2NmY0YjNjOTQwZGUxNjc0YjhkZGE2YTU3YTQuLjkxYTYyMzI3MjZjYWZhZTZiMmI2Njg2NGVl
YzA5NzAxMWQ2MjgwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxl
ci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJT
dGF0aXN0aWNzUmVxdWVzdC5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0Q2xpZW50LmgiCkBAIC0xMDAsNyArOTksNiBAQCBjbGFzcyBEb3dubG9h
ZFByb3h5OwogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CiBjbGFz
cyBVSUdhbWVwYWQ7CiBjbGFzcyBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwotY2xh
c3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTsKIGNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsK
IGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1lbnQ7
CkBAIC0zODIsNyArMzgwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFn
ZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKLSAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VX
b3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9
CisgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViUHJvY2Vz
c1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
clNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
clNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmlj
YXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNl
ckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTYyMCw3ICs2MTgsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsgbnVs
bHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFdlYlByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKICAgICBib29sIG1f
d2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggMjc4ZWI4MzQ0ZmMzNTQxMzA1M2QzZmNmMzFkOGQyZTA2ZTA2NWVjZS4uNDk3
YTQ5Mjk1YjFlNGZlZWJiMzRkZTU1YWE4MWJiYjVhODdlODg2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMTMzLDYgKzEzNCwxNSBAQCBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYnNpdAogICAgIHJldHVybiBwcm94eTsKIH0KIAorUmVmPFdlYlByb2Nlc3NQcm94eT4g
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCit7CisgICAgYXV0byBwcm94eSA9IGFkb3B0
UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwg
SXNQcmV3YXJtZWQ6Ok5vKSk7CisgICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBwcm94eS0+bV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geyBXZWJQYWdlUHJveHlJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIHByb3h5LT5j
b25uZWN0KCk7CisgICAgcmV0dXJuIHByb3h5OworfQorCiBXZWJQcm9jZXNzUHJveHk6OldlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUq
IHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2FybWVkKQogICAgIDogQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0
eSgpKQogICAgICwgbV9yZXNwb25zaXZlbmVzc1RpbWVyKCp0aGlzKQpAQCAtMjc3LDYgKzI4Nywx
MSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNo
ZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdAogICAgICAgICBwcm9jZXNzUG9vbCgpLnNldFNo
b3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKGZhbHNlKTsKICAgICAg
ICAgbGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nID0g
dHJ1ZTsKICAgICB9CisKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKKyAg
ICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInNlcnZpY2Ut
d29ya2VyLXByb2Nlc3MiX3MsICIxIl9zKTsKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgbV9yZWdpc3RyYWJs
ZURvbWFpbi0+c3RyaW5nKCkpOworICAgIH0KIH0KIAogI2lmICFQTEFURk9STShHVEspICYmICFQ
TEFURk9STShXUEUpCkBAIC03NTEsOSArNzY2LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9u
c2l2ZUNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7
CiAKLSAgICAvLyBJZiB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9u
c2l2ZSwga2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRz
IHRvIGRvIGl0LgotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNzUHJv
eHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpIFRlcm1pbmF0aW5nIFNlcnZpY2UgV29ya2VyIHBy
b2Nlc3Mgd2l0aCBwaWQgJWQgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiLCB0aGlzLCBwcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJl
c3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVz
IHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KKyAgICBpZiAoaXNS
dW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1By
b3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKSBUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlci1v
bmx5IHdlYiBwcm9jZXNzIHdpdGggcGlkICVkIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIiwg
dGhpcywgcHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0K
IH0KQEAgLTg4Niw3ICs5MDEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVVz
ZXJHZXN0dXJlVG9rZW4odWludDY0X3QgaWRlbnRpZmllcikKIAogYm9vbCBXZWJQcm9jZXNzUHJv
eHk6OmNhbkJlQWRkZWRUb1dlYlByb2Nlc3NDYWNoZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKFdlYktpdDo6aXNJbnNwZWN0b3JQcm9j
ZXNzUG9vbChwcm9jZXNzUG9vbCgpKSkKQEAgLTEyMDIsNyArMTIxNyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigpCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCiB7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpKQor
ICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoIW1fYmFja2dyb3VuZFRva2VuIHx8ICFtX2ZvcmVncm91bmRUb2tlbik7CkBAIC0x
Mzc4LDEwICsxMzkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEV4Y2VlZENQVUxpbWl0
KCkKICAgICBpZiAoaGFzVmlzaWJsZVBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChp
c1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZv
cm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRDUFVMaW1pdCgp
IFRlcm1pbmF0aW5nIFNlcnZpY2UgV29ya2VyIHByb2Nlc3Mgd2l0aCBwaWQgJWQgdGhhdCBoYXMg
ZXhjZWVkZWQgdGhlIGJhY2tncm91bmQgQ1BVIGxpbWl0IiwgdGhpcywgcHJvY2Vzc0lkZW50aWZp
ZXIoKSk7Ci0gICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxv
Z2dpbmcsICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQ1BVTGltaXQoKSBUZXJtaW5h
dGluZyBiYWNrZ3JvdW5kIFdlYlByb2Nlc3Mgd2l0aCBwaWQgJWQgdGhhdCBoYXMgZXhjZWVkZWQg
dGhlIGJhY2tncm91bmQgQ1BVIGxpbWl0IiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNz
UHJveHk6OmRpZEV4Y2VlZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dyb3VuZCBXZWJQcm9j
ZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1p
dCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdl
Rm9yUmVzb3VyY2VMaW1pdFRlcm1pbmF0aW9uKERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZXhjZWVk
ZWRCYWNrZ3JvdW5kQ1BVTGltaXRLZXkoKSk7CiAgICAgcmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiB9CkBAIC0xNDgwLDYgKzE0
OTIsMjUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0
UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZp
Y2VXb3JrZXJQYWdlSUQsIHN0b3JlLCBzZXNzaW9uSUQgfSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KQoreworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7
IHVzZXJBZ2VudCB9LCAwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQoreworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUgeyBzdG9yZSB9LCAwKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKaW5kZXggZTNhZWQ1MWMzNGYxNzNmZGQwYmNlODU5NDc1OTVhN2I4ZjUzOGRiMS4u
NzdmN2VlZWNiODI5ZDdkNTM1Nzg5ODFhNTIzNjBkN2FkOWU2MzhmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTgyLDYgKzgyLDcgQEAgY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZTsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFdlYk5h
dmlnYXRpb25EYXRhU3RvcmU7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKK3N0
cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogc3RydWN0IFdlYnNpdGVEYXRhOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEwOSw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogICAgIHN0YXRp
YyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0
YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQ
cm9jZXNzOjpZZXMpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JT
ZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKwogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIAogICAg
IHN0YXRpYyB2b2lkIGZvcldlYlBhZ2VzV2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgRnVuY3Rpb248dm9pZChXZWJQYWdl
UHJveHkmKT4mKTsKQEAgLTE0OSw3ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFjdGl2
ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJik7IC8vIFRoaXMgaXMgd2hhdCBpcyByZXBvcnRlZCB0byBBY3Rpdml0eU1vbml0
b3IuCiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0
IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KIAogICAgIHZvaWQgZGlk
Q3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKQEAgLTMw
OSw2ICszMTIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgZmluYWwgeyBUaHJlYWRTYWZl
UmVmQ291bnRlZDo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgZmluYWwgeyBUaHJlYWRTYWZl
UmVmQ291bnRlZDo6ZGVyZWYoKTsgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
IHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHN0YXJ0Rm9yU2VydmljZVdvcmtlcnMo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVT
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7
CisgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFn
ZVByb3h5SUQ7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdl
YlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkKTsKIApAQCAtNDc2
LDYgKzQ4NywxMiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE1lZGlhQ2Fw
dHVyZVNhbmRib3hFeHRlbnNpb25zIG1fbWVkaWFDYXB0dXJlU2FuZGJveEV4dGVuc2lvbnMgeyBT
YW5kYm94RXh0ZW5zaW9uVHlwZTo6Tm9uZSB9OwogI2VuZGlmCisKKyAgICBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uIHsKKyAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUGFnZVByb3h5SUQ7CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJQYWdlSUQ7CisgICAgfTsKKyAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24+IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQb29sR0xpYi5jcHAKaW5kZXggNGVhM2FjMjIyMWUyYjUwMTVjNjBlNTBmMzdjOWQ0NTExMDI1
M2EzZi4uMzdlY2UyZjQ1NzZkY2Y4OTcwODZiN2U5ZGJkYjVlNWRlZTgzYmU4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6
ZSgpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNv
bnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICNpZiBQTEFURk9STShXUEUpCi0gICAgcGFyYW1ldGVycy5pc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzID0gcHJvY2Vzcy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCk7Cisg
ICAgcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gcHJvY2Vzcy5pc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlzU2VydmljZVdvcmtlclBy
b2Nlc3MpIHsKICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3IgPSB3
cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNGE0M2ZiNzFhZWM4NTYzMTUyMDkz
ZDEwOTc4ZDA4MjYxZDkwY2U3Li4zOTI0OTM0MThhZTg4NjU3YzllMjI1ODcxNTAyZDg4ZTVmNjA5
YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg3OSw3ICs4NzksNiBAQAogCQk0MTQzNzUxQzIwRUFFQTJEMDBGQUQwNkMgLyogY24u
bWljcm9kb25lLmNtYi5zYWZhcmkuc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0Mzc1MUIyMEVBRUExRTAwRkFE
MDZDIC8qIGNuLm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNiICovOyB9OwogCQk0MTRERDM3OTIwQkY0
M0Y1MDA2OTU5RkIgLyogY29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYiBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0REQzNzgyMEJGNDNFQTAw
Njk1OUZCIC8qIGNvbS5jaXNjby53ZWJleC5wbHVnaW4uZ3BjNjQuc2IgKi87IH07CiAJCTQxNERE
MzdBMjBCRjQ5QTUwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgucGx1Z2luLmdwYzY0LnNiIGlu
IENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNEREMzc4MjBCRjQzRUEwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgucGx1
Z2luLmdwYzY0LnNiICovOyB9OwotCQk0MTRERURENzFGOUVEREU1MDA0N0M0MEQgLyogU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0REVERDUxRjlFRERERjAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkuaCAqLzsgfTsKIAkJNDE1N0U0QjAyMEUyRUNERjAwQTZDMEQ3IC8qIGNvbS5nb29n
bGUubzFkYnJvd3NlcnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU3RTRBRjIwRTJFQzk4MDBBNkMw
RDcgLyogY29tLmdvb2dsZS5vMWRicm93c2VycGx1Z2luLnNiICovOyB9OwogCQk0MTc2OTAxNDIy
RkRENDFCMDBCMTU3NkQgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjkwMTMyMkZERDQxQjAwQjE1NzZEIC8q
IE5ldHdvcmtSVENQcm92aWRlci5tbSAqLzsgfTsKIAkJNDE3OTE1QUYyMjU2QkI3NTAwRDZGOTdF
IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNzkxNUFEMjI1NkJCNzQwMEQ2Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVs
LmggKi87IH07CkBAIC0zMTM4LDggKzMxMzcsNiBAQAogCQk0MTNDQ0Q0RjIwREVCQzJGMDA2NUEy
MUEgLyogY29tLmdvb2dsZS5nb29nbGV0YWxrYnJvd3NlcnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBjb20uZ29vZ2xlLmdvb2dsZXRhbGticm93c2VycGx1Z2luLnNiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQzNzUxQjIwRUFFQTFFMDBGQUQwNkMgLyogY24ubWlj
cm9kb25lLmNtYi5zYWZhcmkuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY24ubWljcm9kb25l
LmNtYi5zYWZhcmkuc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNEREMzc4MjBC
RjQzRUEwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgucGx1Z2luLmdwYzY0LnNiICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IGNvbS5jaXNjby53ZWJleC5wbHVnaW4uZ3BjNjQuc2I7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNERFREQ1MUY5RUREREYwMDQ3QzQwRCAvKiBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDE0REVERDYxRjlFRERFMDAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTE4NTM1MjIyNzA0
RjUwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE1MTg1MzYyMjI3MDRGNjAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTE4
NTM4MjIyNzBGNTMwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzcyLDggKzc3NjksNiBAQAogCQkJ
CUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywK
IAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICov
LAogCQkJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmgg
Ki8sCi0JCQkJNDE0REVERDYxRjlFRERFMDAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuY3BwICovLAotCQkJCTQxNERFREQ1MUY5RUREREYwMDQ3QzQwRCAvKiBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJNTFBNEQ1QTgxNkNBQzRGRjAwMEU2MTVFIC8qIFN0
YXRpc3RpY3NSZXF1ZXN0LmNwcCAqLywKIAkJCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyog
U3RhdGlzdGljc1JlcXVlc3QuaCAqLywKIAkJCQk1MTVDNDE1QTIwN0Q3NEUwMDA3MjZFMDIgLyog
U3VzcGVuZGVkUGFnZVByb3h5LmNwcCAqLywKQEAgLTk3MzcsNyArOTczMiw2IEBACiAJCQkJRTE4
RTY5MTgxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNERFREQ3MUY5RURERTUwMDQ3
QzQwRCAvKiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NkJFQjZERjIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDY0YWUxMjBmOWI4OTY2YWMzMDNjNTVkOTQ3OTM0OTgwNzdiNmQ4YzAu
LmI4OTlkM2ViMjljOTg1ZWQwZjljNDA3OGJkZmJjN2JmMjI2MDc2NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNjAsOCArMTI2MCwxMSBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24qIGNvbm5lYwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgZXhpdGlu
ZyBiZWNhdXNlIG5ldHdvcmsgcHJvY2VzcyBpcyBnb25lIik7Ci0gICAgICAgIF9leGl0KEVYSVRf
U1VDQ0VTUyk7CisgICAgICAgIGlmIChtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBl
eGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIGdvbmUiKTsKKyAgICAgICAgICAgIF9l
eGl0KEVYSVRfU1VDQ0VTUyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CiAgICAgfQogI2Vu
ZGlmCiAKQEAgLTE4MjksOCArMTgzMiw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiB7Ci0gICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgZHVtbXkgZG9jdW1lbnRz
LgotICAgIEFTU0VSVCghU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KTsKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudHMoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378355</attachid>
            <date>2019-09-09 00:47:26 -0700</date>
            <delta_ts>2019-09-09 10:02:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201506-20190909094724.patch</filename>
            <type>text/plain</type>
            <size>37455</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhMWFlYWVmMWMzNTkyNGIx
YWViMDQ5NzczMzgzYThmNzM0M2EyZTQuLjJhZDY2N2Y0ODUxNTUxNTllN2QyYmUzNTY4Yjc5NjNj
YjU4MWE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDktMDkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDE1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnN0ZWFkIG9mIHVzaW5nIGEgc3BlY2lmaWMgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSwgbW92ZSB0aGUgbG9naWMgZGlyZWN0bHkgaW4gV2ViUHJvY2Vzc1Byb3h5LgorICAgICAgICBU
aGlzIHdpbGwgYWxsb3cgdXMgaW4gdGhlIGZ1dHVyZSB0byBydW4gYSBzZXJ2aWNlIHdvcmtlciBp
biBhIHByb2Nlc3MgdGhhdCBhbHJlYWR5IHJ1bnMgYSB3ZWIgcGFnZSwKKyAgICAgICAgdGh1cyBz
YXZpbmcgdGhlIG5lZWQgdG8gc3BpbiBvZmYgYSBuZXcgcHJvY2Vzcy4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgYSBuZXcgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2Vy
cyBtZXRob2QgaW5zdGVhZCBvZiBjcmVhdGluZyBhCisgICAgICAgIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkuIFRoZSBiZWhhdmlvciBpcyB0aGVuIHNpbWlsYXI6IGEgcHJvY2VzcyBydW5uaW5n
IGEgc2VydmljZSB3b3JrZXIgY2Fubm90IHJ1biBhIHBhZ2UuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9oYXNSZWdpc3RlcmVkU2VydmljZVdv
cmtlcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXI6OnNob3VsZEJlQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2Vy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9j
ZXNzQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNl
dEFzc2VydGlvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRF
eGNlZWRDUFVMaW1pdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6aXNSdW5uaW5nU2VydmljZVdvcmtlcnMgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0wOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdlYlByb2Nlc3MgcHJv
Y2Vzc0lkZW50aWZpZXIgdG8gaWRlbnRpZnkgSURCIGNvbm5lY3Rpb25zIGJldHdlZW4gV2ViUHJv
Y2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDQ2MjE5NDMwNTA2Mzg2MDNk
YjAyYjhkMWM5MWI0OTRiNTA4ODE0MGUuLjJiMTIzZjExYjJkZGU3N2E2NTE2ZWUwM2E2MDliYmRm
YTZjOTNiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjUwLDcgKzI1MCw2IEBAIFVJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcAogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAogVUlQ
cm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAogVUlQcm9jZXNzL1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwCi1VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKIFVJ
UHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCAzZGQxMGU1ZjhkMmY0NmFlOTExNDMyYjc3NjNlMTkxNTgyZDYyNTZhLi4zNzQ5Nzdi
Mzc3ZTE3OWRhN2RkMTY0YjVmNWRlMTYwNGE5ZWJhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQx
LDcgKzQxLDcgQEAKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgi
CiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNv
cmUvQ3JlZGVudGlhbC5oPgotI2ltcG9ydCA8V2ViS2l0L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1dlYWtP
YmpDUHRyLmg+CkBAIC01NzgsNyArNTc4LDcgQEAgLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIAogLSAoYm9v
bClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXIKIHsKLSAgICByZXR1cm4gV2ViS2l0OjpTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6
OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKaW5kZXggN2JmYzI2NTQ1N2Y1N2FmOTMy
N2RjZDM1YTAwM2M5OTkwMDA1ZWE1Ni4uOTEzYmE2YTRlMTMwOTllYzQ2MzcwMjJjNDkwYjQxMDQ3
YzBjZWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgYm9vbCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnNob3VsZEJl
QWN0aXZlKCkgY29uc3QKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTZXJ2
aWNlIHdvcmtlciBwcm9jZXNzIGFyZSBhbHdheXMgaW4gdGhlIGJhY2tncm91bmQuCi0gICAgaWYg
KG1fd2ViUHJvY2Vzc1Byb3h5LmlzU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAobV93
ZWJQcm9jZXNzUHJveHkuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgcmV0dXJuICFtX3dlYlByb2Nlc3NQcm94eS52aXNpYmxlUGFnZUNvdW50KCkg
JiYgbV93ZWJQcm9jZXNzUHJveHkucGFnZUNvdW50KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3ZjlkYjE2NWY2NDQwZjJiMTQwYi4uMzExNDZiZjYxY2Y3
M2Y4ZDAyZDM2NmY0Njc0ZjVmNTc5Y2M1YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDUsOSAr
MTQ1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXMKICAgICBib29sIGlzU2VydmljZVdvcmtl
clByb2Nlc3MgPSBmYWxzZTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
bjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQcm94eSkpIHsKKyAgICBpZiAod2ViUHJvY2Vzc1Byb3h5
LmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpIHsKICAgICAgICAgaXNTZXJ2aWNlV29ya2VyUHJv
Y2VzcyA9IHRydWU7Ci0gICAgICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5yZWdpc3RyYWJsZURvbWFpbigp
OworICAgICAgICByZWdpc3RyYWJsZURvbWFpbiA9IHdlYlByb2Nlc3NQcm94eS5yZWdpc3RyYWJs
ZURvbWFpbigpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4YjNhNDJjZDA3MWY1NDFmMzA0ZTI1YTRhM2IwY2JkNTA0NTA1ZTkxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgiCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0KLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCi0j
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgotI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgotI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIK
LSNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3Jl
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBz
dG9yZSkKLXsKLSAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5IHsgcG9vbCwgcmVnaXN0cmFibGVEb21haW4sIHN0b3JlIH0pOwotICAgIHByb3h5
LT5jb25uZWN0KCk7Ci0gICAgcmV0dXJuIHByb3h5OwotfQotCi1TZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwb29sLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3Rv
cmUmIHN0b3JlKQotICAgIDogV2ViUHJvY2Vzc1Byb3h5IHsgcG9vbCwgJnN0b3JlLCBJc1ByZXdh
cm1lZDo6Tm8gfQotICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikK
LSAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VQcm94eUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6
OmdlbmVyYXRlKCkpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQoUGFnZUlkZW50aWZpZXI6
OmdlbmVyYXRlKCkpCi17Ci19Ci0KLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6On5TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KCkKLXsKLX0KLQotYm9vbCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5OjpoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29y
a2VyRGlyZWN0b3J5KQotewotICAgIFN0cmluZyByZWdpc3RyYXRpb25GaWxlID0gV2ViQ29yZTo6
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtlckRp
cmVjdG9yeSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVnaXN0cmF0aW9u
RmlsZSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0
aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCi17Ci0g
ICAgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwotCi0g
ICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInNlcnZpY2Utd29y
a2VyLXByb2Nlc3MiX3MsICIxIl9zKTsKLSAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9tYWluIl9zLCByZWdpc3RyYWJsZURvbWFpbigp
LnN0cmluZygpKTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFydChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
IGluaXRpYWxTZXNzaW9uSUQpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bv
b2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VyUGFn
ZVByb3h5SUQsIG1fc2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRpYWxTZXNzaW9uSUQu
dmFsdWVPcihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB9LCAwKTsKLX0KLQot
dm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKLX0KLQotdm9pZCBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODBjMWE1YjJiMDE2
NjgwODliMzYxNDJlZjkxZTNkZDMyZmI0YWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4u
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5Owotc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7Ci0KLWNsYXNzIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgV2ViUHJvY2Vzc1Byb3h5IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNz
UG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9y
ZSYpOwotICAgIH5TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KCk7Ci0KLSAgICBzdGF0aWMgYm9v
bCBoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2Vy
RGlyZWN0b3J5KTsKLQotICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKTsKLSAgICB2b2lkIHNl
dFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwotCi0gICAgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsgfQotICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsgfQotICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtl
clBhZ2VJRDsgfQotCi1wcml2YXRlOgotICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQotICAg
IHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSBm
aW5hbDsKLQotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vz
c1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3Rv
cmUmKTsKLQotICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21h
aW47Ci0gICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJ
RDsKLSAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpIHsgcmV0
dXJuIHdlYlByb2Nlc3NQcm94eS5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCk7IH0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiMTJhNjAw
NWEyNmUyYmIyMTJmNmRjZDQ3N2IyYjgzZGVmNThlYmEyLi4yZTM4ODQzZDBjOTkwOWU3Mzg0YmQ5
NzgyZjMyZGEzZjMyZDZiNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiVUlHYW1lcGFkLmgiCkBAIC04Niw2ICs4NSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NXYXJtaW5nLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KQEAgLTcw
OSw4ICs3MDksOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIGlmIChtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAot
ICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHk6OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21haW4sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKLSAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VX
b3JrZXJzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKndlYnNpdGVEYXRhU3Rv
cmUpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+cmVnaXN0cmFibGVEb21haW4oKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5w
dHIoKSk7CiAKICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGluaXRpYWxpemVO
ZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUp
OwpAQCAtNzE4LDkgKzcxOCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgYXV0byog
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0ciA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
cHRyKCk7CiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUoc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0ci0+c3RhcnQobV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1
ZSgpIDogbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHNlc3Npb25J
RCk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0ci0+ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQobV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3JrZXJQ
cmVmZXJlbmNlcy52YWx1ZSgpIDogbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0
b3JlKCksIHNlc3Npb25JRC52YWx1ZU9yKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpKTsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0ci0+c2V0VXNlckFnZW50KG1fc2VydmljZVdv
cmtlclVzZXJBZ2VudCk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHItPnNl
dFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKIH0KICNl
bmRpZgogCkBAIC0xMTI2LDggKzExMjYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25u
ZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgfSk7CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+
KCpwcm9jZXNzKSkgewotICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy50YWtlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpw
cm9jZXNzKS5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkgeworICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKHByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCkpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBw
cm9jZXNzKTsKICAgICAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CkBAIC0x
MTg3LDcgKzExODcsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYgdwogICAgICAgICBpZiAocHJv
Y2VzcyA9PSBtX3ByZXdhcm1lZFByb2Nlc3MgfHwgcHJvY2VzcyA9PSBtX2R1bW15UHJvY2Vzc1By
b3h5KQogICAgICAgICAgICAgY29udGludWU7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKQorICAg
ICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogI2VuZGlmCiAgICAgICAgIGlmIChtdXN0TWF0Y2hEYXRhU3RvcmUgJiYgJnBy
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKQEAgLTEyNDEs
MTIgKzEyNDEsMTIgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICBhdXRvIHBhZ2UgPSBw
cm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBBU1NFUlQoIWlzPFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKSk7CisgICAgQVNTRVJUKCFwcm9jZXNzLT5p
c1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKTsKIAogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJl
ZmVyZW5jZXMpIHsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5w
cmVmZXJlbmNlc1N0b3JlKCk7CiAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nl
c3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+dXBkYXRlUHJlZmVyZW5jZXNTdG9yZSgqbV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXMpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnVwZGF0ZVNl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdl
bnQ7CiAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnNldFVz
ZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgICAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzcy0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdl
bnQpOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQpAQCAtMTI4OCw3ICsxMjg4LDcg
QEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhj
b25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3Rl
cmVkU2VydmljZVdvcmtlcnMuZW5zdXJlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnksIFsmXSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VycyhzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29y
ZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KICNl
bmRpZgpAQCAtMjEzMiw5ICsyMTMyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5p
c0VtcHR5KCkgJiYgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2
ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+
cmVnaXN0cmFibGVEb21haW4oKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9t
YWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb3Jl
Z3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQocmVnaXN0cmFibGVEb21h
aW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxNDIsOSArMjE0
Miw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAg
ICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fYmFja2dy
b3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBjYW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2lu
LgogICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHJlZ2lz
dHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7
CisgICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOwogICAgICAgICAgICAgICAgIGlmICghbV9iYWNr
Z3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJs
ZURvbWFpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRk
KFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTk4LDEwICsyMTk4LDkgQEAgYm9vbCBXZWJQcm9j
ZXNzUG9vbDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNz
IDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+d2ViUGFnZVByb3h5SUQoKSA9PSBwYWdlSUQpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLnZhbHVlcygpLCBbcGFnZUlEXShhdXRvKiBwcm9jZXNzKSB7CisgICAgICAg
IHJldHVybiBwcm9jZXNzLT5oYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KHBhZ2VJRCk7CisgICAg
fSk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmYTYzMWUwNDgzYjZhOWVkZjI5Zjk4Y2FkY2E1OGVhMWVl
MDI5ZjY3Li41ZDJmMGYzMWY4ZThhNWViZGJmOWM0OTg4MWI5MzM3NThhYjc4Nzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNp
bmNsdWRlICJQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9T
dG9yZS5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc1JlcXVlc3QuaCIKICNp
bmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dENsaWVudC5o
IgpAQCAtMTAwLDcgKzk5LDYgQEAgY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEhpZ2hQZXJm
b3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyOwogY2xhc3MgVUlHYW1lcGFkOwogY2xhc3MgUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsKLWNsYXNzIFNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHk7CiBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjsKIGNsYXNzIFdlYkNvbnRleHRTdXBwbGVtZW50OwpAQCAtMzgyLDcgKzM4MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlm
aWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPik7Ci0gICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQorICAgIGNvbnN0IEhhc2hNYXA8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYlByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2Vy
UHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAg
IHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxs
b3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dz
OyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBj
b25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsg
fQogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCk7CkBAIC02MjAsNyArNjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlByb2Nlc3NQ
cm94eSogbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQcm9jZXNzUHJveHkqPiBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI3OGViODM0NGZj
MzU0MTMwNTNkM2ZjZjMxZDhkMmUwNmUwNjVlY2UuLjQ5N2E0OTI5NWIxZTRmZWViYjM0ZGU1NWFh
ODFiYmI1YTg3ZTg4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIK
QEAgLTEzMyw2ICsxMzQsMTUgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKICAgICByZXR1cm4g
cHJveHk7CiB9CiAKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0
YVN0b3JlKQoreworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94
eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObykpOworICAg
IHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7
CisgICAgcHJveHktPm1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uIHsgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50
aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBwcm94eS0+Y29ubmVjdCgpOworICAgIHJldHVybiBw
cm94eTsKK30KKwogV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBJc1By
ZXdhcm1lZCBpc1ByZXdhcm1lZCkKICAgICA6IEF1eGlsaWFyeVByb2Nlc3NQcm94eShwcm9jZXNz
UG9vbC5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAgICAsIG1fcmVzcG9uc2l2
ZW5lc3NUaW1lcigqdGhpcykKQEAgLTI3Nyw2ICsyODcsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVu
Y2hPcHQKICAgICAgICAgcHJvY2Vzc1Bvb2woKS5zZXRTaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NM
YXVuY2hGYWlsRm9yVGVzdGluZyhmYWxzZSk7CiAgICAgICAgIGxhdW5jaE9wdGlvbnMuc2hvdWxk
TWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyA9IHRydWU7CiAgICAgfQorCisgICAgaWYg
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0
cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIl9zLCAiMSJf
cyk7CisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJy
ZWdpc3RyYWJsZS1kb21haW4iX3MsIG1fcmVnaXN0cmFibGVEb21haW4tPnN0cmluZygpKTsKKyAg
ICB9CiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV1BFKQpAQCAtNzUxLDkg
Kzc2Niw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQog
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCiAgICAgICAg
IGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogCi0gICAgLy8gSWYgdGhlIHNlcnZp
Y2Ugd29ya2VyIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUsIGtpbGwgaXQgb3Vyc2VsdmVz
IHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KLSAgICBpZiAoaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZv
cm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNp
dmUoKSBUZXJtaW5hdGluZyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIHdpdGggcGlkICVkIGJlY2F1
c2UgaXQgaXMgdW5yZXNwb25zaXZlIiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAg
Ly8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMg
c2VydmljZSB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0
aXZlIGNsaWVudHMgdG8gZG8gaXQuCisgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkg
JiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJm
b3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25z
aXZlKCkgVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyB3aXRoIHBp
ZCAlZCBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVy
KCkpOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC04ODYsNyArOTAxLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90
IGlkZW50aWZpZXIpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9j
ZXNzQ2FjaGUoKSBjb25zdAogewotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkpCisg
ICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChXZWJLaXQ6OmlzSW5zcGVjdG9yUHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2woKSkp
CkBAIC0xMjAyLDcgKzEyMTcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2FuY2VsUHJv
Y2Vzc1N1c3BlbnNpb24oKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0
YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICBpZiAoaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2JhY2tncm91bmRU
b2tlbiB8fCAhbV9mb3JlZ3JvdW5kVG9rZW4pOwpAQCAtMTM3OCwxMCArMTM5Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRDUFVMaW1pdCgpCiAgICAgaWYgKGhhc1Zpc2libGVQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
KQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdl
YlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQ1BVTGltaXQoKSBUZXJtaW5hdGluZyBTZXJ2aWNlIFdv
cmtlciBwcm9jZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5k
IENQVSBsaW1pdCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGVsc2UKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNz
UHJveHk6OmRpZEV4Y2VlZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dyb3VuZCBXZWJQcm9j
ZXNzIHdpdGggcGlkICVkIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1p
dCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBl
cmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRDUFVMaW1p
dCgpIFRlcm1pbmF0aW5nIGJhY2tncm91bmQgV2ViUHJvY2VzcyB3aXRoIHBpZCAlZCB0aGF0IGhh
cyBleGNlZWRlZCB0aGUgYmFja2dyb3VuZCBDUFUgbGltaXQiLCB0aGlzLCBwcm9jZXNzSWRlbnRp
ZmllcigpKTsKICAgICBsb2dEaWFnbm9zdGljTWVzc2FnZUZvclJlc291cmNlTGltaXRUZXJtaW5h
dGlvbihEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4Y2VlZGVkQmFja2dyb3VuZENQVUxpbWl0S2V5
KCkpOwogICAgIHJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4
Y2VlZGVkQ1BVTGltaXQpOwogfQpAQCAtMTQ4MCw2ICsxNDkyLDI1IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQo
KQogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElE
KCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQs
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwg
c2Vzc2lvbklEIH0sIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2VydmljZVdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3sKKyAgICBBU1NFUlQobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7Cit9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9y
ZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3sKKyAgICBBU1NFUlQobV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNL
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGUzYWVkNTFj
MzRmMTczZmRkMGJjZTg1OTQ3NTk1YTdiOGY1MzhkYjEuLjc3ZjdlZWVjYjgyOWQ3ZDUzNTc4OTgx
YTUyMzYwZDdhZDllNjM4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBlbnVtIGNs
YXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
MDksNiArMTEwLDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNoUHJvY2Vz
cyA6IGJvb2wgeyBObywgWWVzIH07CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBT
aG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7
CisKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JXZWJQYWdl
c1dpdGhPcmlnaW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoV2ViUGFnZVByb3h5Jik+Jik7CkBAIC0xNDksNyAr
MTUyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhY3RpdmVQYWdlc0RvbWFpbnNGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOyAvLyBUaGlzIGlz
IHdoYXQgaXMgcmVwb3J0ZWQgdG8gQWN0aXZpdHlNb25pdG9yLgogCi0gICAgdmlydHVhbCBib29s
IGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOyB9CiAKICAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3Mo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCkBAIC0zMDksNiArMzEyLDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZigpIGZpbmFsIHsgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZigpOyB9CiAg
ICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmKCk7IH0K
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7
CisgICAgdm9pZCBzdGFydEZvclNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2Vz
U3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIGJvb2wgaGFzU2VydmljZVdv
cmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVy
biBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CisjZW5kaWYKKwog
cHJvdGVjdGVkOgogICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVE
YXRhU3RvcmUqLCBJc1ByZXdhcm1lZCk7CiAKQEAgLTQ3Niw2ICs0ODcsMTIgQEAgcHJpdmF0ZToK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBNZWRpYUNhcHR1cmVTYW5kYm94RXh0ZW5zaW9ucyBt
X21lZGlhQ2FwdHVyZVNhbmRib3hFeHRlbnNpb25zIHsgU2FuZGJveEV4dGVuc2lvblR5cGU6Ok5v
bmUgfTsKICNlbmRpZgorCisgICAgc3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7Cisg
ICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwor
ICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZUlEOworICAg
IH07CisgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCmluZGV4IDRl
YTNhYzIyMjFlMmI1MDE1YzYwZTUwZjM3YzlkNDUxMTAyNTNhM2YuLjM3ZWNlMmY0NTc2ZGNmODk3
MDg2YjdlOWRiZGI1ZTVkZWU4M2JlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAjaWYg
UExBVEZPUk0oV1BFKQotICAgIHBhcmFtZXRlcnMuaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IHBy
b2Nlc3MuaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpOworICAgIHBhcmFtZXRlcnMuaXNTZXJ2aWNl
V29ya2VyUHJvY2VzcyA9IHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKTsKIAogICAg
IGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRl
X2NsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzY5NGVjYzM5MDU4MmI1NWNjMjYxMjQ1ZDg3NDdlNWRmOGYyMjhkYS4uZDll
NGUzYzIzYzc5ZGMyY2JlOGY3ZDliYmVmNjA2YzNhZjJhYTVmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzksNyArODc5LDYgQEAK
IAkJNDE0Mzc1MUMyMEVBRUEyRDAwRkFEMDZDIC8qIGNuLm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNi
IGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNDM3NTFCMjBFQUVBMUUwMEZBRDA2QyAvKiBjbi5taWNyb2RvbmUuY21i
LnNhZmFyaS5zYiAqLzsgfTsKIAkJNDE0REQzNzkyMEJGNDNGNTAwNjk1OUZCIC8qIGNvbS5jaXNj
by53ZWJleC5wbHVnaW4uZ3BjNjQuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNEREMzc4MjBCRjQzRUEwMDY5NTlGQiAvKiBjb20uY2lzY28ud2Vi
ZXgucGx1Z2luLmdwYzY0LnNiICovOyB9OwogCQk0MTRERDM3QTIwQkY0OUE1MDA2OTU5RkIgLyog
Y29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQ
cm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERDM3ODIwQkY0
M0VBMDA2OTU5RkIgLyogY29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYiAqLzsgfTsKLQkJ
NDE0REVERDcxRjlFRERFNTAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNERFREQ1MUY5
RUREREYwMDQ3QzQwRCAvKiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggKi87IH07CiAJCTQx
NTdFNEIwMjBFMkVDREYwMEE2QzBENyAvKiBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2Ig
aW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE1N0U0QUYyMEUyRUM5ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFkYnJv
d3NlcnBsdWdpbi5zYiAqLzsgfTsKIAkJNDE3NjkwMTQyMkZERDQxQjAwQjE1NzZEIC8qIE5ldHdv
cmtSVENQcm92aWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzY5MDEzMjJGREQ0MUIwMEIxNTc2RCAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubW0g
Ki87IH07CiAJCTQxNzkxNUFGMjI1NkJCNzUwMEQ2Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5MTVBRDIy
NTZCQjc0MDBENkY5N0UgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovOyB9OwpAQCAtMzEzNyw4ICsz
MTM2LDYgQEAKIAkJNDEzQ0NENEYyMERFQkMyRjAwNjVBMjFBIC8qIGNvbS5nb29nbGUuZ29vZ2xl
dGFsa2Jyb3dzZXJwbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmdvb2dsZS5n
b29nbGV0YWxrYnJvd3NlcnBsdWdpbi5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE0Mzc1MUIyMEVBRUExRTAwRkFEMDZDIC8qIGNuLm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IGNuLm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTRERDM3ODIwQkY0M0VBMDA2OTU5RkIgLyogY29tLmNp
c2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uY2lz
Y28ud2ViZXgucGx1Z2luLmdwYzY0LnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
MTRERURENTFGOUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNERFREQ2MUY5RURERTAwMDQ3QzQw
RCAvKiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTUxODUzNTIyMjcwNEY1MDA1NDMwQzYgLyogU2VydmljZVdv
cmtlckZldGNoVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTE4NTM2
MjIyNzA0RjYwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTUxODUzODIyMjcwRjUzMDA1NDMwQzYgLyog
U2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzc3Nyw4ICs3Nzc0LDYgQEAKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdC
QUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAw
MzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVB
MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovLAotCQkJCTQxNERFREQ2MUY5RURE
RTAwMDQ3QzQwRCAvKiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCAqLywKLQkJCQk0MTRE
RURENTFGOUVERERGMDA0N0M0MEQgLyogU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oICovLAog
CQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8s
CiAJCQkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi8s
CiAJCQkJNTE1QzQxNUEyMDdENzRFMDAwNzI2RTAyIC8qIFN1c3BlbmRlZFBhZ2VQcm94eS5jcHAg
Ki8sCkBAIC05NzQ2LDcgKzk3NDEsNiBAQAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEYz
MjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MTRERURENzFGOUVEREU1MDA0N0M0MEQgLyogU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZB
IC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkxOTZCMzQ1RDAw
QjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCRUI2
REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVy
cyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>