<?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>206403</bug_id>
          
          <creation_ts>2020-01-17 00:35:16 -0800</creation_ts>
          <short_desc>Safari does not present CertificateInfo for service-worker served documents</short_desc>
          <delta_ts>2020-09-01 08:47:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196182</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216038</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1607910</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-17 00:35:16 -0800</bug_when>
    <thetext>Safari does not present CertificateInfo for service-worker served documents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607911</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-17 00:36:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/58674661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608651</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-20 00:50:07 -0800</bug_when>
    <thetext>This happens in a few cases:
- service worker intercepts the document fetch, call fetch() itself and sends back the response
- service worker intercepts the document fetch and returns a DOMCache response/synthesized response.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673142</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-20 11:06:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/65410875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673380</commentid>
    <comment_count>4</comment_count>
      <attachid>404796</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-20 22:31:21 -0700</bug_when>
    <thetext>Created attachment 404796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673491</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-21 10:19:23 -0700</bug_when>
    <thetext>EWS says the new API tests are failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673502</commentid>
    <comment_count>6</comment_count>
      <attachid>404796</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-21 10:40:48 -0700</bug_when>
    <thetext>Comment on attachment 404796
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:2163
&gt; +    &quot;    event.respondWith(new Response(new Blob([&apos;&lt;script&gt;alert(\&quot;hello from service worker\&quot;)&lt;/script&gt;&apos;], {type: &apos;text/html&apos;})));&quot;

We should probably exercise three code paths here.
The first one with synthetic responses as above.

The second one is when using DOMCache by putting in DOMCache an existing resource and the feeding it into respondWith.
You can find an example in https://mdn.github.io/sw-test/sw.js

The third one by doing something like: event.respondWith(fetch(event.request.url)).
Hopefully this one should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673595</commentid>
    <comment_count>7</comment_count>
      <attachid>404857</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-21 13:07:44 -0700</bug_when>
    <thetext>Created attachment 404857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673605</commentid>
    <comment_count>8</comment_count>
      <attachid>404859</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-21 13:50:51 -0700</bug_when>
    <thetext>Created attachment 404859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673700</commentid>
    <comment_count>9</comment_count>
      <attachid>404889</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-21 17:31:32 -0700</bug_when>
    <thetext>Created attachment 404889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673701</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-07-21 17:40:27 -0700</bug_when>
    <thetext>We don&apos;t check in failing tests though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673710</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-21 18:11:20 -0700</bug_when>
    <thetext>Committed r264687: &lt;https://trac.webkit.org/changeset/264687&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404889.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673711</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-21 18:19:22 -0700</bug_when>
    <thetext>Reopening to attach actual fix.  That was just a test showing current behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673739</commentid>
    <comment_count>13</comment_count>
      <attachid>404898</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-21 21:10:53 -0700</bug_when>
    <thetext>Created attachment 404898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673743</commentid>
    <comment_count>14</comment_count>
      <attachid>404898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-21 21:37:14 -0700</bug_when>
    <thetext>Comment on attachment 404898
Patch

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

&gt; Source/WebCore/platform/network/cf/CertificateInfoCFNet.cpp:53
&gt; +    CertificateInfo copy;
&gt; +#if HAVE(SEC_TRUST_SERIALIZATION)
&gt; +    copy.m_trust = m_trust;
&gt; +#endif
&gt; +    copy.m_certificateChain = m_certificateChain;
&gt; +    return copy;

Since there is nothing to isolate, can just write this:

    return *this;

Could even put it inline in the header if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673757</commentid>
    <comment_count>15</comment_count>
      <attachid>404898</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-21 23:39:06 -0700</bug_when>
    <thetext>Comment on attachment 404898
Patch

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

&gt; Source/WebCore/workers/WorkerScriptLoader.cpp:130
&gt; +    options.certificateInfoPolicy = certificateInfoPolicy;

Another way to pass this information down to network process is to piggy back on the destination option, which should be Destination::ServiceWorker, not Destination::Worker.
For ServiceWorker destination, NetworkResourceLoader could decide to pass the certificateInfo (or WebLoaderStrategy could set needsCertificateInfo to true).

We could think of removing certificateInfoPolicy/needsCertificateInfo in the future.

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.h:71
&gt; +    const CertificateInfo&amp; certificateInfo() { return m_contextData.certificateInfo; }

const

&gt; Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp:106
&gt; +    resourceResponse.setCertificateInfo(WTFMove(certificateInfo));

We should probably only do that if the response has no certificate info. And restrict that to navigation loads only.
We do not want to pretend to use the service worker certificate info for third party resources.

&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:408
&gt; +        // FIXME: Consider serializing the certificate info to disk so WKWebView.serverTrust will be non-null when offline.

Could you also add a FIXME for the following case:
- service worker is installed and has a certificate info
- service worker is soft updated, script does not change but certificate info does (say the old certificate was soon to be obsolete).
We should in that case update the service worker registration info and potentially the service worker certificate info.
A quick fix would be to consider that a change in certificate info is like a change in the script. We would then trigger install/activate and update the on disk registration.
See SWServerJobQueue::scriptFetchFinished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673851</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-22 09:35:47 -0700</bug_when>
    <thetext>Thanks for the reviews.  I found that we do need to persist the data to fix the radar, so I incremented schemaVersion and added it.
I added a FIXME for the certificate change in soft update, and used destination to mean certificate info policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673854</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-22 09:39:54 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #16)
&gt; Thanks for the reviews.  I found that we do need to persist the data to fix
&gt; the radar, so I incremented schemaVersion and added it.
&gt; I added a FIXME for the certificate change in soft update, and used
&gt; destination to mean certificate info policy.

Great!
Is there an way to easily compare CertificateInfo equality?
If so, we should probably try to update CertificateInfo as if the script was modified as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673858</commentid>
    <comment_count>18</comment_count>
      <attachid>404930</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-22 09:44:53 -0700</bug_when>
    <thetext>Created attachment 404930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673875</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-22 10:16:39 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #17)
&gt; Is there an way to easily compare CertificateInfo equality?
There is a function called certificatesMatch.  We should probably refactor that into something like CertificateInfo::operator==.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673904</commentid>
    <comment_count>20</comment_count>
      <attachid>404942</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-22 11:37:39 -0700</bug_when>
    <thetext>Created attachment 404942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673938</commentid>
    <comment_count>21</comment_count>
      <attachid>404953</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-22 12:59:43 -0700</bug_when>
    <thetext>Created attachment 404953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673949</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-22 13:19:45 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/264724/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404796</attachid>
            <date>2020-07-20 22:31:21 -0700</date>
            <delta_ts>2020-07-21 13:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200720223120.patch</filename>
            <type>text/plain</type>
            <size>11063</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDY0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTA3LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJ
bmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IGp1c3QgYSBm
YWlsaW5nIHRlc3QgdGhhdCByZXByb2R1Y2VzIHRoZSBpc3N1ZSAxMDAlIG9mIHRoZSB0aW1lLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6Y2FuY2VsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bV9wcm90
b2NvbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjp0b3RhbFJlcXVlc3Rz
IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1Jl
cXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpjYW5jZWwpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6dGVybWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMC0wNy0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2V3c10gVXNlIC1xIHdoaWxlIHVuemlwcGluZyBsYXlvdXQtdGVzdC1yZXN1bHRzLnppcApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0JKHJldmlzaW9uIDI2NDYwNCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTIxMTIsMyArMjExMyw4NSBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBDb250ZW50UnVsZUxpc3QpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lUmVtb3ZpbmcpOwogfQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworc3RhdGljIGJvb2wgaXNUZXN0U2VydmVyVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3Qp
Cit7CisgICAgaWYgKCF0cnVzdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChTZWNU
cnVzdEdldENlcnRpZmljYXRlQ291bnQodHJ1c3QpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIVthZG9wdE5TKChOU1N0cmluZyAqKVNlY0NlcnRpZmljYXRlQ29weVN1Ympl
Y3RTdW1tYXJ5KFNlY1RydXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCAwKSkpIGlzRXF1
YWxUb1N0cmluZzpAIk1lIl0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VycywgU2VydmVyVHJ1c3QpCit7CisgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisKKyAgICBfX2Jsb2NrIGJvb2wgcmVtb3ZlZEFueUV4
aXN0aW5nRGF0YSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURh
dGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeKCkgeworICAgICAgICByZW1vdmVkQW55RXhpc3RpbmdEYXRhID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWRBbnlFeGlzdGluZ0RhdGEp
OworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1haW4gPQorICAgICI8aHRtbD48Ym9keT48c2Ny
aXB0PiIKKyAgICAidHJ5IHsiCisgICAgIiAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsiCisgICAgIiAgICAgICAgaWYgKHJl
Zy5hY3RpdmUpIHsiCisgICAgIiAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgdW5leHBlY3RlZGx5
IGFscmVhZHkgYWN0aXZlJyk7IgorICAgICIgICAgICAgICAgICByZXR1cm47IgorICAgICIgICAg
ICAgIH0iCisgICAgIiAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7IgorICAgICIgICAg
ICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeyIK
KyAgICAiICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCisgICAg
IiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisgICAg
IiAgICAgICAgfSk7IgorICAgICIgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsiCisgICAg
IiAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsiCisg
ICAgIiAgICB9KTsiCisgICAgIn0gY2F0Y2goZSkgeyIKKyAgICAiICAgIGFsZXJ0KCdFeGNlcHRp
b246ICcgKyBlKTsiCisgICAgIn0iCisgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKyAg
ICAKKyAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPQorICAgICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IgorICAgICIgICAgZXZlbnQucmVzcG9uZFdpdGgobmV3
IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcImhlbGxvIGZyb20gc2VydmljZSB3
b3JrZXJcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsiCisgICAgIn0pIjsK
KyAgICAKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW4gfSB9
LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsK
KyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tX
ZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNl
cnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVz
ZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3Lmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisg
ICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKyAgICBFWFBFQ1RfVFJV
RShpc1Rlc3RTZXJ2ZXJUcnVzdCh3ZWJWaWV3LmdldCgpLnNlcnZlclRydXN0KSk7CisgICAgRVhQ
RUNUX0VRKFNlY1RydXN0R2V0Q2VydGlmaWNhdGVDb3VudCh3ZWJWaWV3LmdldCgpLnNlcnZlclRy
dXN0KSwgMXUpOworICAgIGF1dG8gc3VtbWFyeSA9IGFkb3B0TlMoKE5TU3RyaW5nICopU2VjQ2Vy
dGlmaWNhdGVDb3B5U3ViamVjdFN1bW1hcnkoU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgo
d2ViVmlldy5nZXQoKS5zZXJ2ZXJUcnVzdCwgMCkpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoc3Vt
bWFyeS5nZXQoKSwgIk1lIik7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIAorICAgIFt3ZWJW
aWV3IHJlbG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JB
bGVydF0sICJoZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyIik7CisKKyAgICBFWFBFQ1RfRVEoc2Vy
dmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOworICAgIEVYUEVDVF9OVUxMKHdlYlZpZXcuZ2V0KCku
c2VydmVyVHJ1c3QpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgRVhQRUNUX1RSVUUoaXNUZXN0
U2VydmVyVHJ1c3Qod2ViVmlldy5nZXQoKS5zZXJ2ZXJUcnVzdCkpOworfQorCisjZW5kaWYgLy8g
SEFWRShORVRXT1JLX0ZSQU1FV09SSykKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
SFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5oCShyZXZpc2lvbiAyNjQ2MDQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTQgKzUyLDE1IEBAIHB1YmxpYzoK
ICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KGNv
bnN0IFN0cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVl
c3RzKCkgY29uc3Q7CisgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlc3Bv
bmRXaXRoQ2hhbGxlbmdlVGhlbk9LKENvbm5lY3Rpb24pOwogICAgIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgUmV0YWluUHRyPG53X3BhcmFtZXRlcnNfdD4gbGlzdGVuZXJQYXJhbWV0ZXJzKFByb3Rv
Y29sLCBDZXJ0aWZpY2F0ZVZlcmlmaWVyJiYpOwotICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRUb1Jl
cXVlc3RzKENvbm5lY3Rpb24sIFJlZlB0cjxSZXF1ZXN0RGF0YT4pOworICAgIHN0YXRpYyB2b2lk
IHJlc3BvbmRUb1JlcXVlc3RzKENvbm5lY3Rpb24sIFJlZjxSZXF1ZXN0RGF0YT4pOwogCi0gICAg
UmVmUHRyPFJlcXVlc3REYXRhPiBtX3JlcXVlc3REYXRhOworICAgIFJlZjxSZXF1ZXN0RGF0YT4g
bV9yZXF1ZXN0RGF0YTsKICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0ZW5lcjsK
ICAgICBQcm90b2NvbCBtX3Byb3RvY29sIHsgUHJvdG9jb2w6Okh0dHAgfTsKIH07CkBAIC03MSw3
ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmQoUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFf
dD4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29uc3Q7CiAgICAg
dm9pZCByZWNlaXZlQnl0ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4m
Jik+JiYpIGNvbnN0OwogICAgIHZvaWQgcmVjZWl2ZUhUVFBSZXF1ZXN0KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPGNoYXI+JiYpPiYmLCBWZWN0b3I8Y2hhcj4mJiBidWZmZXIgPSB7IH0p
IGNvbnN0OwotICAgIHZvaWQgdGVybWluYXRlKCkgY29uc3Q7CisgICAgdm9pZCB0ZXJtaW5hdGUo
KTsKKyAgICB2b2lkIGNhbmNlbCgpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIVFRQ
U2VydmVyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2
aXNpb24gMjY0NjA0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBIVFRQU2VydmVyOjpSZXF1
ZXN0RGF0YSA6IHB1YmxpYyAKICAgICAKICAgICBzaXplX3QgcmVxdWVzdENvdW50IHsgMCB9Owog
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IHJlcXVlc3RNYXA7CisgICAg
VmVjdG9yPENvbm5lY3Rpb24+IGNvbm5lY3Rpb25zOwogfTsKIAogUmV0YWluUHRyPG53X3BhcmFt
ZXRlcnNfdD4gSFRUUFNlcnZlcjo6bGlzdGVuZXJQYXJhbWV0ZXJzKFByb3RvY29sIHByb3RvY29s
LCBDZXJ0aWZpY2F0ZVZlcmlmaWVyJiYgdmVyaWZpZXIpCkBAIC04OCwxMyArODksMjkgQEAgc3Rh
dGljIHZvaWQgc3RhcnRMaXN0ZW5pbmcobndfbGlzdGVuZXJfdAogICAgIFV0aWw6OnJ1bigmcmVh
ZHkpOwogfQogCit2b2lkIEhUVFBTZXJ2ZXI6OmNhbmNlbCgpCit7CisgICAgX19ibG9jayBib29s
IGNhbmNlbGxlZCA9IGZhbHNlOworICAgIG53X2xpc3RlbmVyX3NldF9zdGF0ZV9jaGFuZ2VkX2hh
bmRsZXIobV9saXN0ZW5lci5nZXQoKSwgXihud19saXN0ZW5lcl9zdGF0ZV90IHN0YXRlLCBud19l
cnJvcl90IGVycm9yKSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7Cisg
ICAgICAgIGlmIChzdGF0ZSA9PSBud19saXN0ZW5lcl9zdGF0ZV9jYW5jZWxsZWQpCisgICAgICAg
ICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIG53X2xpc3RlbmVyX2NhbmNlbCht
X2xpc3RlbmVyLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7CisgICAgbV9saXN0
ZW5lciA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogc3RkOjpleGNoYW5n
ZShtX3JlcXVlc3REYXRhLT5jb25uZWN0aW9ucywgeyB9KSkKKyAgICAgICAgY29ubmVjdGlvbi5j
YW5jZWwoKTsKK30KKwogSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBw
cm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYmIHZlcmlmaWVyKQotICAgIDogbV9yZXF1ZXN0
RGF0YShhZG9wdFJlZihuZXcgUmVxdWVzdERhdGEocmVzcG9uc2VzKSkpCisgICAgOiBtX3JlcXVl
c3REYXRhKGFkb3B0UmVmKCpuZXcgUmVxdWVzdERhdGEocmVzcG9uc2VzKSkpCiAgICAgLCBtX2xp
c3RlbmVyKGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKGxpc3RlbmVyUGFyYW1ldGVycyhwcm90
b2NvbCwgV1RGTW92ZSh2ZXJpZmllcikpLmdldCgpKSkpCiAgICAgLCBtX3Byb3RvY29sKHByb3Rv
Y29sKQogewogICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgpLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rp
b25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBtYWtlQmxvY2tQdHIoW3JlcXVlc3REYXRhID0g
bV9yZXF1ZXN0RGF0YV0obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgcmVx
dWVzdERhdGEtPmNvbm5lY3Rpb25zLmFwcGVuZChDb25uZWN0aW9uKGNvbm5lY3Rpb24pKTsKICAg
ICAgICAgbndfY29ubmVjdGlvbl9zZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSk7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc3RhcnQoY29ubmVjdGlvbik7CiAg
ICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKENvbm5lY3Rpb24oY29ubmVjdGlvbiksIHJlcXVlc3RE
YXRhKTsKQEAgLTEwMywxMSArMTIwLDEzIEBAICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiB9
CiAKIEhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChDb25uZWN0aW9uKT4mJiBj
b25uZWN0aW9uSGFuZGxlciwgUHJvdG9jb2wgcHJvdG9jb2wpCi0gICAgOiBtX2xpc3RlbmVyKGFk
b3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKGxpc3RlbmVyUGFyYW1ldGVycyhwcm90b2NvbCwgbnVs
bHB0cikuZ2V0KCkpKSkKKyAgICA6IG1fcmVxdWVzdERhdGEoYWRvcHRSZWYoKm5ldyBSZXF1ZXN0
RGF0YSh7IH0pKSkKKyAgICAsIG1fbGlzdGVuZXIoYWRvcHROUyhud19saXN0ZW5lcl9jcmVhdGUo
bGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBudWxscHRyKS5nZXQoKSkpKQogICAgICwgbV9w
cm90b2NvbChwcm90b2NvbCkKIHsKICAgICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5l
ci5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7Ci0gICAgbndfbGlzdGVuZXJfc2V0
X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgbWFrZUJsb2NrUHRyKFtj
b25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpXSAobndfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb24pIHsKKyAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25f
aGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBtYWtlQmxvY2tQdHIoW3JlcXVlc3REYXRhID0gbV9y
ZXF1ZXN0RGF0YSwgY29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVy
KV0gKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CisgICAgICAgIHJlcXVlc3REYXRhLT5j
b25uZWN0aW9ucy5hcHBlbmQoQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAgICAgIG53X2Nv
bm5lY3Rpb25fc2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkp
OwogICAgICAgICBud19jb25uZWN0aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOwogICAgICAgICBjb25u
ZWN0aW9uSGFuZGxlcihDb25uZWN0aW9uKGNvbm5lY3Rpb24pKTsKQEAgLTEzOSw4ICsxNTgsNiBA
QCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlCiAKIHNpemVfdCBIVFRQ
U2VydmVyOjp0b3RhbFJlcXVlc3RzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcmVxdWVzdERhdGEp
Ci0gICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX3JlcXVlc3REYXRhLT5yZXF1ZXN0Q291
bnQ7CiB9CiAKQEAgLTE4Nyw5ICsyMDQsOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
ckZyb21EYXRhKGRpCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXZvaWQgSFRUUFNlcnZlcjo6
cmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiBjb25uZWN0aW9uLCBSZWZQdHI8UmVxdWVzdERh
dGE+IHJlcXVlc3REYXRhKQordm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhDb25u
ZWN0aW9uIGNvbm5lY3Rpb24sIFJlZjxSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEpCiB7Ci0gICAg
Y29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb24sIHJlcXVlc3REYXRhXSAo
VmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1
ZXN0KFtjb25uZWN0aW9uLCByZXF1ZXN0RGF0YV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIG11
dGFibGUgewogICAgICAgICBpZiAoIXJlcXVlc3Quc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICByZXF1ZXN0RGF0YS0+cmVxdWVzdENvdW50Kys7CkBAIC0yOTEsMTEgKzMwOCwy
NCBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmQoUmV0YWluUHRyPGRpc3BhdGNoCiAgICAgfSkuZ2V0
KCkpOwogfQogCi12b2lkIENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpIGNvbnN0Cit2b2lkIENvbm5l
Y3Rpb246OnRlcm1pbmF0ZSgpCiB7CiAgICAgbndfY29ubmVjdGlvbl9jYW5jZWwobV9jb25uZWN0
aW9uLmdldCgpKTsKIH0KIAordm9pZCBDb25uZWN0aW9uOjpjYW5jZWwoKQoreworICAgIF9fYmxv
Y2sgYm9vbCBjYW5jZWxsZWQgPSBmYWxzZTsKKyAgICBud19jb25uZWN0aW9uX3NldF9zdGF0ZV9j
aGFuZ2VkX2hhbmRsZXIobV9jb25uZWN0aW9uLmdldCgpLCBeKG53X2Nvbm5lY3Rpb25fc3RhdGVf
dCBzdGF0ZSwgbndfZXJyb3JfdCBlcnJvcikgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9y
LCAhZXJyb3IpOworICAgICAgICBpZiAoc3RhdGUgPT0gbndfY29ubmVjdGlvbl9zdGF0ZV9jYW5j
ZWxsZWQpCisgICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIG53X2Nv
bm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZjYW5j
ZWxsZWQpOworICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKIHZvaWQgSDI6OkNvbm5l
Y3Rpb246OnNlbmQoRnJhbWUmJiBmcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGF1dG8gZnJhbWVUeXBlID0gZnJhbWUudHlw
ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404857</attachid>
            <date>2020-07-21 13:07:44 -0700</date>
            <delta_ts>2020-07-21 13:50:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200721130744.patch</filename>
            <type>text/plain</type>
            <size>12742</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDY0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTA3LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJ
bmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IGp1c3QgYSBm
YWlsaW5nIHRlc3QgdGhhdCByZXByb2R1Y2VzIHRoZSBpc3N1ZSAxMDAlIG9mIHRoZSB0aW1lLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6Y2FuY2VsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bV9wcm90
b2NvbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjp0b3RhbFJlcXVlc3Rz
IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1Jl
cXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpjYW5jZWwpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6dGVybWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMC0wNy0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2V3c10gVXNlIC1xIHdoaWxlIHVuemlwcGluZyBsYXlvdXQtdGVzdC1yZXN1bHRzLnppcApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0JKHJldmlzaW9uIDI2NDYwNCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTIxMTIsMyArMjExMywxMTQgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgQ29udGVudFJ1bGVMaXN0KQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZVJlbW92aW5nKTsKIH0KKworI2lmIEhBVkUoTkVUV09SS19GUkFN
RVdPUkspCisKK3N0YXRpYyBib29sIGlzVGVzdFNlcnZlclRydXN0KFNlY1RydXN0UmVmIHRydXN0
KQoreworICAgIGlmICghdHJ1c3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoU2Vj
VHJ1c3RHZXRDZXJ0aWZpY2F0ZUNvdW50KHRydXN0KSAhPSAxKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFbYWRvcHROUygoTlNTdHJpbmcgKilTZWNDZXJ0aWZpY2F0ZUNvcHlTdWJq
ZWN0U3VtbWFyeShTZWNUcnVzdEdldENlcnRpZmljYXRlQXRJbmRleCh0cnVzdCwgMCkpKSBpc0Vx
dWFsVG9TdHJpbmc6QCJNZSJdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2VudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBDYWNoZWQsIEZl
dGNoZWQgfTsKK3N0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSkK
K3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICAKKyAgICBfX2Jsb2Nr
IGJvb2wgcmVtb3ZlZEFueUV4aXN0aW5nRGF0YSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQ
YXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICByZW1vdmVkQW55RXhpc3RpbmdE
YXRhID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92
ZWRBbnlFeGlzdGluZ0RhdGEpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1haW4gPQorICAg
ICI8c2NyaXB0PiIKKyAgICAidHJ5IHsiCisgICAgIiAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsiCisgICAgIiAgICAgICAg
aWYgKHJlZy5hY3RpdmUpIHsiCisgICAgIiAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgdW5leHBl
Y3RlZGx5IGFscmVhZHkgYWN0aXZlJyk7IgorICAgICIgICAgICAgICAgICByZXR1cm47IgorICAg
ICIgICAgICAgIH0iCisgICAgIiAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7IgorICAg
ICIgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9u
KCkgeyIKKyAgICAiICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJyki
CisgICAgIiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsi
CisgICAgIiAgICAgICAgfSk7IgorICAgICIgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsi
CisgICAgIiAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9y
KTsiCisgICAgIiAgICB9KTsiCisgICAgIn0gY2F0Y2goZSkgeyIKKyAgICAiICAgIGFsZXJ0KCdF
eGNlcHRpb246ICcgKyBlKTsiCisgICAgIn0iCisgICAgIjwvc2NyaXB0PiI7CisgICAgCisgICAg
Y29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQg
PSBudWxscHRyOworICAgIHNpemVfdCBleHBlY3RlZFNlcnZlclJlcXVlc3RzMSA9IDA7CisgICAg
c2l6ZV90IGV4cGVjdGVkU2VydmVyUmVxdWVzdHMyID0gMDsKKworICAgIHN3aXRjaCAocmVzcG9u
c2VUeXBlKSB7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKKyAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAg
ICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOworICAgICAgICBleHBl
Y3RlZFNlcnZlclJlcXVlc3RzMSA9IDI7CisgICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMy
ID0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OkNhY2hlZDoKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgKGV2ZW50KSA9PiB7
IGV2ZW50LndhaXRVbnRpbCggY2FjaGVzLm9wZW4oJ3YxJykudGhlbigoY2FjaGUpID0+IHsgcmV0
dXJuIGNhY2hlLmFkZEFsbChbJy9jYWNoZWQuaHRtbCddKTsgfSkgKTsgfSk7IgorICAgICAgICAg
ICAgInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVz
cG9uZFdpdGgoY2FjaGVzLm1hdGNoKCcvY2FjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAgZXhw
ZWN0ZWRBbGVydCA9ICJsb2FkZWQgZnJvbSBjYWNoZSI7CisgICAgICAgIGV4cGVjdGVkU2VydmVy
UmVxdWVzdHMxID0gMzsKKyAgICAgICAgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czIgPSAzOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKKyAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBleHBlY3RlZEFs
ZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworICAgICAgICBleHBlY3RlZFNlcnZlclJlcXVl
c3RzMSA9IDI7CisgICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMyID0gMzsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwg
eyBtYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9jYWNoZWQuaHRt
bCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2xvYWRlZCBmcm9tIGNhY2hlJyk8L3NjcmlwdD4iIH0gfSwK
KyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJv
bSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4o
V0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9p
ZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhv
ZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3
LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwor
CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIGV4cGVjdGVkU2VydmVyUmVx
dWVzdHMxKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Rlc3RTZXJ2ZXJUcnVzdCh3ZWJWaWV3LmdldCgp
LnNlcnZlclRydXN0KSk7CisgICAgaWYgKHJlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OkZl
dGNoZWQpCisgICAgICAgIHNlcnZlci5jYW5jZWwoKTsKKworICAgIFt3ZWJWaWV3IHJlbG9hZF07
CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVj
dGVkQWxlcnQpOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCBleHBlY3Rl
ZFNlcnZlclJlcXVlc3RzMik7CisgICAgRVhQRUNUX05VTEwod2ViVmlldy5nZXQoKS5zZXJ2ZXJU
cnVzdCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBFWFBFQ1RfVFJVRShpc1Rlc3RTZXJ2ZXJU
cnVzdCh3ZWJWaWV3LmdldCgpLnNlcnZlclRydXN0KSk7Cit9CisKK1RFU1QoU2VydmljZVdvcmtl
cnMsIFNlcnZlclRydXN0KQoreworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMp
OworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpDYWNoZWQpOworICAgIHJ1blRlc3QoUmVzcG9u
c2VUeXBlOjpGZXRjaGVkKTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUksp
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjY0
NjA0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDE0ICs1MiwxNSBAQCBwdWJsaWM6CiAgICAgdWludDE2X3QgcG9ydCgpIGNv
bnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGggPSAiLyJf
c3RyKSBjb25zdDsKICAgICBzaXplX3QgdG90YWxSZXF1ZXN0cygpIGNvbnN0OworICAgIHZvaWQg
Y2FuY2VsKCk7CiAKICAgICBzdGF0aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhD
b25uZWN0aW9uKTsKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIFJldGFpblB0cjxud19wYXJh
bWV0ZXJzX3Q+IGxpc3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmll
ciYmKTsKLSAgICBzdGF0aWMgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhDb25uZWN0aW9uLCBSZWZQ
dHI8UmVxdWVzdERhdGE+KTsKKyAgICBzdGF0aWMgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhDb25u
ZWN0aW9uLCBSZWY8UmVxdWVzdERhdGE+KTsKIAotICAgIFJlZlB0cjxSZXF1ZXN0RGF0YT4gbV9y
ZXF1ZXN0RGF0YTsKKyAgICBSZWY8UmVxdWVzdERhdGE+IG1fcmVxdWVzdERhdGE7CiAgICAgUmV0
YWluUHRyPG53X2xpc3RlbmVyX3Q+IG1fbGlzdGVuZXI7CiAgICAgUHJvdG9jb2wgbV9wcm90b2Nv
bCB7IFByb3RvY29sOjpIdHRwIH07CiB9OwpAQCAtNzEsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZW5kKFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0OwogICAgIHZvaWQgcmVjZWl2ZUJ5dGVzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKSBjb25zdDsKICAgICB2b2lk
IHJlY2VpdmVIVFRQUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFyPiYm
KT4mJiwgVmVjdG9yPGNoYXI+JiYgYnVmZmVyID0geyB9KSBjb25zdDsKLSAgICB2b2lkIHRlcm1p
bmF0ZSgpIGNvbnN0OworICAgIHZvaWQgdGVybWluYXRlKCk7CisgICAgdm9pZCBjYW5jZWwoKTsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSFRUUFNlcnZlcjsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI2NDYwNCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6UmVxdWVzdERhdGEgOiBwdWJsaWMgCiAgICAg
CiAgICAgc2l6ZV90IHJlcXVlc3RDb3VudCB7IDAgfTsKICAgICBjb25zdCBIYXNoTWFwPFN0cmlu
ZywgSFRUUFJlc3BvbnNlPiByZXF1ZXN0TWFwOworICAgIFZlY3RvcjxDb25uZWN0aW9uPiBjb25u
ZWN0aW9uczsKIH07CiAKIFJldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6Omxp
c3RlbmVyUGFyYW1ldGVycyhQcm90b2NvbCBwcm90b2NvbCwgQ2VydGlmaWNhdGVWZXJpZmllciYm
IHZlcmlmaWVyKQpAQCAtODgsMTMgKzg5LDI5IEBAIHN0YXRpYyB2b2lkIHN0YXJ0TGlzdGVuaW5n
KG53X2xpc3RlbmVyX3QKICAgICBVdGlsOjpydW4oJnJlYWR5KTsKIH0KIAordm9pZCBIVFRQU2Vy
dmVyOjpjYW5jZWwoKQoreworICAgIF9fYmxvY2sgYm9vbCBjYW5jZWxsZWQgPSBmYWxzZTsKKyAg
ICBud19saXN0ZW5lcl9zZXRfc3RhdGVfY2hhbmdlZF9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCks
IF4obndfbGlzdGVuZXJfc3RhdGVfdCBzdGF0ZSwgbndfZXJyb3JfdCBlcnJvcikgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKGVycm9yLCAhZXJyb3IpOworICAgICAgICBpZiAoc3RhdGUgPT0gbndf
bGlzdGVuZXJfc3RhdGVfY2FuY2VsbGVkKQorICAgICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTsK
KyAgICB9KTsKKyAgICBud19saXN0ZW5lcl9jYW5jZWwobV9saXN0ZW5lci5nZXQoKSk7CisgICAg
VXRpbDo6cnVuKCZjYW5jZWxsZWQpOworICAgIG1fbGlzdGVuZXIgPSBudWxscHRyOworICAgIGZv
ciAoYXV0byYgY29ubmVjdGlvbiA6IHN0ZDo6ZXhjaGFuZ2UobV9yZXF1ZXN0RGF0YS0+Y29ubmVj
dGlvbnMsIHsgfSkpCisgICAgICAgIGNvbm5lY3Rpb24uY2FuY2VsKCk7Cit9CisKIEhUVFBTZXJ2
ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhU
VFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVy
aWZpZXImJiB2ZXJpZmllcikKLSAgICA6IG1fcmVxdWVzdERhdGEoYWRvcHRSZWYobmV3IFJlcXVl
c3REYXRhKHJlc3BvbnNlcykpKQorICAgIDogbV9yZXF1ZXN0RGF0YShhZG9wdFJlZigqbmV3IFJl
cXVlc3REYXRhKHJlc3BvbnNlcykpKQogICAgICwgbV9saXN0ZW5lcihhZG9wdE5TKG53X2xpc3Rl
bmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFtZXRlcnMocHJvdG9jb2wsIFdURk1vdmUodmVyaWZpZXIp
KS5nZXQoKSkpKQogICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIHsKICAgICBud19saXN0ZW5l
cl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7
CiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5n
ZXQoKSwgbWFrZUJsb2NrUHRyKFtyZXF1ZXN0RGF0YSA9IG1fcmVxdWVzdERhdGFdKG53X2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uKSB7CisgICAgICAgIHJlcXVlc3REYXRhLT5jb25uZWN0aW9ucy5h
cHBlbmQoQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0
X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBu
d19jb25uZWN0aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOwogICAgICAgICByZXNwb25kVG9SZXF1ZXN0
cyhDb25uZWN0aW9uKGNvbm5lY3Rpb24pLCByZXF1ZXN0RGF0YSk7CkBAIC0xMDMsMTEgKzEyMCwx
MyBAQCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogfQogCiBIVFRQU2VydmVyOjpIVFRQU2Vy
dmVyKEZ1bmN0aW9uPHZvaWQoQ29ubmVjdGlvbik+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3Rv
Y29sIHByb3RvY29sKQotICAgIDogbV9saXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0
ZShsaXN0ZW5lclBhcmFtZXRlcnMocHJvdG9jb2wsIG51bGxwdHIpLmdldCgpKSkpCisgICAgOiBt
X3JlcXVlc3REYXRhKGFkb3B0UmVmKCpuZXcgUmVxdWVzdERhdGEoeyB9KSkpCisgICAgLCBtX2xp
c3RlbmVyKGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKGxpc3RlbmVyUGFyYW1ldGVycyhwcm90
b2NvbCwgbnVsbHB0cikuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiB7CiAg
ICAgbndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOwotICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVy
KG1fbGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbm5lY3Rpb25IYW5kbGVyKV0gKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7Cisg
ICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5nZXQo
KSwgbWFrZUJsb2NrUHRyKFtyZXF1ZXN0RGF0YSA9IG1fcmVxdWVzdERhdGEsIGNvbm5lY3Rpb25I
YW5kbGVyID0gV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcildIChud19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbikgeworICAgICAgICByZXF1ZXN0RGF0YS0+Y29ubmVjdGlvbnMuYXBwZW5kKENvbm5l
Y3Rpb24oY29ubmVjdGlvbikpOwogICAgICAgICBud19jb25uZWN0aW9uX3NldF9xdWV1ZShjb25u
ZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgbndfY29ubmVjdGlv
bl9zdGFydChjb25uZWN0aW9uKTsKICAgICAgICAgY29ubmVjdGlvbkhhbmRsZXIoQ29ubmVjdGlv
bihjb25uZWN0aW9uKSk7CkBAIC0xMzksOCArMTU4LDYgQEAgdm9pZCBIVFRQU2VydmVyOjpyZXNw
b25kV2l0aENoYWxsZW5nZVRoZQogCiBzaXplX3QgSFRUUFNlcnZlcjo6dG90YWxSZXF1ZXN0cygp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlcXVlc3REYXRhKQotICAgICAgICByZXR1cm4gMDsKICAg
ICByZXR1cm4gbV9yZXF1ZXN0RGF0YS0+cmVxdWVzdENvdW50OwogfQogCkBAIC0xODcsMTIgKzIw
NCwxMSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvckZyb21EYXRhKGRpCiAgICAgcmV0
dXJuIHJlcXVlc3Q7CiB9CiAKLXZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMoQ29u
bmVjdGlvbiBjb25uZWN0aW9uLCBSZWZQdHI8UmVxdWVzdERhdGE+IHJlcXVlc3REYXRhKQordm9p
ZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhDb25uZWN0aW9uIGNvbm5lY3Rpb24sIFJl
ZjxSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEpCiB7Ci0gICAgY29ubmVjdGlvbi5yZWNlaXZlSFRU
UFJlcXVlc3QoW2Nvbm5lY3Rpb24sIHJlcXVlc3REYXRhXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVz
dCkgeworICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCByZXF1
ZXN0RGF0YV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICBpZiAo
IXJlcXVlc3Quc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByZXF1ZXN0RGF0
YS0+cmVxdWVzdENvdW50Kys7CiAKICAgICAgICAgY29uc3QgY2hhciogZ2V0UGF0aFByZWZpeCA9
ICJHRVQgIjsKICAgICAgICAgY29uc3QgY2hhciogcG9zdFBhdGhQcmVmaXggPSAiUE9TVCAiOwpA
QCAtMjIwLDYgKzIzNiw3IEBAIHZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMoQ29u
bmUKICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwogICAgICAgICByZXNw
b25zZUJ1aWxkZXIuYXBwZW5kKHJlc3BvbnNlLmJvZHkpOwogICAgICAgICBjb25uZWN0aW9uLnNl
bmQocmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nKCksIFtjb25uZWN0aW9uLCByZXF1ZXN0RGF0YV0g
eworICAgICAgICAgICAgcmVxdWVzdERhdGEtPnJlcXVlc3RDb3VudCsrOwogICAgICAgICAgICAg
cmVzcG9uZFRvUmVxdWVzdHMoY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpOwogICAgICAgICB9KTsK
ICAgICB9KTsKQEAgLTI5MSwxMSArMzA4LDI0IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZChSZXRh
aW5QdHI8ZGlzcGF0Y2gKICAgICB9KS5nZXQoKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6dGVy
bWluYXRlKCkgY29uc3QKK3ZvaWQgQ29ubmVjdGlvbjo6dGVybWluYXRlKCkKIHsKICAgICBud19j
b25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24uZ2V0KCkpOwogfQogCit2b2lkIENvbm5lY3Rp
b246OmNhbmNlbCgpCit7CisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAg
IG53X2Nvbm5lY3Rpb25fc2V0X3N0YXRlX2NoYW5nZWRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0
KCksIF4obndfY29ubmVjdGlvbl9zdGF0ZV90IHN0YXRlLCBud19lcnJvcl90IGVycm9yKSB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7CisgICAgICAgIGlmIChzdGF0ZSA9
PSBud19jb25uZWN0aW9uX3N0YXRlX2NhbmNlbGxlZCkKKyAgICAgICAgICAgIGNhbmNlbGxlZCA9
IHRydWU7CisgICAgfSk7CisgICAgbndfY29ubmVjdGlvbl9jYW5jZWwobV9jb25uZWN0aW9uLmdl
dCgpKTsKKyAgICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7CisgICAgbV9jb25uZWN0aW9uID0gbnVs
bHB0cjsKK30KKwogdm9pZCBIMjo6Q29ubmVjdGlvbjo6c2VuZChGcmFtZSYmIGZyYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAg
YXV0byBmcmFtZVR5cGUgPSBmcmFtZS50eXBlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404859</attachid>
            <date>2020-07-21 13:50:51 -0700</date>
            <delta_ts>2020-07-21 17:31:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200721135050.patch</filename>
            <type>text/plain</type>
            <size>13208</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDY0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTA3LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJ
bmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IGp1c3QgYSBm
YWlsaW5nIHRlc3QgdGhhdCByZXByb2R1Y2VzIHRoZSBpc3N1ZSAxMDAlIG9mIHRoZSB0aW1lLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6Y2FuY2VsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bV9wcm90
b2NvbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjp0b3RhbFJlcXVlc3Rz
IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1Jl
cXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpjYW5jZWwpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6dGVybWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMC0wNy0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2V3c10gVXNlIC1xIHdoaWxlIHVuemlwcGluZyBsYXlvdXQtdGVzdC1yZXN1bHRzLnppcApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0JKHJldmlzaW9uIDI2NDYwNCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTIxMTIsMyArMjExMywxMjIgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgQ29udGVudFJ1bGVMaXN0KQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZVJlbW92aW5nKTsKIH0KKworI2lmIEhBVkUoTkVUV09SS19GUkFN
RVdPUkspCisKK3N0YXRpYyBib29sIGlzVGVzdFNlcnZlclRydXN0KFNlY1RydXN0UmVmIHRydXN0
KQoreworICAgIGlmICghdHJ1c3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoU2Vj
VHJ1c3RHZXRDZXJ0aWZpY2F0ZUNvdW50KHRydXN0KSAhPSAxKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFbYWRvcHROUygoTlNTdHJpbmcgKilTZWNDZXJ0aWZpY2F0ZUNvcHlTdWJq
ZWN0U3VtbWFyeShTZWNUcnVzdEdldENlcnRpZmljYXRlQXRJbmRleCh0cnVzdCwgMCkpKSBpc0Vx
dWFsVG9TdHJpbmc6QCJNZSJdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2VudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBDYWNoZWQsIEZl
dGNoZWQgfTsKK3N0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSkK
K3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICAKKyAgICBfX2Jsb2Nr
IGJvb2wgcmVtb3ZlZEFueUV4aXN0aW5nRGF0YSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQ
YXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICByZW1vdmVkQW55RXhpc3RpbmdE
YXRhID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBXVEZMb2dBbHdheXMoIlJFTU9WSU5HIEVYSVNUSU5H
IERBVEEiKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWRBbnlFeGlzdGlu
Z0RhdGEpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1haW4gPQorICAgICI8c2NyaXB0PiIK
KyAgICAidHJ5IHsiCisgICAgIiAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
L3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsiCisgICAgIiAgICAgICAgaWYgKHJlZy5hY3Rp
dmUpIHsiCisgICAgIiAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgdW5leHBlY3RlZGx5IGFscmVh
ZHkgYWN0aXZlJyk7IgorICAgICIgICAgICAgICAgICByZXR1cm47IgorICAgICIgICAgICAgIH0i
CisgICAgIiAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7IgorICAgICIgICAgICAgIHdv
cmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeyIKKyAgICAi
ICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCisgICAgIiAgICAg
ICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisgICAgIiAgICAg
ICAgfSk7IgorICAgICIgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsiCisgICAgIiAgICAg
ICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsiCisgICAgIiAg
ICB9KTsiCisgICAgIn0gY2F0Y2goZSkgeyIKKyAgICAiICAgIGFsZXJ0KCdFeGNlcHRpb246ICcg
KyBlKTsiCisgICAgIn0iCisgICAgIjwvc2NyaXB0PiI7CisgICAgCisgICAgY29uc3QgY2hhciog
anMgPSBudWxscHRyOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwor
ICAgIHNpemVfdCBleHBlY3RlZFNlcnZlclJlcXVlc3RzMSA9IDA7CisgICAgc2l6ZV90IGV4cGVj
dGVkU2VydmVyUmVxdWVzdHMyID0gMDsKKworICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7Cisg
ICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKKyAgICAgICAganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcg
UmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIp
PC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAgZXhwZWN0
ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOworICAgICAgICBleHBlY3RlZFNlcnZlclJl
cXVlc3RzMSA9IDI7CisgICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMyID0gMjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OkNhY2hlZDoKKyAgICAgICAganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgKGV2ZW50KSA9PiB7IGV2ZW50LndhaXRV
bnRpbCggY2FjaGVzLm9wZW4oJ3YxJykudGhlbigoY2FjaGUpID0+IHsgcmV0dXJuIGNhY2hlLmFk
ZEFsbChbJy9jYWNoZWQuaHRtbCddKTsgfSkgKTsgfSk7IgorICAgICAgICAgICAgInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoY2Fj
aGVzLm1hdGNoKCcvY2FjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJsb2FkZWQgZnJvbSBjYWNoZSI7CisgICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMxID0g
MzsKKyAgICAgICAgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czIgPSAzOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNo
ZWQgZnJvbSBzZXJ2ZXIiOworICAgICAgICBleHBlY3RlZFNlcnZlclJlcXVlc3RzMSA9IDI7Cisg
ICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMyID0gMzsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9jYWNoZWQuaHRtbCIsIHsgIjxzY3Jp
cHQ+YWxlcnQoJ2xvYWRlZCBmcm9tIGNhY2hlJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAi
L2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwv
c2NyaXB0PiIgfSB9LAorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVs
ZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICos
IE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNr
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
KSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlJFQ0VJVkVEIENIQUxMRU5HRSIpOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAg
Y2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENy
ZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2Vy
dmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgV1RGTG9nQWx3YXlzKCJXQUlUSU5HIEZPUiBSRUdJU1RSQVRJT04gQUxF
UlQiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwg
InN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFs
UmVxdWVzdHMoKSwgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czEpOworICAgIEVYUEVDVF9UUlVFKGlz
VGVzdFNlcnZlclRydXN0KHdlYlZpZXcuZ2V0KCkuc2VydmVyVHJ1c3QpKTsKKyAgICBpZiAocmVz
cG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCkKKyAgICAgICAgc2VydmVyLmNhbmNl
bCgpOworCisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBXVEZMb2dBbHdheXMoIldBSVRJTkcg
Rk9SIE9USEVSIEFMRVJUIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dh
aXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxS
ZXF1ZXN0cygpLCBleHBlY3RlZFNlcnZlclJlcXVlc3RzMik7CisgICAgRVhQRUNUX05VTEwod2Vi
Vmlldy5nZXQoKS5zZXJ2ZXJUcnVzdCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBFWFBFQ1Rf
VFJVRShpc1Rlc3RTZXJ2ZXJUcnVzdCh3ZWJWaWV3LmdldCgpLnNlcnZlclRydXN0KSk7Cit9CisK
K1RFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZlclRydXN0KQoreworICAgIFdURkxvZ0Fsd2F5cygi
VEVTVElORyBTWU5USEVUSUMiKTsKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6U3ludGhldGlj
KTsKKyAgICBXVEZMb2dBbHdheXMoIlRFU1RJTkcgQ0FDSEVEIik7CisgICAgcnVuVGVzdChSZXNw
b25zZVR5cGU6OkNhY2hlZCk7CisgICAgV1RGTG9nQWx3YXlzKCJURVNUSU5HIEZFVENIRUQiKTsK
KyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCk7CisgICAgV1RGTG9nQWx3YXlzKCJE
T05FIik7Cit9CisKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI2NDYwNCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MiwxNCArNTIsMTUgQEAgcHVibGljOgogICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKICAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QoY29uc3QgU3RyaW5nJiBwYXRoID0gIi8iX3N0cikgY29uc3Q7
CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsKKyAgICB2b2lkIGNhbmNlbCgpOwog
CiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0soQ29ubmVjdGlvbik7
CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8bndfcGFyYW1ldGVyc190PiBs
aXN0ZW5lclBhcmFtZXRlcnMoUHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXImJik7Ci0gICAg
c3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiwgUmVmUHRyPFJlcXVlc3RE
YXRhPik7CisgICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiwgUmVm
PFJlcXVlc3REYXRhPik7CiAKLSAgICBSZWZQdHI8UmVxdWVzdERhdGE+IG1fcmVxdWVzdERhdGE7
CisgICAgUmVmPFJlcXVlc3REYXRhPiBtX3JlcXVlc3REYXRhOwogICAgIFJldGFpblB0cjxud19s
aXN0ZW5lcl90PiBtX2xpc3RlbmVyOwogICAgIFByb3RvY29sIG1fcHJvdG9jb2wgeyBQcm90b2Nv
bDo6SHR0cCB9OwogfTsKQEAgLTcxLDcgKzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2VuZChS
ZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
PSBudWxscHRyKSBjb25zdDsKICAgICB2b2lkIHJlY2VpdmVCeXRlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJikgY29uc3Q7CiAgICAgdm9pZCByZWNlaXZlSFRU
UFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYsIFZlY3Rv
cjxjaGFyPiYmIGJ1ZmZlciA9IHsgfSkgY29uc3Q7Ci0gICAgdm9pZCB0ZXJtaW5hdGUoKSBjb25z
dDsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIHZvaWQgY2FuY2VsKCk7CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEhUVFBTZXJ2ZXI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNjQ2MDQpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAg
c3RydWN0IEhUVFBTZXJ2ZXI6OlJlcXVlc3REYXRhIDogcHVibGljIAogICAgIAogICAgIHNpemVf
dCByZXF1ZXN0Q291bnQgeyAwIH07CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhUVFBSZXNw
b25zZT4gcmVxdWVzdE1hcDsKKyAgICBWZWN0b3I8Q29ubmVjdGlvbj4gY29ubmVjdGlvbnM7CiB9
OwogCiBSZXRhaW5QdHI8bndfcGFyYW1ldGVyc190PiBIVFRQU2VydmVyOjpsaXN0ZW5lclBhcmFt
ZXRlcnMoUHJvdG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllcikK
QEAgLTg4LDEzICs4OSwzMiBAQCBzdGF0aWMgdm9pZCBzdGFydExpc3RlbmluZyhud19saXN0ZW5l
cl90CiAgICAgVXRpbDo6cnVuKCZyZWFkeSk7CiB9CiAKK3ZvaWQgSFRUUFNlcnZlcjo6Y2FuY2Vs
KCkKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNBTkNFTExJTkcgU0VSVkVSIik7CisgICAgX19ibG9j
ayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAgIG53X2xpc3RlbmVyX3NldF9zdGF0ZV9jaGFu
Z2VkX2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgXihud19saXN0ZW5lcl9zdGF0ZV90IHN0YXRl
LCBud19lcnJvcl90IGVycm9yKSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJv
cik7CisgICAgICAgIGlmIChzdGF0ZSA9PSBud19saXN0ZW5lcl9zdGF0ZV9jYW5jZWxsZWQpCisg
ICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIG53X2xpc3RlbmVyX2Nh
bmNlbChtX2xpc3RlbmVyLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7CisgICAg
bV9saXN0ZW5lciA9IG51bGxwdHI7CisgICAgV1RGTG9nQWx3YXlzKCJDQU5DRUxMSU5HIENPTk5F
Q1RJT05TIik7CisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogc3RkOjpleGNoYW5nZShtX3Jl
cXVlc3REYXRhLT5jb25uZWN0aW9ucywgeyB9KSkKKyAgICAgICAgY29ubmVjdGlvbi5jYW5jZWwo
KTsKKyAgICBXVEZMb2dBbHdheXMoIkRPTkUgQ0FOQ0VMTElORyBDT05ORUNUSU9OUyIpOworfQor
CiBIVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8
U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29sLCBDZXJ0
aWZpY2F0ZVZlcmlmaWVyJiYgdmVyaWZpZXIpCi0gICAgOiBtX3JlcXVlc3REYXRhKGFkb3B0UmVm
KG5ldyBSZXF1ZXN0RGF0YShyZXNwb25zZXMpKSkKKyAgICA6IG1fcmVxdWVzdERhdGEoYWRvcHRS
ZWYoKm5ldyBSZXF1ZXN0RGF0YShyZXNwb25zZXMpKSkKICAgICAsIG1fbGlzdGVuZXIoYWRvcHRO
Uyhud19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBXVEZNb3Zl
KHZlcmlmaWVyKSkuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiB7CiAgICAg
bndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCkpOwogICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1f
bGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbcmVxdWVzdERhdGEgPSBtX3JlcXVlc3REYXRh
XShud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgeworICAgICAgICByZXF1ZXN0RGF0YS0+Y29u
bmVjdGlvbnMuYXBwZW5kKENvbm5lY3Rpb24oY29ubmVjdGlvbikpOwogICAgICAgICBud19jb25u
ZWN0aW9uX3NldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
ICAgICAgICAgbndfY29ubmVjdGlvbl9zdGFydChjb25uZWN0aW9uKTsKICAgICAgICAgcmVzcG9u
ZFRvUmVxdWVzdHMoQ29ubmVjdGlvbihjb25uZWN0aW9uKSwgcmVxdWVzdERhdGEpOwpAQCAtMTAz
LDExICsxMjMsMTMgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIH0KIAogSFRUUFNlcnZl
cjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmIGNvbm5lY3Rpb25IYW5k
bGVyLCBQcm90b2NvbCBwcm90b2NvbCkKLSAgICA6IG1fbGlzdGVuZXIoYWRvcHROUyhud19saXN0
ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBudWxscHRyKS5nZXQoKSkp
KQorICAgIDogbV9yZXF1ZXN0RGF0YShhZG9wdFJlZigqbmV3IFJlcXVlc3REYXRhKHsgfSkpKQor
ICAgICwgbV9saXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFt
ZXRlcnMocHJvdG9jb2wsIG51bGxwdHIpLmdldCgpKSkpCiAgICAgLCBtX3Byb3RvY29sKHByb3Rv
Y29sKQogewogICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgpLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rp
b25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb25IYW5k
bGVyID0gV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcildIChud19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikgeworICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlz
dGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbcmVxdWVzdERhdGEgPSBtX3JlcXVlc3REYXRhLCBj
b25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpXSAobndfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgcmVxdWVzdERhdGEtPmNvbm5lY3Rpb25zLmFw
cGVuZChDb25uZWN0aW9uKGNvbm5lY3Rpb24pKTsKICAgICAgICAgbndfY29ubmVjdGlvbl9zZXRf
cXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgICAgIG53
X2Nvbm5lY3Rpb25fc3RhcnQoY29ubmVjdGlvbik7CiAgICAgICAgIGNvbm5lY3Rpb25IYW5kbGVy
KENvbm5lY3Rpb24oY29ubmVjdGlvbikpOwpAQCAtMTM5LDggKzE2MSw2IEBAIHZvaWQgSFRUUFNl
cnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGUKIAogc2l6ZV90IEhUVFBTZXJ2ZXI6OnRvdGFs
UmVxdWVzdHMoKSBjb25zdAogewotICAgIGlmICghbV9yZXF1ZXN0RGF0YSkKLSAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIG1fcmVxdWVzdERhdGEtPnJlcXVlc3RDb3VudDsKIH0KIApAQCAt
MTg3LDEyICsyMDcsMTEgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tRGF0YShk
aQogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi12b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1Jl
cXVlc3RzKENvbm5lY3Rpb24gY29ubmVjdGlvbiwgUmVmUHRyPFJlcXVlc3REYXRhPiByZXF1ZXN0
RGF0YSkKK3ZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiBjb25u
ZWN0aW9uLCBSZWY8UmVxdWVzdERhdGE+IHJlcXVlc3REYXRhKQogewotICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCByZXF1ZXN0RGF0YV0gKFZlY3RvcjxjaGFy
PiYmIHJlcXVlc3QpIHsKKyAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVj
dGlvbiwgcmVxdWVzdERhdGFdIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFyZXF1ZXN0LnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
cmVxdWVzdERhdGEtPnJlcXVlc3RDb3VudCsrOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIGdldFBh
dGhQcmVmaXggPSAiR0VUICI7CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvc3RQYXRoUHJlZml4ID0g
IlBPU1QgIjsKQEAgLTIyMCw2ICsyMzksNyBAQCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1Jl
cXVlc3RzKENvbm5lCiAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKICAg
ICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChyZXNwb25zZS5ib2R5KTsKICAgICAgICAgY29u
bmVjdGlvbi5zZW5kKHJlc3BvbnNlQnVpbGRlci50b1N0cmluZygpLCBbY29ubmVjdGlvbiwgcmVx
dWVzdERhdGFdIHsKKyAgICAgICAgICAgIHJlcXVlc3REYXRhLT5yZXF1ZXN0Q291bnQrKzsKICAg
ICAgICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24sIHJlcXVlc3REYXRhKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CkBAIC0yOTEsMTEgKzMxMSwyNCBAQCB2b2lkIENvbm5lY3Rpb246
OnNlbmQoUmV0YWluUHRyPGRpc3BhdGNoCiAgICAgfSkuZ2V0KCkpOwogfQogCi12b2lkIENvbm5l
Y3Rpb246OnRlcm1pbmF0ZSgpIGNvbnN0Cit2b2lkIENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiB7
CiAgICAgbndfY29ubmVjdGlvbl9jYW5jZWwobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAordm9p
ZCBDb25uZWN0aW9uOjpjYW5jZWwoKQoreworICAgIF9fYmxvY2sgYm9vbCBjYW5jZWxsZWQgPSBm
YWxzZTsKKyAgICBud19jb25uZWN0aW9uX3NldF9zdGF0ZV9jaGFuZ2VkX2hhbmRsZXIobV9jb25u
ZWN0aW9uLmdldCgpLCBeKG53X2Nvbm5lY3Rpb25fc3RhdGVfdCBzdGF0ZSwgbndfZXJyb3JfdCBl
cnJvcikgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCAhZXJyb3IpOworICAgICAgICBp
ZiAoc3RhdGUgPT0gbndfY29ubmVjdGlvbl9zdGF0ZV9jYW5jZWxsZWQpCisgICAgICAgICAgICBj
YW5jZWxsZWQgPSB0cnVlOworICAgIH0pOworICAgIG53X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29u
bmVjdGlvbi5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZjYW5jZWxsZWQpOworICAgIG1fY29ubmVj
dGlvbiA9IG51bGxwdHI7Cit9CisKIHZvaWQgSDI6OkNvbm5lY3Rpb246OnNlbmQoRnJhbWUmJiBm
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dAogewogICAgIGF1dG8gZnJhbWVUeXBlID0gZnJhbWUudHlwZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404889</attachid>
            <date>2020-07-21 17:31:32 -0700</date>
            <delta_ts>2020-07-21 21:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200721173131.patch</filename>
            <type>text/plain</type>
            <size>12358</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDY0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTA3LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJ
bmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IGp1c3QgYSBm
YWlsaW5nIHRlc3QgdGhhdCByZXByb2R1Y2VzIHRoZSBpc3N1ZSAxMDAlIG9mIHRoZSB0aW1lLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6Y2FuY2VsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bV9wcm90
b2NvbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjp0b3RhbFJlcXVlc3Rz
IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1Jl
cXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnRlcm1pbmF0ZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpjYW5jZWwpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6dGVybWluYXRlIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMC0wNy0yMCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2V3c10gVXNlIC1xIHdoaWxlIHVuemlwcGluZyBsYXlvdXQtdGVzdC1yZXN1bHRzLnppcApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0JKHJldmlzaW9uIDI2NDYwNCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTIxMTIsMyArMjExMywxMTQgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgQ29udGVudFJ1bGVMaXN0KQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZVJlbW92aW5nKTsKIH0KKworI2lmIEhBVkUoTkVUV09SS19GUkFN
RVdPUkspICYmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKKworc3RhdGljIGJvb2wgaXNU
ZXN0U2VydmVyVHJ1c3QoU2VjVHJ1c3RSZWYgdHJ1c3QpCit7CisgICAgaWYgKCF0cnVzdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChTZWNUcnVzdEdldENlcnRpZmljYXRlQ291bnQo
dHJ1c3QpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVthZG9wdE5TKChO
U1N0cmluZyAqKVNlY0NlcnRpZmljYXRlQ29weVN1YmplY3RTdW1tYXJ5KFNlY1RydXN0R2V0Q2Vy
dGlmaWNhdGVBdEluZGV4KHRydXN0LCAwKSkpIGlzRXF1YWxUb1N0cmluZzpAIk1lIl0pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZW51bSBjbGFzcyBSZXNw
b25zZVR5cGUgeyBTeW50aGV0aWMsIENhY2hlZCwgRmV0Y2hlZCB9Oworc3RhdGljIHZvaWQgcnVu
VGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOworICAgIAorICAgIF9fYmxvY2sgYm9vbCByZW1vdmVkQW55RXhpc3RpbmdE
YXRhID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgICAgIHJlbW92ZWRBbnlFeGlzdGluZ0RhdGEgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVtb3ZlZEFueUV4aXN0aW5nRGF0YSk7CisKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogbWFpbiA9CisgICAgIjxzY3JpcHQ+IgorICAgICJ0cnkgeyIK
KyAgICAiICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVu
KGZ1bmN0aW9uKHJlZykgeyIKKyAgICAiICAgICAgICBpZiAocmVnLmFjdGl2ZSkgeyIKKyAgICAi
ICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciB1bmV4cGVjdGVkbHkgYWxyZWFkeSBhY3RpdmUnKTsi
CisgICAgIiAgICAgICAgICAgIHJldHVybjsiCisgICAgIiAgICAgICAgfSIKKyAgICAiICAgICAg
ICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsiCisgICAgIiAgICAgICAgd29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7IgorICAgICIgICAgICAgICAgICBp
ZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKSIKKyAgICAiICAgICAgICAgICAgICAgIGFs
ZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKKyAgICAiICAgICAgICB9KTsiCisgICAg
IiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeyIKKyAgICAiICAgICAgICBhbGVydCgnUmVn
aXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOyIKKyAgICAiICAgIH0pOyIKKyAgICAi
fSBjYXRjaChlKSB7IgorICAgICIgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKKyAgICAi
fSIKKyAgICAiPC9zY3JpcHQ+IjsKKyAgICAKKyAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7
CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CisgICAgc2l6ZV90IGV4
cGVjdGVkU2VydmVyUmVxdWVzdHMxID0gMDsKKyAgICBzaXplX3QgZXhwZWN0ZWRTZXJ2ZXJSZXF1
ZXN0czIgPSAwOworCisgICAgc3dpdGNoIChyZXNwb25zZVR5cGUpIHsKKyAgICBjYXNlIFJlc3Bv
bnNlVHlwZTo6U3ludGhldGljOgorICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcg
QmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5
bnRoZXRpYyByZXNwb25zZSI7CisgICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMxID0gMjsK
KyAgICAgICAgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czIgPSAyOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFJlc3BvbnNlVHlwZTo6Q2FjaGVkOgorICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ2luc3RhbGwnLCAoZXZlbnQpID0+IHsgZXZlbnQud2FpdFVudGlsKCBjYWNoZXMu
b3BlbigndjEnKS50aGVuKChjYWNoZSkgPT4geyByZXR1cm4gY2FjaGUuYWRkQWxsKFsnL2NhY2hl
ZC5odG1sJ10pOyB9KSApOyB9KTsiCisgICAgICAgICAgICAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChjYWNoZXMubWF0Y2goJy9j
YWNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImxvYWRlZCBmcm9t
IGNhY2hlIjsKKyAgICAgICAgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czEgPSAzOworICAgICAgICBl
eHBlY3RlZFNlcnZlclJlcXVlc3RzMiA9IDM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVz
cG9uc2VUeXBlOjpGZXRjaGVkOgorICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5o
dG1sJykpIH0pOyI7CisgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZl
ciI7CisgICAgICAgIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMxID0gMjsKKyAgICAgICAgZXhwZWN0
ZWRTZXJ2ZXJSZXF1ZXN0czIgPSAzOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBIVFRQ
U2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW4gfSB9LAorICAgICAgICB7ICIv
c3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0s
IGpzIH0gfSwKKyAgICAgICAgeyAiL2NhY2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnbG9h
ZGVkIGZyb20gY2FjaGUnKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
IiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0s
CisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
TWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBj
YWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2
ZXJUcnVzdF0pOworICAgIH1dOworICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0
XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRv
dGFsUmVxdWVzdHMoKSwgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czEpOworICAgIEVYUEVDVF9UUlVF
KGlzVGVzdFNlcnZlclRydXN0KHdlYlZpZXcuZ2V0KCkuc2VydmVyVHJ1c3QpKTsKKyAgICBpZiAo
cmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCkKKyAgICAgICAgc2VydmVyLmNh
bmNlbCgpOworCisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7CisgICAgRVhQRUNUX0VR
KHNlcnZlci50b3RhbFJlcXVlc3RzKCksIGV4cGVjdGVkU2VydmVyUmVxdWVzdHMyKTsKKyAgICBF
WFBFQ1RfTlVMTCh3ZWJWaWV3LmdldCgpLnNlcnZlclRydXN0KTsgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIEVYUEVDVF9UUlVFKGlzVGVzdFNlcnZlclRydXN0KHdlYlZpZXcuZ2V0KCkuc2VydmVy
VHJ1c3QpKTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VycywgU2VydmVyVHJ1c3QpCit7CisgICAg
cnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYyk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5
cGU6OkNhY2hlZCk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQpOworfQorCisj
ZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykgJiYgSEFWRShUTFNfUFJPVE9DT0xfVkVS
U0lPTl9UKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlz
aW9uIDI2NDYwNCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MiwxNCArNTIsMTUgQEAgcHVibGljOgogICAgIHVpbnQxNl90IHBv
cnQoKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoY29uc3QgU3RyaW5nJiBwYXRo
ID0gIi8iX3N0cikgY29uc3Q7CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsKKyAg
ICB2b2lkIGNhbmNlbCgpOwogCiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VU
aGVuT0soQ29ubmVjdGlvbik7CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8
bndfcGFyYW1ldGVyc190PiBsaXN0ZW5lclBhcmFtZXRlcnMoUHJvdG9jb2wsIENlcnRpZmljYXRl
VmVyaWZpZXImJik7Ci0gICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlv
biwgUmVmUHRyPFJlcXVlc3REYXRhPik7CisgICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVz
dHMoQ29ubmVjdGlvbiwgUmVmPFJlcXVlc3REYXRhPik7CiAKLSAgICBSZWZQdHI8UmVxdWVzdERh
dGE+IG1fcmVxdWVzdERhdGE7CisgICAgUmVmPFJlcXVlc3REYXRhPiBtX3JlcXVlc3REYXRhOwog
ICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVyOwogICAgIFByb3RvY29sIG1f
cHJvdG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9OwogfTsKQEAgLTcxLDcgKzcyLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKICAgICB2b2lkIHJlY2VpdmVCeXRl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJikgY29uc3Q7CiAg
ICAgdm9pZCByZWNlaXZlSFRUUFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
Y2hhcj4mJik+JiYsIFZlY3RvcjxjaGFyPiYmIGJ1ZmZlciA9IHsgfSkgY29uc3Q7Ci0gICAgdm9p
ZCB0ZXJtaW5hdGUoKSBjb25zdDsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpOworICAgIHZvaWQgY2Fu
Y2VsKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEhUVFBTZXJ2ZXI7CkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNjQ2MDQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OlJlcXVlc3REYXRhIDogcHVibGlj
IAogICAgIAogICAgIHNpemVfdCByZXF1ZXN0Q291bnQgeyAwIH07CiAgICAgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIEhUVFBSZXNwb25zZT4gcmVxdWVzdE1hcDsKKyAgICBWZWN0b3I8Q29ubmVjdGlv
bj4gY29ubmVjdGlvbnM7CiB9OwogCiBSZXRhaW5QdHI8bndfcGFyYW1ldGVyc190PiBIVFRQU2Vy
dmVyOjpsaXN0ZW5lclBhcmFtZXRlcnMoUHJvdG9jb2wgcHJvdG9jb2wsIENlcnRpZmljYXRlVmVy
aWZpZXImJiB2ZXJpZmllcikKQEAgLTg4LDEzICs4OSwyOSBAQCBzdGF0aWMgdm9pZCBzdGFydExp
c3RlbmluZyhud19saXN0ZW5lcl90CiAgICAgVXRpbDo6cnVuKCZyZWFkeSk7CiB9CiAKK3ZvaWQg
SFRUUFNlcnZlcjo6Y2FuY2VsKCkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0gZmFs
c2U7CisgICAgbndfbGlzdGVuZXJfc2V0X3N0YXRlX2NoYW5nZWRfaGFuZGxlcihtX2xpc3RlbmVy
LmdldCgpLCBeKG53X2xpc3RlbmVyX3N0YXRlX3Qgc3RhdGUsIG53X2Vycm9yX3QgZXJyb3IpIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgIWVycm9yKTsKKyAgICAgICAgaWYgKHN0YXRl
ID09IG53X2xpc3RlbmVyX3N0YXRlX2NhbmNlbGxlZCkKKyAgICAgICAgICAgIGNhbmNlbGxlZCA9
IHRydWU7CisgICAgfSk7CisgICAgbndfbGlzdGVuZXJfY2FuY2VsKG1fbGlzdGVuZXIuZ2V0KCkp
OworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVkKTsKKyAgICBtX2xpc3RlbmVyID0gbnVsbHB0cjsK
KyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBzdGQ6OmV4Y2hhbmdlKG1fcmVxdWVzdERhdGEt
PmNvbm5lY3Rpb25zLCB7IH0pKQorICAgICAgICBjb25uZWN0aW9uLmNhbmNlbCgpOworfQorCiBI
VFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3Ry
aW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29sLCBDZXJ0aWZp
Y2F0ZVZlcmlmaWVyJiYgdmVyaWZpZXIpCi0gICAgOiBtX3JlcXVlc3REYXRhKGFkb3B0UmVmKG5l
dyBSZXF1ZXN0RGF0YShyZXNwb25zZXMpKSkKKyAgICA6IG1fcmVxdWVzdERhdGEoYWRvcHRSZWYo
Km5ldyBSZXF1ZXN0RGF0YShyZXNwb25zZXMpKSkKICAgICAsIG1fbGlzdGVuZXIoYWRvcHROUyhu
d19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBXVEZNb3ZlKHZl
cmlmaWVyKSkuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiB7CiAgICAgbndf
bGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkpOwogICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlz
dGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbcmVxdWVzdERhdGEgPSBtX3JlcXVlc3REYXRhXShu
d19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgeworICAgICAgICByZXF1ZXN0RGF0YS0+Y29ubmVj
dGlvbnMuYXBwZW5kKENvbm5lY3Rpb24oY29ubmVjdGlvbikpOwogICAgICAgICBud19jb25uZWN0
aW9uX3NldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAg
ICAgICAgbndfY29ubmVjdGlvbl9zdGFydChjb25uZWN0aW9uKTsKICAgICAgICAgcmVzcG9uZFRv
UmVxdWVzdHMoQ29ubmVjdGlvbihjb25uZWN0aW9uKSwgcmVxdWVzdERhdGEpOwpAQCAtMTAzLDEx
ICsxMjAsMTMgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIH0KIAogSFRUUFNlcnZlcjo6
SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmIGNvbm5lY3Rpb25IYW5kbGVy
LCBQcm90b2NvbCBwcm90b2NvbCkKLSAgICA6IG1fbGlzdGVuZXIoYWRvcHROUyhud19saXN0ZW5l
cl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBudWxscHRyKS5nZXQoKSkpKQor
ICAgIDogbV9yZXF1ZXN0RGF0YShhZG9wdFJlZigqbmV3IFJlcXVlc3REYXRhKHsgfSkpKQorICAg
ICwgbV9saXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFtZXRl
cnMocHJvdG9jb2wsIG51bGxwdHIpLmdldCgpKSkpCiAgICAgLCBtX3Byb3RvY29sKHByb3RvY29s
KQogewogICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgpLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25f
aGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb25IYW5kbGVy
ID0gV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcildIChud19jb25uZWN0aW9uX3QgY29ubmVjdGlv
bikgeworICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVu
ZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbcmVxdWVzdERhdGEgPSBtX3JlcXVlc3REYXRhLCBjb25u
ZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpXSAobndfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgcmVxdWVzdERhdGEtPmNvbm5lY3Rpb25zLmFwcGVu
ZChDb25uZWN0aW9uKGNvbm5lY3Rpb24pKTsKICAgICAgICAgbndfY29ubmVjdGlvbl9zZXRfcXVl
dWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgICAgIG53X2Nv
bm5lY3Rpb25fc3RhcnQoY29ubmVjdGlvbik7CiAgICAgICAgIGNvbm5lY3Rpb25IYW5kbGVyKENv
bm5lY3Rpb24oY29ubmVjdGlvbikpOwpAQCAtMTM5LDggKzE1OCw2IEBAIHZvaWQgSFRUUFNlcnZl
cjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGUKIAogc2l6ZV90IEhUVFBTZXJ2ZXI6OnRvdGFsUmVx
dWVzdHMoKSBjb25zdAogewotICAgIGlmICghbV9yZXF1ZXN0RGF0YSkKLSAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIG1fcmVxdWVzdERhdGEtPnJlcXVlc3RDb3VudDsKIH0KIApAQCAtMTg3
LDkgKzIwNCw5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gdmVjdG9yRnJvbURhdGEoZGkKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotdm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0
cyhDb25uZWN0aW9uIGNvbm5lY3Rpb24sIFJlZlB0cjxSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEp
Cit2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKENvbm5lY3Rpb24gY29ubmVjdGlv
biwgUmVmPFJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSkKIHsKLSAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgcmVxdWVzdERhdGFdIChWZWN0b3I8Y2hhcj4mJiBy
ZXF1ZXN0KSB7CisgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb24s
IHJlcXVlc3REYXRhXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghcmVxdWVzdC5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHJlcXVl
c3REYXRhLT5yZXF1ZXN0Q291bnQrKzsKQEAgLTI5MSwxMSArMzA4LDI0IEBAIHZvaWQgQ29ubmVj
dGlvbjo6c2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2gKICAgICB9KS5nZXQoKSk7CiB9CiAKLXZvaWQg
Q29ubmVjdGlvbjo6dGVybWluYXRlKCkgY29uc3QKK3ZvaWQgQ29ubmVjdGlvbjo6dGVybWluYXRl
KCkKIHsKICAgICBud19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24uZ2V0KCkpOwogfQog
Cit2b2lkIENvbm5lY3Rpb246OmNhbmNlbCgpCit7CisgICAgX19ibG9jayBib29sIGNhbmNlbGxl
ZCA9IGZhbHNlOworICAgIG53X2Nvbm5lY3Rpb25fc2V0X3N0YXRlX2NoYW5nZWRfaGFuZGxlciht
X2Nvbm5lY3Rpb24uZ2V0KCksIF4obndfY29ubmVjdGlvbl9zdGF0ZV90IHN0YXRlLCBud19lcnJv
cl90IGVycm9yKSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7CisgICAg
ICAgIGlmIChzdGF0ZSA9PSBud19jb25uZWN0aW9uX3N0YXRlX2NhbmNlbGxlZCkKKyAgICAgICAg
ICAgIGNhbmNlbGxlZCA9IHRydWU7CisgICAgfSk7CisgICAgbndfY29ubmVjdGlvbl9jYW5jZWwo
bV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7CisgICAgbV9j
b25uZWN0aW9uID0gbnVsbHB0cjsKK30KKwogdm9pZCBIMjo6Q29ubmVjdGlvbjo6c2VuZChGcmFt
ZSYmIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0CiB7CiAgICAgYXV0byBmcmFtZVR5cGUgPSBmcmFtZS50eXBlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404898</attachid>
            <date>2020-07-21 21:10:53 -0700</date>
            <delta_ts>2020-07-22 09:44:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200721211052.patch</filename>
            <type>text/plain</type>
            <size>40816</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRv
ZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQg
ZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbG9hZGluZyBhIHNlcnZp
Y2Ugd29ya2VyIEphdmFTY3JpcHQgcmVzb3VyY2UsIHdlIG5lZWQgdG8gdGVsbCB0aGUgbmV0d29y
ayBwcm9jZXNzIHRvIGluY2x1ZGUgY2VydGlmaWNhdGUgaW5mbyB3aXRoIHRoZSByZXNwb25zZS4K
KyAgICAgICAgV2UgdGhlbiBwYXNzIHRoYXQgcmVzcG9uc2UgdG8gdGhlIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBmb3Igc3RvcmFnZS4gIFdoZW4gdGhlIHNlcnZpY2Ugd29ya2VyIGdlbmVyYXRl
cyByZXNwb25zZXMgdG8gZmV0Y2hlcywgdXNlIHRoYXQKKyAgICAgICAgY2VydGlmaWNhdGUgY2hh
aW4gZm9yIFdLV2ViVmlldy5zZXJ2ZXJUcnVzdCB3aGVuIHRoZSBwYWdlIGlzIGNvbW1pdHRlZC4K
KworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0aW5nIGEgdGVzdCBJIHdyb3RlIGluIHIyNjQ2ODcu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q2VydGlmaWNhdGVJbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0ZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmNlcnRpZmljYXRlSW5mbyBjb25zdCk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJ2aWNlV29ya2VyRmV0Y2hFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmRlY29kZSk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICBBbHNvIGZpeCBhIHBv
c3NpYmxlIHVzZS1hZnRlci1tb3ZlIGJ1ZywgZGVwZW5kaW5nIG9uIHBhcmFtZXRlciBldmFsdWF0
aW9uIG9yZGVyIHdoaWNoIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Omlu
c3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEgY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAy
MC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUluZm9CYXNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBzYW5pdGl6ZVN1Z2dl
c3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUlu
Zm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUo
aW5mbyk7IH0KICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKICAgICBib29sIHVz
ZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lUTFMgPT0gVXNlZExlZ2Fj
eVRMUzo6WWVzOyB9CiAgICAgdm9pZCBzZXRVc2VkTGVnYWN5VExTKFVzZWRMZWdhY3lUTFMgdXNl
ZCkgeyBtX3VzZWRMZWdhY3lUTFMgPSB1c2VkOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvLmgJKHJldmlzaW9uIDI2
NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKKyAgICBDZXJ0aWZpY2F0ZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAgICBX
RUJDT1JFX0VYUE9SVCBDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4oKSBjb25zdDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5l
dC5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
MywxNiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQ2VydGlmaWNhdGVJbmZvOjpjCiB9CiAjZW5k
aWYKIAorQ2VydGlmaWNhdGVJbmZvIENlcnRpZmljYXRlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKK3sKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY29weTsKKyNpZiBIQVZFKFNFQ19UUlVTVF9TRVJJ
QUxJWkFUSU9OKQorICAgIGNvcHkubV90cnVzdCA9IG1fdHJ1c3Q7CisjZW5kaWYKKyAgICBjb3B5
Lm1fY2VydGlmaWNhdGVDaGFpbiA9IG1fY2VydGlmaWNhdGVDaGFpbjsKKyAgICByZXR1cm4gY29w
eTsKK30KKwogQ2VydGlmaWNhdGVJbmZvOjpUeXBlIENlcnRpZmljYXRlSW5mbzo6dHlwZSgpIGNv
bnN0CiB7CiAjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZv
LmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9DZXJ0aWZpY2F0ZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQ2VydGlmaWNhdGVJbmZvKEdUbHNDZXJ0aWZpY2F0ZSosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Q2VydGlmaWNhdGVJbmZv
KCk7CiAKKyAgICBDZXJ0aWZpY2F0ZUluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBub3RJbXBs
ZW1lbnRlZCgpOyByZXR1cm4geyB9OyB9CisKICAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmlj
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0
Q2VydGlmaWNhdGUoR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkgeyBtX2NlcnRpZmljYXRl
ID0gY2VydGlmaWNhdGU7IH0KICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMoKSBj
b25zdCB7IHJldHVybiBtX3Rsc0Vycm9yczsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdv
cmtlcj4+IFdvcmtlcjo6Y3JlYXRlKAogICAgIGZldGNoT3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0
aW9uczo6Q2FjaGU6OkRlZmF1bHQ7CiAgICAgZmV0Y2hPcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hP
cHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93OwogICAgIGZldGNoT3B0aW9ucy5kZXN0aW5hdGlvbiA9
IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OldvcmtlcjsKLSAgICB3b3JrZXItPm1fc2NyaXB0
TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoY29udGV4dCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShmZXRjaE9wdGlvbnMpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgU2Vy
dmljZVdvcmtlcnNNb2RlOjpBbGwsIHdvcmtlcik7CisgICAgd29ya2VyLT5tX3NjcmlwdExvYWRl
ci0+bG9hZEFzeW5jaHJvbm91c2x5KGNvbnRleHQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
ZmV0Y2hPcHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VX
b3JrZXJzTW9kZTo6QWxsLCBDZXJ0aWZpY2F0ZUluZm9Qb2xpY3k6OkRvTm90SW5jbHVkZUNlcnRp
ZmljYXRlSW5mbywgd29ya2VyKTsKICAgICByZXR1cm4gd29ya2VyOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCShyZXZpc2lvbiAy
NjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdv
cmtlclNjcmlwdExvYWRlcjo6CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiBzY3JpcHRSZXF1
ZXN0LCBGZXRjaE9wdGlvbnMmJiBmZXRjaE9wdGlvbnMsIENvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vy
c01vZGUgc2VydmljZVdvcmtlck1vZGUsIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50
KQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiBz
Y3JpcHRSZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBmZXRjaE9wdGlvbnMsIENvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2
aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlck1vZGUsIENlcnRpZmljYXRlSW5mb1BvbGljeSBj
ZXJ0aWZpY2F0ZUluZm9Qb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50KQog
ewogICAgIG1fY2xpZW50ID0gJmNsaWVudDsKICAgICBtX3VybCA9IHNjcmlwdFJlcXVlc3QudXJs
KCk7CkBAIC0xMjcsNiArMTI3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdQogICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRp
YWxzOjpTYW1lT3JpZ2luOwogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2Fs
bGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3M7CiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudCA9IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OworICAg
IG9wdGlvbnMuY2VydGlmaWNhdGVJbmZvUG9saWN5ID0gY2VydGlmaWNhdGVJbmZvUG9saWN5Owog
ICAgIC8vIEEgc2VydmljZSB3b3JrZXIgam9iIGNhbiBiZSBleGVjdXRlZCBmcm9tIGEgd29ya2Vy
IGNvbnRleHQgb3IgYSBkb2N1bWVudCBjb250ZXh0LgogICAgIG9wdGlvbnMuc2VydmljZVdvcmtl
cnNNb2RlID0gc2VydmljZVdvcmtlck1vZGU7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpA
QCAtMTgwLDYgKzE4MSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG8KICAgICB9CiAKICAgICBtX3Jlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7CisgICAgbV9j
ZXJ0aWZpY2F0ZUluZm8gPSByZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA/ICpyZXNwb25zZS5j
ZXJ0aWZpY2F0ZUluZm8oKSA6IENlcnRpZmljYXRlSW5mbygpOwogICAgIG1fcmVzcG9uc2VNSU1F
VHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0g
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVzcG9uc2UgfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24g
MjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQ7CitlbnVtIGNsYXNzIENlcnRpZmljYXRl
SW5mb1BvbGljeSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU3LDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIE9wdGlvbmFsPEV4Y2VwdGlvbj4gbG9hZFN5bmNocm9ub3Vz
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIEZldGNoT3B0aW9uczo6TW9k
ZSwgRmV0Y2hPcHRpb25zOjpDYWNoZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQs
IGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllcik7Ci0gICAgdm9pZCBsb2FkQXN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRj
aE9wdGlvbnMmJiwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3Jr
ZXJzTW9kZSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Jik7CisgICAgdm9pZCBsb2FkQXN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRj
aE9wdGlvbnMmJiwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3Jr
ZXJzTW9kZSwgQ2VydGlmaWNhdGVJbmZvUG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQm
KTsKIAogICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIApAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVm
ZXJyZXJQb2xpY3k7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNvbnN0OworICAgIGNvbnN0IENlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0
ZUluZm87IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlTUlNRVR5cGU7IH0KICAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmFpbGVkOyB9CiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CkBAIC05Niw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nQnVpbGRlciBtX3NjcmlwdDsKICAgICBVUkwgbV91cmw7CiAgICAgVVJMIG1fcmVzcG9uc2VV
Ukw7CisgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAgIFN0cmluZyBt
X3Jlc3BvbnNlTUlNRVR5cGU7CiAgICAgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBtX2Rlc3Rp
bmF0aW9uOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI2NDY4
NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHQKICAgICBqb2IuZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dCgqY29udGV4dCwgY2FjaGVQb2xpY3kpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkK
K3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNl
cnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJl
clBvbGljeSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
cHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkCiAKICAgICBDT05UQUlORVJfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0OiBTdWNjZXNzZnVseSBm
aW5pc2hlZCBmZXRjaGluZyBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1NjQsIGpvYi5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAKLSAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5maW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRh
KCkucmVnaXN0cmF0aW9uS2V5KCksIHNjcmlwdCwgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZl
cnJlclBvbGljeSwgeyB9IH0pOworICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoU2VydmljZVdvcmtlckZldGNoUmVzdWx0IHsgam9iLmRh
dGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIHNjcmlwdCwg
Y2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB7
IH0gfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGlu
Z1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBFeGNlcHRpb24mJiBleGNlcHRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgJKHJldmlzaW9uIDI2
NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpIGZp
bmFsOwogICAgIHZvaWQgam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2Vydmlj
ZVdvcmtlckpvYiYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpIGZpbmFsOwogICAgIHZvaWQg
c3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiwgRmV0Y2hPcHRpb25zOjpD
YWNoZSkgZmluYWw7Ci0gICAgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KSBmaW5hbDsK
KyAgICB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xp
Y3kpIGZpbmFsOwogICAgIHZvaWQgam9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYsIEV4Y2VwdGlvbiYmKSBmaW5hbDsKIAogICAgIHZv
aWQgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCShyZXZpc2lvbiAyNjQ2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IGpvYkRhdGFJZGVudGlm
aWVyLCByZWdpc3RyYXRpb24uaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0eVBvbGljeS5pc29sYXRlZENv
cHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdFVSTC5pc29sYXRlZENv
cHkoKSwgd29ya2VyVHlwZSwgbG9hZGVkRnJvbURpc2ssIGNyb3NzVGhyZWFkQ29weShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKKyAgICByZXR1cm4geworICAgICAgICBqb2JEYXRhSWRlbnRpZmllciwK
KyAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwKKyAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIGNvbnRlbnRTZWN1cml0eVBv
bGljeS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5
KCksCisgICAgICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgd29ya2VyVHlw
ZSwKKyAgICAgICAgbG9hZGVkRnJvbURpc2ssCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3Jp
cHRSZXNvdXJjZU1hcCkKKyAgICB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIgpAQCAtODAsNiArODEsNyBAQCBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSByZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXI7CiAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2Vy
dGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBj
b250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwogICAgIFVS
TCBzY3JpcHRVUkw7CkBAIC05OCw2ICsxMDAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6ZW5jb2RlKEVuCiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCBy
ZWdpc3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRl
bnRTZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBzY3JpcHRVUkwgPDwgd29ya2Vy
VHlwZSA8PCBsb2FkZWRGcm9tRGlzazsKICAgICBlbmNvZGVyIDw8IHNjcmlwdFJlc291cmNlTWFw
OworICAgIGVuY29kZXIgPDwgY2VydGlmaWNhdGVJbmZvOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgpAQCAtMTQ1LDcgKzE0OCwyNCBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IFNlcnZpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRSZXNvdXJjZU1hcCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgq
am9iRGF0YUlkZW50aWZpZXIpLCBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLCBXVEZNb3ZlKCpzZXJ2
aWNlV29ya2VySWRlbnRpZmllciksIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShjb250ZW50U2Vj
dXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwp
LCB3b3JrZXJUeXBlLCBsb2FkZWRGcm9tRGlzaywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkg
fX07CisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CisgICAg
ZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CisgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIHt7CisgICAgICAg
IFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0
aW9uKSwKKyAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAorICAgICAg
ICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCisg
ICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKKyAgICAgICAgV1RGTW92ZShy
ZWZlcnJlclBvbGljeSksCisgICAgICAgIFdURk1vdmUoc2NyaXB0VVJMKSwKKyAgICAgICAgd29y
a2VyVHlwZSwKKyAgICAgICAgbG9hZGVkRnJvbURpc2ssCisgICAgICAgIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApCisgICAgfX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckZldGNoUmVzdWx0LmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTEgKzM4LDEyIEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgewogICAg
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleTsKICAgICBTdHJpbmcg
c2NyaXB0OworICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAg
ICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CiAgICAgUmVzb3VyY2VFcnJvciBzY3JpcHRFcnJvcjsK
IAotICAgIFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJl
dHVybiB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCks
IHNjcmlwdC5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29w
eSgpLCByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc2NyaXB0RXJyb3IuaXNvbGF0ZWRD
b3B5KCkgfTsgfQorICAgIFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXkuaXNvbGF0
ZWRDb3B5KCksIHNjcmlwdC5pc29sYXRlZENvcHkoKSwgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVk
Q29weSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9s
aWN5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRFcnJvci5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CkBAIC01MCwxMyAr
NTEsMTQgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCB7CiAKIGlubGluZSBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQgc2VydmljZVdvcmtlckZldGNoRXJyb3IoU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiYgcmVnaXN0cmF0aW9uS2V5LCBSZXNvdXJjZUVycm9yJiYgZXJyb3IpCiB7Ci0g
ICAgcmV0dXJuIHsgam9iRGF0YUlkZW50aWZpZXIsIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwg
eyB9LCB7IH0sIHsgfSwgV1RGTW92ZShlcnJvcikgfTsKKyAgICByZXR1cm4geyBqb2JEYXRhSWRl
bnRpZmllciwgV1RGTW92ZShyZWdpc3RyYXRpb25LZXkpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIFdU
Rk1vdmUoZXJyb3IpIH07CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdpc3RyYXRpb25LZXkgPDwgc2Ny
aXB0IDw8IGNvbnRlbnRTZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBzY3JpcHRF
cnJvcjsKKyAgICBlbmNvZGVyIDw8IGNlcnRpZmljYXRlSW5mbzsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KQEAgLTgxLDYgKzgzLDEyIEBAIGJvb2wgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnNjcmlwdEVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOworICAgIGRlY29k
ZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlmaWNhdGVJbmZvKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LmNlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUoKmNl
cnRpZmljYXRlSW5mbyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCogc2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShjb25zdCBVUkwmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0JiYpOwogCisgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8oKSB7IHJldHVybiBtX2NvbnRleHREYXRhLmNlcnRpZmljYXRlSW5mbzsgfQorICAgIAogcHJp
dmF0ZToKICAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4s
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmNwcAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRjaFNjcmlwdFdpdGhDbwogICAgIG9wdGlvbnMu
Y2FjaGUgPSBjYWNoZVBvbGljeTsKICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25z
OjpSZWRpcmVjdDo6RXJyb3I7CiAgICAgb3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7Ci0gICAgbV9zY3JpcHRMb2FkZXItPmxvYWRB
c3luY2hyb25vdXNseShjb250ZXh0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlLCBTZXJ2aWNl
V29ya2Vyc01vZGU6Ok5vbmUsICp0aGlzKTsKKyAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5j
aHJvbm91c2x5KGNvbnRleHQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIENv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UsIFNlcnZpY2VXb3Jr
ZXJzTW9kZTo6Tm9uZSwgQ2VydGlmaWNhdGVJbmZvUG9saWN5OjpJbmNsdWRlQ2VydGlmaWNhdGVJ
bmZvLCAqdGhpcyk7CiB9CiAKIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlckpvYjo6dmFsaWRh
dGVTZXJ2aWNlV29ya2VyUmVzcG9uc2UoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRh
dGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQoKQogICAgIGF1dG8gc2NyaXB0
TG9hZGVyID0gV1RGTW92ZShtX3NjcmlwdExvYWRlcik7CiAKICAgICBpZiAoIXNjcmlwdExvYWRl
ci0+ZmFpbGVkKCkpIHsKLSAgICAgICAgbV9jbGllbnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0
KCp0aGlzLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJlZmVycmVyUG9saWN5KCkpOworICAgICAgICBt
X2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoKnRoaXMsIHNjcmlwdExvYWRlci0+c2Ny
aXB0KCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNhdGVJbmZvKCksIHNjcmlwdExvYWRlci0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExvYWRlci0+cmVmZXJyZXJQb2xpY3koKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAkocmV2aXNpb24gMjY0
Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYs
IEZldGNoT3B0aW9uczo6Q2FjaGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRM
b2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlclBvbGljeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpv
YkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJy
b3ImLCBFeGNlcHRpb24mJikgPSAwOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2
NSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmEKICAgICByZXR1
cm4geyB9OwogfQogCi1zdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBj
bGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1
bHQsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGly
ZWN0LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpCitzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2Uo
UmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgUmVzb3Vy
Y2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6
OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIENlcnRpZmljYXRlSW5m
byYmIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewog
ICAgICAgICBjbGllbnQtPmRpZEZhaWwocmVzdWx0LmVycm9yKCkpOwpAQCAtMTAzLDYgKzEwMyw4
IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYKICAgICBpZiAocmVz
b3VyY2VSZXNwb25zZS51cmwoKS5pc051bGwoKSkKICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5z
ZXRVUkwocmVxdWVzdFVSTCk7CiAKKyAgICByZXNvdXJjZVJlc3BvbnNlLnNldENlcnRpZmljYXRl
SW5mbyhXVEZNb3ZlKGNlcnRpZmljYXRlSW5mbykpOworICAgIAogICAgIGNsaWVudC0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc291cmNlUmVzcG9uc2UpOwogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0Jv
ZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewpAQCAtMTcxLDggKzE3MywxMCBAQCB2b2lkIGRpc3BhdGNo
RmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsCiAgICAgaW5pdC5jYW5jZWxhYmxlID0gdHJ1ZTsK
ICAgICBhdXRvIGV2ZW50ID0gRmV0Y2hFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mZXRjaEV2
ZW50LCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwogCi0gICAgZXZlbnQt
Pm9uUmVzcG9uc2UoW2NsaWVudCwgbW9kZSwgcmVkaXJlY3QsIHJlcXVlc3RVUkxdIChhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgcHJvY2Vzc1Jlc3BvbnNlKFdURk1vdmUoY2xpZW50
KSwgV1RGTW92ZShyZXN1bHQpLCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTCk7CisgICAgQ2Vy
dGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbyA9IGdsb2JhbFNjb3BlLmNlcnRpZmljYXRlSW5m
bygpOworCisgICAgZXZlbnQtPm9uUmVzcG9uc2UoW2NsaWVudCwgbW9kZSwgcmVkaXJlY3QsIHJl
cXVlc3RVUkwsIGNlcnRpZmljYXRlSW5mbyA9IFdURk1vdmUoY2VydGlmaWNhdGVJbmZvKV0gKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBwcm9jZXNzUmVzcG9uc2UoV1RGTW92ZShj
bGllbnQpLCBXVEZNb3ZlKHJlc3VsdCksIG1vZGUsIHJlZGlyZWN0LCByZXF1ZXN0VVJMLCBXVEZN
b3ZlKGNlcnRpZmljYXRlSW5mbykpOwogICAgIH0pOwogCiAgICAgZ2xvYmFsU2NvcGUuZGlzcGF0
Y2hFdmVudChldmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkocmV2aXNp
b24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw2ICs0MDUsOSBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMTEsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CiAgICAgICAgIE9w
dGlvbmFsPEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0Pj4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHNl
cmlhbGl6aW5nIHRoZSBjZXJ0aWZpY2F0ZSBpbmZvIHRvIGRpc2sgc28gV0tXZWJWaWV3LnNlcnZl
clRydXN0IHdpbGwgYmUgbm9uLW51bGwgd2hlbiBvZmZsaW5lLgorICAgICAgICBDZXJ0aWZpY2F0
ZUluZm8gZW1wdHlDZXJ0aWZpY2F0ZUluZm87CisKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLmRh
dGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChzY3JpcHRS
ZXNvdXJjZU1hcERhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERl
Y29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXA7CkBAIC00MjIsNyArNDI1LDcgQEAgU3RyaW5nIFJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcgogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRh
IHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2
YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0
byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUo
KmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRl
VmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRh
ID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lz
dHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY29u
dGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2Ny
aXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9
OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsg
V1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdU
Rk1vdmUoc2NyaXB0KSwgV1RGTW92ZShlbXB0eUNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNv
bnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNj
cmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkg
fTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdU
Rk1vdmUoY29udGV4dERhdGEpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU4LDcgKzE1OCw4IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZy
b21TdG9yZSgKICAgICAvLyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIG1ha2Ug
YSBuZXcgcmVnaXN0cmF0aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBpbXBvcnQgd2FzIHN0aWxs
IHRha2luZyBwbGFjZS4KICAgICBBU1NFUlQoIW1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5jb250
YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpKTsKICAgICAKLSAgICB2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVSTCksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKV0g
KGJvb2wgaXNWYWxpZCkgbXV0YWJsZSB7CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEuc2NyaXB0VVJMKTsKKyAgICB2YWxpZGF0ZVJl
Z2lzdHJhdGlvbkRvbWFpbihyZWdpc3RyYWJsZURvbWFpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgaWYgKG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHx8IGlzVmFsaWQpIHsKQEAgLTE2
Nyw3ICsxNjgsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoCiAg
ICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAg
ICAgICAgICAgIGFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOwogCi0gICAg
ICAgICAgICBhdXRvIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpjcmVhdGUoKnRoaXMsICpyZWdp
c3RyYXRpb25QdHIsIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCwgZGF0YS5jb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFdURk1vdmUoZGF0YS5yZWZlcnJlclBvbGljeSksIGRhdGEud29ya2VyVHlw
ZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShkYXRhLnNjcmlwdFJlc291
cmNlTWFwKSk7CisgICAgICAgICAgICBhdXRvIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpjcmVh
dGUoKnRoaXMsICpyZWdpc3RyYXRpb25QdHIsIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCwg
ZGF0YS5jZXJ0aWZpY2F0ZUluZm8sIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3Zl
KGRhdGEucmVmZXJyZXJQb2xpY3kpLCBkYXRhLndvcmtlclR5cGUsIGRhdGEuc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdURk1vdmUoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkpOwogICAgICAgICAg
ICAgcmVnaXN0cmF0aW9uUHRyLT51cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGU6OkFjdGl2ZSwgd29ya2VyLnB0cigpKTsKICAgICAgICAgICAgIHdv
cmtlci0+c2V0U3RhdGUoU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOwogICAgICAgICB9
CkBAIC02MjksOSArNjMwLDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdv
cmtlcgogICAgICAgICByZWdpc3RyYXRpb24tPnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjp1
cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRh
SWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZl
cnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK3ZvaWQgU1dT
ZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
IGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxs
Q29udGV4dERhdGEoeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY29udGVudFNlY3VyaXR5
UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8s
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2Us
IFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjp0cnlJ
bnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKQEAgLTY3
OSw3ICs2ODAsNyBAQCB2b2lkIFNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgCiAg
ICAgfQogCiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmdldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpLmdldCgpOwotICAgIGF1dG8gd29ya2VyID0gU1dT
ZXJ2ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvbiwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nIHsgZGF0YS5y
ZWZlcnJlclBvbGljeSB9LCBkYXRhLndvcmtlclR5cGUsIGRhdGEuc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiB7IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXAgfSk7CisgICAgYXV0byB3b3JrZXIgPSBTV1Nl
cnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCAqcmVnaXN0cmF0aW9uLCBkYXRhLnNjcmlwdFVSTCwg
ZGF0YS5zY3JpcHQsIGRhdGEuY2VydGlmaWNhdGVJbmZvLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBv
bGljeSwgU3RyaW5nIHsgZGF0YS5yZWZlcnJlclBvbGljeSB9LCBkYXRhLndvcmtlclR5cGUsIGRh
dGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiB7IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXAgfSk7CiAK
ICAgICBhdXRvKiBjb25uZWN0aW9uID0gd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpOwogICAg
IEFTU0VSVChjb25uZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlv
bkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICB2b2lkIHN0YXJ0
U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBib29sIHNob3VsZFJlZnJl
c2hDYWNoZSk7CiAKLSAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CisgICAgdm9p
ZCB1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29u
c3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgZmlyZUFj
dGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaAogICAgIC8vIEZJWE1F
OiBVcGRhdGUgYWxsIHRoZSBpbXBvcnRlZCBzY3JpcHRzIGFzIHBlciBzcGVjLiBGb3Igbm93LCB3
ZSBqdXN0IGRvIGFzIGlmIHRoZXJlIGlzIG5vbmUuCiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCB0
aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFzc2ljIHZzIG1vZHVsZSkKLSAgICBtX3NlcnZlci51
cGRhdGVXb3JrZXIoam9iLmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVS
TCwgcmVzdWx0LnNjcmlwdCwgcmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVzdWx0LnJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlOjpDbGFzc2ljLCB7IH0pOworICAgIG1fc2VydmVyLnVw
ZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJM
LCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNl
Y3VyaXR5UG9saWN5LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGU6OkNsYXNzaWMs
IHsgfSk7CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRh
dGUtYWxnb3JpdGhtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAkocmV2aXNpb24gMjY0Njg3KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwxMyBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2
ZXJXb3JrZXI6OmV4aXN0aW5nCiB9CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2Vz
IGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNX
U2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQorU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1h
a2VXZWFrUHRyKHNlcnZlcikpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24u
a2V5KCkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihtYWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQog
ICAgICwgbV9kYXRhIHsgaWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6
OlJlZHVuZGFudCwgdHlwZSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSB9CiAgICAgLCBtX3Nj
cmlwdChzY3JpcHQpCisgICAgLCBtX2NlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZUluZm8pCiAg
ICAgLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeShjb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAg
LCBtX3JlZmVycmVyUG9saWN5KFdURk1vdmUocmVmZXJyZXJQb2xpY3kpKQogICAgICwgbV9yZWdp
c3RyYWJsZURvbWFpbihtX2RhdGEuc2NyaXB0VVJMKQpAQCAtODQsNyArODUsNyBAQCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6CiB7CiAgICAgQVNTRVJUKG1fcmVnaXN0
cmF0aW9uKTsKIAotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRh
dGEoKSwgbV9kYXRhLmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eSwgbV9yZWZlcnJlclBvbGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNl
LCBtX3NjcmlwdFJlc291cmNlTWFwIH07CisgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlm
aWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9k
YXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX3NjcmlwdFJlc291cmNlTWFwIH07
CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCShyZXZpc2lvbiAyNjQ2ODcpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRG
YWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1Nl
cnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmlu
ZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYp
OworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVm
ZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAg
ICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAs
NiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiBt
X3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7CiAgICAgU3RyaW5n
IG1fc2NyaXB0OworICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3k7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXJQb2xpY3k7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdF
dmVudHMgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAt
MDctMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBTYWZhcmkgZG9lcyBub3QgcHJlc2VudCBDZXJ0aWZpY2F0ZUluZm8gZm9yIHNlcnZpY2Ut
d29ya2VyIHNlcnZlZCBkb2N1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjQwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU0MTA4NzU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisKIDIwMjAtMDctMjEg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQg
ZXhwZXJpbWVudGFsIE1TRSBXZWJNIHBhcnNlcgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6d2lsbAogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSByZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA/
ICpyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA6IENlcnRpZmljYXRlSW5mbygpOwogICAgIGlm
IChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCAmJiBtX2NhY2hlRW50cnkpIHsKICAg
ICAgICAgbG9hZFdpdGhDYWNoZUVudHJ5KCptX2NhY2hlRW50cnkpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CkBAIC0xODYsNyArMTg3LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRgogewogICAgIGlmIChtX2RlY29k
ZXIpCiAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmZsdXNoKCkpOwotICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIoeyBtX2pvYkRhdGEuaWRlbnRpZmllcigpLCBtX2pvYkRhdGEucmVn
aXN0cmF0aW9uS2V5KCksIG1fc2NyaXB0LnRvU3RyaW5nKCksIG1fY29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3JlZmVycmVyUG9saWN5LCB7IH0gfSk7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7
IG1fam9iRGF0YS5pZGVudGlmaWVyKCksIG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgbV9z
Y3JpcHQudG9TdHJpbmcoKSwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3JlZmVycmVyUG9saWN5LCB7IH0gfSk7CiAgICAgZGlkQ29tcGxldGUoKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgJ
KHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dFJlc291cmNl
RGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7CisgICAgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ2OTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNhZmFyaSBkb2VzIG5vdCBwcmVzZW50
IENlcnRpZmljYXRlSW5mbyBmb3Igc2VydmljZS13b3JrZXIgc2VydmVkIGRvY3VtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDAzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82NTQxMDg3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIwLTA3LTIxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2FmYXJpIGRvZXMgbm90IHByZXNl
bnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQgZG9jdW1lbnRzCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJC
YXNpYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkocmV2aXNpb24gMjY0Njg3KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIyMTMsNyArMjIxMyw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9u
c2VUeXBlIHJlc3BvbnMKICAgICBbd2ViVmlldyByZWxvYWRdOwogICAgIEVYUEVDVF9XS19TVFJF
UShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKICAgICBFWFBF
Q1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgZXhwZWN0ZWRTZXJ2ZXJSZXF1ZXN0czIpOwot
ICAgIEVYUEVDVF9OVUxMKHdlYlZpZXcuZ2V0KCkuc2VydmVyVHJ1c3QpOyAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgRVhQRUNUX1RSVUUoaXNUZXN0U2VydmVyVHJ1c3Qod2ViVmlldy5nZXQoKS5z
ZXJ2ZXJUcnVzdCkpOworICAgIEVYUEVDVF9UUlVFKGlzVGVzdFNlcnZlclRydXN0KHdlYlZpZXcu
Z2V0KCkuc2VydmVyVHJ1c3QpKTsKIH0KIAogVEVTVChTZXJ2aWNlV29ya2VycywgU2VydmVyVHJ1
c3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404930</attachid>
            <date>2020-07-22 09:44:53 -0700</date>
            <delta_ts>2020-07-22 11:37:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200722094452.patch</filename>
            <type>text/plain</type>
            <size>41136</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRv
ZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQg
ZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdoZW4g
bG9hZGluZyBhIHNlcnZpY2Ugd29ya2VyIEphdmFTY3JpcHQgcmVzb3VyY2UsIHdlIG5lZWQgdG8g
dGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIHRvIGluY2x1ZGUgY2VydGlmaWNhdGUgaW5mbyB3aXRo
IHRoZSByZXNwb25zZS4KKyAgICAgICAgV2UgdGhlbiBwYXNzIHRoYXQgcmVzcG9uc2UgdG8gdGhl
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBmb3Igc3RvcmFnZS4gIFdoZW4gdGhlIHNlcnZpY2Ug
d29ya2VyIGdlbmVyYXRlcyByZXNwb25zZXMgdG8gZmV0Y2hlcywgdXNlIHRoYXQKKyAgICAgICAg
Y2VydGlmaWNhdGUgY2hhaW4gZm9yIFdLV2ViVmlldy5zZXJ2ZXJUcnVzdCB3aGVuIHRoZSBwYWdl
IGlzIGNvbW1pdHRlZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0aW5nIGEgdGVzdCBJIHdy
b3RlIGluIHIyNjQ2ODcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmlj
YXRlSW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUlu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmNlcnRpZmljYXRlSW5mbyBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJ2aWNlV29ya2VyRmV0Y2hF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmRl
Y29kZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRz
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAg
ICBBbHNvIGZpeCBhIHBvc3NpYmxlIHVzZS1hZnRlci1tb3ZlIGJ1ZywgZGVwZW5kaW5nIG9uIHBh
cmFtZXRlciBldmFsdWF0aW9uIG9yZGVyIHdoaWNoIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVl
OjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpT
V1NlcnZlcldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4
dERhdGEgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKwogMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUluZm9CYXNl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBtX2NlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoaW5mbyk7IH0KICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsg
fTsKICAgICBib29sIHVzZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lU
TFMgPT0gVXNlZExlZ2FjeVRMUzo6WWVzOyB9CiAgICAgdm9pZCBzZXRVc2VkTGVnYWN5VExTKFVz
ZWRMZWdhY3lUTFMgdXNlZCkgeyBtX3VzZWRMZWdhY3lUTFMgPSB1c2VkOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
LmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKKyAgICBDZXJ0aWZpY2F0ZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVDaGFpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHlwZSB0eXBl
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2Vy
dGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENlcnRpZmljYXRl
SW5mbyhHVGxzQ2VydGlmaWNhdGUqLCBHVGxzQ2VydGlmaWNhdGVGbGFncyk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfkNlcnRpZmljYXRlSW5mbygpOwogCisgICAgQ2VydGlmaWNhdGVJbmZvIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHsgfTsgfQorCiAgICAg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNh
dGUuZ2V0KCk7IH0KICAgICB2b2lkIHNldENlcnRpZmljYXRlKEdUbHNDZXJ0aWZpY2F0ZSogY2Vy
dGlmaWNhdGUpIHsgbV9jZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlOyB9CiAgICAgR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAJKHJl
dmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw4IEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3UKICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbjsKICAgICBvcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzID0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzOwogICAgIG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lFbmZvcmNlbWVudDsKKyAgICBpZiAoZmV0Y2hPcHRpb25zLmRlc3RpbmF0aW9uID09IEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXIpCisgICAgICAgIG9wdGlvbnMuY2Vy
dGlmaWNhdGVJbmZvUG9saWN5ID0gQ2VydGlmaWNhdGVJbmZvUG9saWN5OjpJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvOwogICAgIC8vIEEgc2VydmljZSB3b3JrZXIgam9iIGNhbiBiZSBleGVjdXRlZCBm
cm9tIGEgd29ya2VyIGNvbnRleHQgb3IgYSBkb2N1bWVudCBjb250ZXh0LgogICAgIG9wdGlvbnMu
c2VydmljZVdvcmtlcnNNb2RlID0gc2VydmljZVdvcmtlck1vZGU7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpAQCAtMTgwLDYgKzE4Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG8KICAgICB9CiAKICAgICBtX3Jlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJs
KCk7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSByZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA/
ICpyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA6IENlcnRpZmljYXRlSW5mbygpOwogICAgIG1f
cmVzcG9uc2VNSU1FVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbV9yZXNwb25zZUVu
Y29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5ID0gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVzcG9u
c2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
aAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQ7CitlbnVtIGNsYXNz
IENlcnRpZmljYXRlSW5mb1BvbGljeSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIFdvcmtlclNjcmlwdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj4sIHB1YmxpYyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25z
dDsKKyAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNwb25zZU1J
TUVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZU1JTUVUeXBlOyB9CiAgICAgYm9vbCBm
YWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxlZDsgfQogICAgIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpAQCAtOTYsNiArOTgsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7CiAgICAgVVJMIG1fdXJsOwog
ICAgIFVSTCBtX3Jlc3BvbnNlVVJMOworICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1JTUVUeXBlOwogICAgIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb24gbV9kZXN0aW5hdGlvbjsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw3ICs0Njks
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0CiAgICAgam9iLmZl
dGNoU2NyaXB0V2l0aENvbnRleHQoKmNvbnRleHQsIGNhY2hlUG9saWN5KTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXJQb2xpY3kpCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlz
aGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CkBAIC00Nzcs
NyArNDc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZAogCiAg
ICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdDogU3VjY2Vzc2Z1bHkgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIgUFJJ
dTY0LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCi0gICAgZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRl
bnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCBzY3JpcHQsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKKyAgICBlbnN1cmVTV0NsaWVu
dENvbm5lY3Rpb24oKS5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCB7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJh
dGlvbktleSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5
LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90
aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpv
YiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwotICAgIHZvaWQgam9iRmluaXNoZWRMb2Fk
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlclBvbGljeSkgZmluYWw7CisgICAgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2Vy
dmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5KSBmaW5hbDsKICAgICB2b2lkIGpvYkZhaWxlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24m
JikgZmluYWw7CiAKICAgICB2b2lkIG5vdGlmeUZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmNwcAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1
cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJp
dHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBz
Y3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5cGUsIGxvYWRlZEZyb21EaXNrLCBjcm9z
c1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgcmV0dXJuIHsKKyAgICAgICAg
am9iRGF0YUlkZW50aWZpZXIsCisgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwK
KyAgICAgICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCisgICAgICAgIHNjcmlwdC5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlZmVycmVy
UG9saWN5Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCks
CisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBj
cm9zc1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAkocmV2aXNpb24gMjY0Njg3KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKQEAgLTgwLDYg
KzgxLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFN0cmluZyBzY3JpcHQ7CisgICAg
Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyByZWZl
cnJlclBvbGljeTsKICAgICBVUkwgc2NyaXB0VVJMOwpAQCAtOTgsNiArMTAwLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbgogewogICAgIGVuY29kZXIgPDwgam9i
RGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kgPDwg
c2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2s7CiAgICAgZW5jb2RlciA8
PCBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICBlbmNvZGVyIDw8IGNlcnRpZmljYXRlSW5mbzsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE0NSw3ICsxNDgsMjQgQEAgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2NyaXB0UmVzb3VyY2VNYXApKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwgV1RGTW92ZSgqcmVnaXN0cmF0
aW9uKSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCks
IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSks
IFdURk1vdmUoc2NyaXB0VVJMKSwgd29ya2VyVHlwZSwgbG9hZGVkRnJvbURpc2ssIFdURk1vdmUo
c2NyaXB0UmVzb3VyY2VNYXApIH19OworICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2Vy
dGlmaWNhdGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICgh
Y2VydGlmaWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAg
IHJldHVybiB7eworICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCisgICAgICAg
IFdURk1vdmUoKnJlZ2lzdHJhdGlvbiksCisgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZShzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpj
ZXJ0aWZpY2F0ZUluZm8pLAorICAgICAgICBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSks
CisgICAgICAgIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLAorICAgICAgICBXVEZNb3ZlKHNjcmlw
dFVSTCksCisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAg
ICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQorICAgIH19OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCShyZXZpc2lvbiAyNjQ2ODcpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMiBAQCBzdHJ1Y3QgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0IHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0
YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRp
b25LZXk7CiAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNh
dGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50
U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwogICAgIFJlc291cmNl
RXJyb3Igc2NyaXB0RXJyb3I7CiAKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9u
S2V5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHNj
cmlwdEVycm9yLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNlcnRp
ZmljYXRlSW5mby5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVk
Q29weSgpLCByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc2NyaXB0RXJyb3IuaXNvbGF0
ZWRDb3B5KCkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYpOwpAQCAtNTAsMTMgKzUxLDE0IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgewogCiBpbmxpbmUgU2VydmljZVdvcmtlckZldGNoUmVzdWx0IHNlcnZpY2VXb3JrZXJGZXRj
aEVycm9yKFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmIHJlZ2lzdHJhdGlvbktleSwgUmVzb3VyY2VF
cnJvciYmIGVycm9yKQogewotICAgIHJldHVybiB7IGpvYkRhdGFJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlZ2lzdHJhdGlvbktleSksIHsgfSwgeyB9LCB7IH0sIFdURk1vdmUoZXJyb3IpIH07CisgICAg
cmV0dXJuIHsgam9iRGF0YUlkZW50aWZpZXIsIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCBXVEZNb3ZlKGVycm9yKSB9OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVn
aXN0cmF0aW9uS2V5IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJy
ZXJQb2xpY3kgPDwgc2NyaXB0RXJyb3I7CisgICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUluZm87
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC04MSw2ICs4MywxMiBAQCBib29sIFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHRFcnJvcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmlj
YXRlSW5mbzsKKyAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKKyAgICBpZiAoIWNlcnRp
ZmljYXRlSW5mbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5jZXJ0aWZpY2F0
ZUluZm8gPSBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQqIHNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYpIGNv
bnN0OwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKIAorICAgIGNvbnN0IENlcnRpZmljYXRl
SW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RGF0YS5jZXJ0
aWZpY2F0ZUluZm87IH0KKyAgICAKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5
RmluaXNoZWQoKQogICAgIGF1dG8gc2NyaXB0TG9hZGVyID0gV1RGTW92ZShtX3NjcmlwdExvYWRl
cik7CiAKICAgICBpZiAoIXNjcmlwdExvYWRlci0+ZmFpbGVkKCkpIHsKLSAgICAgICAgbV9jbGll
bnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgp
LCBzY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJl
ZmVycmVyUG9saWN5KCkpOworICAgICAgICBtX2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3Jp
cHQoKnRoaXMsIHNjcmlwdExvYWRlci0+c2NyaXB0KCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNh
dGVJbmZvKCksIHNjcmlwdExvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExv
YWRlci0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JDbGllbnQuaAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
JiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYlJl
c29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVu
cmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgPSAwOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
UmVzb3VyY2VFcnJvcj4gdmEKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgdm9pZCBwcm9j
ZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3Bv
bnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBG
ZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpCitz
dGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVk
PFJlZjxGZXRjaFJlc3BvbnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9u
czo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIENlcnRpZmljYXRlSW5mbyYmIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICBjbGllbnQtPmRpZEZhaWwocmVzdWx0
LmVycm9yKCkpOwpAQCAtOTcsNiArOTcsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2Uo
UmVmPENsaWVudD4mCiAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldE1pbWVUeXBlKCJ0
ZXh0L2h0bWwiX3MpOwogICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKCJVVEYtOCJfcyk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIXJlc291cmNlUmVz
cG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpCisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNl
dENlcnRpZmljYXRlSW5mbyhXVEZNb3ZlKGNlcnRpZmljYXRlSW5mbykpOwogICAgIH0KIAogICAg
IC8vIEFzIHBlciBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaCBzdGVw
IDksIGNvcHkgcmVxdWVzdCdzIHVybCBsaXN0IGluIHJlc3BvbnNlJ3MgdXJsIGxpc3QgaWYgZW1w
dHkuCkBAIC0xNzEsOCArMTc0LDEwIEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGll
bnQ+JiYgY2wKICAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOwogICAgIGF1dG8gZXZlbnQgPSBG
ZXRjaEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZldGNoRXZlbnQsIFdURk1vdmUoaW5pdCks
IEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAKLSAgICBldmVudC0+b25SZXNwb25zZShbY2xpZW50
LCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTF0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBwcm9jZXNzUmVzcG9uc2UoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlc3VsdCks
IG1vZGUsIHJlZGlyZWN0LCByZXF1ZXN0VVJMKTsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlm
aWNhdGVJbmZvID0gZ2xvYmFsU2NvcGUuY2VydGlmaWNhdGVJbmZvKCk7CisKKyAgICBldmVudC0+
b25SZXNwb25zZShbY2xpZW50LCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTCwgY2VydGlmaWNh
dGVJbmZvID0gV1RGTW92ZShjZXJ0aWZpY2F0ZUluZm8pXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVz
dWx0KSwgbW9kZSwgcmVkaXJlY3QsIHJlcXVlc3RVUkwsIFdURk1vdmUoY2VydGlmaWNhdGVJbmZv
KSk7CiAgICAgfSk7CiAKICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksMTEgKzQ5LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA0Oworc3RhdGljIGNv
bnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJl
Y29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKLSAgICByZXR1cm4g
bWFrZVN0cmluZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoa2V5IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgb3JpZ2luIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCB0b3BPcmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBs
YXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB1cGRh
dGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdFVSTCBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjb250
ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWZlcnJl
clBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdFJlc291cmNlTWFw
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoIgorICAgICAgICAia2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgIgorICAg
ICAgICAib3JpZ2luIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgIgorICAgICAgICAi
c2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCisgICAgICAgICJ0b3BP
cmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCisgICAgICAgICJsYXN0VXBk
YXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCisgICAgICAg
ICJ1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKKyAgICAg
ICAgInNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKKyAgICAgICAg
InNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKKyAgICAgICAgIndvcmtl
clR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCisgICAgICAgICJjb250ZW50
U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCisgICAgICAg
ICJyZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKKyAgICAg
ICAgInNjcmlwdFJlc291cmNlTWFwIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgIgor
ICAgICAgICAiY2VydGlmaWNhdGVJbmZvIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIK
KyAgICAgICAgIikiKTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hl
bWEoKQpAQCAtMzIxLDcgKzMzNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVz
aENoYW5nZXMKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7
CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
ZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPywgPykiX3MpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm47CkBAIC0zNDQsNiArMzU4LDkgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsKICAgICAgICAgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CiAKKyAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOworICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOworCiAgICAgICAg
IGlmIChzcWwuYmluZFRleHQoMSwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvRGF0YWJhc2VLZXko
KSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMiwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgzLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTC5w
YXRoKCkudG9TdHJpbmcoKSkgIT0gU1FMSVRFX09LCkBAIC0zNTYsNiArMzczLDcgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICAgICAgfHwgc3FsLmJp
bmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJy
ZXJQb2xpY3kpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBz
Y3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rl
ci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9i
KDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNl
V29ya2VyLCAiRmFpbGVkIHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEyLDYgKzQzMCwxNSBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBWZWN0b3I8dWludDhfdD4gY2VydGlmaWNh
dGVJbmZvRGF0YTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMiwgY2VydGlm
aWNhdGVJbmZvRGF0YSk7CisgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlm
aWNhdGVJbmZvOworCisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNh
dGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZv
RGF0YS5zaXplKCkpOworICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmlj
YXRlSW5mbzsKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQgZm9yIHRoaXMgcmVnaXN0cmF0
aW9uLgogICAgICAgICAvLyBJZiBhbnkgcGFydCBvZiB0aGlzIGlucHV0IGlzIGludmFsaWQsIGxl
dCdzIHNraXAgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
cmV0dXJuIGFuIGVycm9yIHNraXBwaW5nICphbGwqIHJlZ2lzdHJhdGlvbnM/CkBAIC00MjIsNyAr
NDQ5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcgogICAgICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9
IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNl
V29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUo
c2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAg
ICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2Ny
aXB0KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBv
bGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNj
cmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdv
cmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZv
KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGlj
eSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlw
dFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAJKHJldmlzaW9uIDI2
NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDggQEAgdm9pZCBTV1NlcnZlcjo6YWRk
UmVnaXN0cmF0aW9uRnJvbVN0b3JlKAogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVu
IGFibGUgdG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGlt
cG9ydCB3YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0
cmF0aW9uTWFwLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogICAgIAotICAgIHZh
bGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEu
c2NyaXB0VVJMKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oZGF0YS5zY3JpcHRVUkwpOwor
ICAgIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChib29s
IGlzVmFsaWQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgfHwgaXNW
YWxpZCkgewpAQCAtMTY3LDcgKzE2OCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlv
bkZyb21TdG9yZSgKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0
aW9uLmdldCgpOwogICAgICAgICAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0
aW9uKSk7CiAKLSAgICAgICAgICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0
ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0LCBk
YXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJlZmVycmVyUG9saWN5KSwg
ZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRh
dGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKKyAgICAgICAgICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNlcnRpZmljYXRlSW5mbywgZGF0YS5jb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFdURk1vdmUoZGF0YS5yZWZlcnJlclBvbGljeSksIGRhdGEud29ya2VyVHlwZSwgZGF0
YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShkYXRhLnNjcmlwdFJlc291cmNlTWFw
KSk7CiAgICAgICAgICAgICByZWdpc3RyYXRpb25QdHItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRl
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZTo6QWN0aXZlLCB3b3JrZXIucHRyKCkpOwog
ICAgICAgICAgICAgd29ya2VyLT5zZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRl
ZCk7CiAgICAgICAgIH0KQEAgLTYyOSw5ICs2MzAsOSBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNl
TWFwKQordm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewot
ICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YSh7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRp
b24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQg
U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBkYXRhKQpAQCAtNjc5LDcgKzY4MCw3IEBAIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0
RGF0YShjb25zdCAKICAgICB9CiAKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuZ2V0KGRhdGEucmVnaXN0cmF0aW9uLmtleSkuZ2V0KCk7Ci0gICAgYXV0
byB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCAqcmVnaXN0cmF0aW9uLCBk
YXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEud29ya2VyVHlwZSwgZGF0YS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCB9KTsKKyAgICBhdXRv
IHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpjcmVhdGUoKnRoaXMsICpyZWdpc3RyYXRpb24sIGRh
dGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCwgZGF0YS5jZXJ0aWZpY2F0ZUluZm8sIGRhdGEuY29u
dGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEu
d29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNv
dXJjZU1hcCB9KTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25u
ZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAkocmV2aXNpb24gMjY0Njg3
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2
ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwog
ICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4mJik7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNo
CiAgICAgLy8gRklYTUU6IFVwZGF0ZSBhbGwgdGhlIGltcG9ydGVkIHNjcmlwdHMgYXMgcGVyIHNw
ZWMuIEZvciBub3csIHdlIGp1c3QgZG8gYXMgaWYgdGhlcmUgaXMgbm9uZS4KIAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHRoZSBwcm9wZXIgd29ya2VyIHR5cGUgKGNsYXNzaWMgdnMgbW9kdWxlKQot
ICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9u
LCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9s
aWN5LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGU6OkNsYXNzaWMsIHsgfSk7Cisg
ICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24s
IGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJl
c3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5yZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZTo6Q2xhc3NpYywgeyB9KTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCShyZXZpc2lv
biAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTIgKzQ5LDEzIEBAIFNXU2VydmVy
V29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmcKIH0KIAogLy8gRklYTUU6IFVzZSByLXZh
bHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1Nl
cnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VN
YXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogICAg
IDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5
KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJl
Z2lzdHJhdGlvbikpCiAgICAgLCBtX2RhdGEgeyBpZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZp
Y2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50LCB0eXBlLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigp
IH0KICAgICAsIG1fc2NyaXB0KHNjcmlwdCkKKyAgICAsIG1fY2VydGlmaWNhdGVJbmZvKGNlcnRp
ZmljYXRlSW5mbykKICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0
eVBvbGljeSkKICAgICAsIG1fcmVmZXJyZXJQb2xpY3koV1RGTW92ZShyZWZlcnJlclBvbGljeSkp
CiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKG1fZGF0YS5zY3JpcHRVUkwpCkBAIC04NCw3ICs4
NSw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjoKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2Rh
dGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3Nj
cmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVy
cmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0
UmVzb3VyY2VNYXAgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgJKHJldmlz
aW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vz
cyk7CiAKQEAgLTE0MCw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0
YTsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNh
dGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKICAgICBib29s
IG1faGFzUGVuZGluZ0V2ZW50cyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0
Njg3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFNhZmFyaSBkb2VzIG5vdCBwcmVzZW50IENlcnRpZmljYXRlSW5m
byBmb3Igc2VydmljZS13b3JrZXIgc2VydmVkIGRvY3VtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NTQxMDg3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaDoKKwogMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2Vy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw2ICsxMzcsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjp3aWxsCiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICAvLyBGSVhNRTogSWYgdGhlIGNl
cnRpZmljYXRlIGluZm8gY2hhbmdlcyBidXQgdGhlIHNjcmlwdCBjb250ZW50IGRvZXMgbm90LCB0
cmVhdCB0aGF0IGFzIGFuIHVwZGF0ZS4KKyAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNl
LmNlcnRpZmljYXRlSW5mbygpID8gKnJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpIDogQ2VydGlm
aWNhdGVJbmZvKCk7CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0ICYm
IG1fY2FjaGVFbnRyeSkgewogICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2FjaGVFbnRy
eSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKQEAg
LTE4Niw3ICsxODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRG
CiB7CiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+Zmx1c2goKSk7Ci0gICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fam9iRGF0YS5pZGVudGlm
aWVyKCksIG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgbV9zY3JpcHQudG9TdHJpbmcoKSwg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKKyAgICBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgbV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgbV9qb2JEYXRhLnJl
Z2lzdHJhdGlvbktleSgpLCBtX3NjcmlwdC50b1N0cmluZygpLCBtX2NlcnRpZmljYXRlSW5mbywg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKICAgICBk
aWRDb21wbGV0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgU3RyaW5nQnVpbGRl
ciBtX3NjcmlwdDsKKyAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUlu
Zm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY5MCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTIxICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2Fm
YXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBz
ZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06
CisKIDIwMjAtMDctMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBTYWZhcmkgZG9lcyBub3QgcHJlc2VudCBDZXJ0aWZpY2F0ZUluZm8gZm9y
IHNlcnZpY2Utd29ya2VyIHNlcnZlZCBkb2N1bWVudHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIxMyw3ICsy
MjEzLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9ucwogICAgIFt3
ZWJWaWV3IHJlbG9hZF07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwogICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1
ZXN0cygpLCBleHBlY3RlZFNlcnZlclJlcXVlc3RzMik7Ci0gICAgRVhQRUNUX05VTEwod2ViVmll
dy5nZXQoKS5zZXJ2ZXJUcnVzdCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBFWFBFQ1RfVFJV
RShpc1Rlc3RTZXJ2ZXJUcnVzdCh3ZWJWaWV3LmdldCgpLnNlcnZlclRydXN0KSk7CisgICAgRVhQ
RUNUX1RSVUUoaXNUZXN0U2VydmVyVHJ1c3Qod2ViVmlldy5nZXQoKS5zZXJ2ZXJUcnVzdCkpOwog
fQogCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2ZXJUcnVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404942</attachid>
            <date>2020-07-22 11:37:39 -0700</date>
            <delta_ts>2020-07-22 12:59:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200722113738.patch</filename>
            <type>text/plain</type>
            <size>41646</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRv
ZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQg
ZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdoZW4g
bG9hZGluZyBhIHNlcnZpY2Ugd29ya2VyIEphdmFTY3JpcHQgcmVzb3VyY2UsIHdlIG5lZWQgdG8g
dGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIHRvIGluY2x1ZGUgY2VydGlmaWNhdGUgaW5mbyB3aXRo
IHRoZSByZXNwb25zZS4KKyAgICAgICAgV2UgdGhlbiBwYXNzIHRoYXQgcmVzcG9uc2UgdG8gdGhl
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBmb3Igc3RvcmFnZS4gIFdoZW4gdGhlIHNlcnZpY2Ug
d29ya2VyIGdlbmVyYXRlcyByZXNwb25zZXMgdG8gZmV0Y2hlcywgdXNlIHRoYXQKKyAgICAgICAg
Y2VydGlmaWNhdGUgY2hhaW4gZm9yIFdLV2ViVmlldy5zZXJ2ZXJUcnVzdCB3aGVuIHRoZSBwYWdl
IGlzIGNvbW1pdHRlZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0aW5nIGEgdGVzdCBJIHdy
b3RlIGluIHIyNjQ2ODcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmlj
YXRlSW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUlu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmNlcnRpZmljYXRlSW5mbyBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJ2aWNlV29ya2VyRmV0Y2hF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmRl
Y29kZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRz
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAg
ICBBbHNvIGZpeCBhIHBvc3NpYmxlIHVzZS1hZnRlci1tb3ZlIGJ1ZywgZGVwZW5kaW5nIG9uIHBh
cmFtZXRlciBldmFsdWF0aW9uIG9yZGVyIHdoaWNoIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVl
OjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpT
V1NlcnZlcldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4
dERhdGEgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKwogMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUluZm9CYXNl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBtX2NlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoaW5mbyk7IH0KICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsg
fTsKICAgICBib29sIHVzZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lU
TFMgPT0gVXNlZExlZ2FjeVRMUzo6WWVzOyB9CiAgICAgdm9pZCBzZXRVc2VkTGVnYWN5VExTKFVz
ZWRMZWdhY3lUTFMgdXNlZCkgeyBtX3VzZWRMZWdhY3lUTFMgPSB1c2VkOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
LmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKKyAgICBDZXJ0aWZpY2F0ZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVDaGFpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHlwZSB0eXBl
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2Vy
dGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENlcnRpZmljYXRl
SW5mbyhHVGxzQ2VydGlmaWNhdGUqLCBHVGxzQ2VydGlmaWNhdGVGbGFncyk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfkNlcnRpZmljYXRlSW5mbygpOwogCisgICAgQ2VydGlmaWNhdGVJbmZvIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHsgfTsgfQorCiAgICAg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNh
dGUuZ2V0KCk7IH0KICAgICB2b2lkIHNldENlcnRpZmljYXRlKEdUbHNDZXJ0aWZpY2F0ZSogY2Vy
dGlmaWNhdGUpIHsgbV9jZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlOyB9CiAgICAgR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAJKHJl
dmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw4IEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3UKICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbjsKICAgICBvcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzID0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzOwogICAgIG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lFbmZvcmNlbWVudDsKKyAgICBpZiAoZmV0Y2hPcHRpb25zLmRlc3RpbmF0aW9uID09IEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXIpCisgICAgICAgIG9wdGlvbnMuY2Vy
dGlmaWNhdGVJbmZvUG9saWN5ID0gQ2VydGlmaWNhdGVJbmZvUG9saWN5OjpJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvOwogICAgIC8vIEEgc2VydmljZSB3b3JrZXIgam9iIGNhbiBiZSBleGVjdXRlZCBm
cm9tIGEgd29ya2VyIGNvbnRleHQgb3IgYSBkb2N1bWVudCBjb250ZXh0LgogICAgIG9wdGlvbnMu
c2VydmljZVdvcmtlcnNNb2RlID0gc2VydmljZVdvcmtlck1vZGU7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpAQCAtMTgwLDYgKzE4Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG8KICAgICB9CiAKICAgICBtX3Jlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJs
KCk7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSByZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA/
ICpyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA6IENlcnRpZmljYXRlSW5mbygpOwogICAgIG1f
cmVzcG9uc2VNSU1FVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbV9yZXNwb25zZUVu
Y29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5ID0gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVzcG9u
c2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
aAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQ7CitlbnVtIGNsYXNz
IENlcnRpZmljYXRlSW5mb1BvbGljeSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIFdvcmtlclNjcmlwdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj4sIHB1YmxpYyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25z
dDsKKyAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNwb25zZU1J
TUVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZU1JTUVUeXBlOyB9CiAgICAgYm9vbCBm
YWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxlZDsgfQogICAgIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpAQCAtOTYsNiArOTgsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7CiAgICAgVVJMIG1fdXJsOwog
ICAgIFVSTCBtX3Jlc3BvbnNlVVJMOworICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1JTUVUeXBlOwogICAgIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb24gbV9kZXN0aW5hdGlvbjsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw3ICs0Njks
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0CiAgICAgam9iLmZl
dGNoU2NyaXB0V2l0aENvbnRleHQoKmNvbnRleHQsIGNhY2hlUG9saWN5KTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXJQb2xpY3kpCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlz
aGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CkBAIC00Nzcs
NyArNDc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZAogCiAg
ICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdDogU3VjY2Vzc2Z1bHkgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIgUFJJ
dTY0LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCi0gICAgZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRl
bnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCBzY3JpcHQsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKKyAgICBlbnN1cmVTV0NsaWVu
dENvbm5lY3Rpb24oKS5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCB7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJh
dGlvbktleSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5
LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90
aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpv
YiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwotICAgIHZvaWQgam9iRmluaXNoZWRMb2Fk
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlclBvbGljeSkgZmluYWw7CisgICAgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2Vy
dmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5KSBmaW5hbDsKICAgICB2b2lkIGpvYkZhaWxlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24m
JikgZmluYWw7CiAKICAgICB2b2lkIG5vdGlmeUZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmNwcAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1
cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJp
dHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBz
Y3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5cGUsIGxvYWRlZEZyb21EaXNrLCBjcm9z
c1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgcmV0dXJuIHsKKyAgICAgICAg
am9iRGF0YUlkZW50aWZpZXIsCisgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwK
KyAgICAgICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCisgICAgICAgIHNjcmlwdC5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlZmVycmVy
UG9saWN5Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCks
CisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBj
cm9zc1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAkocmV2aXNpb24gMjY0Njg3KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKQEAgLTgwLDYg
KzgxLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFN0cmluZyBzY3JpcHQ7CisgICAg
Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyByZWZl
cnJlclBvbGljeTsKICAgICBVUkwgc2NyaXB0VVJMOwpAQCAtOTgsNiArMTAwLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbgogewogICAgIGVuY29kZXIgPDwgam9i
RGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kgPDwg
c2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2s7CiAgICAgZW5jb2RlciA8
PCBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICBlbmNvZGVyIDw8IGNlcnRpZmljYXRlSW5mbzsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE0NSw3ICsxNDgsMjQgQEAgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2NyaXB0UmVzb3VyY2VNYXApKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwgV1RGTW92ZSgqcmVnaXN0cmF0
aW9uKSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCks
IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSks
IFdURk1vdmUoc2NyaXB0VVJMKSwgd29ya2VyVHlwZSwgbG9hZGVkRnJvbURpc2ssIFdURk1vdmUo
c2NyaXB0UmVzb3VyY2VNYXApIH19OworICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2Vy
dGlmaWNhdGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICgh
Y2VydGlmaWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAg
IHJldHVybiB7eworICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCisgICAgICAg
IFdURk1vdmUoKnJlZ2lzdHJhdGlvbiksCisgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZShzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpj
ZXJ0aWZpY2F0ZUluZm8pLAorICAgICAgICBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSks
CisgICAgICAgIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLAorICAgICAgICBXVEZNb3ZlKHNjcmlw
dFVSTCksCisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAg
ICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQorICAgIH19OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCShyZXZpc2lvbiAyNjQ2ODcpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMiBAQCBzdHJ1Y3QgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0IHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0
YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRp
b25LZXk7CiAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNh
dGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50
U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwogICAgIFJlc291cmNl
RXJyb3Igc2NyaXB0RXJyb3I7CiAKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9u
S2V5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHNj
cmlwdEVycm9yLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNlcnRp
ZmljYXRlSW5mby5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVk
Q29weSgpLCByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc2NyaXB0RXJyb3IuaXNvbGF0
ZWRDb3B5KCkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYpOwpAQCAtNTAsMTMgKzUxLDE0IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgewogCiBpbmxpbmUgU2VydmljZVdvcmtlckZldGNoUmVzdWx0IHNlcnZpY2VXb3JrZXJGZXRj
aEVycm9yKFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmIHJlZ2lzdHJhdGlvbktleSwgUmVzb3VyY2VF
cnJvciYmIGVycm9yKQogewotICAgIHJldHVybiB7IGpvYkRhdGFJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlZ2lzdHJhdGlvbktleSksIHsgfSwgeyB9LCB7IH0sIFdURk1vdmUoZXJyb3IpIH07CisgICAg
cmV0dXJuIHsgam9iRGF0YUlkZW50aWZpZXIsIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCBXVEZNb3ZlKGVycm9yKSB9OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVn
aXN0cmF0aW9uS2V5IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJy
ZXJQb2xpY3kgPDwgc2NyaXB0RXJyb3I7CisgICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUluZm87
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC04MSw2ICs4MywxMiBAQCBib29sIFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHRFcnJvcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmlj
YXRlSW5mbzsKKyAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKKyAgICBpZiAoIWNlcnRp
ZmljYXRlSW5mbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5jZXJ0aWZpY2F0
ZUluZm8gPSBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQqIHNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYpIGNv
bnN0OwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKIAorICAgIGNvbnN0IENlcnRpZmljYXRl
SW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RGF0YS5jZXJ0
aWZpY2F0ZUluZm87IH0KKyAgICAKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5
RmluaXNoZWQoKQogICAgIGF1dG8gc2NyaXB0TG9hZGVyID0gV1RGTW92ZShtX3NjcmlwdExvYWRl
cik7CiAKICAgICBpZiAoIXNjcmlwdExvYWRlci0+ZmFpbGVkKCkpIHsKLSAgICAgICAgbV9jbGll
bnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgp
LCBzY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJl
ZmVycmVyUG9saWN5KCkpOworICAgICAgICBtX2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3Jp
cHQoKnRoaXMsIHNjcmlwdExvYWRlci0+c2NyaXB0KCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNh
dGVJbmZvKCksIHNjcmlwdExvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExv
YWRlci0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JDbGllbnQuaAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
JiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYlJl
c29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVu
cmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgPSAwOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
UmVzb3VyY2VFcnJvcj4gdmEKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgdm9pZCBwcm9j
ZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3Bv
bnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBG
ZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpCitz
dGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVk
PFJlZjxGZXRjaFJlc3BvbnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9u
czo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIENlcnRpZmljYXRlSW5mbyYmIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICBjbGllbnQtPmRpZEZhaWwocmVzdWx0
LmVycm9yKCkpOwpAQCAtOTcsNiArOTcsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2Uo
UmVmPENsaWVudD4mCiAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldE1pbWVUeXBlKCJ0
ZXh0L2h0bWwiX3MpOwogICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKCJVVEYtOCJfcyk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIXJlc291cmNlUmVz
cG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpCisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNl
dENlcnRpZmljYXRlSW5mbyhXVEZNb3ZlKGNlcnRpZmljYXRlSW5mbykpOwogICAgIH0KIAogICAg
IC8vIEFzIHBlciBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaCBzdGVw
IDksIGNvcHkgcmVxdWVzdCdzIHVybCBsaXN0IGluIHJlc3BvbnNlJ3MgdXJsIGxpc3QgaWYgZW1w
dHkuCkBAIC0xNzEsOCArMTc0LDEwIEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGll
bnQ+JiYgY2wKICAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOwogICAgIGF1dG8gZXZlbnQgPSBG
ZXRjaEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZldGNoRXZlbnQsIFdURk1vdmUoaW5pdCks
IEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAKLSAgICBldmVudC0+b25SZXNwb25zZShbY2xpZW50
LCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTF0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBwcm9jZXNzUmVzcG9uc2UoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlc3VsdCks
IG1vZGUsIHJlZGlyZWN0LCByZXF1ZXN0VVJMKTsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlm
aWNhdGVJbmZvID0gZ2xvYmFsU2NvcGUuY2VydGlmaWNhdGVJbmZvKCk7CisKKyAgICBldmVudC0+
b25SZXNwb25zZShbY2xpZW50LCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTCwgY2VydGlmaWNh
dGVJbmZvID0gV1RGTW92ZShjZXJ0aWZpY2F0ZUluZm8pXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVz
dWx0KSwgbW9kZSwgcmVkaXJlY3QsIHJlcXVlc3RVUkwsIFdURk1vdmUoY2VydGlmaWNhdGVJbmZv
KSk7CiAgICAgfSk7CiAKICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksMTEgKzQ5LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA0Oworc3RhdGljIGNv
bnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJl
Y29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKLSAgICByZXR1cm4g
bWFrZVN0cmluZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoa2V5IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgb3JpZ2luIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCB0b3BPcmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBs
YXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB1cGRh
dGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdFVSTCBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjb250
ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWZlcnJl
clBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdFJlc291cmNlTWFw
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoIgorICAgICAgICAia2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSIKKyAgICAg
ICAgIiwgb3JpZ2luIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwg
c2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCB0b3BP
cmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBsYXN0VXBk
YXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAi
LCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAg
ICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIs
IHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHdvcmtl
clR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBjb250ZW50
U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAi
LCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAg
ICIsIHNjcmlwdFJlc291cmNlTWFwIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAg
ICAgICAgIiwgY2VydGlmaWNhdGVJbmZvIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIK
KyAgICAgICAgIikiKTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hl
bWEoKQpAQCAtMzIxLDcgKzMzNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVz
aENoYW5nZXMKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7
CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
ZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPywgPykiX3MpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm47CkBAIC0zNDQsNiArMzU4LDkgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsKICAgICAgICAgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CiAKKyAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOworICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOworCiAgICAgICAg
IGlmIChzcWwuYmluZFRleHQoMSwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvRGF0YWJhc2VLZXko
KSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMiwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgzLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTC5w
YXRoKCkudG9TdHJpbmcoKSkgIT0gU1FMSVRFX09LCkBAIC0zNTYsNiArMzczLDcgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICAgICAgfHwgc3FsLmJp
bmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJy
ZXJQb2xpY3kpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBz
Y3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rl
ci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9i
KDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNl
V29ya2VyLCAiRmFpbGVkIHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEyLDYgKzQzMCwxNSBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBWZWN0b3I8dWludDhfdD4gY2VydGlmaWNh
dGVJbmZvRGF0YTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMiwgY2VydGlm
aWNhdGVJbmZvRGF0YSk7CisgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlm
aWNhdGVJbmZvOworCisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNh
dGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZv
RGF0YS5zaXplKCkpOworICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmlj
YXRlSW5mbzsKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQgZm9yIHRoaXMgcmVnaXN0cmF0
aW9uLgogICAgICAgICAvLyBJZiBhbnkgcGFydCBvZiB0aGlzIGlucHV0IGlzIGludmFsaWQsIGxl
dCdzIHNraXAgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
cmV0dXJuIGFuIGVycm9yIHNraXBwaW5nICphbGwqIHJlZ2lzdHJhdGlvbnM/CkBAIC00MjIsNyAr
NDQ5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcgogICAgICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9
IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNl
V29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUo
c2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAg
ICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2Ny
aXB0KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBv
bGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNj
cmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdv
cmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZv
KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGlj
eSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlw
dFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAJKHJldmlzaW9uIDI2
NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDggQEAgdm9pZCBTV1NlcnZlcjo6YWRk
UmVnaXN0cmF0aW9uRnJvbVN0b3JlKAogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVu
IGFibGUgdG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGlt
cG9ydCB3YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0
cmF0aW9uTWFwLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogICAgIAotICAgIHZh
bGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEu
c2NyaXB0VVJMKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oZGF0YS5zY3JpcHRVUkwpOwor
ICAgIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChib29s
IGlzVmFsaWQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgfHwgaXNW
YWxpZCkgewpAQCAtMTY3LDcgKzE2OCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlv
bkZyb21TdG9yZSgKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0
aW9uLmdldCgpOwogICAgICAgICAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0
aW9uKSk7CiAKLSAgICAgICAgICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0
ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0LCBk
YXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJlZmVycmVyUG9saWN5KSwg
ZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRh
dGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKKyAgICAgICAgICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNlcnRpZmljYXRlSW5mbywgZGF0YS5jb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFdURk1vdmUoZGF0YS5yZWZlcnJlclBvbGljeSksIGRhdGEud29ya2VyVHlwZSwgZGF0
YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShkYXRhLnNjcmlwdFJlc291cmNlTWFw
KSk7CiAgICAgICAgICAgICByZWdpc3RyYXRpb25QdHItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRl
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZTo6QWN0aXZlLCB3b3JrZXIucHRyKCkpOwog
ICAgICAgICAgICAgd29ya2VyLT5zZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRl
ZCk7CiAgICAgICAgIH0KQEAgLTYyOSw5ICs2MzAsOSBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNl
TWFwKQordm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewot
ICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YSh7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRp
b24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQg
U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBkYXRhKQpAQCAtNjc5LDcgKzY4MCw3IEBAIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0
RGF0YShjb25zdCAKICAgICB9CiAKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuZ2V0KGRhdGEucmVnaXN0cmF0aW9uLmtleSkuZ2V0KCk7Ci0gICAgYXV0
byB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCAqcmVnaXN0cmF0aW9uLCBk
YXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEud29ya2VyVHlwZSwgZGF0YS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCB9KTsKKyAgICBhdXRv
IHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpjcmVhdGUoKnRoaXMsICpyZWdpc3RyYXRpb24sIGRh
dGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCwgZGF0YS5jZXJ0aWZpY2F0ZUluZm8sIGRhdGEuY29u
dGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEu
d29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNv
dXJjZU1hcCB9KTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25u
ZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAkocmV2aXNpb24gMjY0Njg3
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2
ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwog
ICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4mJik7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNo
CiAgICAgLy8gRklYTUU6IFVwZGF0ZSBhbGwgdGhlIGltcG9ydGVkIHNjcmlwdHMgYXMgcGVyIHNw
ZWMuIEZvciBub3csIHdlIGp1c3QgZG8gYXMgaWYgdGhlcmUgaXMgbm9uZS4KIAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHRoZSBwcm9wZXIgd29ya2VyIHR5cGUgKGNsYXNzaWMgdnMgbW9kdWxlKQot
ICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9u
LCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9s
aWN5LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGU6OkNsYXNzaWMsIHsgfSk7Cisg
ICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24s
IGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJl
c3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5yZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZTo6Q2xhc3NpYywgeyB9KTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCShyZXZpc2lv
biAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTIgKzQ5LDEzIEBAIFNXU2VydmVy
V29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmcKIH0KIAogLy8gRklYTUU6IFVzZSByLXZh
bHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1Nl
cnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VN
YXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogICAg
IDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5
KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJl
Z2lzdHJhdGlvbikpCiAgICAgLCBtX2RhdGEgeyBpZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZp
Y2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50LCB0eXBlLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigp
IH0KICAgICAsIG1fc2NyaXB0KHNjcmlwdCkKKyAgICAsIG1fY2VydGlmaWNhdGVJbmZvKGNlcnRp
ZmljYXRlSW5mbykKICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0
eVBvbGljeSkKICAgICAsIG1fcmVmZXJyZXJQb2xpY3koV1RGTW92ZShyZWZlcnJlclBvbGljeSkp
CiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKG1fZGF0YS5zY3JpcHRVUkwpCkBAIC04NCw3ICs4
NSw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjoKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2Rh
dGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3Nj
cmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVy
cmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0
UmVzb3VyY2VNYXAgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgJKHJldmlz
aW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vz
cyk7CiAKQEAgLTE0MCw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0
YTsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNh
dGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKICAgICBib29s
IG1faGFzUGVuZGluZ0V2ZW50cyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0
Njg3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wNy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFNhZmFyaSBkb2VzIG5vdCBwcmVzZW50IENlcnRpZmljYXRlSW5m
byBmb3Igc2VydmljZS13b3JrZXIgc2VydmVkIGRvY3VtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NTQxMDg3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaDoKKwogMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2Vy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw2ICsxMzcsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjp3aWxsCiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICAvLyBGSVhNRTogSWYgdGhlIGNl
cnRpZmljYXRlIGluZm8gY2hhbmdlcyBidXQgdGhlIHNjcmlwdCBjb250ZW50IGRvZXMgbm90LCB0
cmVhdCB0aGF0IGFzIGFuIHVwZGF0ZS4KKyAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNl
LmNlcnRpZmljYXRlSW5mbygpID8gKnJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpIDogQ2VydGlm
aWNhdGVJbmZvKCk7CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0ICYm
IG1fY2FjaGVFbnRyeSkgewogICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2FjaGVFbnRy
eSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKQEAg
LTE4Niw3ICsxODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRG
CiB7CiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+Zmx1c2goKSk7Ci0gICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fam9iRGF0YS5pZGVudGlm
aWVyKCksIG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgbV9zY3JpcHQudG9TdHJpbmcoKSwg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKKyAgICBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgbV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgbV9qb2JEYXRhLnJl
Z2lzdHJhdGlvbktleSgpLCBtX3NjcmlwdC50b1N0cmluZygpLCBtX2NlcnRpZmljYXRlSW5mbywg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKICAgICBk
aWRDb21wbGV0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgU3RyaW5nQnVpbGRl
ciBtX3NjcmlwdDsKKyAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUlu
Zm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY5MCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTIyICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2Fm
YXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBz
ZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06
CisKIDIwMjAtMDctMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBTYWZhcmkgZG9lcyBub3QgcHJlc2VudCBDZXJ0aWZpY2F0ZUluZm8gZm9y
IHNlcnZpY2Utd29ya2VyIHNlcnZlZCBkb2N1bWVudHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw3ICsx
OTUyLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZQogICAgIGF1
dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2Rp
cmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucy00LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUu
c3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMjIxMyw3ICsyMjEz
LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9ucwogICAgIFt3ZWJW
aWV3IHJlbG9hZF07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JB
bGVydF0sIGV4cGVjdGVkQWxlcnQpOwogICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0
cygpLCBleHBlY3RlZFNlcnZlclJlcXVlc3RzMik7Ci0gICAgRVhQRUNUX05VTEwod2ViVmlldy5n
ZXQoKS5zZXJ2ZXJUcnVzdCk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBFWFBFQ1RfVFJVRShp
c1Rlc3RTZXJ2ZXJUcnVzdCh3ZWJWaWV3LmdldCgpLnNlcnZlclRydXN0KSk7CisgICAgRVhQRUNU
X1RSVUUoaXNUZXN0U2VydmVyVHJ1c3Qod2ViVmlldy5nZXQoKS5zZXJ2ZXJUcnVzdCkpOwogfQog
CiBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2ZXJUcnVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404953</attachid>
            <date>2020-07-22 12:59:43 -0700</date>
            <delta_ts>2020-07-22 13:19:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206403-20200722125942.patch</filename>
            <type>text/plain</type>
            <size>74457</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA3LTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FmYXJpIGRv
ZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBzZXJ2ZWQg
ZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdoZW4g
bG9hZGluZyBhIHNlcnZpY2Ugd29ya2VyIEphdmFTY3JpcHQgcmVzb3VyY2UsIHdlIG5lZWQgdG8g
dGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIHRvIGluY2x1ZGUgY2VydGlmaWNhdGUgaW5mbyB3aXRo
IHRoZSByZXNwb25zZS4KKyAgICAgICAgV2UgdGhlbiBwYXNzIHRoYXQgcmVzcG9uc2UgdG8gdGhl
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBmb3Igc3RvcmFnZS4gIFdoZW4gdGhlIHNlcnZpY2Ug
d29ya2VyIGdlbmVyYXRlcyByZXNwb25zZXMgdG8gZmV0Y2hlcywgdXNlIHRoYXQKKyAgICAgICAg
Y2VydGlmaWNhdGUgY2hhaW4gZm9yIFdLV2ViVmlldy5zZXJ2ZXJUcnVzdCB3aGVuIHRoZSBwYWdl
IGlzIGNvbW1pdHRlZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0aW5nIGEgdGVzdCBJIHdy
b3RlIGluIHIyNjQ2ODcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmlj
YXRlSW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUlu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmNlcnRpZmljYXRlSW5mbyBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6Omlz
b2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJ2aWNlV29ya2VyRmV0Y2hF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmRl
Y29kZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRz
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAg
ICBBbHNvIGZpeCBhIHBvc3NpYmxlIHVzZS1hZnRlci1tb3ZlIGJ1ZywgZGVwZW5kaW5nIG9uIHBh
cmFtZXRlciBldmFsdWF0aW9uIG9yZGVyIHdoaWNoIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVl
OjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpT
V1NlcnZlcldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4
dERhdGEgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKwogMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUluZm9CYXNl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZvJiYgaW5mbykgeyBtX2NlcnRpZmljYXRl
SW5mbyA9IFdURk1vdmUoaW5mbyk7IH0KICAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsg
fTsKICAgICBib29sIHVzZWRMZWdhY3lUTFMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRMZWdhY3lU
TFMgPT0gVXNlZExlZ2FjeVRMUzo6WWVzOyB9CiAgICAgdm9pZCBzZXRVc2VkTGVnYWN5VExTKFVz
ZWRMZWdhY3lUTFMgdXNlZCkgeyBtX3VzZWRMZWdhY3lUTFMgPSB1c2VkOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZv
LmgJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKKyAgICBDZXJ0aWZpY2F0ZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYg
Y2VydGlmaWNhdGVDaGFpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHlwZSB0eXBl
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2Vy
dGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENlcnRpZmljYXRl
SW5mbyhHVGxzQ2VydGlmaWNhdGUqLCBHVGxzQ2VydGlmaWNhdGVGbGFncyk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfkNlcnRpZmljYXRlSW5mbygpOwogCisgICAgQ2VydGlmaWNhdGVJbmZvIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHsgfTsgfQorCiAgICAg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNh
dGUuZ2V0KCk7IH0KICAgICB2b2lkIHNldENlcnRpZmljYXRlKEdUbHNDZXJ0aWZpY2F0ZSogY2Vy
dGlmaWNhdGUpIHsgbV9jZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlOyB9CiAgICAgR1Rsc0NlcnRp
ZmljYXRlRmxhZ3MgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAJKHJl
dmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw4IEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3UKICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbjsKICAgICBvcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzID0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzOwogICAgIG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lFbmZvcmNlbWVudDsKKyAgICBpZiAoZmV0Y2hPcHRpb25zLmRlc3RpbmF0aW9uID09IEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXIpCisgICAgICAgIG9wdGlvbnMuY2Vy
dGlmaWNhdGVJbmZvUG9saWN5ID0gQ2VydGlmaWNhdGVJbmZvUG9saWN5OjpJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvOwogICAgIC8vIEEgc2VydmljZSB3b3JrZXIgam9iIGNhbiBiZSBleGVjdXRlZCBm
cm9tIGEgd29ya2VyIGNvbnRleHQgb3IgYSBkb2N1bWVudCBjb250ZXh0LgogICAgIG9wdGlvbnMu
c2VydmljZVdvcmtlcnNNb2RlID0gc2VydmljZVdvcmtlck1vZGU7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpAQCAtMTgwLDYgKzE4Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG8KICAgICB9CiAKICAgICBtX3Jlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJs
KCk7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSByZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA/
ICpyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSA6IENlcnRpZmljYXRlSW5mbygpOwogICAgIG1f
cmVzcG9uc2VNSU1FVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbV9yZXNwb25zZUVu
Y29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5ID0gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVzcG9u
c2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
aAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQ7CitlbnVtIGNsYXNz
IENlcnRpZmljYXRlSW5mb1BvbGljeSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIFdvcmtlclNjcmlwdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj4sIHB1YmxpYyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25z
dDsKKyAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNwb25zZU1J
TUVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZU1JTUVUeXBlOyB9CiAgICAgYm9vbCBm
YWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxlZDsgfQogICAgIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpAQCAtOTYsNiArOTgsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7CiAgICAgVVJMIG1fdXJsOwog
ICAgIFVSTCBtX3Jlc3BvbnNlVVJMOworICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1JTUVUeXBlOwogICAgIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb24gbV9kZXN0aW5hdGlvbjsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw3ICs0Njks
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0CiAgICAgam9iLmZl
dGNoU2NyaXB0V2l0aENvbnRleHQoKmNvbnRleHQsIGNhY2hlUG9saWN5KTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXJQb2xpY3kpCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlz
aGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CkBAIC00Nzcs
NyArNDc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZAogCiAg
ICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdDogU3VjY2Vzc2Z1bHkgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIgUFJJ
dTY0LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCi0gICAgZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRl
bnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCBzY3JpcHQsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKKyAgICBlbnN1cmVTV0NsaWVu
dENvbm5lY3Rpb24oKS5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCB7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJh
dGlvbktleSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5
LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90
aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpv
YiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwotICAgIHZvaWQgam9iRmluaXNoZWRMb2Fk
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlclBvbGljeSkgZmluYWw7CisgICAgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2Vy
dmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5KSBmaW5hbDsKICAgICB2b2lkIGpvYkZhaWxlZExvYWRpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24m
JikgZmluYWw7CiAKICAgICB2b2lkIG5vdGlmeUZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmNwcAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1
cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJp
dHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBz
Y3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5cGUsIGxvYWRlZEZyb21EaXNrLCBjcm9z
c1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgcmV0dXJuIHsKKyAgICAgICAg
am9iRGF0YUlkZW50aWZpZXIsCisgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwK
KyAgICAgICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCisgICAgICAgIHNjcmlwdC5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlZmVycmVy
UG9saWN5Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCks
CisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBj
cm9zc1RocmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAkocmV2aXNpb24gMjY0Njg3KQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKQEAgLTgwLDYg
KzgxLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFN0cmluZyBzY3JpcHQ7CisgICAg
Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyByZWZl
cnJlclBvbGljeTsKICAgICBVUkwgc2NyaXB0VVJMOwpAQCAtOTgsNiArMTAwLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbgogewogICAgIGVuY29kZXIgPDwgam9i
RGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kgPDwg
c2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2s7CiAgICAgZW5jb2RlciA8
PCBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICBlbmNvZGVyIDw8IGNlcnRpZmljYXRlSW5mbzsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE0NSw3ICsxNDgsMjQgQEAgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2NyaXB0UmVzb3VyY2VNYXApKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwgV1RGTW92ZSgqcmVnaXN0cmF0
aW9uKSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCks
IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSks
IFdURk1vdmUoc2NyaXB0VVJMKSwgd29ya2VyVHlwZSwgbG9hZGVkRnJvbURpc2ssIFdURk1vdmUo
c2NyaXB0UmVzb3VyY2VNYXApIH19OworICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2Vy
dGlmaWNhdGVJbmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICgh
Y2VydGlmaWNhdGVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAg
IHJldHVybiB7eworICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCisgICAgICAg
IFdURk1vdmUoKnJlZ2lzdHJhdGlvbiksCisgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZShzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpj
ZXJ0aWZpY2F0ZUluZm8pLAorICAgICAgICBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSks
CisgICAgICAgIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLAorICAgICAgICBXVEZNb3ZlKHNjcmlw
dFVSTCksCisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAg
ICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQorICAgIH19OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCShyZXZpc2lvbiAyNjQ2ODcpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMiBAQCBzdHJ1Y3QgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0IHsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0
YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRp
b25LZXk7CiAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNh
dGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50
U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwogICAgIFJlc291cmNl
RXJyb3Igc2NyaXB0RXJyb3I7CiAKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9u
S2V5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0
eVBvbGljeS5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHNj
cmlwdEVycm9yLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBqb2JEYXRhSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIGNlcnRp
ZmljYXRlSW5mby5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVk
Q29weSgpLCByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwgc2NyaXB0RXJyb3IuaXNvbGF0
ZWRDb3B5KCkgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYpOwpAQCAtNTAsMTMgKzUxLDE0IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgewogCiBpbmxpbmUgU2VydmljZVdvcmtlckZldGNoUmVzdWx0IHNlcnZpY2VXb3JrZXJGZXRj
aEVycm9yKFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmIHJlZ2lzdHJhdGlvbktleSwgUmVzb3VyY2VF
cnJvciYmIGVycm9yKQogewotICAgIHJldHVybiB7IGpvYkRhdGFJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlZ2lzdHJhdGlvbktleSksIHsgfSwgeyB9LCB7IH0sIFdURk1vdmUoZXJyb3IpIH07CisgICAg
cmV0dXJuIHsgam9iRGF0YUlkZW50aWZpZXIsIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCBXVEZNb3ZlKGVycm9yKSB9OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVn
aXN0cmF0aW9uS2V5IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJy
ZXJQb2xpY3kgPDwgc2NyaXB0RXJyb3I7CisgICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUluZm87
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC04MSw2ICs4MywxMiBAQCBib29sIFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JpcHRFcnJvcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmlj
YXRlSW5mbzsKKyAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKKyAgICBpZiAoIWNlcnRp
ZmljYXRlSW5mbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5jZXJ0aWZpY2F0
ZUluZm8gPSBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQqIHNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYpIGNv
bnN0OwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKIAorICAgIGNvbnN0IENlcnRpZmljYXRl
SW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RGF0YS5jZXJ0
aWZpY2F0ZUluZm87IH0KKyAgICAKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5
RmluaXNoZWQoKQogICAgIGF1dG8gc2NyaXB0TG9hZGVyID0gV1RGTW92ZShtX3NjcmlwdExvYWRl
cik7CiAKICAgICBpZiAoIXNjcmlwdExvYWRlci0+ZmFpbGVkKCkpIHsKLSAgICAgICAgbV9jbGll
bnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgp
LCBzY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJl
ZmVycmVyUG9saWN5KCkpOworICAgICAgICBtX2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3Jp
cHQoKnRoaXMsIHNjcmlwdExvYWRlci0+c2NyaXB0KCksIHNjcmlwdExvYWRlci0+Y2VydGlmaWNh
dGVJbmZvKCksIHNjcmlwdExvYWRlci0+Y29udGVudFNlY3VyaXR5UG9saWN5KCksIHNjcmlwdExv
YWRlci0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JDbGllbnQuaAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
JiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYlJl
c29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVu
cmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgPSAwOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
UmVzb3VyY2VFcnJvcj4gdmEKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgdm9pZCBwcm9j
ZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3Bv
bnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBG
ZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpCitz
dGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVk
PFJlZjxGZXRjaFJlc3BvbnNlPiwgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQsIEZldGNoT3B0aW9u
czo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0LCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIENlcnRpZmljYXRlSW5mbyYmIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICBjbGllbnQtPmRpZEZhaWwocmVzdWx0
LmVycm9yKCkpOwpAQCAtOTcsNiArOTcsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2Uo
UmVmPENsaWVudD4mCiAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldE1pbWVUeXBlKCJ0
ZXh0L2h0bWwiX3MpOwogICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKCJVVEYtOCJfcyk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIXJlc291cmNlUmVz
cG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpCisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNl
dENlcnRpZmljYXRlSW5mbyhXVEZNb3ZlKGNlcnRpZmljYXRlSW5mbykpOwogICAgIH0KIAogICAg
IC8vIEFzIHBlciBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaCBzdGVw
IDksIGNvcHkgcmVxdWVzdCdzIHVybCBsaXN0IGluIHJlc3BvbnNlJ3MgdXJsIGxpc3QgaWYgZW1w
dHkuCkBAIC0xNzEsOCArMTc0LDEwIEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGll
bnQ+JiYgY2wKICAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOwogICAgIGF1dG8gZXZlbnQgPSBG
ZXRjaEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZldGNoRXZlbnQsIFdURk1vdmUoaW5pdCks
IEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAKLSAgICBldmVudC0+b25SZXNwb25zZShbY2xpZW50
LCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTF0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBwcm9jZXNzUmVzcG9uc2UoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlc3VsdCks
IG1vZGUsIHJlZGlyZWN0LCByZXF1ZXN0VVJMKTsKKyAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlm
aWNhdGVJbmZvID0gZ2xvYmFsU2NvcGUuY2VydGlmaWNhdGVJbmZvKCk7CisKKyAgICBldmVudC0+
b25SZXNwb25zZShbY2xpZW50LCBtb2RlLCByZWRpcmVjdCwgcmVxdWVzdFVSTCwgY2VydGlmaWNh
dGVJbmZvID0gV1RGTW92ZShjZXJ0aWZpY2F0ZUluZm8pXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVz
dWx0KSwgbW9kZSwgcmVkaXJlY3QsIHJlcXVlc3RVUkwsIFdURk1vdmUoY2VydGlmaWNhdGVJbmZv
KSk7CiAgICAgfSk7CiAKICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksMTEgKzQ5LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA0Oworc3RhdGljIGNv
bnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJl
Y29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKLSAgICByZXR1cm4g
bWFrZVN0cmluZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoa2V5IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgb3JpZ2luIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCB0b3BPcmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBs
YXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB1cGRh
dGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdFVSTCBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjb250
ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWZlcnJl
clBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHNjcmlwdFJlc291cmNlTWFw
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoIgorICAgICAgICAia2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSIKKyAgICAg
ICAgIiwgb3JpZ2luIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwg
c2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCB0b3BP
cmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBsYXN0VXBk
YXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAi
LCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAg
ICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIs
IHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHdvcmtl
clR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBjb250ZW50
U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAi
LCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAg
ICIsIHNjcmlwdFJlc291cmNlTWFwIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAg
ICAgICAgIiwgY2VydGlmaWNhdGVJbmZvIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIK
KyAgICAgICAgIikiKTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hl
bWEoKQpAQCAtMzIxLDcgKzMzNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVz
aENoYW5nZXMKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7
CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
ZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPywgPykiX3MpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm47CkBAIC0zNDQsNiArMzU4LDkgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsKICAgICAgICAgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CiAKKyAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOworICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOworCiAgICAgICAg
IGlmIChzcWwuYmluZFRleHQoMSwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvRGF0YWJhc2VLZXko
KSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMiwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgzLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTC5w
YXRoKCkudG9TdHJpbmcoKSkgIT0gU1FMSVRFX09LCkBAIC0zNTYsNiArMzczLDcgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICAgICAgfHwgc3FsLmJp
bmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJy
ZXJQb2xpY3kpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBz
Y3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rl
ci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9i
KDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNl
V29ya2VyLCAiRmFpbGVkIHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEyLDYgKzQzMCwxNSBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBWZWN0b3I8dWludDhfdD4gY2VydGlmaWNh
dGVJbmZvRGF0YTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMiwgY2VydGlm
aWNhdGVJbmZvRGF0YSk7CisgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlm
aWNhdGVJbmZvOworCisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNh
dGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZv
RGF0YS5zaXplKCkpOworICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmlj
YXRlSW5mbzsKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQgZm9yIHRoaXMgcmVnaXN0cmF0
aW9uLgogICAgICAgICAvLyBJZiBhbnkgcGFydCBvZiB0aGlzIGlucHV0IGlzIGludmFsaWQsIGxl
dCdzIHNraXAgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
cmV0dXJuIGFuIGVycm9yIHNraXBwaW5nICphbGwqIHJlZ2lzdHJhdGlvbnM/CkBAIC00MjIsNyAr
NDQ5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcgogICAgICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9
IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNl
V29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUo
c2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAg
ICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2Ny
aXB0KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBv
bGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNj
cmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdv
cmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZv
KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGlj
eSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlw
dFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAJKHJldmlzaW9uIDI2
NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDggQEAgdm9pZCBTV1NlcnZlcjo6YWRk
UmVnaXN0cmF0aW9uRnJvbVN0b3JlKAogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVu
IGFibGUgdG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGlt
cG9ydCB3YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0
cmF0aW9uTWFwLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogICAgIAotICAgIHZh
bGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEu
c2NyaXB0VVJMKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4oZGF0YS5zY3JpcHRVUkwpOwor
ICAgIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChib29s
IGlzVmFsaWQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBpZiAobV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgfHwgaXNW
YWxpZCkgewpAQCAtMTY3LDcgKzE2OCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlv
bkZyb21TdG9yZSgKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0
aW9uLmdldCgpOwogICAgICAgICAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0
aW9uKSk7CiAKLSAgICAgICAgICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0
ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0LCBk
YXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZShkYXRhLnJlZmVycmVyUG9saWN5KSwg
ZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRh
dGEuc2NyaXB0UmVzb3VyY2VNYXApKTsKKyAgICAgICAgICAgIGF1dG8gd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmNyZWF0ZSgqdGhpcywgKnJlZ2lzdHJhdGlvblB0ciwgZGF0YS5zY3JpcHRVUkws
IGRhdGEuc2NyaXB0LCBkYXRhLmNlcnRpZmljYXRlSW5mbywgZGF0YS5jb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFdURk1vdmUoZGF0YS5yZWZlcnJlclBvbGljeSksIGRhdGEud29ya2VyVHlwZSwgZGF0
YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShkYXRhLnNjcmlwdFJlc291cmNlTWFw
KSk7CiAgICAgICAgICAgICByZWdpc3RyYXRpb25QdHItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRl
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZTo6QWN0aXZlLCB3b3JrZXIucHRyKCkpOwog
ICAgICAgICAgICAgd29ya2VyLT5zZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRl
ZCk7CiAgICAgICAgIH0KQEAgLTYyOSw5ICs2MzAsOSBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNl
TWFwKQordm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiBy
ZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewot
ICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YSh7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRp
b24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQg
U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBkYXRhKQpAQCAtNjc5LDcgKzY4MCw3IEBAIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0
RGF0YShjb25zdCAKICAgICB9CiAKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuZ2V0KGRhdGEucmVnaXN0cmF0aW9uLmtleSkuZ2V0KCk7Ci0gICAgYXV0
byB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCAqcmVnaXN0cmF0aW9uLCBk
YXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEud29ya2VyVHlwZSwgZGF0YS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCB9KTsKKyAgICBhdXRv
IHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpjcmVhdGUoKnRoaXMsICpyZWdpc3RyYXRpb24sIGRh
dGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCwgZGF0YS5jZXJ0aWZpY2F0ZUluZm8sIGRhdGEuY29u
dGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEu
d29ya2VyVHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNv
dXJjZU1hcCB9KTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25u
ZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAkocmV2aXNpb24gMjY0Njg3
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2
ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwog
ICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4mJik7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNo
CiAgICAgLy8gRklYTUU6IFVwZGF0ZSBhbGwgdGhlIGltcG9ydGVkIHNjcmlwdHMgYXMgcGVyIHNw
ZWMuIEZvciBub3csIHdlIGp1c3QgZG8gYXMgaWYgdGhlcmUgaXMgbm9uZS4KIAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHRoZSBwcm9wZXIgd29ya2VyIHR5cGUgKGNsYXNzaWMgdnMgbW9kdWxlKQot
ICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9u
LCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9s
aWN5LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGU6OkNsYXNzaWMsIHsgfSk7Cisg
ICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24s
IGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJl
c3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5yZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZTo6Q2xhc3NpYywgeyB9KTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCShyZXZpc2lv
biAyNjQ2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTIgKzQ5LDEzIEBAIFNXU2VydmVy
V29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmcKIH0KIAogLy8gRklYTUU6IFVzZSByLXZh
bHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1Nl
cnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VN
YXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogICAg
IDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5
KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJl
Z2lzdHJhdGlvbikpCiAgICAgLCBtX2RhdGEgeyBpZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZp
Y2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50LCB0eXBlLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigp
IH0KICAgICAsIG1fc2NyaXB0KHNjcmlwdCkKKyAgICAsIG1fY2VydGlmaWNhdGVJbmZvKGNlcnRp
ZmljYXRlSW5mbykKICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0
eVBvbGljeSkKICAgICAsIG1fcmVmZXJyZXJQb2xpY3koV1RGTW92ZShyZWZlcnJlclBvbGljeSkp
CiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKG1fZGF0YS5zY3JpcHRVUkwpCkBAIC04NCw3ICs4
NSw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjoKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2Rh
dGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3Nj
cmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVy
cmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0
UmVzb3VyY2VNYXAgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgJKHJldmlz
aW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vz
cyk7CiAKQEAgLTE0MCw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0
YTsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNh
dGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKICAgICBib29s
IG1faGFzUGVuZGluZ0V2ZW50cyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0
Njg3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wNy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFNhZmFyaSBkb2VzIG5vdCBwcmVzZW50IENlcnRpZmljYXRlSW5m
byBmb3Igc2VydmljZS13b3JrZXIgc2VydmVkIGRvY3VtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NTQxMDg3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaDoKKwogMjAyMC0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBleHBlcmltZW50YWwgTVNFIFdlYk0gcGFyc2Vy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2NDY4NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw2ICsxMzcsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjp3aWxsCiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICAvLyBGSVhNRTogSWYgdGhlIGNl
cnRpZmljYXRlIGluZm8gY2hhbmdlcyBidXQgdGhlIHNjcmlwdCBjb250ZW50IGRvZXMgbm90LCB0
cmVhdCB0aGF0IGFzIGFuIHVwZGF0ZS4KKyAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNl
LmNlcnRpZmljYXRlSW5mbygpID8gKnJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpIDogQ2VydGlm
aWNhdGVJbmZvKCk7CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0ICYm
IG1fY2FjaGVFbnRyeSkgewogICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2FjaGVFbnRy
eSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKQEAg
LTE4Niw3ICsxODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRG
CiB7CiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+Zmx1c2goKSk7Ci0gICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1fam9iRGF0YS5pZGVudGlm
aWVyKCksIG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgbV9zY3JpcHQudG9TdHJpbmcoKSwg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKKyAgICBt
X2NvbXBsZXRpb25IYW5kbGVyKHsgbV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgbV9qb2JEYXRhLnJl
Z2lzdHJhdGlvbktleSgpLCBtX3NjcmlwdC50b1N0cmluZygpLCBtX2NlcnRpZmljYXRlSW5mbywg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIHsgfSB9KTsKICAgICBk
aWRDb21wbGV0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaAkocmV2aXNpb24gMjY0Njg3KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgU3RyaW5nQnVpbGRl
ciBtX3NjcmlwdDsKKyAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUlu
Zm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY5MCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTIyICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2Fm
YXJpIGRvZXMgbm90IHByZXNlbnQgQ2VydGlmaWNhdGVJbmZvIGZvciBzZXJ2aWNlLXdvcmtlciBz
ZXJ2ZWQgZG9jdW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY0MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NDEwODc1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06
CisKIDIwMjAtMDctMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBTYWZhcmkgZG9lcyBub3QgcHJlc2VudCBDZXJ0aWZpY2F0ZUluZm8gZm9y
IHNlcnZpY2Utd29ya2VyIHNlcnZlZCBkb2N1bWVudHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw3ICsx
OTUyLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZQogICAgIGF1
dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2Rp
cmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucy00LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUu
c3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk3OSw3ICsxOTc5
LDcgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZQogICAgIEVYUEVD
VF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
c3dQYXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3Jl
YXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyJdIGVycm9y
Om5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJM
OnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwogCiAgICAgYXV0byB3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQ
YXRoOwpAQCAtMjIxMyw3ICsyMjEzLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5
cGUgcmVzcG9ucwogICAgIFt3ZWJWaWV3IHJlbG9hZF07CiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwogICAgIEVYUEVDVF9F
UShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCBleHBlY3RlZFNlcnZlclJlcXVlc3RzMik7Ci0gICAg
RVhQRUNUX05VTEwod2ViVmlldy5nZXQoKS5zZXJ2ZXJUcnVzdCk7IC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBFWFBFQ1RfVFJVRShpc1Rlc3RTZXJ2ZXJUcnVzdCh3ZWJWaWV3LmdldCgpLnNlcnZl
clRydXN0KSk7CisgICAgRVhQRUNUX1RSVUUoaXNUZXN0U2VydmVyVHJ1c3Qod2ViVmlldy5nZXQo
KS5zZXJ2ZXJUcnVzdCkpOwogfQogCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2ZXJUcnVzdCkK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMtNC5zcWxpdGUzCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRl
Mwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDQgQEAKLVNRTGl0ZSBmb3JtYXQgMwAQAAICAEAg
IAAAAAIAAAADAAAAAAAAAAAAAAABAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAgAuJIAND/gAAg1lAA1lD8kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIRhAQcXGxsBiRl0YWJs
ZVJlY29yZHNSZWNvcmRzAkNSRUFURSBUQUJMRSBSZWNvcmRzIChrZXkgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBvcmlnaW4gVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBzY29wZVVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwsIHRvcE9yaWdpbiBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGxhc3RV
cGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHVwZGF0ZVZp
YUNhY2hlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NyaXB0VVJMIFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHJlZmVycmVyUG9s
aWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NyaXB0UmVzb3VyY2VNYXAgQkxP
QiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKS0CBhdBGwEAaW5kZXhzcWxpdGVfYXV0b2luZGV4
X1JlY29yZHNfMVJlY29yZHMDAAAACAAAAAANAAAAAQotOQAKLTkAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLRAEOczcfNwcbU5QTGyQNHGh0dHBzX21kbi5naXRodWIu
aW9fX2h0dHBzOi8vbWRuLmdpdGh1Yi5pby9zdy10ZXN0L2h0dHBzOi8vbWRuLmdpdGh1Yi5pby9z
dy10ZXN0L2h0dHBzX21kbi5naXRodWIuaW9fMEHXDJRQ5F7hSW1wb3J0c2h0dHBzOi8vbWRuLmdp
dGh1Yi5pby9zdy10ZXN0L3N3Lmpzc2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgZnVu
Y3Rpb24oZXZlbnQpIHsKK1NRTGl0ZSBmb3JtYXQgMwAQAAICAEAgIAAAAAIAAAAFAAAAAAAAAAAA
AAABAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAu
NCAND/gAAg01AA01D8kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIURAQcXGxsBiXl0YWJsZVJlY29yZHNS
ZWNvcmRzAkNSRUFURSBUQUJMRSBSZWNvcmRzIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBvcmlnaW4gVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMLCBzY29wZVVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUws
IHRvcE9yaWdpbiBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGxhc3RVcGRhdGVDaGVj
a1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHVwZGF0ZVZpYUNhY2hlIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgd29y
a2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNvbnRlbnRTZWN1cml0eVBv
bGljeSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHJlZmVycmVyUG9saWN5IFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgc2NyaXB0UmVzb3VyY2VNYXAgQkxPQiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMLCBjZXJ0aWZpY2F0ZUluZm8gQkxPQiBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMKS0CBhdBGwEAaW5kZXhzcWxpdGVfYXV0b2luZGV4X1JlY29yZHNfMVJlY29yZHMD
AAAACAAAAAANAAAAAQlMAAlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzSUBEXM3
HzcHG1OUExskDRyBg0hodHRwc19tZG4uZ2l0aHViLmlvX19odHRwczovL21kbi5naXRodWIuaW8v
c3ctdGVzdC9odHRwczovL21kbi5naXRodWIuaW8vc3ctdGVzdC9odHRwc19tZG4uZ2l0aHViLmlv
XzBB18YmFN1bHUltcG9ydHNodHRwczovL21kbi5naXRodWIuaW8vc3ctdGVzdC9zdy5qc3NlbGYu
YWRkRXZlbnRMaXN0ZW5lcignaW5zdGFsbCcsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgIGV2ZW50Lndh
aXRVbnRpbCgKICAgICBjYWNoZXMub3BlbigndjEnKS50aGVuKGZ1bmN0aW9uKGNhY2hlKSB7CiAg
ICAgICByZXR1cm4gY2FjaGUuYWRkQWxsKFsKQEAgLTQxLDUgKzM5LDUxIEBAIHNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCBmdW5jdGlvbigKICAgICB9CiAgIH0pKTsKIH0pOwotQ2xhc3Np
YwAAAAAAAAAAyAAAAAAAAAAAAAAACi0AAAABD8kAD8kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADYDcwlodHRwc19tZG4uZ2l0aHViLmlvX19odHRwczovL21kbi5naXRo
dWIuaW8vc3ctdGVzdC8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitDbGFzc2ljAAAAAAAA
AADIAAAAAAAAAAAAAAACAAAAAAAAAAHNIAAAAAAAADGCIMkwCwwGcmVzdWx0AgEEMBAMC2FuY2hv
cnNPbmx5AQEAMBEMB2RldGFpbHMwBjEAMQAxADAVDBBrZXljaGFpbnNBbGxvd2VkAQEBMCQMCit2
ZXJpZnlEYXRlGBYyMDIwMDcyMjE5NDkzOS4zMDk1OTJaMCYMBGluZm8xHjAcDBdDZXJ0aWZpY2F0
ZVRyYW5zcGFyZW5jeQEBATCCAeoMCXJlc3BvbnNlczCCAdsEggHXMIIB0worAQCgggHMMIIByAYJ
KwYBBQUHMAEBBIIBuTCCAbUwAAAABAorAAAAAQ/JAA/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAA2A3MJaHR0cHNfbWRuLmdpdGh1Yi5pb19faHR0cHM6Ly9tZG4uZ2l0
aHViLmlvL3N3LXRlc3QvAAAABYGeohYEFFFo/5CvAgd1PMzZZWRiohK4WXI7GA8yMDIwMDcxODA3
NDQ1N1owczBxMEkwCQYFKw4DAhoFAAQUzyb1GPrJfo+Ms0LgHC9qEJ6OXworBBRRaP+QrwIHdTzM
2WVkYqISuFlyOwIQAkk+B/qeN1otu8YdlEMPz4AAGA8yMDIwMDcxODA3NDQ1N1qgERgPMjAyMDA3
MjUwNjU5NTdaMA0GCSqGSIb3DQEBCwUAA4IBAQBOJw5cSWLLHJ+O68UmA9v6zZcNLbCciW1Y80jo
/5KRyjJJzBfjViPpPZX4yedfNNUSBjP6dRNJ7SBQDilj525KEaqBl81IiNJoFdaysxShG9nj4jLC
uRN7DhlyvUyfGDb1mdiZvgA0O/iBlFgrQk5BUAyxG/c4ttGbPsO8bnQQJlGMLRVY0Rq0I7T2FpFC
kGeCe0L3Ai6MInfiMBCdr3YiSVl9X1jqM8HRhN++dQt6jIcXUAIf7nT6ou9Np/wwm6nqo+dGwplg
G+gZ4Ri8+5jEK47aDMXeNJw8w1Pv+8lnquLEUwiNUza5b42GkvNAK4GEkpGIjDMFmvQM16UeRsFB
MIICbAwIcG9saWNpZXMwggJeMYICWjAgDBNTZWNQb2xpY3lQb2xpY3lOYW1lDAlzc2xTZXJ2ZXIw
JgwMU2VjUG9saWN5T2lkDBYxLjIuODQwLjExMzYzNS4xMDAuMS4zMIICDAwNcG9saWN5T3B0aW9u
czGCAfkwDgwJSWRMaW5rYWdlAQEBMBAMC1dlYWtLZXlTaXplAQEBMBIMDVNlcnZlckF1dGhFS1UB
AQEwEgwNV2Vha1NpZ25hdHVyZQEBATATDA5HcmF5TGlzdGVkTGVhZgEBATAUDA9CbGFja0xpc3Rl
ZExlYWYBAQEwFAwPTm9uRW1wdHlTdWJqZWN0AQEBMBUMEEJhc2ljQ29uc3RyYWludHMBAQEwFQwQ
VGVtcG9yYWxWYWxpZGl0eQEBATAXDBJDcml0aWNhbEV4dGVuc2lvbnMBAQEwGwwWVmFsaWRpdHlQ
ZXJpb2RNYXhpbXVtcwEBATAcDAtTU0xIb3N0bmFtZQwNbWRuLmdpdGh1Yi5pbzAcDBdTeXN0ZW1U
cnVzdGVkQ1RSZXF1aXJlZAEBATAfDAdLZXlTaXplMRQwCAwCNDICAggAMAgMAjczAgIBADA9DBBF
eHRlbmRlZEtleVVzYWdlMCkEAAQEVR0lAAQIKwYBBQUHAwEECisrBgEEAYI3CisDAwQJYIZIAYb4
QgQBMGwMF1NpZ25hdHVyZUhhc2hBbGdvcml0aG1zMFEMElNpZ25hdHVyZURpZ2VzdE1EMgwSU2ln
bmF0dXJlRGlnZXN0TUQ0DBJTaWduYXR1cmVEaWdlc3RNRDUME1NpZ25hdHVyZURpZ2VzdFNIQTEw
ggwDDAxjZXJ0aWZpY2F0ZXMwggvxBIIHNDCCBzAwggYYoAMCAQICEAJJPgf6njdaLbvGHZRDD88w
DQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCVVMxFTATBgNVBAorEwxEaWdpQ2VydCBJbmMxGTAX
BgNVBAsTEHd3dy5kaWdpY2VydC5jb20xLzAtBgNVBAMTJkRpZ2lDZXJ0IFNIQTIgSGlnaCBBc3N1
cmFuY2UgU2VydmVyIENBMB4XDTIwMDUwNjAwMDAwMFoXDTIyMDQxNDEyMDAwMFowajELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCitDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRUwEwYD
VQQKKxMMR2l0SHViLCBJbmMuMRcwFQYDVQQDEw53d3cuZ2l0aHViLmNvbTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQorAoIBAQCyPj3qMn3294Rc7tZ3EZBnuJ20KcNyNmpB4OLLrTntLBeP3INR
WeqHCis/yII8+y6Jpk3g75LpPpYNjiOwYp/JkpWbpBAd1FWlvXJo/eZS+TwuIYb7JSc2H3NDDKt2
VV5SSKQdXOkDNqq7BisOFp2/TYwCMZboLufwRR5fKxL0nTKIOCwpnH8k//UdWpvTgIixDGLYQCwH
t0fYEo49jFeDaKD4WMBPq6Tx1iKWBhw3HVc/OyvI3yjRAx4Anf/DCSt9YTW6f/ND4O/fOowcfW5T
7zii1Kw0yw+ulBrE/xe6taVhL+QR0MXNkQV2iHNN85swidwMtcdGI8g3fYL48bSRywIDAQABo4ID
yjCCA8YwHwYDVR0jBBgwFoAUUWj/kK8CB3U8zNllZGKiErhZcjswHQYDVR0OBBYEFIygCitpR9yJ
MrBNxhFFYl8aL5ZOOjB7BgNVHREEdDBygg53d3cuZ2l0aHViLmNvbYIMKi5naXRodWIuY29tggor
Z2l0aHViLmNvbYILKi5naXRodWIuaW+CCWdpdGh1Yi5pb4IXKi5naXRodWJ1c2VyY29udGVudC5j
b22CFWdpdGh1YnVzZXJjb250ZW50LmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNv
bS9zaGEyLWhhLXNlcnZlci1nNi5jcmwwNKAyoDCGLmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9z
aGEyLWhhLXNlcnZlci1nNi5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcC
ARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBAgIwgYMGCCsGAQUFBwEBBHcw
dTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tME0GCCsGAQUFBzAChkFodHRw
Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEySGlnaEFzc3VyYW5jZVNlcnZlckNB
LmNydDAMBgNVHRMBAf8EAjAAMIIBfQYKKysGAQQB1nkCBAIEggFtBIIBaQFnAHYARqVV63X6kSAw
taKJafTzfREsQXS+/Um4havy/HD+bUcAAAFx6y8fFgAABAMARzBFAiEA59y6w9oaoAorDNn7xaui
qH2FkYdMUZuFRBGjBwbbAWFIAiAWcSYYwO0hllJaOe2LJRvLunJR54Azb6EzVcNR0LU69wB1ACJF
RQdZVSRWlj+hL/H3bYbgIyZjrcBLf13Gg1xu4g8CAAABcesvHr8AAAQDAEYwRAIgZhI4oqE23Nf/
4QiJ2CF+jvIaYeaC0VRgk8a0wX0kU9sCIGc+8d2TSCkJFjyjhWmltwMXAdA84RbA+oMYZG5dadAI
AHYAUaOw9f0BeZxWbbg3eI8MpHrMGyfL956IQpoN/tSLBeUAAAFx6y8fCQAABAMARzBFAiAUP+hJ
fkwgrVrqKeyHXqzdPm8p+bA63k7vl89xomPHCwIhAO0vNx8RRXUIUKqY421myFQQPPDZ/64mn+SW
/Id6CVfHMA0GCSqGSIb3DQEBCwUAA4IBAQAA87vyP+HTD8BuEMzBR2ZoEBZZ3P8al7WjS6jjSM1z
85wUJh0IuPNcSoAEeI2Tk05J5cDiwV5w171eqyUGV7rd6cR0r1SZNpL7sgzt0QtLrnXfNQFyFLHe
j547dg+l3f8qVAKDJMhPvHrmBEhBZOB5Z66V7TezkkxlWGUJNGiawyDbJV3ZlC/ROgEIiGGkSKUT
EXY+LLRugpDyaX0mrlmtfZEXmeoU0EeX/PS+sedLrOxrlpZh+hJlRSG4X/RDtNkANwnFO2xNYi1j
B5inFOsrYZoLLzUVOU4pMbxe+yRb+59f8vBi66a5iqQekA3+DwPEvUTl/Uc4MHtykyDOqnilBIIE
tTCCBLEwggOZoAMCAQICEATh56TcXPLzbcArQrhdFZ8wDQYJKoZIhvcNAQELBQAwbDELMAkGA1UE
BhMCVVMxFTATBgNVBAorEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
KzApBgNVBAMTIkRpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIEVWIFJvb3QgQ0EwHhcNMTMxMDIyMTIw
MDAwWhcNMjgxMDIyMTIwMDAwWjBwMQswCQYDVQQGEwJVUzEVMBMGA1UECisTDERpZ2lDZXJ0IElu
YzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdo
IEFzc3VyYW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKKwKCAQEAtuAv
wiQGyG0EX9fvCitkBrJ9IiZlFq5CQJvO3J+fdgc+wzBVhxm5T5QOWpQfVVa0wgIqr9CY7gtA18TQ
O3LIFJ7vkLERqa7SyLhDOtkLC9XVlfVAr8gd7U2cX1e3hlBomfWK2tLHBR+ol8ncpLGChC3GraWc
xxmCpoUPXkRYKjeP/TXxCwgnMlr1u4uepL1R0Cfi3TtCM6MFKMS7KMyarCsjDXjGe+ZecbdKPgj7
gbcWFqGdIxJN5deSCKx1pJy6zReyHkQ1ZX9TJTnRHAormmMbGZJ0aAorN8LCUkjLOVqituFdwd2g
ILghopMmbxRKIUHH7W2b8kgv8wP1omiSUy9e4wIDAQABo4IBSTCCAUUwEgYDVR0TAQH/BAgwBgEB
/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDQGCCsG
AQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEsGA1UdHwRE
MEIwQKA+oDyGOmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEhpZ2hBc3N1cmFuY2VF
VlJvb3RDQS5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3
LmRpZ2ljZXJ0LmNvbS9DUFMwHQYDVR0OBBYEFFFo/5CvAgd1PMzZZWRiohK4WXI7MB8GA1UdIwQY
MBaAFLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBCwUAA4IBAQAYipWJA+Zt31z8HWjq
So+D1lEvjWtEFp6sY/XSbmyEmYuqgXGEW+00TrC3eZIpzC2AavCOIOF5pP4DRxPq9YbKWXF99ASW
a9NZWD3+0zElXBg4hKPmn4L9jFuYMU7NeJ4a/YXLSaryJ4uZcvw+qtVBC9rVNqG/HG5HSX9e2Uh8
A9n9i0mgmCZCQOvWkhGkZAorV1TE9R3WAl5rrO7EgJoScvpWk9f/vzCFBjC/C39O/1cFnSTthcMr
+6Z1qKwtFu99eSey68KdCwfqqoXTAaMgKEEAAAAAWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAz
m2fTYS5yh+Rp/BIAV0AecPUeybQwgg/JDAVjaGFpbjCCD74Eggc0MIIHMDCCBhigAwIBAgIQAkk+
B/qeN1otu8YdlEMPzzANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJVUzEVMBMGA1UECisTDERp
Z2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQg
U0hBMiBIaWdoIEFzc3VyYW5jZSBTZXJ2ZXIgQ0EwHhcNMjAwNTA2MDAwMDAwWhcNMjIwNDE0MTIw
MDAwWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKK0NhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFTATBgNVBAorEwxHaXRIdWIsIEluYy4xFzAVBgNVBAMTDnd3dy5naXRodWIuY29t
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCisCggEBALI+Peoyffb3hFzu1ncRkGe4nbQpw3I2
akHg4sutOe0sF4/cg1FZ6ocKKz/Igjz7LommTeDvkuk+lg2OI7Bin8mSlZukEB3UVaW9cmj95lL5
PC4hhvslJzYfc0MMq3ZVXlJIpB1c6QM2qrsGKw4Wnb9NjAIxlugu5/BFHl8rEvSdMog4LCmcfyT/
9R1am9OAiLEMYthALAe3R9gSjj2MV4NooPhYwE+rpPHWIpYGHDcdVz87K8jfKNEDHgCd/8MJK31h
Nbp/80Pg7986jBx9blPvOKLUrDTLD66UGsT/F7q1pWEv5BHQxc2RBXaIc03zmzCJ3Ay1x0YjyDd9
gvjxtJHLAgMBAAGjggPKMIIDxjAfBgNVHSMEGDAWgBRRaP+QrwIHdTzM2WVkYqISuFlyOzAdBgNV
HQ4EFgQUjKAKK2lH3IkysE3GEUViXxovlk46MHsGA1UdEQR0MHKCDnd3dy5naXRodWIuY29tggwq
LmdpdGh1Yi5jb22CCitnaXRodWIuY29tggsqLmdpdGh1Yi5pb4IJZ2l0aHViLmlvghcqLmdpdGh1
YnVzZXJjb250ZW50LmNvbYIVZ2l0aHVidXNlcmNvbnRlbnQuY29tMA4GA1UdDwEB/wQEAwIFoDAd
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdQYDVR0fBG4wbDA0oDKgMIYuaHR0cDovL2Ny
bDMuZGlnaWNlcnQuY29tL3NoYTItaGEtc2VydmVyLWc2LmNybDA0oDKgMIYuaHR0cDovL2NybDQu
ZGlnaWNlcnQuY29tL3NoYTItaGEtc2VydmVyLWc2LmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwB
ATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAECAjCB
gwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTQYI
KwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNz
dXJhbmNlU2VydmVyQ0EuY3J0MAwGA1UdEwEB/wQCMAAwggF9BgorKwYBBAHWeQIEAgSCAW0EggFp
AWcAdgBGpVXrdfqRIDC1oolp9PN9ESxBdL79SbiFq/L8cP5tRwAAAXHrLx8WAAAEAwBHMEUCIQDn
3LrD2hqgCisM2fvFq6KofYWRh0xRm4VEEaMHBtsBYUgCIBZxJhjA7SGWUlo57YslG8u6clHngDNv
oTNVw1HQtTr3AHUAIkVFB1lVJFaWP6Ev8fdthuAjJmOtwEt/XcaDXG7iDwIAAAFx6y8evwAABAMA
RjBEAiBmEjiioTbc1//hCInYIX6O8hph5oLRVGCTxrTBfSRT2wIgZz7x3ZNIKQkWPKOFaaW3AxcB
0DzhFsD6gxhkbl1p0AgAdgBRo7D1/QF5nFZtuDd4jwykeswbJ8v3nohCmg3+1IsF5QAAAXHrLx8J
AAAEAwBHMEUCIBQ/6El+TCCtWuop7IderN0+byn5sDreTu+Xz3GiY8cLAiEA7S83HxFFdQhQqpjj
bWbIVBA88Nn/riaf5Jb8h3oJV8cwDQYJKoZIhvcNAQELBQADggEBAADzu/I/4dMPwG4QzMFHZmgQ
Flnc/xqXtaNLqONIzXPznBQmHQi481xKgAR4jZOTTknlwOLBXnDXvV6rJQZXut3pxHSvVJk2kvuy
DO3RC0uudd81AXIUsd6Pnjt2D6Xd/ypUAoMkyE+8euYESEFk4HlnrpXtN7OSTGVYZQk0aJrDINsl
XdmUL9E6AQiIYaRIpRMRdj4stG6CkPJpfSauWa19kReZ6hTQR5f89L6x50us7GuWlmH6EmVFIbhf
9EO02QA3CcU7bE1iLWMHmKcU6ythmgsvNRU5TikxvF77JFv7n1/y8GLrprmKpB6QDf4PA8S9ROX9
Rzgwe3KTIM6qeKUEggS1MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0B
AQsFADBsMQswCQYDVQQGEwJVUzEVMBMGA1UECisTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2UgRVYgUm9vdCBD
QTAeFw0xMzEwMjIxMjAwMDBaFw0yODEwMjIxMjAwMDBaMHAxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
KxMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdp
Q2VydCBTSEEyIEhpZ2ggQXNzdXJhbmNlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQorAoIBAQC24C/CJAbIbQRf1+8KK2QGsn0iJmUWrkJAm87cn592Bz7DMFWHGblPlA5alB9V
VrTCAiqv0JjuC0DXxNA7csgUnu+QsRGprtLIuEM62QsL1dWV9UCvyB3tTZxfV7eGUGiZ9Yra0scF
H6iXydyksYKELcatpZzHGYKmhQ9eRFgqN4/9NfELCCcyWvW7i56kvVHQJ+LdO0IzowUoxLsozJqs
KyMNeMZ75l5xt0o+CPuBtxYWoZ0jEk3l15IIrHWknLrNF7IeRDVlf1MlOdEcCiuaYxsZknRoCis3
wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcftbZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTAS
BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
KwYBBQUHAwIwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy
dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcC
ARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKi
ErhZcjswHwYDVR0jBBgwFoAUsT7DaQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEB
ABiKlYkD5m3fXPwdaOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk
/gNHE+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly/D6q1UEL
2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCitXVMT1HdYCXmus7sSAmhJy+laT1/+/MIUG
ML8Lf07/VwWdJO2Fwyv7pnWorC0W7315J7Lrwp0LB+qqhdMBoyAoQVlDKNKB46r27Hs7d7ZAYoAF
QUUB7xcGPt7AM5tn02EucofkafwSAFdAHnD1Hsm0BIIDyTCCA8UwggKtoAMCAQICEAKsXCZqC0Cb
jwt58q5GJXcwDQYJKoZIhvcNAQEFBQAwbDELMAkGA1UEBhMCVVMxFTATBgNVBAorEwxEaWdpQ2Vy
dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xKzApBgNVBAMTIkRpZ2lDZXJ0IEhpZ2gg
QXNzdXJhbmNlIEVWIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBsMQsw
CQYDVQQGEwJVUzEVMBMGA1UECisTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0
LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2UgRVYgUm9vdCBDQTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQorAoIBAQDGzOVz5vvUu+UtLTKm3+WBP8nNJUm2cSrD1ZQ0Z6IK
KxywX2mmQLHEt7KP0JikqUFZOtPclNY823Q4pErMTSWC90qlUxI47vNJbXGRfmO2q6Zfw6SE+E9i
Ub74xezbOJLjBuUIkQzEKEFV+8taiRV+ceg1v01yCT2+OjhQW3cxG42zxyRFmqesbQAUWgS3uhPr
UQormEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3hzBW
BOURtCmAEvF5OYiiAhF8J2a3iLd48soKK6g4qworZMK/Zl2VhMGhJR6HXRpQCyASzEG7bgtROLhL
ywIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUsT7D
aQP4v0cB1JgmGggC72NkK8MwHwYDVR0jBBgwFoAUsT7DaQP4v0cB1JgmGggC72NkK8MwDQYJKoZI
hvcNAQEFBQADggEBABwaBpfc15yfPIhmBghXIdshR/gqZ6q/GDJ2QBBXwYrzetkRZY41+p78RbWe
2UwxS7iR6EMsjrN4ztvjU3lx1uUhlAHaVYeaJGT2imbM3pw3zag0sWmbI8ieeCIrcEPjVUcxYRnv
WMWFL04w9qAxFiPI5+JlFjPLvxoboD34yl6LMYtgCIktDAZcUrfE+QormNEVX58Svnw2Yzi9RKR/
5CYrCivEl2kN6YziwBBXuMh2EpFV8khp2LwqAlsPRNQgMdv0unAmXZBgnrxLFwkvtMseQ2jJByfB
0lz36iG5aBKcPJy/nvyAXJtjzexHqiUnZ6A38wCCfVTXqfjpLhOjd+gfSgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tCShyZXZpc2lvbiAyNjQ2ODcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkod29ya2luZyBjb3B5KQpAQCAt
Mjk1LDcgKzI5NSw3IEBAIFRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVQYXRoc1ZlcnN1c0MK
ICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0
ZTMiXSBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29w
eUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAog
ICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9IHN3UGF0aDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>