<?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>195649</bug_id>
          
          <creation_ts>2019-03-12 15:50:57 -0700</creation_ts>
          <short_desc>Use a ServiceWorker process per registrable domain</short_desc>
          <delta_ts>2019-03-13 13:52:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1515734</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-12 15:50:57 -0700</bug_when>
    <thetext>Use a ServiceWorker process per registrable domain instead of one per security origin. This is more in line with PSON and avoids launching too many processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515747</commentid>
    <comment_count>1</comment_count>
      <attachid>364471</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-12 16:36:46 -0700</bug_when>
    <thetext>Created attachment 364471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515748</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-12 16:39:15 -0700</bug_when>
    <thetext>Attachment 364471 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516091</commentid>
    <comment_count>3</comment_count>
      <attachid>364471</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 12:18:09 -0700</bug_when>
    <thetext>Comment on attachment 364471
Patch

ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516098</commentid>
    <comment_count>4</comment_count>
      <attachid>364471</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-03-13 12:32:46 -0700</bug_when>
    <thetext>Comment on attachment 364471
Patch

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

LGTM.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:513
&gt; +    RegistrableDomain registrableDomain(data.scriptURL);

Maybe uniform initialization here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516120</commentid>
    <comment_count>5</comment_count>
      <attachid>364471</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-03-13 13:11:19 -0700</bug_when>
    <thetext>Comment on attachment 364471
Patch

LGTM.

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

&gt; Source/WebCore/workers/service/server/SWServerToContextConnection.cpp:44
&gt; +    static NeverDestroyed&lt;HashMap&lt;RegistrableDomain, SWServerToContextConnection*&gt;&gt; connectionsByOrigin;

Not an issue for this patch, but I wonder how this singleton interacts with multiple NetworkProcess instances.
Ideally, we would not rely on this singleton and instead rely on NetworkProcess::m_serverToContextConnections.

&gt; Source/WebCore/workers/service/server/SWServerToContextConnection.h:31
&gt;  #include &quot;SecurityOriginData.h&quot;

Can we remove this include?

&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:55
&gt; +    , m_registrableDomain(scriptURL)

Can we use m_data.scriptURL here instead of scriptURL?
We might want to make scriptURL a URL&amp;&amp; and move it as part of m_data construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516128</commentid>
    <comment_count>6</comment_count>
      <attachid>364471</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 13:24:17 -0700</bug_when>
    <thetext>Comment on attachment 364471
Patch

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

&gt;&gt; Source/WebCore/workers/service/server/SWServerToContextConnection.cpp:44
&gt;&gt; +    static NeverDestroyed&lt;HashMap&lt;RegistrableDomain, SWServerToContextConnection*&gt;&gt; connectionsByOrigin;
&gt; 
&gt; Not an issue for this patch, but I wonder how this singleton interacts with multiple NetworkProcess instances.
&gt; Ideally, we would not rely on this singleton and instead rely on NetworkProcess::m_serverToContextConnections.

I think you are right but this should probably be dealt with separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516129</commentid>
    <comment_count>7</comment_count>
      <attachid>364566</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-13 13:25:09 -0700</bug_when>
    <thetext>Created attachment 364566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516133</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-13 13:26:28 -0700</bug_when>
    <thetext>Attachment 364566 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516140</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-03-13 13:30:59 -0700</bug_when>
    <thetext>I filed https://bugs.webkit.org/show_bug.cgi?id=195697 for the singleton issue to not forget about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516144</commentid>
    <comment_count>10</comment_count>
      <attachid>364566</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-13 13:51:43 -0700</bug_when>
    <thetext>Comment on attachment 364566
Patch

Clearing flags on attachment: 364566

Committed r242905: &lt;https://trac.webkit.org/changeset/242905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516145</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-13 13:51:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516146</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-13 13:52:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/48861502&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364471</attachid>
            <date>2019-03-12 16:36:46 -0700</date>
            <delta_ts>2019-03-13 13:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195649-20190312163645.patch</filename>
            <type>text/plain</type>
            <size>59426</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlOWNhZTMzNWJmY2Jm
MzljY2Y0MTFhNzlhYmExMWNjZmYxOTU5MC4uOGQxZGVkYzg2M2FkNDlhNWY1NTE1OGVhNzkwYWFi
YzJiYWY0MDdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTAzLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgU2VydmljZVdvcmtl
ciBwcm9jZXNzIHBlciByZWdpc3RyYWJsZSBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBwZXIg
cmVnaXN0cmFibGUgZG9tYWluIGluc3RlYWQgb2Ygb25lIHBlciBzZWN1cml0eSBvcmlnaW4uIFRo
aXMgaXMKKyAgICAgICAgbW9yZSBpbiBsaW5lIHdpdGggUFNPTiBhbmQgYXZvaWRzIGxhdW5jaGlu
ZyB0b28gbWFueSBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpjbGllbnRSZWdpc3RyYWJsZURvbWFpbiBj
b25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJh
YmxlRG9tYWluQXNUZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25z
dCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6flNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldv
cmtlcjo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorCiAyMDE5LTAzLTEyICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2ZpcmUtKi1ldmVudC1leGNlcHRpb24uaHRt
bCBhcmUgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MjdkZmVkN2VhZjIyMmFjYjIxYThmZDJmOWMzZWZi
ZTVhODkxM2FkLi43ZDFmOGJjNTM2MTY0NTdjMGExM2FmZWNmZGI3NGE4ZDMyNWUyYTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTAzLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgU2VydmljZVdvcmtlciBwcm9jZXNzIHBlciByZWdp
c3RyYWJsZSBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBhIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBwZXIgcmVnaXN0cmFibGUgZG9tYWlu
IGluc3RlYWQgb2Ygb25lIHBlciBzZWN1cml0eSBvcmlnaW4uIFRoaXMgaXMKKyAgICAgICAgbW9y
ZSBpbiBsaW5lIHdpdGggUFNPTiBhbmQgYXZvaWRzIGxhdW5jaGluZyB0b28gbWFueSBwcm9jZXNz
ZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9D
b250ZXh0UHJvY2Vzc1dhc0Nsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorCiAyMDE5LTAzLTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRGV2aWNlIE9yaWVu
dGF0aW9uIGFjY2VzcyBwZXJtaXNzaW9uIHNob3VsZCBiZSBkZW5pZWQgdW5sZXNzIGV4cGxpY2l0
bHkgZ3JhbnRlZCBieSB0aGUgY2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRl
eCBlYmMxM2Q1MWM1ZTVjZjUwZDA3ZTNkYjA4NWRiMTNjY2UyODVlYzM4Li5kMTI2ZmU3N2MwNDg0
MGRjNjcxYjQwYTkxNmE1NjlmNWU4OGZmNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2lu
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDMsNiArNDQsOCBA
QCBzdHJ1Y3QgQ2xpZW50T3JpZ2luIHsKICAgICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1JlbGF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyIHx8IGNsaWVudE9yaWdpbiA9PSBv
dGhlcjsgfQogCisgICAgUmVnaXN0cmFibGVEb21haW4gY2xpZW50UmVnaXN0cmFibGVEb21haW4o
KSBjb25zdCB7IHJldHVybiBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhv
c3QoY2xpZW50T3JpZ2luLmhvc3QpOyB9CisKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3Jp
Z2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBk
ZjJiOGVlMjQ1MzVhNjIyMzk4MDg5Mjc2MjhhYWY3Y2UwMWYxZDg0Li40ZjY3MGIzMzVhOWRkOGNm
NmI4OTYzYWZiOTJiMzhjZmYzYmVlOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNTEwLDEwICs1MTAsMTAgQEAgdm9p
ZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHRE
YXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiB7Ci0gICAgYXV0byBzZWN1cml0
eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChkYXRhLnNjcmlwdFVSTCk7Ci0g
ICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVj
dGlvbkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgUmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4oZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgaWYgKCFjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1f
cGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFtdIHsK
KyAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgW10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3Zl
KGRhdGEpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTI0LDExICs1MjQsMTEgQEAgdm9pZCBTV1Nl
cnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRh
dGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0
byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29udGV4dERhdGFzLnRha2UoY29udGV4
dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byBwZW5kaW5nQ29udGV4dERh
dGFzID0gbV9wZW5kaW5nQ29udGV4dERhdGFzLnRha2UoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0
cmFibGVEb21haW4oKSk7CiAgICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRh
cykKICAgICAgICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwogCi0gICAgYXV0byBzZXJ2aWNl
V29ya2VyUnVuUmVxdWVzdHMgPSBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy50YWtlKGNvbnRl
eHRDb25uZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc2VydmljZVdvcmtlclJ1
blJlcXVlc3RzID0gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMudGFrZShjb250ZXh0Q29ubmVj
dGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzZXJ2aWNl
V29ya2VyUnVuUmVxdWVzdHMpIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuU2VydmljZVdv
cmtlcihpdGVtLmtleSk7CiAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpdGVtLnZhbHVl
KQpAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSCiAgICAgfQogCiAg
ICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2Vy
UnVuUmVxdWVzdHNGb3JPcmlnaW4gPSBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy5lbnN1cmUo
d29ya2VyLT5zZWN1cml0eU9yaWdpbigpLCBbXSB7CisgICAgICAgIGF1dG8mIHNlcnZpY2VXb3Jr
ZXJSdW5SZXF1ZXN0c0Zvck9yaWdpbiA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLmVuc3Vy
ZSh3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIFtdIHsKICAgICAgICAgICAgIHJldHVybiBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBWZWN0b3I8UnVuU2VydmljZVdvcmtlckNh
bGxiYWNrPj4geyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIHNlcnZp
Y2VXb3JrZXJSdW5SZXF1ZXN0c0Zvck9yaWdpbi5lbnN1cmUoaWRlbnRpZmllciwgWyZdIHsKQEAg
LTY1NCwxMSArNjU0LDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFs
KFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAot
dm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK3ZvaWQgU1dTZXJ2ZXI6Om1hcmtB
bGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewogICAgIFZlY3RvcjxTV1NlcnZlcldvcmtl
cio+IHRlcm1pbmF0ZWRXb3JrZXJzOwogICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5n
T3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHdvcmtlci0+c2Vj
dXJpdHlPcmlnaW4oKSA9PSBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgaWYgKHdvcmtlci0+cmVn
aXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgICAgIHRlcm1p
bmF0ZWRXb3JrZXJzLmFwcGVuZCh3b3JrZXIucHRyKCkpOwogICAgIH0KICAgICBmb3IgKGF1dG8m
IHRlcm1pbmF0ZWRXb3JrZXIgOiB0ZXJtaW5hdGVkV29ya2VycykKQEAgLTc2MSw3ICs3NjEsNyBA
QCB2b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2lu
JiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlVwogCiAgICAgY2xpZW50SWRlbnRpZmllcnNGb3JPcmln
aW4udGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG51bGxwdHI7CiAKLSAgICBtX2NsaWVu
dHNCeVNlY3VyaXR5T3JpZ2luLmVuc3VyZShjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLCBbXSB7
CisgICAgbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUoY2xpZW50T3JpZ2luLmNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluKCksIFtdIHsKICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUu
YWRkKGNsaWVudElkZW50aWZpZXIpOwogCkBAIC03NzksNiArNzc5LDggQEAgdm9pZCBTV1NlcnZl
cjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdp
biwgU2VydmljZVcKIAogdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CisgICAgYXV0byBjbGllbnRSZWdpc3RyYWJs
ZURvbWFpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpOworCiAgICAg
Ym9vbCB3YXNSZW1vdmVkID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7
CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIApAQCAtNzg5LDkg
Kzc5MSwxMCBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGNsaWVudElkZW50aWZpZXJz
LnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZdIChjb25zdCBhdXRvJiBpZGVudGlmaWVyKSB7CiAgICAg
ICAgIHJldHVybiBjbGllbnRJZGVudGlmaWVyID09IGlkZW50aWZpZXI7CiAgICAgfSk7CisKICAg
ICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXRl
cmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIpOwotICAgICAgICBpdGVy
YXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIHRoaXNdIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVl
LnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihb
Y2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10gewogICAgICAgICAg
ICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gd29ya2Vyc1RvVGVybWluYXRlOwogICAgICAgICAg
ICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1
ZXMoKSkgewogICAgICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtl
ci0+b3JpZ2luKCkgPT0gY2xpZW50T3JpZ2luKQpAQCAtODAwLDggKzgwMyw4IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luLCBTCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHdvcmtlciA6IHdvcmtlcnNU
b1Rlcm1pbmF0ZSkKICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7CiAK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhjbGll
bnRPcmlnaW4uY2xpZW50T3JpZ2luKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2lu
KGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4pKQorICAgICAgICAgICAgaWYgKCFtX2NsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluLmNvbnRhaW5zKGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKSkgewor
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50UmVnaXN0cmFi
bGVEb21haW4pKQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uTWF5
Tm9Mb25nZXJCZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBAIC04MTAsMTIgKzgxMywxMiBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWlu
YXRlU2VydmljZVdvcmtlcnNUaW1lci0+c3RhcnRPbmVTaG90KG1fc2hvdWxkRGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA/IDBfcyA6IHRlcm1pbmF0aW9uRGVsYXkp
OwogICAgIH0KIAotICAgIGF1dG8gY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvciA9IG1f
Y2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uZmluZChjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luKTsK
LSAgICBBU1NFUlQoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvciAhPSBtX2NsaWVudHNC
eVNlY3VyaXR5T3JpZ2luLmVuZCgpKTsKLSAgICBhdXRvJiBjbGllbnRzRm9yU2VjdXJpdHlPcmln
aW4gPSBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yLT52YWx1ZTsKLSAgICBjbGllbnRz
Rm9yU2VjdXJpdHlPcmlnaW4ucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwotICAgIGlmIChjbGll
bnRzRm9yU2VjdXJpdHlPcmlnaW4uaXNFbXB0eSgpKQotICAgICAgICBtX2NsaWVudHNCeVNlY3Vy
aXR5T3JpZ2luLnJlbW92ZShjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yKTsKKyAgICBh
dXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNCeVJlZ2lz
dHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVChj
bGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yICE9IG1fY2xpZW50c0J5UmVnaXN0cmFi
bGVEb21haW4uZW5kKCkpOworICAgIGF1dG8mIGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbiA9
IGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3ItPnZhbHVlOworICAgIGNsaWVudHNG
b3JSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKGNs
aWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIG1fY2xpZW50c0J5
UmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0
b3IpOwogCiAgICAgYXV0byByZWdpc3RyYXRpb25JdGVyYXRvciA9IG1fY2xpZW50VG9Db250cm9s
bGluZ1JlZ2lzdHJhdGlvbi5maW5kKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChyZWdpc3Ry
YXRpb25JdGVyYXRvciA9PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZW5kKCkp
CkBAIC04MjcsOSArODMwLDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVu
dFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsK
IH0KIAotYm9vbCBTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0Citib29s
IFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoc2VjdXJpdHlP
cmlnaW4pOworICAgIHJldHVybiBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmNvbnRhaW5z
KHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJh
dGlvblJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRl
eCBjYTUxYjliZDNkMGZiNzA1YjQxYzY3YTViYjZjN2I1MDcyMjBlOTZjLi4wMzI4Yjc0NzU4N2M2
YmJiZTBhYWQyYzUxNzc3ZWUxNjhiMzIzNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGlj
OgogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9y
aWdpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiBhY3RpdmVX
b3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFz
VGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlQ29ubmVjdGlvbihTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNl
Y3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMTcsNyArMjE3LDcgQEAgcHJpdmF0ZToKIAogICAg
IEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTV1NlcnZlcldvcmtlcj4+IG1f
cnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzOwogCi0gICAgSGFzaE1hcDxTZWN1cml0eU9yaWdp
bkRhdGEsIEhhc2hTZXQ8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+PiBtX2NsaWVudHNC
eVNlY3VyaXR5T3JpZ2luOworICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+PiBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9t
YWluOwogICAgIHN0cnVjdCBDbGllbnRzIHsKICAgICAgICAgVmVjdG9yPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBpZGVudGlmaWVyczsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRp
bWVyPiB0ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyOwpAQCAtMjI5LDggKzIyOSw4IEBAIHBy
aXZhdGU6CiAKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4gbV9vcmlnaW5TdG9yZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0cmF0aW9uU3RvcmU+IG1fcmVnaXN0cmF0aW9uU3RvcmU7
Ci0gICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+PiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7Ci0gICAgSGFzaE1hcDxTZWN1cml0eU9y
aWdpbkRhdGEsIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2
aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7CisgICAgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+
IG1fcGVuZGluZ0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBWZWN0b3I8UnVuU2VydmljZVdvcmtlckNh
bGxiYWNrPj4+IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzOwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogICAgIGJvb2wgbV9pbXBvcnRDb21wbGV0ZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCA3MGNhZjJmOTJiMTRhYzYzMDJhNmFlNDJjNDZkM2RiMWZjNzFlMDVkLi40NTliMWUyNWNjNDgy
OThlZGE0OWQwY2MxZTlmOGVjMjU0NzZkNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0zOSwyOSArMzksMjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
SWQKICAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCitzdGF0aWMg
SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4m
IGFsbENvbm5lY3Rpb25zQnlSZWdpc3RyYWJsZURvbWFpbigpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Kj4+IGNvbm5lY3Rpb25zQnlPcmlnaW47CiAgICAgcmV0dXJuIGNvbm5lY3Rpb25zQnlPcmlnaW47
CiB9CiAKLVNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAgOiBtX2lkZW50aWZpZXIo
Z2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9z
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5
T3JpZ2luKCkuYWRkKG1fc2VjdXJpdHlPcmlnaW4sIHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0g
YWxsQ29ubmVjdGlvbnNCeVJlZ2lzdHJhYmxlRG9tYWluKCkuYWRkKG1fcmVnaXN0cmFibGVEb21h
aW4sIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CiAKIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6flNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCku
cmVtb3ZlKG1fc2VjdXJpdHlPcmlnaW4pOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlv
bnNCeVJlZ2lzdHJhYmxlRG9tYWluKCkucmVtb3ZlKG1fcmVnaXN0cmFibGVEb21haW4pOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4pCiB7Ci0gICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5nZXQoc2VjdXJp
dHlPcmlnaW4pOworICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5UmVnaXN0cmFibGVEb21haW4o
KS5nZXQocmVnaXN0cmFibGVEb21haW4pOwogfQogCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBkZjRmMTc1ZTUx
YjZhOGIyZWY0NjRlOTQ0ZGNiYzE3MDk5OTU5YjE0Li43YTBlNDk1NmI1YTM0MTA5YzA0ZThiOTE3
N2QyNmY1NDRkYjkzMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgpAQCAtNzYsMTggKzc3LDE4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBT
dHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CiAK
LSAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHN0YXRpYyBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOwogCi0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3Jl
Z2lzdHJhYmxlRG9tYWluOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvbk1heU5vTG9u
Z2VyQmVOZWVkZWQoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgU2VjdXJpdHlP
cmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47CisgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdp
c3RyYWJsZURvbWFpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAKaW5kZXggMjMzNzBkMmVjNGY5ZDIwN2I3MWRiZDljN2NmMmY5MzI2Y2I4NzRhYy4uYWNmZjNk
MjRjMGM5MjdhNTRkMjk1MmVlZDgxY2VjNDIyMzQwNWY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBz
ZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICAsIG1fc2NyaXB0KHNj
cmlwdCkKICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0eVBvbGlj
eSkKICAgICAsIG1fcmVmZXJyZXJQb2xpY3koV1RGTW92ZShyZWZlcnJlclBvbGljeSkpCisgICAg
LCBtX3JlZ2lzdHJhYmxlRG9tYWluKHNjcmlwdFVSTCkKICAgICAsIG1fc2NyaXB0UmVzb3VyY2VN
YXAoV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkpCiB7CiAgICAgbV9kYXRhLnNjcmlwdFVSTC5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKQEAgLTkyLDE0ICs5Myw5IEBAIGNvbnN0IENsaWVu
dE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuICptX29y
aWdpbjsKIH0KIAotY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBTV1NlcnZlcldvcmtlcjo6c2Vj
dXJpdHlPcmlnaW4oKSBjb25zdAotewotICAgIHJldHVybiBvcmlnaW4oKS5jbGllbnRPcmlnaW47
Ci19Ci0KIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRl
eHRDb25uZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKCkpOworICAgIHJldHVybiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCBlMmY3NDRiZGNiYWEyNTRjNWM1YmIzYjg2YmMzZTMzYjVlOWE0YjdkLi45MDBh
NTkwNGExODQ3YzNjZTE4ZDlhMmUwODlmZTQ3NjgzYmM2OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisjaW5jbHVkZSAiUmVnaXN0cmFi
bGVEb21haW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJE
YXRhLmgiCkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSBjb250ZXh0RGF0YSgpIGNvbnN0OwogCiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4oKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250
ZXh0Q29ubmVjdGlvbigpOwogICAgIFN0cmluZyB1c2VyQWdlbnQoKSBjb25zdDsKQEAgLTEyNSw2
ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZlbnRzIHsgZmFsc2Ug
fTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6Ok5vdFJ1bm5pbmcgfTsKICAgICBtdXRhYmxl
IE9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmlnaW47CisgICAgUmVnaXN0cmFibGVEb21haW4g
bV9yZWdpc3RyYWJsZURvbWFpbjsKICAgICBib29sIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQgeyBm
YWxzZSB9OwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKGJvb2wpPj4gbV93aGVuQWN0aXZhdGVk
SGFuZGxlcnM7CiAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+IG1fc2NyaXB0UmVzb3VyY2VNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGQxM2RmY2E4ZTZlZDA2ZmQ5ZTVm
ZjIzMDhhMTE4OTNkNzZkNDNhYmQuLjkzN2YyODQzOGI4NGJlZDgxZTM0OTZjZjgyMjJjZWQzNGUy
YjUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6
ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogICAgICAgICBzdXBwbGVt
ZW50LT5pbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9y
aWdpbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbikKIHsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKICAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CkBAIC00MjksOCArNDI5LDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
Ym9vbCBpc1NlcnZpY2VXb3JrZXJQcm8KICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyAm
JiAhbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChw
YXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpOwogICAgICAgICBBU1NF
UlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAg
ICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpjcmVhdGUoKnRoaXMsIHNlY3VyaXR5T3JpZ2luLCBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5s
YXN0KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIGNvbnRleHRD
b25uZWN0aW9uLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVE
b21haW4sIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsKKyAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IAogICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IGZhbHNlOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAg
fQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFi
bGVEb21haW4pOwogI2VuZGlmCiB9CiAKQEAgLTIxNjAsMjQgKzIxNjAsMjQgQEAgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4
dFByb2Nlc3NGcm9tSVAKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4
dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4mJiBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0g
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvJiBy
ZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJhYmxl
RG9tYWluKCk7CiAgICAgCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlv
bkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHNlY3Vy
aXR5T3JpZ2luKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdp
c3RyYWJsZURvbWFpbik7CiAgICAgCiAgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2
ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5B
c1Rlcm1pbmF0ZWQoc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdv
cmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7
CiAgICAgCi0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihz
ZWN1cml0eU9yaWdpbikpIHsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nl
c3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAg
ICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHNlY3VyaXR5T3JpZ2luLCBXVEY6
Om51bGxvcHQpOworICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lz
dHJhYmxlRG9tYWluLCBXVEY6Om51bGxvcHQpOwogICAgIH0KIH0KIAotYm9vbCBOZXR3b3JrUHJv
Y2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0Citib29sIE5ldHdvcmtQcm9jZXNz
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1NlcnZlcikg
ewotICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgICAgIHJldHVybiBzd1NlcnZlci0+bmVl
ZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pOwogICAgIH0pOwogfQogCkBAIC0yMjEzLDIxICsyMjEzLDIxIEBAIFdlYlNXT3Jp
Z2luU3RvcmUqIE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9u
KFBBTDo6U2Vzc2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3Jl
Jj4oc3dTZXJ2ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCi1XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKQogewotICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25z
LmdldChzZWN1cml0eU9yaWdpbik7CisgICAgcmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbnMuZ2V0KHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIE9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPiBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOwogICAgIGlmIChzZXNzaW9u
SUQpCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihzZWN1cml0eU9yaWdpbiwgKnNlc3Npb25JRCks
IDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9u
SUQpLCAwKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhzZWN1cml0eU9yaWdpbiksIDApOworICAgICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MocmVn
aXN0cmFibGVEb21haW4pLCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNz
YWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKQEAgLTIyNjAsMTggKzIyNjAsMTggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24m
IGNvbm5lY3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5v
TG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQorICAgIGF1dG8mIHJl
Z2lzdHJhYmxlRG9tYWluID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBu
byBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwogICAgIHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24udGVybWluYXRlKCk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1f
c3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JP
cmlnaW5Bc1Rlcm1pbmF0ZWQoc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBzd1NlcnZlci0+bWFy
a0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURv
bWFpbik7CiAgICAgCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xv
c2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlP
cmlnaW4pOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggOGI5NGJkNzE3MWM5M2RkMzFhNThmMTJlZDM1ODUw
NDhkMmZlY2I5Yi4uNjAwZjFjMTZlNzZlOTllNzY4ZDQxOWQ5MDFkOTI2MjIxNmE1OGNjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjg3
LDggKzI4Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYpOwotICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwor
ICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAgICAK
ICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
KTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYpOwpAQCAtMzcwLDcgKzM3MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5k
bGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYpOworICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
Ym9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
KTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2Us
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNz
aW9uSUQpOwogICAgIFdlYlNXT3JpZ2luU3RvcmUqIGV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNl
c3Npb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwotICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYp
IGNvbnN0OworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKIAog
ICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFN0cmluZyYg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CiAjZW5kaWYKQEAgLTUxMSw3ICs1MTEsNyBAQCBwcml2YXRlOgogICAgIExv
Y2sgbV9zdG9yYWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUmVmUHRyPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4g
bV9zd0RhdGFiYXNlUGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZTY4MDg2MGNlMDBjNzYyYzQz
NTY2NTM0MjNlMWJkYjBkY2Y1ODViLi5lNjE1MjRjZDI1MWQ4ZjY0MzI1NjRhYTYyMTNlOWVlMDk5
MTlkYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhzdHJ1Y3QgV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgIyBDcmVhdGVzIGEgY29ubmVjdGlvbiBmb3IgY29t
bXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcwotICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4pCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikKIAogI2lmIFVTRShTT1VQKQogICAgIFNldEln
bm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYTQ5NTM1YmE5MjI2YTZmNGZhMmRjY2ZmNTNlMDM5MjNi
ZDNiOTQ0OS4uODhkNTE3NjJhYTA0ZjY4NDc0OGZiNzA0NzVjZGM3NzkzZjhmZjBjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF3b3JrZXIt
PmNvbnRleHRDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jcmVh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSwgc2Vy
dmVyKCkuc2Vzc2lvbklEKCkpOworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRl
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHNl
cnZlcigpLnNlc3Npb25JRCgpKTsKIAogICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2Vy
SWZOZWNlc3Nhcnkoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCB0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyks
IGZvcm1EYXRhID0gV1RGTW92ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJl
cildKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghZGVzdGluYXRpb25Xb3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCkp
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oZGVzdGluYXRpb25Xb3JrZXItPnNlY3VyaXR5T3JpZ2luKCksIHNlcnZlcigpLnNlc3Npb25J
RCgpKTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbihkZXN0aW5hdGlvbldvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSwgc2VydmVyKCku
c2Vzc2lvbklEKCkpOwogCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtl
ciBjYW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3Zl
ZCkKICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBbZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgc291cmNlRGF0YSA9IFdURk1vdmUoKnNvdXJjZURhdGEpXShhdXRvKiBjb250ZXh0Q29u
bmVjdGlvbikgbXV0YWJsZSB7CkBAIC0yMzQsOSArMjM0LDkgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGQKIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIo
U2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewotICAgIGF1dG8gc2VjdXJpdHlPcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoam9iRGF0YS5zY3JpcHRVUkwpOwotICAg
IGlmICghbV9uZXR3b3JrUHJvY2Vzcy0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdp
bihzZWN1cml0eU9yaWdpbikpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4sIHNlcnZlcigpLnNlc3Npb25JRCgp
KTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbihqb2JEYXRhLnNjcmlw
dFVSTCk7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzLT5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxl
RG9tYWluLCBzZXJ2ZXIoKS5zZXNzaW9uSUQoKSk7CiAKICAgICBTV1NFUlZFUkNPTk5FQ1RJT05f
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiU2NoZWR1bGluZyBTZXJ2aWNlV29ya2VyIGpvYiAlcyBp
biBzZXJ2ZXIiLCBqb2JEYXRhLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIoKSA9PSBqb2JEYXRhLmNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCBlYTA0M2E5YjQ0NWJhZDRhNTUyNTUxNjhmZGFhZmFhNmEwMTJiNTM5
Li4zNzUyZTU2OTcyMTBmNzFjNTFjNTczZWRlOTg1MjkwNzI0ZjdlMDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzksOCAr
MzksOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24p
Ci0gICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4pCitXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQor
ICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKQogICAg
ICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDI1NWQyN2MyMTMyYTE3MDc4YzBiYjI3ZjVmYmY3
NDUzNTZkNTZlODUuLjgyOTA1ZWFjNjRhYzNlYmVmYzUxNDczZWI0ZGU0MjFiOWJiODJhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoVGFza01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGE1NmQxMGZmOGMyMzNiMzI1ZTFhMzZhNDYyYjFkZTNlNGQ3
MjA0M2IuLjkwZDc0ZTViNmM3MmNhNWI1ZGMyMmE2YWQ1ZjIzM2Y0NDc1NmFlZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTM2LDE1ICsxMzYsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKICAg
ICB9CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKLSAgICBTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW47CisgICAgUmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW47CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7CiAgICAgICAgIGlz
U2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICBzZWN1cml0eU9yaWdpbiA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQcm94eSkuc2VjdXJp
dHlPcmlnaW4oKTsKKyAgICAgICAgcmVnaXN0cmFibGVEb21haW4gPSBkb3duY2FzdDxTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLnJlZ2lzdHJhYmxlRG9tYWluKCk7
CiAgICAgfQogI2VuZGlmCiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzLCBzZWN1cml0eU9yaWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBjb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyhpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCByZWdpc3RyYWJsZURvbWFpbiksIDAs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKIH0KIAogRG93bmxvYWRQcm94eSogTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTEx
NzgsMTQgKzExNzgsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoU2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3JpZ2luKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbikKIHsKLSAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShvcmlnaW4pLCBXVEY6
Om51bGxvcHQpOworICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
V1RGOjpudWxsb3B0KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24o
U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
KnRoaXMsIFdURk1vdmUob3JpZ2luKSwgc2Vzc2lvbklEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAppbmRleCAxZWUzMDY5MTIxOTMzYmNmMGFmZWRjMWQ3OGRhMzM5MmU3OThhNWIxLi5mZTUxYTA3
MDYwMDQyMGIyMTExM2Q5ZjE4YzJjYjAzN2ZmYWM5MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjI1LDgg
KzIyNSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7Ci0gICAgdm9pZCBlc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJl
cXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ5OWFjODcwZWZiMTAxNjI4
YWM2N2RjZDU1M2Y3ZDQ1MDQ0YTYyY2YuLjU2Mzg4OWJkOGY2OGYxN2M0NjUyZWE0OWI4MTZmYzMz
Njc3ZGJhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYwLDggKzYwLDgg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBvcmlnaW4pCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgb3JpZ2luLCBQQUw6OlNlc3Npb25JRCBleHBsaWNpdFNlc3Npb24pCisgICAgRXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQorICAgIEVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgZXhw
bGljaXRTZXNzaW9uKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVp
bnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJl
ZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
NWJjZGE2M2E4NmIwZTFmOGU5NjQ2MTk0MzA5OTI2Y2JhNTFmMmQxNy4uZmE4YzQ5MDVkNWY1M2Fm
ZGI3NjE5OWE2NWQzNTllMTI5N2NiN2JiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTQzLDE2ICs0MywxNiBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0
ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCitSZWY8U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29s
JiBwb29sLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHN0b3JlKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwgc3RvcmUgfSk7
CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSB7IHBvb2wsIHJlZ2lzdHJhYmxlRG9tYWluLCBzdG9yZSB9KTsKICAgICBwcm94eS0+Y29ubmVj
dCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KIAotU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUp
CitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdl
YlByb2Nlc3NQb29sJiBwb29sLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQogICAgIDogV2ViUHJvY2Vzc1Byb3h5IHsg
cG9vbCwgc3RvcmUsIElzUHJld2FybWVkOjpObyB9Ci0gICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFp
bikKICAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJRChnZW5lcmF0ZVBhZ2VJRCgpKQogewogfQpA
QCAtNzIsNyArNzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5j
aE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJgogICAgIFdlYlByb2Nlc3NQ
cm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKIAogICAgIGxhdW5jaE9wdGlv
bnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIl9z
LCAiMSJfcyk7Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQo
InNlY3VyaXR5LW9yaWdpbiJfcywgc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICBs
YXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9t
YWluIl9zLCByZWdpc3RyYWJsZURvbWFpbigpLnN0cmluZygpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
NzgzY2UwOWNiNmU1OTEyM2I2ZWFmYzkzMmQxMTA4OGQzNTRiOWQzZi4uNmY3NTllOWZmNDVmZDVh
ZmNlMjczYmFlYjNmMDVkYmQ2YTA5Zjc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IGZpbmFsIDog
cHVibGljIFdlYlByb2Nlc3NQcm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICB+
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBt
X3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CkBAIC01OSw5ICs1OSw5IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlBy
b2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2Vic2l0ZURh
dGFTdG9yZSYpOworICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wm
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsK
IAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBtX3NlY3VyaXR5T3JpZ2luOworICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CiAgICAgdWlu
dDY0X3QgbV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFhYzUyYWEyMjUwMTUxNDQ0ZGVmYjBk
ZDY2YzAzYWRiY2MyZDcyM2IuLjEzNDEzNWJhNTY1ZGFlZTVlOGMwNjM0ODU5OGI1YmIwYjYzNmI3
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY2
NiwxMSArNjY2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94CiB9CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHks
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBPcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gc2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNl
c3Npb25JRD4gc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9VTlVTRUQocHJveHksICZwcm94eSA9
PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKIAotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4pKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKQEAgLTY4OCw4
ICs2ODgsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAg
IGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6OmNyZWF0ZSgqdGhpcywgc2VjdXJpdHlPcmlnaW4sICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAg
ICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHJl
Z2lzdHJhYmxlRG9tYWluLCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5wdHIoKSk7CiAKICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAg
IGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksICp3ZWJz
aXRlRGF0YVN0b3JlKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4o
KnByb2Nlc3MpKSB7Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLnRha2UoZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnBy
b2Nlc3MpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHk+KCpwcm9jZXNzKS5yZWdpc3RyYWJsZURvbWFpbigpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MgPT0gcHJvY2Vzcyk7CiAgICAg
ICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgfQpAQCAtMjA3MSw5ICsyMDcxLDkg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAg
ICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9mb3JlZ3JvdW5k
V2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNh
biBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAg
ICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgc2VjdXJpdHlP
cmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
Y29udGFpbnMoc2VjdXJpdHlPcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBtX2ZvcmVncm91
bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChzZWN1cml0eU9yaWdpbiwgc2Vy
dmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgICAgICAgICAgICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtl
clByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Zv
cmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5hZGQocmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwODEsOSArMjA4MSw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fYmFja2dyb3VuZFdl
YlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4g
ZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAg
ICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5T3Jp
Z2luID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNv
bnRhaW5zKHNlY3VyaXR5T3JpZ2luKSkKLSAgICAgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5k
VG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICAgICAgICAgICAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9iYWNr
Z3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJs
ZURvbWFpbikpCisgICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAzZDJiNTk4ZWZiMDlmMjRmNGI2Zjg5YzBjM2YyZjcyN2Jj
MjQ5M2JjLi5mZDFhOGU0MDdlZWU0OWUxZTZjMzgxOGE0ZTdhNTE1NWZjN2M0MDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM1Nyw5ICszNTcsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHkmJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
dm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0
d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBPcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4pOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwogICAgIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHVp
bnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtlclBy
b3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KKyAgICBj
b25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRp
ZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTU4Niw3ICs1ODYsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsg
bnVsbHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2Vy
dmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
OwogICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29y
a2VyIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CkBAIC03NDcsOCArNzQ3LDggQEAgcHJpdmF0
ZToKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2ZvcmVn
cm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYmFja2dyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9m
b3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICBIYXNoTWFwPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUHJvY2Vzc1Rocm90dGxl
cjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4+IG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VX
b3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRv
a2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA2OGQ1N2U0ZWEwOTkyOTQzZDIzODlmNjZh
OWJiY2I0OTEzZGI5ODVhLi5mMTc1ODRhMTc4OTBmZjgxMmZlZjJhZGYwZTc5Nzg5NGJmZjM5YTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaWYgUExBVEZPUk0o
TUFDKQogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2VuZGlmCkBAIC01
MDAsNyArNTAxLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsgSW5z
cGVjdG9yLCBTZXJ2aWNlV29ya2VyLCBQcmV3YXJtZWRXZWJDb250ZW50LCBDYWNoZWRXZWJDb250
ZW50LCBXZWJDb250ZW50IH07CiAgICAgUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFByb2Nl
c3NUeXBlOjpXZWJDb250ZW50IH07CiAgICAgU3RyaW5nIG1fdWlQcm9jZXNzTmFtZTsKLSAgICBT
dHJpbmcgbV9zZWN1cml0eU9yaWdpbjsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
X3JlZ2lzdHJhYmxlRG9tYWluOwogI2VuZGlmCiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlVzZXJH
ZXN0dXJlVG9rZW4gKiwgdWludDY0X3Q+IG1fdXNlckdlc3R1cmVUb2tlbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA4Mzhm
ZTZlMzBhZjNjMDU3YzRkOTNkZDEwNzIyZDU3NzM1ZmUxNDk5Li5lNjBmZGFkOTc1OWFkZDM4ZDZl
MWE4MzcwZjJmY2Q2OTBlMDgxODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKCkKICAgICAgICAgYXBwbGljYXRpb25OYW1lID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIEluc3BlY3RvciIs
ICJWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1l
bnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKW1fdWlQcm9jZXNzTmFt
ZV07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXI6
Ci0gICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldF
Ql9VSV9TVFJJTkcoIiVAIFNlcnZpY2UgV29ya2VyICglQCkiLCAiVmlzaWJsZSBuYW1lIG9mIFNl
cnZpY2UgV29ya2VyIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFt
ZS4iKSwgKE5TU3RyaW5nICopbV91aVByb2Nlc3NOYW1lLCAoTlNTdHJpbmcgKiltX3NlY3VyaXR5
T3JpZ2luXTsKKyAgICAgICAgYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6V0VCX1VJX1NUUklORygiJUAgU2VydmljZSBXb3JrZXIgKCVAKSIsICJWaXNpYmxlIG5h
bWUgb2YgU2VydmljZSBXb3JrZXIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKiltX3VpUHJvY2Vzc05hbWUsIChOU1N0cmluZyAqKW1f
cmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCldOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBy
b2Nlc3NUeXBlOjpQcmV3YXJtZWRXZWJDb250ZW50OgogICAgICAgICBhcHBsaWNhdGlvbk5hbWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVu
dCAoUHJld2FybWVkKSIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJn
dW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKW1fdWlQcm9jZXNz
TmFtZV07CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZWxzZSBpZiAocGFyYW1ldGVycy5leHRyYUluaXRp
YWxpemF0aW9uRGF0YS5nZXQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MpID09ICIxIikgewog
ICAgICAgICBtX3Byb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXI7Ci0gICAg
ICAgIG1fc2VjdXJpdHlPcmlnaW4gPSBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmdldCgic2VjdXJpdHktb3JpZ2luIl9zKTsKKyAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcocGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInJlZ2lzdHJhYmxl
LWRvbWFpbiJfcykpOwogICAgIH0KICNlbmRpZgogICAgIGVsc2UgaWYgKHBhcmFtZXRlcnMuZXh0
cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJpcy1wcmV3YXJtZWQiX3MpID09ICIxIikKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNGNkYTNiNTEw
NTM0MzI1OWNlMGRmMzgwY2Q5MTMwYzkxZTJmMGNkLi5lZjZkZjIyN2Y5MDE1NmY4ZjgzMTg2NTYy
MmFmYTgzMmJjN2Q3ZDk4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDMtMTIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBTZXJ2aWNlV29ya2VyIHByb2Nlc3MgcGVy
IHJlZ2lzdHJhYmxlIGRvbWFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1NjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIwMTkt
MDMtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEZXZpY2Ug
T3JpZW50YXRpb24gYWNjZXNzIHBlcm1pc3Npb24gc2hvdWxkIGJlIGRlbmllZCB1bmxlc3MgZXhw
bGljaXRseSBncmFudGVkIGJ5IHRoZSBjbGllbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXgg
ZmU1YzNlZDZjODcwNmEwZjJmYzM1ODlmNDhiZDM1NGI4Yjc3ZGM5MC4uOWFjODg2OWUwNGRhMmM5
YmRmY2E4ZTY3NmRmNjU4NjdkZWQ1OTM1YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTE0
NTAsNyArMTQ1MCw3IEBAIHZvaWQgd2FpdFVudGlsU2VydmljZVdvcmtlclByb2Nlc3NDb3VudChX
S1Byb2Nlc3NQb29sICpwcm9jZXNzUG9vbCwgdW5zaWduZWQgcHJvCiAgICAgfSB3aGlsZSAodHJ1
ZSk7CiB9CiAKLVRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJPcmlnaW4pCitURVNUKFNl
cnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyU2l0ZSkKIHsKICAgICBBU1NFUlQobWFpbkJ5dGVzKTsK
ICAgICBBU1NFUlQoc2NyaXB0Qnl0ZXMpOwpAQCAtMTQ3Miw2ICsxNDcyLDggQEAgVEVTVChTZXJ2
aWNlV29ya2VycywgUHJvY2Vzc1Blck9yaWdpbikKICAgICBSZXRhaW5QdHI8U1dTY2hlbWVzPiBo
YW5kbGVyMSA9IGFkb3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKICAgICBoYW5kbGVy
MS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBA
InRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKICAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgi
c3cxOi8vaG9zdC9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIsIHNjcmlwdEJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6Ly9o
b3N0Mi9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9
KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdDIvc3cuanMiLCBSZXNv
dXJjZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKICAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVS
TFNjaGVtZTpAInN3MSJdOwogCiAgICAgUmV0YWluUHRyPFNXU2NoZW1lcz4gaGFuZGxlcjIgPSBh
ZG9wdE5TKFtbU1dTY2hlbWVzIGFsbG9jXSBpbml0XSk7CkBAIC0xNTEyLDEwICsxNTE0LDE5IEBA
IFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJPcmlnaW4pCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKKyAgICBFWFBFQ1RfRVEo
MVUsIHByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKKworICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXc0ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QzID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3MTovL2hvc3QyL21h
aW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldzQgbG9hZFJlcXVlc3Q6cmVxdWVzdDNdOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKICAg
ICBFWFBFQ1RfRVEoMlUsIHByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsK
IAogICAgIE5TVVJMUmVxdWVzdCAqYWJvdXRCbGFua1JlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07Ci0gICAg
W3dlYlZpZXczIGxvYWRSZXF1ZXN0OmFib3V0QmxhbmtSZXF1ZXN0XTsKKyAgICBbd2ViVmlldzQg
bG9hZFJlcXVlc3Q6YWJvdXRCbGFua1JlcXVlc3RdOwogCiAgICAgd2FpdFVudGlsU2VydmljZVdv
cmtlclByb2Nlc3NDb3VudChwcm9jZXNzUG9vbCwgMSk7CiAgICAgRVhQRUNUX0VRKDFVLCBwcm9j
ZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CkBAIC0xNTI1LDYgKzE1MzYsNyBA
QCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyT3JpZ2luKQogICAgIEVYUEVDVF9FUSgx
VSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogCiAgICAgW3dlYlZp
ZXcxIGxvYWRSZXF1ZXN0OmFib3V0QmxhbmtSZXF1ZXN0XTsKKyAgICBbd2ViVmlldzMgbG9hZFJl
cXVlc3Q6YWJvdXRCbGFua1JlcXVlc3RdOwogICAgIHdhaXRVbnRpbFNlcnZpY2VXb3JrZXJQcm9j
ZXNzQ291bnQocHJvY2Vzc1Bvb2wsIDApOwogICAgIEVYUEVDVF9FUSgwVSwgcHJvY2Vzc1Bvb2wu
X3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364566</attachid>
            <date>2019-03-13 13:25:09 -0700</date>
            <delta_ts>2019-03-13 13:51:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195649-20190313132508.patch</filename>
            <type>text/plain</type>
            <size>59354</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjVjYTVmMDUxMjg5
ZjkxMjExYzBhYzRmMDI0ZmEwZmJiNTRmZS4uZjQyZDk1MWQ1OGRhYTUxNTU1MTZlZWJmNWI5NzZi
MjY2YzhjYzZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTAzLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgU2VydmljZVdvcmtl
ciBwcm9jZXNzIHBlciByZWdpc3RyYWJsZSBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgVXNlIGEgU2VydmljZVdvcmtlciBwcm9jZXNzIHBlciBy
ZWdpc3RyYWJsZSBkb21haW4gaW5zdGVhZCBvZiBvbmUgcGVyIHNlY3VyaXR5IG9yaWdpbi4gVGhp
cyBpcworICAgICAgICBtb3JlIGluIGxpbmUgd2l0aCBQU09OIGFuZCBhdm9pZHMgbGF1bmNoaW5n
IHRvbyBtYW55IHByb2Nlc3Nlcy4KKworICAgICAgICAqIHBhZ2UvQ2xpZW50T3JpZ2luLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGllbnRPcmlnaW46OmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluIGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFi
bGVEb21haW5Bc1Rlcm1pbmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisKIDIwMTktMDMtMTMgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFnZ3JlZ2F0ZUxvZ2dlciwgYSBM
b2dnZXIgc3BlY2lhbGl6YXRpb24gZm9yIHNpbmdsZXRvbiBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBh
ODZlMTE2NThhMzQyY2E1ZWVlYWI0ZGY4ZWYyYjI0NDUxZTY1Mjg2Li4xMWU1ZDNjYTU1N2IwNGMz
NWI4ODkzYjg0OWQ2M2RiZjI5MGZhNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5
LTAzLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEg
U2VydmljZVdvcmtlciBwcm9jZXNzIHBlciByZWdpc3RyYWJsZSBkb21haW4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTY0OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXNlIGEgU2VydmljZVdvcmtlciBw
cm9jZXNzIHBlciByZWdpc3RyYWJsZSBkb21haW4gaW5zdGVhZCBvZiBvbmUgcGVyIHNlY3VyaXR5
IG9yaWdpbi4gVGhpcyBpcworICAgICAgICBtb3JlIGluIGxpbmUgd2l0aCBQU09OIGFuZCBhdm9p
ZHMgbGF1bmNoaW5nIHRvbyBtYW55IHByb2Nlc3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4dENv
bm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBs
aWNpdFNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisKIDIwMTktMDMtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBEcm9wIGxlZ2FjeSBXZWJDb3JlOjp0b1JlZ2lzdHJhYmxlRG9tYWlu
KCkgdXRpbGl0eSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGll
bnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggZWJj
MTNkNTFjNWU1Y2Y1MGQwN2UzZGIwODVkYjEzY2NlMjg1ZWMzOC4uZDEyNmZlNzdjMDQ4NDBkYzY3
MWI0MGE5MTZhNTY5ZjVlODhmZjU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
bGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUmVnaXN0cmFibGVE
b21haW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQzLDYgKzQ0LDggQEAgc3Ry
dWN0IENsaWVudE9yaWdpbiB7CiAgICAgQ2xpZW50T3JpZ2luIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogICAgIGJvb2wgaXNSZWxhdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIHRvcE9yaWdpbiA9PSBvdGhlciB8fCBjbGllbnRPcmlnaW4gPT0gb3RoZXI7
IH0KIAorICAgIFJlZ2lzdHJhYmxlRG9tYWluIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkgY29u
c3QgeyByZXR1cm4gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGNs
aWVudE9yaWdpbi5ob3N0KTsgfQorCiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbjsK
ICAgICBTZWN1cml0eU9yaWdpbkRhdGEgY2xpZW50T3JpZ2luOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZGYyYjhl
ZTI0NTM1YTYyMjM5ODA4OTI3NjI4YWFmN2NlMDFmMWQ4NC4uNGY2NzBiMzM1YTlkZDhjZjZiODk2
M2FmYjkyYjM4Y2ZmM2JlZTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUxMCwxMCArNTEwLDEwIEBAIHZvaWQgU1dT
ZXJ2ZXI6OnVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBqCiAKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogewotICAgIGF1dG8gc2VjdXJpdHlPcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1
dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25G
b3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pOwogICAgIGlmICghY29ubmVjdGlvbikgewotICAgICAgICBtX3BlbmRp
bmdDb250ZXh0RGF0YXMuZW5zdXJlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBbXSB7CisgICAg
ICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIFtdIHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHRE
YXRhPiB7IH07CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTUyNCwxMSArNTI0LDExIEBAIHZvaWQgU1dTZXJ2ZXI6
OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQog
CiB2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8gcGVu
ZGluZ0NvbnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKGNvbnRleHRDb25u
ZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9
IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxl
RG9tYWluKCkpOwogICAgIGZvciAoYXV0byYgZGF0YSA6IHBlbmRpbmdDb250ZXh0RGF0YXMpCiAg
ICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtl
clJ1blJlcXVlc3RzID0gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMudGFrZShjb250ZXh0Q29u
bmVjdGlvbi5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1
ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoY29udGV4dENvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtl
clJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIo
aXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKQEAg
LTU4MCw3ICs1ODAsNyBAQCB2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nh
cnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUgogICAgIH0KIAogICAgIGlm
ICghY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgYXV0byYgc2VydmljZVdvcmtlclJ1blJl
cXVlc3RzRm9yT3JpZ2luID0gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMuZW5zdXJlKHdvcmtl
ci0+c2VjdXJpdHlPcmlnaW4oKSwgW10geworICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyUnVu
UmVxdWVzdHNGb3JPcmlnaW4gPSBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy5lbnN1cmUod29y
a2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gSGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFj
az4+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBzZXJ2aWNlV29y
a2VyUnVuUmVxdWVzdHNGb3JPcmlnaW4uZW5zdXJlKGlkZW50aWZpZXIsIFsmXSB7CkBAIC02NTQs
MTEgKzY1NCwxMSBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbChTV1Nl
cnZlcldvcmtlciYgd29ya2VyLCBUZXJtaW5hdGlvbk1vZGUgbQogICAgIH07CiB9CiAKLXZvaWQg
U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFNXU2VydmVyOjptYXJrQWxsV29y
a2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB0
ZXJtaW5hdGVkV29ya2VyczsKICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVy
bWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICh3b3JrZXItPnNlY3VyaXR5
T3JpZ2luKCkgPT0gc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIGlmICh3b3JrZXItPnJlZ2lzdHJh
YmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4pCiAgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9p
ZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNs
aWVudE9yaWdpbiwgU2VydmljZVcKIAogICAgIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luLnRl
cm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBudWxscHRyOwogCi0gICAgbV9jbGllbnRzQnlT
ZWN1cml0eU9yaWdpbi5lbnN1cmUoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbiwgW10geworICAg
IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5zdXJlKGNsaWVudE9yaWdpbi5jbGllbnRS
ZWdpc3RyYWJsZURvbWFpbigpLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoU2V0PFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChj
bGllbnRJZGVudGlmaWVyKTsKIApAQCAtNzc5LDYgKzc3OSw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXCiAKIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKQogeworICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21h
aW4gPSBjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKTsKKwogICAgIGJvb2wg
d2FzUmVtb3ZlZCA9IG1fY2xpZW50c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAg
IEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CiAKQEAgLTc4OSw5ICs3OTEs
MTAgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBjbGllbnRJZGVudGlmaWVycy5yZW1v
dmVGaXJzdE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgaWRlbnRpZmllcikgewogICAgICAgICBy
ZXR1cm4gY2xpZW50SWRlbnRpZmllciA9PSBpZGVudGlmaWVyOwogICAgIH0pOworCiAgICAgaWYg
KGNsaWVudElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWl0ZXJhdG9y
LT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAgaXRlcmF0b3It
PnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRp
bWVyPihbY2xpZW50T3JpZ2luLCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJt
aW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVu
dE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZl
Y3RvcjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9y
aWdpbigpID09IGNsaWVudE9yaWdpbikKQEAgLTgwMCw4ICs4MDMsOCBAQCB2b2lkIFNXU2VydmVy
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVu
dE9yaWdpbiwgUwogICAgICAgICAgICAgZm9yIChhdXRvKiB3b3JrZXIgOiB3b3JrZXJzVG9UZXJt
aW5hdGUpCiAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwogCi0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3Jp
Z2luLmNsaWVudE9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGll
bnRPcmlnaW4uY2xpZW50T3JpZ2luKSkKKyAgICAgICAgICAgIGlmICghbV9jbGllbnRzQnlSZWdp
c3RyYWJsZURvbWFpbi5jb250YWlucyhjbGllbnRSZWdpc3RyYWJsZURvbWFpbikpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9u
Z2VyQmVOZWVkZWQoKTsKICAgICAgICAgICAgIH0KIApAQCAtODEwLDEyICs4MTMsMTIgQEAgdm9p
ZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJzVGltZXItPnN0YXJ0T25lU2hvdChtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPyAwX3MgOiB0ZXJtaW5hdGlvbkRlbGF5KTsKICAg
ICB9CiAKLSAgICBhdXRvIGNsaWVudHNCeVNlY3VyaXR5T3JpZ2luSXRlcmF0b3IgPSBtX2NsaWVu
dHNCeVNlY3VyaXR5T3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbik7Ci0gICAg
QVNTRVJUKGNsaWVudHNCeVNlY3VyaXR5T3JpZ2luSXRlcmF0b3IgIT0gbV9jbGllbnRzQnlTZWN1
cml0eU9yaWdpbi5lbmQoKSk7Ci0gICAgYXV0byYgY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luID0g
Y2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvci0+dmFsdWU7Ci0gICAgY2xpZW50c0ZvclNl
Y3VyaXR5T3JpZ2luLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICBpZiAoY2xpZW50c0Zv
clNlY3VyaXR5T3JpZ2luLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jbGllbnRzQnlTZWN1cml0eU9y
aWdpbi5yZW1vdmUoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvcik7CisgICAgYXV0byBj
bGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yID0gbV9jbGllbnRzQnlSZWdpc3RyYWJs
ZURvbWFpbi5maW5kKGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBBU1NFUlQoY2xpZW50
c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciAhPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9t
YWluLmVuZCgpKTsKKyAgICBhdXRvJiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGll
bnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRzRm9yUmVn
aXN0cmFibGVEb21haW4ucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmIChjbGllbnRz
Rm9yUmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudHNCeVJlZ2lz
dHJhYmxlRG9tYWluLnJlbW92ZShjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yKTsK
IAogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVudFRvQ29udHJvbGxpbmdS
ZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAocmVnaXN0cmF0aW9u
SXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmVuZCgpKQpAQCAt
ODI3LDkgKzgzMCw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGllbnRUb0Nv
bnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7CiB9CiAK
LWJvb2wgU1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdAorYm9vbCBTV1Nl
cnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAogewotICAg
IHJldHVybiBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2lu
KTsKKyAgICByZXR1cm4gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25S
ZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggY2E1
MWI5YmQzZDBmYjcwNWI0MWM2N2E1YmI2YzdiNTA3MjIwZTk2Yy4uMDMyOGI3NDc1ODdjNmJiYmUw
YWFkMmM1MTc3N2VlMTY4YjMyMzU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChjb25zdCBDbGllbnRPcmlnaW4m
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciogYWN0aXZlV29ya2Vy
RnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1p
bmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBtYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb25u
ZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CkBA
IC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3Jp
Z2luc1dpdGhSZWdpc3RyYXRpb25zKEZ1bmN0aW9uPHZvaWQoY29uc3QgSGFzaFNldDxTZWN1cml0
eU9yaWdpbkRhdGE+Jik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikg
Y29uc3Q7CiAKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkoKSB7IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25E
ZWxheSA9IHRydWU7IH0KIApAQCAtMjE3LDcgKzIxNyw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNo
TWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U1dTZXJ2ZXJXb3JrZXI+PiBtX3J1bm5p
bmdPclRlcm1pbmF0aW5nV29ya2VyczsKIAotICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRh
LCBIYXNoU2V0PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPj4gbV9jbGllbnRzQnlTZWN1
cml0eU9yaWdpbjsKKyAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0PFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPj4gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbjsK
ICAgICBzdHJ1Y3QgQ2xpZW50cyB7CiAgICAgICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gaWRlbnRpZmllcnM7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4g
dGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lcjsKQEAgLTIyOSw4ICsyMjksOCBAQCBwcml2YXRl
OgogCiAgICAgVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZ2lzdHJhdGlvblN0b3JlPiBtX3JlZ2lzdHJhdGlvblN0b3JlOwotICAg
IEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHRE
YXRhPj4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwotICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5E
YXRhLCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBWZWN0b3I8UnVuU2VydmljZVdv
cmtlckNhbGxiYWNrPj4+IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzOworICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+PiBtX3Bl
bmRpbmdDb250ZXh0RGF0YXM7CisgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFj
az4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNzBj
YWYyZjkyYjE0YWM2MzAyYTZhZTQyYzQ2ZDNkYjFmYzcxZTA1ZC4uNDU5YjFlMjVjYzQ4Mjk4ZWRh
NDlkMGNjMWU5ZjhlYzI1NDc2ZDViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcApAQCAtMzksMjkgKzM5LDI5IEBAIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkCiAg
ICAgcmV0dXJuIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKQorc3RhdGljIEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxD
b25uZWN0aW9uc0J5UmVnaXN0cmFibGVEb21haW4oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKj4+IGNvbm5lY3Rpb25zQnlPcmlnaW47CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+PiBj
b25uZWN0aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25uZWN0aW9uc0J5T3JpZ2luOwogfQog
Ci1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogICAgIDogbV9pZGVudGlmaWVyKGdlbmVy
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fc2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdp
bigpLmFkZChtX3NlY3VyaXR5T3JpZ2luLCB0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsbENv
bm5lY3Rpb25zQnlSZWdpc3RyYWJsZURvbWFpbigpLmFkZChtX3JlZ2lzdHJhYmxlRG9tYWluLCB0
aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQog
CiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92
ZShtX3NlY3VyaXR5T3JpZ2luKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlS
ZWdpc3RyYWJsZURvbWFpbigpLnJlbW92ZShtX3JlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KQogewotICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KHNlY3VyaXR5T3Jp
Z2luKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNCeVJlZ2lzdHJhYmxlRG9tYWluKCkuZ2V0
KHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggZGY0ZjE3NWU1MWI2YThi
MmVmNDY0ZTk0NGRjYmMxNzA5OTk1OWIxNC4uMmI2MGYxZTcxOGJhNjNhNjBmZDk2Mjg5ZTgzMzFh
NWQ2NThiZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkRhdGEuaCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmll
ci5oIgpAQCAtNzYsMTggKzc2LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJl
c3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CiAKLSAgICBzdGF0aWMgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpOworICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmln
aW47CisgICAgUmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMjMzNzBkMmVjNGY5ZDIw
N2I3MWRiZDljN2NmMmY5MzI2Y2I4NzRhYy4uMmE0ZDViMDkwYzE0ODdjNDhhMTU5Y2FkODMzMDJl
YzI2MTQ3MzY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXQKICAgICAsIG1fc2NyaXB0KHNjcmlwdCkKICAgICAsIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAsIG1fcmVmZXJyZXJQb2xp
Y3koV1RGTW92ZShyZWZlcnJlclBvbGljeSkpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKG1f
ZGF0YS5zY3JpcHRVUkwpCiAgICAgLCBtX3NjcmlwdFJlc291cmNlTWFwKFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApKQogewogICAgIG1fZGF0YS5zY3JpcHRVUkwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CkBAIC05MiwxNCArOTMsOSBAQCBjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVy
V29ya2VyOjpvcmlnaW4oKSBjb25zdAogICAgIHJldHVybiAqbV9vcmlnaW47CiB9CiAKLWNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgU1dTZXJ2ZXJXb3JrZXI6OnNlY3VyaXR5T3JpZ2luKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gb3JpZ2luKCkuY2xpZW50T3JpZ2luOwotfQotCiBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbigpCiB7
Ci0gICAgcmV0dXJuIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihzZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4o
KSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggZTJmNzQ0
YmRjYmFhMjU0YzVjNWJiM2I4NmJjM2UzM2I1ZTlhNGI3ZC4uOTAwYTU5MDRhMTg0N2MzY2UxOGQ5
YTJlMDg5ZmU0NzY4M2JjNjkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRGF0YS5oIgpAQCAtMTA2LDcg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERh
dGEoKSBjb25zdDsKIAogICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OworICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb24oKTsK
ICAgICBTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CkBAIC0xMjUsNiArMTI2LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faGFzUGVuZGluZ0V2ZW50cyB7IGZhbHNlIH07CiAgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpOb3RSdW5uaW5nIH07CiAgICAgbXV0YWJsZSBPcHRpb25hbDxDbGllbnRP
cmlnaW4+IG1fb3JpZ2luOworICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21h
aW47CiAgICAgYm9vbCBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0IHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fd2hlbkFjdGl2YXRlZEhhbmRsZXJzOwogICAgIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBtX3Nj
cmlwdFJlc291cmNlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBkMTNkZmNhOGU2ZWQwNmZkOWU1ZmYyMzA4YTExODkzZDc2ZDQz
YWJkLi45MzdmMjg0MzhiODRiZWQ4MWUzNDk2Y2Y4MjIyY2VkMzRlMmI1MGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzc3LDcg
KzM3Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICAgICAgc3VwcGxlbWVudC0+aW5pdGlhbGl6ZUNv
bm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4pCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25u
ZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBs
YXRmb3JtQ29ubmVjdGlvbigpOwpAQCAtNDI5LDggKzQyOSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29y
a2VyUHJvCiAgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MgJiYgIW1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1Nl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvclNl
cnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgYXV0byBjb250ZXh0Q29u
bmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKCp0aGlzLCBz
ZWN1cml0eU9yaWdpbiwgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25uZWN0aW9u
KCkpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bnMuYWRkKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBjb250ZXh0Q29ubmVjdGlvbi5jb3B5UmVm
KCkpOworICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICAgICAgbV93YWl0
aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKQEAgLTQ0MCw3
ICs0NDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclBybwogICAgIH0KICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwotICAgIFVOVVNFRF9QQVJBTShzZWN1
cml0eU9yaWdpbik7CisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRp
ZgogfQogCkBAIC0yMTYwLDI0ICsyMTYwLDI0IEBAIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2Vk
KFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbikKIHsKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24tPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4g
PSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigpOwogICAgIAog
ICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CisgICAg
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwog
ICAgIAogICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKLSAg
ICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKHNlY3Vy
aXR5T3JpZ2luKTsKKyAgICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFi
bGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOwogICAgIAotICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKSB7
CisgICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0
IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAgICAgY3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV1RG
OjpudWxsb3B0KTsKICAgICB9CiB9CiAKLWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luKSBjb25zdAorYm9vbCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OmFueU9mKG1f
c3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJu
IHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICB9
KTsKIH0KIApAQCAtMjIxMywyMSArMjIxMywyMSBAQCBXZWJTV09yaWdpblN0b3JlKiBOZXR3b3Jr
UHJvY2Vzczo6ZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRAog
ICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8V2ViU1dPcmlnaW5TdG9yZSY+KHN3U2VydmVyLT5vcmln
aW5TdG9yZSgpKTsKIH0KIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3Jr
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBOZXR3b3JrUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsK
LSAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2VjdXJpdHlPcmln
aW4pOworICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3Ry
YWJsZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwg
T3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQog
ewogICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBs
aWNpdFNlc3Npb24oc2VjdXJpdHlPcmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKKyAgICAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhw
bGljaXRTZXNzaW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vzc2lvbklEKSwgMCk7CiAgICAgZWxz
ZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3Moc2VjdXJpdHlPcmlnaW4pLCAwKTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluKSwg
MCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
CkBAIC0yMjYwLDE4ICsyMjYwLDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikK
IHsKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKKyAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9
IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKKyAgICBpZiAo
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4pKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwg
dGVybWluYXRpbmcgaXQiKTsKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnRlcm1pbmF0
ZSgpOwogICAgIAogICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMo
KSkKLSAgICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVk
KHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yUmVn
aXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOwogICAgIAogICAg
IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY29ubmVjdGlvbkNsb3NlZCgpOwotICAgIG1fc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBtX3Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDhiOTRiZDcxNzFjOTNkZDMxYTU4ZjEyZWQzNTg1MDQ4ZDJmZWNiOWIuLjYwMGYx
YzE2ZTc2ZTk5ZTc2OGQ0MTlkOTAxZDkyNjIyMTZhNThjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI4Nyw4ICsyODcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKLSAgICB2b2lk
IGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgY3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CiAgICAgCiAgICAgV2ViQ29yZTo6U1dT
ZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdp
c3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKQEAgLTM3MCw3
ICszNzAsNyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7
Ci0gICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsKKyAgICB2
b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29y
a2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CiAKICAgICB2b2lkIGZl
dGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFdlYlNXT3JpZ2lu
U3RvcmUmIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICBXZWJT
V09yaWdpblN0b3JlKiBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEKSBjb25zdDsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKKyAgICBib29s
IG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICB2b2lkIGFkZFNlcnZp
Y2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2Vu
ZGlmCkBAIC01MTEsNyArNTExLDcgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fc3RvcmFnZVRhc2tN
dXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+PiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+PiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOwogICAgIGJvb2wgbV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
aG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2Ug
fTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRhYmFzZVBhdGhz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggZWU2ODA4NjBjZTAwYzc2MmM0MzU2NjUzNDIzZTFiZGIwZGNm
NTg1Yi4uZTYxNTI0Y2QyNTFkOGY2NDMyNTY0YWE2MjEzZTllZTA5OTE5ZGFiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBh
IFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29s
IGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgb3JpZ2luKQorICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4pCiAKICNpZiBVU0UoU09VUCkKICAgICBTZXRJZ25vcmVUTFNFcnJvcnMoYm9v
bCBpZ25vcmVUTFNFcnJvcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CmluZGV4IGE0OTUzNWJhOTIyNmE2ZjRmYTJkY2NmZjUzZTAzOTIzYmQzYjk0NDkuLjg4ZDUxNzYy
YWEwNGY2ODQ3NDhmYjcwNDc1Y2RjNzc5M2Y4ZmYwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmkKICAgICAgICAgfQogCiAgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlv
bigpKQotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbih3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCksIHNlcnZlcigpLnNlc3Npb25JRCgp
KTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpLCBzZXJ2ZXIoKS5zZXNzaW9uSUQo
KSk7CiAKICAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywg
ZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmb3JtRGF0YSA9IFdURk1v
dmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpXShhdXRvKiBjb250ZXh0
Q29ubmVjdGlvbikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIyMyw3ICsyMjMs
NyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IWRlc3RpbmF0aW9uV29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQotICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGRlc3RpbmF0aW9uV29y
a2VyLT5zZWN1cml0eU9yaWdpbigpLCBzZXJ2ZXIoKS5zZXNzaW9uSUQoKSk7CisgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oZGVzdGluYXRp
b25Xb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHNlcnZlcigpLnNlc3Npb25JRCgpKTsKIAog
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90IGJlIHJlLXJ1
biAoZS5nLiBpdHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQpCiAgICAgc2VydmVyKCku
cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW2Rlc3Rp
bmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZURhdGEg
PSBXVEZNb3ZlKCpzb3VyY2VEYXRhKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUg
ewpAQCAtMjM0LDkgKzIzNCw5IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAKIHZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiYgam9iRGF0YSkKIHsKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tVVJMKGpvYkRhdGEuc2NyaXB0VVJMKTsKLSAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MtPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4p
KQotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKHNlY3VyaXR5T3JpZ2luLCBzZXJ2ZXIoKS5zZXNzaW9uSUQoKSk7CisgICAgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oam9iRGF0YS5zY3JpcHRVUkwpOworICAgIGlmICgh
bV9uZXR3b3JrUHJvY2Vzcy0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgc2VydmVyKCku
c2Vzc2lvbklEKCkpOwogCiAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIlNjaGVkdWxpbmcgU2VydmljZVdvcmtlciBqb2IgJXMgaW4gc2VydmVyIiwgam9iRGF0
YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VS
VChpZGVudGlmaWVyKCkgPT0gam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
ZWEwNDNhOWI0NDViYWQ0YTU1MjU1MTY4ZmRhYWZhYTZhMDEyYjUzOS4uMzc1MmU1Njk3MjEwZjcx
YzUxYzU3M2VkZTk4NTI5MDcyNGY3ZTAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTM5LDggKzM5LDggQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKHNlY3VyaXR5T3JpZ2luKQorV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbikKICAgICAsIG1faXBjQ29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJv
Y2VzcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCAyNTVkMjdjMjEzMmExNzA3OGMwYmIyN2Y1ZmJmNzQ1MzU2ZDU2ZTg1Li44Mjkw
NWVhYzY0YWMzZWJlZmM1MTQ3M2ViNGRlNDIxYjliYjgyYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CiAgICAgfldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBkNjBkOGVlODI5ZmZiYzVhNWZiODJjZGJhODIwOGQ3Njk0OWJlYjk1Li4xYjQ2OTM3OGFm
ZDdhMmE4OGMyMDFkNGNkYWIzNDFhZjYxZTVmNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEzNiwx
NSArMTM2LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAgICAgfQogCiAgICAgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNl
Y3VyaXR5T3JpZ2luOworICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewogICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9j
ZXNzID0gdHJ1ZTsKLSAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBkb3duY2FzdDxTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAg
ICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4od2ViUHJvY2Vzc1Byb3h5KS5yZWdpc3RyYWJsZURvbWFpbigpOwogICAgIH0KICNlbmRpZgog
Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgc2Vj
dXJpdHlPcmlnaW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoaXNTZXJ2
aWNlV29ya2VyUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4pLCAwLCBJUEM6OlNlbmRPcHRpb246
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIERvd25s
b2FkUHJveHkqIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC0xMTc4LDE0ICsxMTc4LDE0IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7
Ci0gICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUob3JpZ2luKSwgV1RGOjpudWxsb3B0KTsKKyAgICBt
X3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIFdURjo6bnVsbG9wdCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFNlY3VyaXR5T3JpZ2luRGF0
YSYmIG9yaWdpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NG
b3JFeHBsaWNpdFNlc3Npb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKG9y
aWdpbiksIHNlc3Npb25JRCk7CisgICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCBzZXNzaW9uSUQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYjJmYmNhNWUy
OWQwYjE4ZjBmNjc0Mzc2ZDY2YTYyZjQwYjc0YjQxNS4uN2ZlNTRjYjhhNGE0ZjQ2M2NmM2RlNDdi
NDkxYTRiNTFlYTQ4ZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIyOCw4ICsyMjgsOCBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYpOwotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jik7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFM
OjpTZXNzaW9uSUQpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCA0OTlhYzg3MGVmYjEwMTYyOGFjNjdkY2Q1NTNmN2Q0NTA0
NGE2MmNmLi41NjM4ODliZDhmNjhmMTdjNDY1MmVhNDliODE2ZmMzMzY3N2RiYWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MCw4ICs2MCw4IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luKQot
ICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4
cGxpY2l0U2Vzc2lvbihzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbiwg
UEFMOjpTZXNzaW9uSUQgZXhwbGljaXRTZXNzaW9uKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbikKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIGV4cGxpY2l0U2Vzc2lvbikKICNl
bmRpZgogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWlu
dDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDViY2RhNjNhODZiMGUxZjhl
OTY0NjE5NDMwOTkyNmNiYTUxZjJkMTcuLmZhOGM0OTA1ZDVmNTNhZmRiNzYxOTlhNjVkMzU5ZTEy
OTdjYjdiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC00MywxNiArNDMsMTYgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wm
IHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVE
YXRhU3RvcmUmIHN0b3JlKQorUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9y
ZSkKIHsKLSAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5IHsgcG9vbCwgc2VjdXJpdHlPcmlnaW4sIHN0b3JlIH0pOworICAgIGF1dG8gcHJveHkg
PSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCByZWdpc3Ry
YWJsZURvbWFpbiwgc3RvcmUgfSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4g
cHJveHk7CiB9CiAKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQorU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9v
bCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0
YVN0b3JlJiBzdG9yZSkKICAgICA6IFdlYlByb2Nlc3NQcm94eSB7IHBvb2wsIHN0b3JlLCBJc1By
ZXdhcm1lZDo6Tm8gfQotICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAg
ICAsIG1fcmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pCiAgICAgLCBtX3NlcnZp
Y2VXb3JrZXJQYWdlSUQoZ2VuZXJhdGVQYWdlSUQoKSkKIHsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NM
YXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9w
dGlvbnMobGF1bmNoT3B0aW9ucyk7CiAKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgIjEiX3MpOwotICAgIGxh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJzZWN1cml0eS1vcmlnaW4i
X3MsIHNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7CisgICAgbGF1bmNoT3B0aW9ucy5leHRy
YUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgcmVnaXN0cmFi
bGVEb21haW4oKS5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIE9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDc4M2NlMDljYjZlNTkxMjNi
NmVhZmM5MzJkMTEwODhkMzU0YjlkM2YuLjZmNzU5ZTlmZjQ1ZmQ1YWZjZTI3M2JhZWIzZjA1ZGJk
NmEwOWY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5OwpAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAog
Y2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJQcm9jZXNz
UHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgflNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vy
cyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwpAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAot
ICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFp
bjsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtl
clBhZ2VJRDsgfQogCiBwcml2YXRlOgpAQCAtNTksOSArNTksOSBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKLSAgICBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsKKyAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVpbnQ2NF90IG1fc2VydmljZVdv
cmtlclBhZ2VJRCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCA0NGVlYTQ1Y2U1MzllNjllMDhhMWMwODVlZDhlZGZiZDM4YmY0OWM2
Li44YzEzOWQ0NDcyZjEzOWQ3MzQ4OTBhMWI3NzM4ZTM4YmEyMTdmNzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02NjYsMTEgKzY2NiwxMSBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiB3ZWJQcm9jZXNzUHJveAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBzZWN1cml0eU9yaWdpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25J
RCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vz
cy5nZXQoKSk7CiAKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNl
Y3VyaXR5T3JpZ2luKSkKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5z
KHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmNsZWFyKCk7CkBAIC02ODgsOCArNjg4LDggQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm8KICAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1w
dHkoKSkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpS
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzIHsgfSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMs
IHNlY3VyaXR5T3JpZ2luLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5wdHIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwg
KndlYnNpdGVEYXRhU3RvcmUpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkp
OwogCiAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICBpbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCAqd2Vic2l0ZURhdGFTdG9yZSk7CkBA
IC0xMTE1LDcgKzExMTUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKSkgewotICAg
ICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtl
KGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKS5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMudGFrZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vz
cykucmVnaXN0cmFibGVEb21haW4oKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBy
b2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOwogICAgICAgICB1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpOwogICAgIH0KQEAgLTIwNzEsOSArMjA3MSw5IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAgaWYgKCFtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVy
LnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHRoYW4g
dGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAgICAgICAgICAgZm9yIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1
ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmljZVdv
cmtlclByb2Nlc3MtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2Zv
cmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNlY3VyaXR5
T3JpZ2luKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNz
LT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAg
ICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3Ry
YWJsZURvbWFpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAg
ICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVy
KCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDgxLDkgKzIwODEsOSBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52
YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRo
aXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0
byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVz
KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICAgICAgICAgIGlmICghbV9iYWNr
Z3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9y
aWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAgICAg
YXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0cmFi
bGVEb21haW4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAg
ICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LmFkZChyZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
bV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggZWMzNDcxOGZiMDg5ZGM5Njc3ZWEzYjJhOGY4MjFjMjQ2ZDU0NTUwNS4uMmJlYzJmYzdi
NTNkZDExMGQ1MmU0NGQyYmYxYzE2NzkwMTM4MzAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNTcsOSArMzU3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
JiYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkm
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
KTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
T3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNv
bnN0OwotICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2
aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3Nl
czsgfQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2Vy
KGJvb2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2Vy
ID0gYWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VX
b3JrZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2Vydmlj
ZVdvcmtlcjsgfQogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCk7CkBAIC01ODksNyArNTg5LDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YlByb2Nlc3NQcm94eSogbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKICAgICBib29sIG1fd2Fp
dGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkgeyBmYWxzZSB9OwpAQCAtNzUwLDggKzc1MCw4IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vzc1Ro
cm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3
b3JrUHJvY2VzczsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
biBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUHJvY2Vz
c1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4+IG1fZm9yZWdyb3VuZFRva2Vuc0Zv
clNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2Jh
Y2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rp
dml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggNjhkNTdlNGVhMDk5Mjk0M2QyMzg5ZjY2YTliYmNiNDkxM2RiOTg1YS4u
ZjE3NTg0YTE3ODkwZmY4MTJmZWYyYWRmMGU3OTc4OTRiZmYzOWEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNlbmRpZgpAQCAtNTAwLDcgKzUwMSw3IEBAIHBy
aXZhdGU6CiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7IEluc3BlY3RvciwgU2VydmljZVdv
cmtlciwgUHJld2FybWVkV2ViQ29udGVudCwgQ2FjaGVkV2ViQ29udGVudCwgV2ViQ29udGVudCB9
OwogICAgIFByb2Nlc3NUeXBlIG1fcHJvY2Vzc1R5cGUgeyBQcm9jZXNzVHlwZTo6V2ViQ29udGVu
dCB9OwogICAgIFN0cmluZyBtX3VpUHJvY2Vzc05hbWU7Ci0gICAgU3RyaW5nIG1fc2VjdXJpdHlP
cmlnaW47CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFp
bjsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuICosIHVp
bnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggODM4ZmU2ZTMwYWYzYzA1N2M0ZDkz
ZGQxMDcyMmQ1NzczNWZlMTQ5OS4uZTYwZmRhZDk3NTlhZGQzOGQ2ZTFhODM3MGYyZmNkNjkwZTA4
MTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9j
ZXNzTmFtZSgpCiAgICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBJbnNwZWN0b3IiLCAiVmlzaWJsZSBuYW1lIG9m
IFdlYiBJbnNwZWN0b3IncyB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKiltX3VpUHJvY2Vzc05hbWVdOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyOgotICAgICAgICBhcHBsaWNh
dGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBT
ZXJ2aWNlIFdvcmtlciAoJUApIiwgIlZpc2libGUgbmFtZSBvZiBTZXJ2aWNlIFdvcmtlciBwcm9j
ZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAq
KW1fdWlQcm9jZXNzTmFtZSwgKE5TU3RyaW5nICopbV9zZWN1cml0eU9yaWdpbl07CisgICAgICAg
IGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJ
TkcoIiVAIFNlcnZpY2UgV29ya2VyICglQCkiLCAiVmlzaWJsZSBuYW1lIG9mIFNlcnZpY2UgV29y
a2VyIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5T
U3RyaW5nICopbV91aVByb2Nlc3NOYW1lLCAoTlNTdHJpbmcgKiltX3JlZ2lzdHJhYmxlRG9tYWlu
LnN0cmluZygpXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm9jZXNzVHlwZTo6UHJld2Fy
bWVkV2ViQ29udGVudDoKICAgICAgICAgYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiLCAi
VmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBs
aWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKiltX3VpUHJvY2Vzc05hbWVdOwpAQCAtMzkyLDcg
KzM5Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25z
dCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIGVsc2UgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0
KCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIl9zKSA9PSAiMSIpIHsKICAgICAgICAgbV9wcm9jZXNz
VHlwZSA9IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyOwotICAgICAgICBtX3NlY3VyaXR5T3Jp
Z2luID0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInNlY3VyaXR5LW9y
aWdpbiJfcyk7CisgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKHBhcmFtZXRlcnMu
ZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJyZWdpc3RyYWJsZS1kb21haW4iX3MpKTsKICAg
ICB9CiAjZW5kaWYKICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmdldCgiaXMtcHJld2FybWVkIl9zKSA9PSAiMSIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjVmN2FmMTRlZTZlOGNiYmEzNjE5OWQ5NWE4
YmUyNjIyMjc5ZDczYy4uNzg4MTI2NDYzZTFjMGNiOTMyZmFkNzQ5NTdjYzU0NTk0NzIwNmEwMCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE5LTAzLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGEgU2VydmljZVdvcmtlciBwcm9jZXNzIHBlciByZWdpc3RyYWJsZSBkb21h
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTY0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBkYXRl
IEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIwMTktMDMtMTMgIEFha2FzaCBKYWlu
ICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3MtYXBwXSBSZW1vdmUgdW51
c2VkIHBhdGNoIHZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXggZmU1YzNlZDZjODcwNmEw
ZjJmYzM1ODlmNDhiZDM1NGI4Yjc3ZGM5MC4uOWFjODg2OWUwNGRhMmM5YmRmY2E4ZTY3NmRmNjU4
NjdkZWQ1OTM1YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTE0NTAsNyArMTQ1MCw3IEBA
IHZvaWQgd2FpdFVudGlsU2VydmljZVdvcmtlclByb2Nlc3NDb3VudChXS1Byb2Nlc3NQb29sICpw
cm9jZXNzUG9vbCwgdW5zaWduZWQgcHJvCiAgICAgfSB3aGlsZSAodHJ1ZSk7CiB9CiAKLVRFU1Qo
U2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJPcmlnaW4pCitURVNUKFNlcnZpY2VXb3JrZXJzLCBQ
cm9jZXNzUGVyU2l0ZSkKIHsKICAgICBBU1NFUlQobWFpbkJ5dGVzKTsKICAgICBBU1NFUlQoc2Ny
aXB0Qnl0ZXMpOwpAQCAtMTQ3Miw2ICsxNDcyLDggQEAgVEVTVChTZXJ2aWNlV29ya2VycywgUHJv
Y2Vzc1Blck9yaWdpbikKICAgICBSZXRhaW5QdHI8U1dTY2hlbWVzPiBoYW5kbGVyMSA9IGFkb3B0
TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKICAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNl
dCgic3cxOi8vaG9zdC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1h
aW5CeXRlcyB9KTsKICAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdC9zdy5q
cyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVz
IH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6Ly9ob3N0Mi9tYWluLmh0bWwi
LCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKKyAgICBoYW5kbGVy
MS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdDIvc3cuanMiLCBSZXNvdXJjZUluZm8geyBAImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKICAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVSTFNjaGVtZTpAInN3MSJd
OwogCiAgICAgUmV0YWluUHRyPFNXU2NoZW1lcz4gaGFuZGxlcjIgPSBhZG9wdE5TKFtbU1dTY2hl
bWVzIGFsbG9jXSBpbml0XSk7CkBAIC0xNTEyLDEwICsxNTE0LDE5IEBAIFRFU1QoU2VydmljZVdv
cmtlcnMsIFByb2Nlc3NQZXJPcmlnaW4pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKKyAgICBFWFBFQ1RfRVEoMVUsIHByb2Nlc3NQb29s
Ll9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXc0ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QzID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3MTovL2hvc3QyL21haW4uaHRtbCJdXTsKKyAg
ICBbd2ViVmlldzQgbG9hZFJlcXVlc3Q6cmVxdWVzdDNdOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKICAgICBFWFBFQ1RfRVEoMlUs
IHByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKIAogICAgIE5TVVJMUmVx
dWVzdCAqYWJvdXRCbGFua1JlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07Ci0gICAgW3dlYlZpZXczIGxvYWRS
ZXF1ZXN0OmFib3V0QmxhbmtSZXF1ZXN0XTsKKyAgICBbd2ViVmlldzQgbG9hZFJlcXVlc3Q6YWJv
dXRCbGFua1JlcXVlc3RdOwogCiAgICAgd2FpdFVudGlsU2VydmljZVdvcmtlclByb2Nlc3NDb3Vu
dChwcm9jZXNzUG9vbCwgMSk7CiAgICAgRVhQRUNUX0VRKDFVLCBwcm9jZXNzUG9vbC5fc2Vydmlj
ZVdvcmtlclByb2Nlc3NDb3VudCk7CkBAIC0xNTI1LDYgKzE1MzYsNyBAQCBURVNUKFNlcnZpY2VX
b3JrZXJzLCBQcm9jZXNzUGVyT3JpZ2luKQogICAgIEVYUEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wu
X3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogCiAgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0
OmFib3V0QmxhbmtSZXF1ZXN0XTsKKyAgICBbd2ViVmlldzMgbG9hZFJlcXVlc3Q6YWJvdXRCbGFu
a1JlcXVlc3RdOwogICAgIHdhaXRVbnRpbFNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQocHJvY2Vz
c1Bvb2wsIDApOwogICAgIEVYUEVDVF9FUSgwVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzQ291bnQpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>