<?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>206037</bug_id>
          
          <creation_ts>2020-01-09 14:38:37 -0800</creation_ts>
          <short_desc>Expand _WKResourceLoadDelegate callbacks</short_desc>
          <delta_ts>2020-02-12 10:02:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604869</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-09 14:38:37 -0800</bug_when>
    <thetext>Expand _WKResourceLoadDelegate callbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604881</commentid>
    <comment_count>1</comment_count>
      <attachid>387277</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-09 14:58:52 -0800</bug_when>
    <thetext>Created attachment 387277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604888</commentid>
    <comment_count>2</comment_count>
      <attachid>387280</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-09 15:08:10 -0800</bug_when>
    <thetext>Created attachment 387280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604912</commentid>
    <comment_count>3</comment_count>
      <attachid>387284</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-09 15:53:34 -0800</bug_when>
    <thetext>Created attachment 387284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605134</commentid>
    <comment_count>4</comment_count>
      <attachid>387284</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 09:08:18 -0800</bug_when>
    <thetext>Comment on attachment 387284
Patch

Seems fine but I have some questions.

This API is read-only.
Do we also want to modify/cancel all these requests?
Do we envision replacing InjectedBundle loading API with this API?

Do we want to see these requests before or after service worker?
Currently, this is after service worker.

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

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:104
&gt; +    return nextIdentifier++;

Can we use an ObjectIdentifier?

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.h:111
&gt; +    void didReceiveChallenge(const WebCore::AuthenticationChallenge&amp;) override;

final

&gt; Source/WebKit/UIProcess/API/APIResourceLoadInfo.h:40
&gt; +    ResourceLoadInfo(WebKit::ResourceLoadInfo&amp;&amp; info)

explicit and private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605139</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-10 09:11:31 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; Comment on attachment 387284 [details]
&gt; Patch
&gt; 
&gt; Seems fine but I have some questions.
&gt; 
&gt; This API is read-only.
&gt; Do we also want to modify/cancel all these requests?
That is not planned right now.  Hopefully never.
&gt; Do we envision replacing InjectedBundle loading API with this API?
The InjectedBundle has the ability to mutate requests before sending.  This is not a replacement for that ability.
&gt; 
&gt; Do we want to see these requests before or after service worker?
&gt; Currently, this is after service worker.
After.  This records what is actually sent on the network.  If we find we need service worker requests, too, we can add that.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387284&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:104
&gt; &gt; +    return nextIdentifier++;
&gt; 
&gt; Can we use an ObjectIdentifier?
No, because NetworkResourceLoader already has an identifier() method that returns the identifier according to the web process, but this identifier needs to be unique to the network process.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.h:111
&gt; &gt; +    void didReceiveChallenge(const WebCore::AuthenticationChallenge&amp;) override;
&gt; 
&gt; final
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIResourceLoadInfo.h:40
&gt; &gt; +    ResourceLoadInfo(WebKit::ResourceLoadInfo&amp;&amp; info)
&gt; 
&gt; explicit and private.
Will do before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605147</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 09:17:15 -0800</bug_when>
    <thetext>&gt; &gt; Can we use an ObjectIdentifier?
&gt; No, because NetworkResourceLoader already has an identifier() method that
&gt; returns the identifier according to the web process, but this identifier
&gt; needs to be unique to the network process.

I mean, can we use an ObjectIdentifier&lt;NetworkResourceLoadIdentifierType&gt; instead of an integer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605165</commentid>
    <comment_count>7</comment_count>
      <attachid>387350</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-10 09:48:18 -0800</bug_when>
    <thetext>Created attachment 387350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605167</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-10 09:53:18 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; I mean, can we use an ObjectIdentifier&lt;NetworkResourceLoadIdentifierType&gt;
&gt; instead of an integer.
That worked, but it made it so my identifiers were not 1, 2, 3... but rather numbers with all ObjectIdentifiers mixed in.  That&apos;s probably fine, but I had to update the test too.  I shouldn&apos;t be relying on deterministic identifiers anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605174</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-10 10:06:56 -0800</bug_when>
    <thetext>http://trac.webkit.org/r254345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605175</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-10 10:07:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/58482281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605279</commentid>
    <comment_count>11</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 13:40:34 -0800</bug_when>
    <thetext>New test has been crashing since it was committed:
https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.ResourceLoadDelegate.BeaconAndSyncXHR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605280</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-10 13:41:22 -0800</bug_when>
    <thetext>Looking into it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605307</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-10 14:38:46 -0800</bug_when>
    <thetext>http://trac.webkit.org/r254367 should fix those tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618071</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-12 10:02:48 -0800</bug_when>
    <thetext>http://trac.webkit.org/r256444</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387277</attachid>
            <date>2020-01-09 14:58:52 -0800</date>
            <delta_ts>2020-01-09 15:08:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206037-20200109145851.patch</filename>
            <type>text/plain</type>
            <size>74880</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDIwLTAxLTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwYW5kIF9XS1Jl
c291cmNlTG9hZERlbGVnYXRlIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzEz
MjI5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgNSBpbmZvcm1hdGl2ZSBkZWxlZ2F0ZSBjYWxsYmFja3MgYXQgdGhlc2UgdGltZXMgZHVyaW5n
IHRoZSBsb2FkaW5nIHByb2Nlc3M6CisgICAgICAgIDEuIFdoZW4gYSByZXF1ZXN0IGlzIHNlbnQu
CisgICAgICAgIDIuIFdoZW4gYSByZWRpcmVjdCBoYXBwZW5zLgorICAgICAgICAzLiBXaGVuIGEg
Y2hhbGxlbmdlIGhhcHBlbnMuCisgICAgICAgIDQuIFdoZW4gYSByZXNwb25zZSBpcyByZWNlaXZl
ZC4KKyAgICAgICAgNS4gV2hlbiBsb2FkaW5nIGNvbXBsZXRlcyBvciBmYWlscy4KKworICAgICAg
ICBBcyBtZW50aW9uZWQgaW4gcjI1NDE4MyB0aGVzZSBjYWxsYmFja3MgYXJlIG9ubHkgY2FsbGVk
IHdoZW4gYSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZSBpcyBnaXZlbiB0byBhIFdLV2ViVmlldy4K
KyAgICAgICAgV2UgYWRkIGEgbmV3IHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHdoaWNoIHdpbGwg
bmVlZCB0byBiZSBleHBhbmRlZCBjb250YWluaW5nIGN1cnJlbnRseSBvbmx5IHRoZSBsb2FkIGlk
ZW50aWZpZXIuCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cyB3aGljaCB2ZXJpZnkg
dGhlIHZhbGlkaXR5IG9mIHRoZSBzZW50IGluZm9ybWF0aW9uLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVzb3VyY2VMb2FkSUQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlTG9hZEluZm8p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICBBZGQgYSB3YXkgdG8gc2VuZCBhIG1lc3NhZ2UgaW5m
b3JtaW5nIHRoYXQgYSBjaGFsbGVuZ2UgaGFwcGVuZWQgd2l0aCBpbmZvcm1hdGlvbiBnYXRoZXJl
ZCBmcm9tIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIsCisgICAgICAgIHdoaWNoIHByZXZpb3Vz
bHkgd2FzIG5vdCBpbmZvcm1lZCBvZiBjaGFsbGVuZ2VzIGJlY2F1c2UgdGhlIGNoYWxsZW5nZXMg
d2VudCBkaXJlY3RseSBmcm9tIHRoZSBOZXR3b3JrTG9hZCB0byB0aGUgQXV0aGVudGljYXRpb25N
YW5hZ2VyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9BUEkv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAg
ICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9SZXNvdXJjZUxv
YWRJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvOjpkZWNvZGUpOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElS
ZXNvdXJjZUxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNl
TG9hZEluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVz
b3VyY2VMb2FkSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Jlc291cmNlTG9hZEluZm8ubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJ
bmZvIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJRF0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJbmZvIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICBBbiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5IHdhcyBvbmx5IHVzZWQgZm9yIGNoYWxsZW5nZXMg
dGhhdCBuZWVkZWQgY3JlZGVudGlhbHMsIHNvIHRoZXkgd3JhcHBlZCBhIENvbXBsZXRpb25IYW5k
bGVyLgorICAgICAgICBUaGlzIG5ldyB0eXBlIG9mIGluZm9ybWF0aXZlLW9ubHkgY2hhbGxlbmdl
IHdpbGwgYmUgZ2l2ZW4gYSBudWxsIENvbXBsZXRpb25IYW5kbGVyLCB3aGljaCBtZWFucyBubyBh
Y3Rpb24gY2FuIGJlIHRha2VuLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OnNldERlbGVn
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9h
ZENsaWVudDo6ZGlkU2VuZFJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291
cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ6OmRpZENvbXBsZXRlV2l0aEVycm9yIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
c291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGFnZVdpbGxTZW5kUmVxdWVzdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0
UGluZ0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QpOgorCiAyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0ludGVybmFsRGVidWdGZWF0CiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tTZXNzaW9uU3RhdGUubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5tbQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNiArMTg5LDggQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlYwogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY2hhbGxlbmdlKTsKKwogICAgIGF1dG8gc2NoZW1lID0gY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7CiAgICAgYm9vbCBpc1RMU0hhbmRzaGFr
ZSA9IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRy
dXN0RXZhbHVhdGlvblJlcXVlc3RlZAogICAgICAgICB8fCBzY2hlbWUgPT0gUHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJ
KHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdDsKQEAg
LTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZvLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTk3LDYgKzk4
LDEyIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBkYXRh
LmRlbGF5ZWRSZXBseSA9IG51bGxwdHI7CiB9CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJl
c291cmNlTG9hZElEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgeyAx
IH07CisgICAgcmV0dXJuIG5leHRJZGVudGlmaWVyKys7Cit9CisKIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1l
dGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVj
dGlvbiB9CkBAIC0xMDQsNiArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3Jr
UmVzb3VyY2VMbwogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1f
cGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIg
eyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CiAg
ICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24t
PmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKKyAgICAsIG1fcmVzb3Vy
Y2VMb2FkSUQgeyBnZW5lcmF0ZVJlc291cmNlTG9hZElEKCkgfQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTMyMyw3ICszMzEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVu
Y2VzID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFs
UmVxdWVzdCgpLnVybCgpKTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNl
TG9hZENsaWVudCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlBhZ2VXaWxsU2VuZFJlcXVlc3QobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXF1ZXN0
KSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNv
dXJjZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291
cmNlTG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFy
YW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CkBAIC0zMzEsNiArMzM5LDEzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249
JXtwdWJsaWN9cykiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCitSZXNvdXJjZUxvYWRJbmZvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VM
b2FkSW5mbygpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRJRAorICAg
IH07Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQg
cmVzdWx0KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NDcsNiArNTYy
LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7
CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJ
bmZvKCksIHJlc3BvbnNlKSwgMCk7CisKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSkgewogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDYgKzY0
MSw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKIAogICAgIHRy
eVN0b3JlQXNDYWNoZUVudHJ5KCk7CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNv
dXJjZUxvYWRDbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpSZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIHJlc291cmNlTG9hZEluZm8oKSwgeyB9KSwgMCk7CisKICAgICBjbGVhbnVwKExv
YWRSZXN1bHQ6OlN1Y2Nlc3MpOwogfQogCkBAIC02NTUsNiArNjc2LDkgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaQogI2VuZGlmCiAgICAgfQogCisgICAgaWYgKG1f
cGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJy
b3IobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvKCksIGVycm9y
KSwgMCk7CisKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQogCkBAIC02NjQs
NiArNjg4LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGgKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkQmxvY2tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sK
KyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAg
IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNl
aXZlQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5m
bygpLCBjaGFsbGVuZ2UpLCAwKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTY5MCw2ICs3MjAsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDoiKTsKICAgICArK21fcmVk
aXJlY3RDb3VudDsKKyAgICBtX3JlZGlyZWN0UmVzcG9uc2UgPSByZWRpcmVjdFJlc3BvbnNlOwog
CiAgICAgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiBhZENsaWNrQ29u
dmVyc2lvbjsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC04NjUsNiAr
ODk2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKIAogICAg
IGlmIChtX25ldHdvcmtMb2FkKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBUZWxsaW5nIE5ldHdvcmtMb2FkIHRvIHByb2NlZWQgd2l0
aCB0aGUgcmVkaXJlY3QiKTsKKworICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNv
dXJjZUxvYWRDbGllbnQgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNlTG9hZElu
Zm8oKSwgbV9yZWRpcmVjdFJlc3BvbnNlLCBuZXdSZXF1ZXN0KSwgMCk7CisKICAgICAgICAgbV9u
ZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw2ICs1NCw4IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK3N0cnVj
dCBSZXNvdXJjZUxvYWRJbmZvOworCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVu
dHJ5OwogfQpAQCAtMTA2LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udmVydFRvRG93
bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMTk1LDYgKzE5OCw4IEBAIHByaXZhdGU6
CiAKICAgICBPcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKKyAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsK
KwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpA
QCAtMjM0LDYgKzIzOSw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiAjZW5kaWYKKyAgICB1aW50NjRfdCBtX3Jlc291cmNlTG9hZElEIHsgMCB9
OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkSW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IFJlc291cmNlTG9hZEluZm8geworCisgICAgdWludDY0X3Qg
cmVzb3VyY2VMb2FkSUQgeyAwIH07CisgICAgCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRJ
RDsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VMb2FkSW5mbz4gZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiByZXNvdXJjZUxvYWRJRDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNvdXJjZUxvYWRJRDsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZUxvYWRJRCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpyZXNvdXJjZUxv
YWRJRCksCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMjU0MTgzKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJvdGVjdGlvblNwYWNlLAogICAgICAg
ICBSZW5kZXJMYXllciwKICAgICAgICAgUmVuZGVyT2JqZWN0LAorICAgICAgICBSZXNvdXJjZUxv
YWRJbmZvLAogICAgICAgICBTZWN1cml0eU9yaWdpbiwKICAgICAgICAgU2Vzc2lvblN0YXRlLAog
ICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAK
ICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnRlcm5hbERl
YnVnRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKQEAgLTMzMiw2ICszMzMsMTAg
QEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgICAgICB3cmFw
cGVyID0gW19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBUeXBlOjpSZXNvdXJjZUxvYWRJbmZvOgorICAgICAgICB3cmFwcGVyID0gW19XS1Jl
c291cmNlTG9hZEluZm8gYWxsb2NdOworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAg
IGNhc2UgVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk6CiAgICAgICAgIHdy
YXBwZXIgPSBbX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgYWxsb2NdOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkxNiwxMCArNTkxNiwzNCBAQCBXZWJJbnNwZWN0
b3JQcm94eSogV2ViUGFnZVByb3h5OjppbnNwZWN0CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdl
dCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xp
ZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVl
c3QpOworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+ZGlkU2VuZFJlcXVlc3QoV1RGTW92
ZShsb2FkSW5mbyksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYg
bG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRDbGll
bnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxl
bmdlKFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpCit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xpZW50
KQorICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGxvYWRJbmZvKSwgY2hhbGxlbmdlKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc291
cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBpZiAobV9yZXNvdXJj
ZUxvYWRDbGllbnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlTG9h
ZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKQoreworICAg
IGlmIChtX3Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQt
PmRpZENvbXBsZXRlV2l0aEVycm9yKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKGVycm9yKSk7
CiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsNyBA
QCBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBQREZDb250ZXh0TWVudTsKK3N0cnVjdCBS
ZXNvdXJjZUxvYWRJbmZvOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTsKIHN0cnVjdCBX
ZWJIaXRUZXN0UmVzdWx0RGF0YTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwpAQCAt
NDY3LDcgKzQ2OCwxMSBAQCBwdWJsaWM6CiAKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVj
dG9yKCkgY29uc3Q7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFJl
c291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OworICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShSZXNvdXJjZUxvYWRJ
bmZvJiYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
IAogICAgIHZvaWQgZGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1bnNpZ25lZCBjb3Vu
dCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ291bnQgPSBjb3VudDsgfQogICAgIHVuc2lnbmVkIGlu
c3BlY3RvckZyb250ZW5kQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
Q291bnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxv
YWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UmVzb3VyY2VMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsMTMgKzI1LDIyIEBACiAKICNwcmFnbWEgb25jZQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5m
bzsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFJlc291cmNlTG9hZENsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRSZXF1ZXN0KFdlYktp
dDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
JikgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZv
LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBSZXNvdXJjZUxvYWRJbmZvIGZpbmFsIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpSZXNvdXJjZUxvYWRJbmZvPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRJbmZvPiBjcmVhdGUoV2ViS2l0OjpSZXNv
dXJjZUxvYWRJbmZvJiYgaW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlc291cmNlTG9hZEluZm8oV1RGTW92ZShpbmZvKSkpOworICAgIH0KKworICAgIFJlc291cmNl
TG9hZEluZm8oV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYgaW5mbykKKyAgICAgICAgOiBtX2lu
Zm8oV1RGTW92ZShpbmZvKSkKKyAgICB7CisgICAgfQorCisgICAgdWludDY0X3QgcmVzb3VyY2VM
b2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2luZm8ucmVzb3VyY2VMb2FkSUQ7IH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gbV9pbmZvOworCit9OworCit9
IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAy
NTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDE5IEBACiAKICNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIF9XS1Jlc291cmNlTG9hZEluZm87
CisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0OworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVzb3Vy
Y2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdDsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJjZUxv
YWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3Q7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3Vy
Y2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVDaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2U7CistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3VyY2VMb2FkOihfV0tSZXNvdXJjZUxv
YWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNl
TG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcjooTlNFcnJvciAqIF9fbnVsbGFibGUpZXJyb3I7CiAKIEBlbmQKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2Fk
SW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tSZXNv
dXJjZUxvYWRJbmZvIDogTlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlM
QUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2NF90IHJlc291cmNlTG9hZElEOworCitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0JKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZElu
Zm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCisjaW1wb3J0
ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRJbmZvSW50
ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1Jlc291cmNlTG9hZEluZm8KKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgX2luZm8tPkFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6flJlc291cmNl
TG9hZEluZm8oKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHVpbnQ2NF90KXJlc291
cmNlTG9hZElECit7CisgICAgcmV0dXJuIF9pbmZvLT5yZXNvdXJjZUxvYWRJRCgpOworfQorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2luZm87Cit9CisKK0Bl
bmQKKwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNl
TG9hZEluZm9JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkSW5mb0lu
dGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJX
S09iamVjdC5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlJlc291cmNl
TG9hZEluZm8+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tSZXNvdXJjZUxvYWRJbmZv
OworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1Jlc291cmNlTG9hZEluZm8gKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlJlc291cmNlTG9hZElu
Zm8+IF9pbmZvOworfQorQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdl
YWtQdHI8U2VjS2V5UHJveHlTdG9yZT4mJiBzZWNLZXlQcm94eVN0b3JlKQogICAgIDogbV9jb3Jl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
Ci0gICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6Y3JlYXRl
KFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbiksIHNlY0tleVBy
b3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKSB7CisgICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcjo6Y3JlYXRlKGNoYWxsZW5nZUlEID8gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+
KFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbiksIHNlY0tleVBy
b3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKSB7CiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQogICAgICAgICBpZiAoc2VjS2V5
UHJveHlTdG9yZSAmJiBzZWNLZXlQcm94eVN0b3JlLT5pbml0aWFsaXplKGNyZWRlbnRpYWwpKSB7
CiAgICAgICAgICAgICBzZW5kQ2xpZW50Q2VydGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25u
ZWN0aW9uLCAqc2VjS2V5UHJveHlTdG9yZSwgY2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwpOwpAQCAt
NTMsNyArNTMsNyBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhCiAg
ICAgICAgIH0KICNlbmRpZgogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OkNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxl
bmdlSUQsIGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFsKSwgMCk7Ci0gICAgfSkpCisgICAgfSkgOiBu
dWxscHRyKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1NywxMSBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgLy8gQVBJOjpSZXNvdXJjZUxvYWRDbGllbnQKLSAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgICAg
IHZvaWQgZGlkU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJikgY29uc3QgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpIGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
IGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNl
TG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKSBjb25zdCBmaW5hbDsKIAogICAg
ICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSYgbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZTsKICAgICB9
OwpAQCAtNjYsNyArNzAsMTEgQEAgcHJpdmF0ZToKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLUmVz
b3VyY2VMb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKIAogICAgIHN0cnVjdCB7Ci0gICAgICAg
IGJvb2wgd2lsbFNlbmRSZXF1ZXN0IDogMTsKKyAgICAgICAgYm9vbCBkaWRTZW5kUmVxdWVzdCA6
IDE7CisgICAgICAgIGJvb2wgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA6IDE7CisgICAgICAg
IGJvb2wgZGlkUmVjZWl2ZUNoYWxsZW5nZSA6IDE7CisgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJl
c3BvbnNlIDogMTsKKyAgICAgICAgYm9vbCBkaWRDb21wbGV0ZVdpdGhFcnJvciA6IDE7CiAgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCIKIAogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIl9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNTEsNyArNTIsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6c2V0RGVs
ZWdhdGUoaQogewogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAotICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndpbGxTZW5kUmVxdWVzdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6d2lsbFNlbmRSZXF1ZXN0OildOworICAgIC8vIHJlc291cmNlV2l0aElE
OgorICAgIC8vIHR5cGU6CisgICAgLy8gX1dLRnJhbWVIYW5kbGUgZnJhbWU6CisgICAgLy8gX1dL
RnJhbWVIYW5kbGUgcGFyZW50RnJhbWU6CisgICAgCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZGlk
U2VuZFJlcXVlc3QgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJW
aWV3OnJlc291cmNlTG9hZDpkaWRTZW5kUmVxdWVzdDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZUxvYWQ6ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjpuZXdSZXF1ZXN0OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRpZFJlY2VpdmVDaGFsbGVu
Z2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJlc291
cmNlTG9hZDpkaWRSZWNlaXZlQ2hhbGxlbmdlOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRp
ZFJlY2VpdmVSZXNwb25zZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFJlY2VpdmVSZXNwb25zZTopXTsKKyAgICBtX2RlbGVn
YXRlTWV0aG9kcy5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZENvbXBsZXRlV2l0aEVycm9y
OildOwogfQogCiBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpSZXNv
dXJjZUxvYWRDbGllbnQoUmVzb3VyY2VMb2FkRGVsZWdhdGUmIGRlbGVnYXRlKQpAQCAtNjEsMTYg
KzcxLDY0IEBAIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQKIAogUmVz
b3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6flJlc291cmNlTG9hZENsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2Fk
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xp
ZW50OjpkaWRTZW5kUmVxdWVzdChXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
cmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0KQor
ICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRTZW5k
UmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVn
YXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSB3aWxsU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKKyAgICBb
ZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5n
ZXQoKSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShX
VEZNb3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFNlbmRSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1
ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtkZWxl
Z2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgp
IHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1v
dmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVw
ZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworfQorCit2b2lkIFJlc291cmNlTG9h
ZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0
OjpSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRSZWNlaXZlQ2hhbGxlbmdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgp
LmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRl
KFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUmVjZWl2ZUNoYWxsZW5nZTp3cmFwcGVyKGNo
YWxsZW5nZSldOworfQorCit2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2Fk
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSBjb25zdAoreworICAg
IGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRSZWNlaXZl
UmVzcG9uc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Jlc291
cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNv
dXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRSZWNlaXZl
UmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKK30KKwordm9pZCBSZXNvdXJjZUxv
YWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJL
aXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
IGVycm9yKSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy5kaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsK
KyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgd2Vi
VmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJj
ZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJ
bmZvKSkuZ2V0KCkpIGRpZENvbXBsZXRlV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTMgKzQ1Miw1MCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmxvZ0dsb2JhbERpYWduCiAgICAgICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNhbnRG
aWd1cmVzLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBh
Z2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT53
aWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7CisgICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkU2VuZFJl
cXVlc3QoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQoreworICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IHBhZ2UtPnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92ZShsb2Fk
SW5mbyksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQoreworICAgIGF1dG8q
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2hhbGxlbmdlUHJveHkgPSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92ZShjaGFsbGVuZ2UpLCAwLCAqY29ubmVj
dGlvbigpLCBudWxscHRyKTsKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxl
bmdlKFdURk1vdmUobG9hZEluZm8pLCBjaGFsbGVuZ2VQcm94eS5nZXQoKSk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBhdXRvKiBwYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYgZXJyb3IpCit7CisgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV1RGTW92ZShsb2FkSW5m
byksIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDEyICs2NCwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERvd25sb2FkUHJv
eHk7CiBjbGFzcyBEb3dubG9hZFByb3h5TWFwOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKKwogZW51bSBjbGFzcyBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xh
c3MgV2Vic2l0ZURhdGFUeXBlOworCiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK3N0cnVjdCBSZXNv
dXJjZUxvYWRJbmZvOwogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vz
c1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9j
ZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQ
cm94eT4gewpAQCAtMjAxLDcgKzIwNCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICB2
b2lkIHBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRTZW5kUmVx
dWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
KyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTY4LDUgKzY4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZQogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQp
IC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCiAgICAgCi0gICAgUGFnZVdp
bGxTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNlTG9hZERp
ZFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmll
ciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBSZXNvdXJjZUxvYWREaWRQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
S2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkKKyAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgUmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEx
NzAsNiArMTE3MCw4IEBACiAJCTVDQjIzNzhDMURGMERFNkUwMDExN0FBMyAvKiBfV0tXZWJzaXRl
UG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0IyMzc4RTFERjBF
MEQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzhEMURGMEUwQzIwMDExN0FB
MyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovOyB9OwogCQk1Q0I3QUZFMDIzQzUy
Q0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAv
KiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTVDQjdBRkU3MjNDNjgyMDcwMEU0OUNGMyAvKiBSZXNvdXJj
ZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyB9Owor
CQk1Q0I3QUZFODIzQzY5QjYxMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCN0FGRTMyM0M2N0Qz
NzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi87
IH07CiAJCTVDQkQ1OTVDMjI4MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVEMjM4
ODIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovOyB9OwogCQk1
Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNEMjg2NEQxRTcyMkY0
NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0zODk2LDYgKzM4OTgsMTEgQEAKIAkJNUNC
N0FGREQyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjdBRkRFMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0I3QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FGRTIyM0M2N0QzNzAwRTQ5Q0YzIC8q
IF9XS1Jlc291cmNlTG9hZEluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkU0MjNDNjdENjQwMEU0OUNGMyAvKiBB
UElSZXNvdXJjZUxvYWRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SVJlc291cmNlTG9hZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FG
RTUyM0M2N0RGOTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0Yz
IC8qIFJlc291cmNlTG9hZEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VMb2FkSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4
OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDNURCOTEyMTQ4OEUx
NjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTYxNSw2ICs1NjIyLDcgQEAKIAkJCQlFMUNDMUI4RTEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5
ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovLAogCQkJCUY2QTBDMTNGMTMyODFF
NkUwMDcwNDMwRiAvKiBSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCAqLywKKwkJCQk1Q0I3QUZFNjIz
QzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLAogCQkJCTQxMDQ4MkNCMURE
RDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLywKIAkJCQk0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovLAogCQkJCTQxQjI4QjA5MUY4M0FEM0UwMEZCNTJB
QyAvKiBSVENQYWNrZXRPcHRpb25zLmNwcCAqLywKQEAgLTY3NzEsNiArNjc3OSw5IEBACiAJCQkJ
QTU1QkE4MEQxQkExMkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tICovLAogCQkJCTk5MEUxRTA4MjM4NEE4OEIwMDQ2MDJERiAvKiBfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCAqLywKIAkJCQk1Q0I3QUZERjIzQzUy
Q0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLywKKwkJCQk1Q0I3QUZF
MzIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oICovLAorCQkJCTVDQjdB
RkUyMjNDNjdEMzcwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLm1tICovLAorCQkJCTVD
QjdBRkU1MjNDNjdERjkwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaCAq
LywKIAkJCQk0OUZCRUZGQjIzOUFEQjE4MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHkuaCAqLywKIAkJCQk0OUZCRUZGQzIzOUIwMTFEMDBCRDAzMkYgLyogX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkubW0gKi8sCiAJCQkJNDlCQ0ExOTAyM0Ex
NzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJu
YWwuaCAqLywKQEAgLTg0NzAsNiArODQ4MSw3IEBACiAJCQkJN0NFNEQyMUQxQTQ5MTRDQTAwQzdG
MTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJN0NFNEQyMUUx
QTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovLAogCQkJ
CTVDQjdBRkRBMjNDNDNFNjQwMEU0OUNGMyAvKiBBUElSZXNvdXJjZUxvYWRDbGllbnQuaCAqLywK
KwkJCQk1Q0I3QUZFNDIzQzY3RDY0MDBFNDlDRjMgLyogQVBJUmVzb3VyY2VMb2FkSW5mby5oICov
LAogCQkJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eS5oICovLAogCQkJCTQ5QkNBMTk2MjNBMThGNjIwMDI4QTgzNiAvKiBBUElS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICovLAogCQkJCTFBRkRFNjVGMTk1NEU5
QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuY3BwICovLApAQCAtOTgxNyw2ICs5ODI5LDcg
QEAKIAkJCQkzNzcyMTZCODFBNEU2QkUwMDBEQ0E3MTggLyogX1dLUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAvKiBf
V0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0I3QUZFMDIzQzUyQ0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTVDQjdBRkU4MjNDNjlCNjEwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxv
YWRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwMTIzOUIxRjhEMDBCRDAzMkYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QkNBMTk1MjNBMThDRkQwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwMDIzOUIxRjc1MDBC
RDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAyNzcsNiArMTAyOTAsNyBAQAogCQkJCUE1NUJBODFGMUJBMjVCMjcwMDdDRDMz
RCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4
MjUxQkEyNUNGQjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NUJBODE3MUJBMjNFMTIwMDdDRDMzRCAvKiBSZW1vdGVXZWJJ
bnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNCN0FGRTcyM0M2ODIwNzAwRTQ5Q0Yz
IC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRTk2OUNEMUU1NEUw
NTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkJFOTY5Q0IxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkJEMzY3MjFFNTFC
QUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjYsOSArNTI2LDEwIEBAIE9wdGlvbmFsPFdlYkxvYWRlclN0cmF0ZWd5OjpTeW5j
TG9hZFJlc3UKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksICBjb25zdCBGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+
JiBkYXRhKQogewotICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVu
dCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWVMb2FkZXIuY2xpZW50KCkpOwotICAgIFdl
YkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJD
bGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYkZyYW1lTG9h
ZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5jbGllbnQoKSk7
CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2Vi
RnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiBwYWdlID0gd2Vi
UGFnZSA/IHdlYlBhZ2UtPmNvcmVQYWdlKCkgOiBudWxscHRyOwogCiAgICAgYXV0byB3ZWJQYWdl
UHJveHlJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCkgOiBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3
ZWJQYWdlLT5pZGVudGlmaWVyKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CkBAIC01NzksNiArNTgw
LDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luYwogICAgICAgICAg
ICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9s
aWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgbG9hZFBhcmFtZXRlcnMub3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnM7CisgICAgaWYgKHBhZ2Up
CisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBwYWdl
LT5oYXNSZXNvdXJjZUxvYWRDbGllbnQoKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwogCkBAIC01
OTEsNyArNTk0LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luYwog
CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewogICAgICAgICBXRUJM
T0FERVJTVFJBVEVHWV9XSVRIX0ZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3Vz
IG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIik7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2Vi
UGFnZSA/IHdlYlBhZ2UtPmNvcmVQYWdlKCkgOiBudWxscHRyKQorICAgICAgICBpZiAocGFnZSkK
ICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5
KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25vdXNNZXNzYWdlRmFp
bGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICByZXNwb25zZSA9
IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlcXVl
c3QudXJsKCkpOwpAQCAtNjQ0LDYgKzY0Nyw4IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQoRnIKICAgICAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkKICAgICAgICAgICAgIGxvYWRQYXJh
bWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9u
c2VIZWFkZXJzKCk7CiAgICAgfQorICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
KSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCA9IHBh
Z2UtPmhhc1Jlc291cmNlTG9hZENsaWVudCgpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBsb2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9w
RG9jdW1lbnQoKS51cmwoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29yZUxv
YWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RS
ZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CisgICAgYXV0byByZWRpcmVjdFJlc3BvbnNlQ29w
eSA9IHJlZGlyZWN0UmVzcG9uc2U7CisgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3Qo
V1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlZGlyZWN0UmVzcG9uc2UgPSBXVEZN
b3ZlKHJlZGlyZWN0UmVzcG9uc2VDb3B5KV0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewog
ICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkp
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDog
ZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciIpOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MzAwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBFeHBhbmQgX1dLUmVzb3VyY2VM
b2FkRGVsZWdhdGUgY2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJW
aWV3OnJlc291cmNlTG9hZDpkaWRTZW5kUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb246bmV3UmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJlc291cmNlTG9hZERlbGVnYXRl
IHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFJlY2VpdmVDaGFsbGVuZ2U6XSk6CisgICAgICAgICgt
W1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRSZWNlaXZl
UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3
OnJlc291cmNlTG9hZDpkaWRDb21wbGV0ZVdpdGhFcnJvcjpdKToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAoLVtUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzp3aWxsU2VuZFJlcXVl
c3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToK
KyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbm9uLTIwMCBzdGF0dXMgY29kZXMgaW4g
cmVzcG9uc2VzLgorICAgICAgICBBbHNvIHN3aXRjaCB0aGUgb3JkZXIgb2YgcGFyYW1ldGVycyB0
byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgaGVhZGVyIGZpZWxkcyBhcmUgc2VudCBiZWZvcmUgdGhl
IGJvZHkuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6c3RhdHVzVGV4dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyk6CisKIDIwMjAtMDEtMDkgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBBZGQgdGltaW5nIGluZm9ybWF0aW9uIHRvIFdlYlBhZ2VQcm94eTo6bG9nRnJhbWVO
YXZpZ2F0aW9uKCkgdG8gZGV0ZWN0IGRlbGF5ZWQgY2xpZW50LXNpZGUgcmVkaXJlY3RzCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1LDI1ICsyNSw1OCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAor
I2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgor
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291cmNlTG9hZEluZm8u
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WYXJpYW50Lmg+CiAK
IEBpbnRlcmZhY2UgVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1Jlc291
cmNlTG9hZERlbGVnYXRlPgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndp
bGxTZW5kUmVxdWVzdCkoV0tXZWJWaWV3ICosIE5TVVJMUmVxdWVzdCAqKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkU2VuZFJlcXVlc3QpKFdLV2ViVmlldyAqLCBfV0tS
ZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMUmVxdWVzdCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikoV0tXZWJWaWV3ICosIF9X
S1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXNwb25zZSAqLCBOU1VSTFJlcXVlc3QgKik7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVDaGFsbGVuZ2UpKFdL
V2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVS
ZXNwb25zZSkoV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXNwb25z
ZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkQ29tcGxldGVXaXRo
RXJyb3IpKFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TRXJyb3IgKik7CiAK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZQogCi0tICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVz
b3VyY2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFNlbmRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAgaWYgKF93aWxsU2VuZFJlcXVlc3Qp
Ci0gICAgICAgIF93aWxsU2VuZFJlcXVlc3Qod2ViVmlldywgcmVxdWVzdCk7CisgICAgaWYgKF9k
aWRTZW5kUmVxdWVzdCkKKyAgICAgICAgX2RpZFNlbmRSZXF1ZXN0KHdlYlZpZXcsIHJlc291cmNl
TG9hZCwgcmVxdWVzdCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICBpZiAoX2RpZFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24pCisgICAgICAgIF9kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKHdlYlZpZXcsIHJlc291
cmNlTG9hZCwgcmVzcG9uc2UsIHJlcXVlc3QpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcmVzb3VyY2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3Vy
Y2VMb2FkIGRpZFJlY2VpdmVDaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVDaGFsbGVuZ2UpCisgICAgICAgIF9k
aWRSZWNlaXZlQ2hhbGxlbmdlKHdlYlZpZXcsIHJlc291cmNlTG9hZCwgY2hhbGxlbmdlKTsKK30K
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dL
UmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJM
UmVzcG9uc2UgKilyZXNwb25zZQoreworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAg
ICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKHdlYlZpZXcsIHJlc291cmNlTG9hZCwgcmVzcG9uc2Up
OworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3VyY2VMb2Fk
OihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZENvbXBsZXRlV2l0aEVycm9y
OihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpZiAoX2RpZENvbXBsZXRlV2l0aEVycm9yKQorICAg
ICAgICBfZGlkQ29tcGxldGVXaXRoRXJyb3Iod2ViVmlldywgcmVzb3VyY2VMb2FkLCBlcnJvcik7
CiB9CiAKIEBlbmQKQEAgLTYyLDcgKzk1LDcgQEAgVEVTVChSZXNvdXJjZUxvYWREZWxlZ2F0ZSwg
QmFzaWMpCiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0RnJvbURl
bGVnYXRlOwogICAgIGF1dG8gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0UmVz
b3VyY2VMb2FkRGVsZWdhdGUgbmV3XSk7CiAgICAgW3dlYlZpZXcgX3NldFJlc291cmNlTG9hZERl
bGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpXTsKLSAgICBbcmVzb3VyY2VMb2FkRGVs
ZWdhdGUgc2V0V2lsbFNlbmRSZXF1ZXN0Ol4oV0tXZWJWaWV3ICosIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCkgeworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRTZW5kUmVxdWVzdDpeKFdL
V2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkg
ewogICAgICAgICByZXF1ZXN0RnJvbURlbGVnYXRlID0gcmVxdWVzdDsKICAgICB9XTsKIApAQCAt
NzIsMyArMTA1LDE5NiBAQCBURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBCYXNpYykKICAgICAK
ICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdExvYWRlZC5nZXQoKS5VUkwuYWJzb2x1dGVTdHJp
bmcsIHJlcXVlc3RGcm9tRGVsZWdhdGUuZ2V0KCkuVVJMLmFic29sdXRlU3RyaW5nKTsKIH0KKwor
I2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK1RFU1QoUmVzb3VyY2VMb2FkRGVsZWdhdGUs
IEJlYWNvbkFuZFN5bmNYSFIpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH0gfSwKKyAgICAgICAgeyAiL3hoclRhcmdl
dCIsIHsgImhpIiB9IH0sCisgICAgICAgIHsgIi9iZWFjb25UYXJnZXQiLCB7ICJoaSIgfSB9LAor
ICAgIH0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXdd
KTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RGcm9tRGVs
ZWdhdGU7CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICBh
dXRvIHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVn
YXRlIG5ld10pOworICAgIFt3ZWJWaWV3IF9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW3Jlc291cmNlTG9hZERlbGVnYXRlIHNldERpZFNl
bmRSZXF1ZXN0Ol4oV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0KSB7CisgICAgICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUgPSByZXF1ZXN0Owor
ICAgICAgICByZWNlaXZlZENhbGxiYWNrID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAIm5hdmlnYXRvci5zZW5kQmVhY29uKCcvYmVhY29uVGFyZ2V0
JykiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZENhbGxiYWNrKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIi9iZWFjb25UYXJnZXQi
LCByZXF1ZXN0RnJvbURlbGVnYXRlLmdldCgpLlVSTC5wYXRoKTsKKworICAgIHJlY2VpdmVkQ2Fs
bGJhY2sgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6CisgICAgICAg
IEAidmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsiCisgICAgICAgICJ2YXIgYXN5
bmNocm9ub3VzID0gZmFsc2U7IgorICAgICAgICAicmVxdWVzdC5vcGVuKCdHRVQnLCAneGhyVGFy
Z2V0JywgYXN5bmNocm9ub3VzKTsiCisgICAgICAgICJyZXF1ZXN0LnNlbmQoKTsiIGNvbXBsZXRp
b25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZENh
bGxiYWNrKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIi94aHJUYXJnZXQiLCByZXF1ZXN0RnJvbURl
bGVnYXRlLmdldCgpLlVSTC5wYXRoKTsKK30KKworVEVTVChSZXNvdXJjZUxvYWREZWxlZ2F0ZSwg
UmVkaXJlY3QpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAg
ICAgICB7ICIvIiwgeyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvcmVkaXJlY3RUYXJnZXQiIH19IH0g
fSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9KTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgYXV0byByZXNvdXJjZUxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBbcmVz
b3VyY2VMb2FkRGVsZWdhdGUgc2V0RGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpeKFdLV2ViVmll
dyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVS
TC5wYXRoLCAiLyIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwucGF0aCwg
Ii9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBf
c2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCldOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoUmVzb3VyY2VMb2FkRGVsZWdhdGUsIExv
YWRJbmZvKQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgIjxpZnJhbWUgc3JjPSdpZnJhbWVTcmMnPjwvaWZyYW1lPiIgfSB9LAorICAg
ICAgICB7ICIvaWZyYW1lU3JjIiwgeyAiPHNjcmlwdD5mZXRjaCgnZmV0Y2hUYXJnZXQnKTwvc2Ny
aXB0PiIgfSB9LAorICAgICAgICB7ICIvZmV0Y2hUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAgIH0p
OworCisgICAgZW51bSBjbGFzcyBDYWxsYmFjayB7CisgICAgICAgIERpZFNlbmRSZXF1ZXN0LAor
ICAgICAgICBEaWRSZWNlaXZlUmVzcG9uc2UsCisgICAgICAgIERpZENvbXBsZXRlV2l0aEVycm9y
LAorICAgIH07CisKKyAgICBfX2Jsb2NrIFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOworICAg
IF9fYmxvY2sgVmVjdG9yPFJldGFpblB0cjxXS1dlYlZpZXc+PiB3ZWJWaWV3czsKKyAgICBfX2Js
b2NrIFZlY3RvcjxSZXRhaW5QdHI8X1dLUmVzb3VyY2VMb2FkSW5mbz4+IGxvYWRJbmZvczsKKyAg
ICBfX2Jsb2NrIFZlY3RvcjxSZXRhaW5QdHI8aWQ+PiBvdGhlclBhcmFtZXRlcnM7CisKKyAgICBf
X2Jsb2NrIHNpemVfdCByZXNvdXJjZUNvbXBsZXRpb25Db3VudCA9IDA7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVs
ZWdhdGUgc2V0RGlkU2VuZFJlcXVlc3Q6XihXS1dlYlZpZXcgKndlYlZpZXcsIF9XS1Jlc291cmNl
TG9hZEluZm8gKmxvYWRJbmZvLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpIHsKKyAgICAgICAgY2Fs
bGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGlkU2VuZFJlcXVlc3QpOworICAgICAgICB3ZWJWaWV3
cy5hcHBlbmQod2ViVmlldyk7CisgICAgICAgIGxvYWRJbmZvcy5hcHBlbmQobG9hZEluZm8pOwor
ICAgICAgICBvdGhlclBhcmFtZXRlcnMuYXBwZW5kKHJlcXVlc3QpOworICAgIH1dOworICAgIFtk
ZWxlZ2F0ZSBzZXREaWRSZWNlaXZlUmVzcG9uc2U6XihXS1dlYlZpZXcgKndlYlZpZXcsIF9XS1Jl
c291cmNlTG9hZEluZm8gKmxvYWRJbmZvLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSkgeworICAg
ICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEaWRSZWNlaXZlUmVzcG9uc2UpOworICAg
ICAgICB3ZWJWaWV3cy5hcHBlbmQod2ViVmlldyk7CisgICAgICAgIGxvYWRJbmZvcy5hcHBlbmQo
bG9hZEluZm8pOworICAgICAgICBvdGhlclBhcmFtZXRlcnMuYXBwZW5kKHJlc3BvbnNlKTsKKyAg
ICB9XTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkQ29tcGxldGVXaXRoRXJyb3I6XihXS1dlYlZpZXcg
KndlYlZpZXcsIF9XS1Jlc291cmNlTG9hZEluZm8gKmxvYWRJbmZvLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEaWRDb21wbGV0ZVdpdGhFcnJv
cik7CisgICAgICAgIHdlYlZpZXdzLmFwcGVuZCh3ZWJWaWV3KTsKKyAgICAgICAgbG9hZEluZm9z
LmFwcGVuZChsb2FkSW5mbyk7CisgICAgICAgIG90aGVyUGFyYW1ldGVycy5hcHBlbmQoZXJyb3Ip
OworICAgICAgICByZXNvdXJjZUNvbXBsZXRpb25Db3VudCsrOworICAgIH1dOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IF9zZXRS
ZXNvdXJjZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hpbGUgKHJlc291cmNlQ29tcGxldGlvbkNv
dW50IDwgMykKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKwor
ICAgIFZlY3RvcjxDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MgeworICAgICAgICBDYWxsYmFj
azo6RGlkU2VuZFJlcXVlc3QsCisgICAgICAgIENhbGxiYWNrOjpEaWRSZWNlaXZlUmVzcG9uc2Us
CisgICAgICAgIENhbGxiYWNrOjpEaWRDb21wbGV0ZVdpdGhFcnJvciwKKyAgICAgICAgQ2FsbGJh
Y2s6OkRpZFNlbmRSZXF1ZXN0LAorICAgICAgICBDYWxsYmFjazo6RGlkUmVjZWl2ZVJlc3BvbnNl
LAorICAgICAgICBDYWxsYmFjazo6RGlkQ29tcGxldGVXaXRoRXJyb3IsCisgICAgICAgIENhbGxi
YWNrOjpEaWRTZW5kUmVxdWVzdCwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZFJlY2VpdmVSZXNwb25z
ZSwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZENvbXBsZXRlV2l0aEVycm9yCisgICAgfTsKKyAgICBF
WFBFQ1RfRVEoY2FsbGJhY2tzLCBleHBlY3RlZENhbGxiYWNrcyk7CisKKyAgICBFWFBFQ1RfRVEo
d2ViVmlld3Muc2l6ZSgpLCA5dWxsKTsKKyAgICBmb3IgKGF1dG8mIHZpZXcgOiB3ZWJWaWV3cykK
KyAgICAgICAgRVhQRUNUX0VRKHdlYlZpZXcuZ2V0KCksIHZpZXcuZ2V0KCkpOworCisgICAgc3Ry
dWN0IEV4cGVjdGVkSW5mbyB7CisgICAgICAgIHVpbnQ2NF90IHJlc291cmNlTG9hZElEOworICAg
IH07CisgICAgYXV0byBjaGVja0xvYWRJbmZvID0gW10gKFJldGFpblB0cjxfV0tSZXNvdXJjZUxv
YWRJbmZvPiYgaW5mbywgRXhwZWN0ZWRJbmZvIGV4cGVjdGVkSW5mbykgeworICAgICAgICBFWFBF
Q1RfRVEoaW5mby5nZXQoKS5yZXNvdXJjZUxvYWRJRCwgZXhwZWN0ZWRJbmZvLnJlc291cmNlTG9h
ZElEKTsKKyAgICB9OworICAgIEVYUEVDVF9FUShsb2FkSW5mb3Muc2l6ZSgpLCA5dWxsKTsKKyAg
ICBjaGVja0xvYWRJbmZvKGxvYWRJbmZvc1swXSwgeyAxIH0pOworICAgIGNoZWNrTG9hZEluZm8o
bG9hZEluZm9zWzFdLCB7IDEgfSk7CisgICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbMl0sIHsg
MSB9KTsKKyAgICBjaGVja0xvYWRJbmZvKGxvYWRJbmZvc1szXSwgeyAyIH0pOworICAgIGNoZWNr
TG9hZEluZm8obG9hZEluZm9zWzRdLCB7IDIgfSk7CisgICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5m
b3NbNV0sIHsgMiB9KTsKKyAgICBjaGVja0xvYWRJbmZvKGxvYWRJbmZvc1s2XSwgeyAzIH0pOwor
ICAgIGNoZWNrTG9hZEluZm8obG9hZEluZm9zWzddLCB7IDMgfSk7CisgICAgY2hlY2tMb2FkSW5m
byhsb2FkSW5mb3NbOF0sIHsgMyB9KTsKKworICAgIEVYUEVDVF9FUShvdGhlclBhcmFtZXRlcnMu
c2l6ZSgpLCA5dWxsKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290
aGVyUGFyYW1ldGVyc1swXSBjbGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIEVY
UEVDVF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzBdIFVSTF0ucGF0aCwgIi8iKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1sxXSBjbGFz
c10pLCAiTlNIVFRQVVJMUmVzcG9uc2UiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW290aGVyUGFy
YW1ldGVyc1sxXSBVUkxdLnBhdGgsICIvIik7CisgICAgRVhQRUNUX0VRKG90aGVyUGFyYW1ldGVy
c1syXSwgbmlsKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVy
UGFyYW1ldGVyc1szXSBjbGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIEVYUEVD
VF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzNdIFVSTF0ucGF0aCwgIi9pZnJhbWVTcmMiKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1s0
XSBjbGFzc10pLCAiTlNIVFRQVVJMUmVzcG9uc2UiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW290
aGVyUGFyYW1ldGVyc1s0XSBVUkxdLnBhdGgsICIvaWZyYW1lU3JjIik7CisgICAgRVhQRUNUX0VR
KG90aGVyUGFyYW1ldGVyc1s1XSwgbmlsKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdG
cm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1s2XSBjbGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVz
dCIpOworICAgIEVYUEVDVF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzZdIFVSTF0ucGF0aCwg
Ii9mZXRjaFRhcmdldCIpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhb
b3RoZXJQYXJhbWV0ZXJzWzddIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOworICAgIEVY
UEVDVF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzddIFVSTF0ucGF0aCwgIi9mZXRjaFRhcmdl
dCIpOworICAgIEVYUEVDVF9FUShvdGhlclBhcmFtZXRlcnNbOF0sIG5pbCk7Cit9CisKKyNlbmRp
ZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRl
LCBDaGFsbGVuZ2UpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAg
VENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10gKFNTTCogc3Ns
KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKCEhc3NsKTsgLy8gQ29ubmVjdGlvbiBzaG91bGQgc3Vj
Y2VlZCBhZnRlciBhIHNlcnZlciB0cnVzdCBjaGFsbGVuZ2UuCisgICAgICAgIC8vIFNlbmQgbm90
aGluZyB0byBtYWtlIHRoZSByZXNvdXJjZSBsb2FkIGZhaWwuCisgICAgfSk7CisKKyAgICBhdXRv
IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3
XSk7CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hh
bGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VS
TEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOworICAgIH1dOworCisgICAgX19ibG9jayBib29sIHJlY2VpdmVkRXJyb3JOb3RpZmlj
YXRpb24gPSBmYWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2VOb3RpZmlj
aWF0aW9uID0gZmFsc2U7CisgICAgYXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBbcmVzb3VyY2VMb2FkRGVsZWdh
dGUgc2V0RGlkUmVjZWl2ZUNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJ
bmZvICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAg
cmVjZWl2ZWRDaGFsbGVuZ2VOb3RpZmljaWF0aW9uID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBbcmVz
b3VyY2VMb2FkRGVsZWdhdGUgc2V0RGlkQ29tcGxldGVXaXRoRXJyb3I6XihXS1dlYlZpZXcgKiwg
X1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwga0NGVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAg
IHJlY2VpdmVkRXJyb3JOb3RpZmljYXRpb24gPSB0cnVlOworICAgIH1dOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IF9z
ZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAu
MC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRFcnJvck5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRD
aGFsbGVuZ2VOb3RpZmljaWF0aW9uKTsKK30KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCShy
ZXZpc2lvbiAyNTQxODMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcwNSw3ICsxNzA1LDcg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgVGhyb3R0bGVDcmFzaCkKIAogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKICAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyBzY3JpcHRCeXRlcywge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsge3sg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwgc2NyaXB0Qnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzgsNyArNTc4LDcgQEAgVEVTVChXZWJLaXQsIEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcmllcwogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKICAgICAgICAgeyAiL2luZGV4Lmh0bWwiLCB7ICI8aHRtbCBtYW5pZmVzdD0ndGVzdC5h
cHBjYWNoZSc+IiB9IH0sCiAgICAgICAgIHsgIi90ZXN0LmFwcGNhY2hlIiwgeyAiQ0FDSEUgTUFO
SUZFU1RcbmluZGV4Lmh0bWxcbnRlc3QubXA0XG4iIH0gfSwKLSAgICAgICAgeyAiL3Rlc3QubXA0
IiwgeyAidGVzdCEiLCB7eyAiQ29udGVudC1UeXBlIiwgInZpZGVvL3Rlc3QiIH19fX0sCisgICAg
ICAgIHsgIi90ZXN0Lm1wNCIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJ2aWRlby90ZXN0IiB9fSwg
InRlc3QhIiB9fSwKICAgICB9KTsKICAgICAKICAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiQ3VzdG9tUGF0aHNUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNTQxODMpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTIsOSArNTIsMTMgQEAgcHJpdmF0ZToKIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9u
c2UgewogICAgIEhUVFBSZXNwb25zZShTdHJpbmcmJiBib2R5KQogICAgICAgICA6IGJvZHkoV1RG
TW92ZShib2R5KSkgeyB9Ci0gICAgSFRUUFJlc3BvbnNlKFN0cmluZyYmIGJvZHksIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiYgaGVhZGVyRmllbGRzKQotICAgICAgICA6IGJvZHkoV1RGTW92ZShi
b2R5KSkKLSAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJGaWVsZHMpKSB7IH0K
KyAgICBIVFRQUmVzcG9uc2UoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMs
IFN0cmluZyYmIGJvZHkpCisgICAgICAgIDogaGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVyRmll
bGRzKSkKKyAgICAgICAgLCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQorICAgIEhUVFBSZXNwb25z
ZSh1bnNpZ25lZCBzdGF0dXNDb2RlLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGhlYWRlckZp
ZWxkcywgU3RyaW5nJiYgYm9keSA9IHsgfSkKKyAgICAgICAgOiBzdGF0dXNDb2RlKHN0YXR1c0Nv
ZGUpCisgICAgICAgICwgaGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVyRmllbGRzKSkKKyAgICAg
ICAgLCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQogCiAgICAgSFRUUFJlc3BvbnNlKGNvbnN0IEhU
VFBSZXNwb25zZSYpID0gZGVmYXVsdDsKICAgICBIVFRQUmVzcG9uc2UoSFRUUFJlc3BvbnNlJiYp
ID0gZGVmYXVsdDsKQEAgLTYyLDggKzY2LDkgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNw
b25zZSB7CiAgICAgSFRUUFJlc3BvbnNlJiBvcGVyYXRvcj0oY29uc3QgSFRUUFJlc3BvbnNlJikg
PSBkZWZhdWx0OwogICAgIEhUVFBSZXNwb25zZSYgb3BlcmF0b3I9KEhUVFBSZXNwb25zZSYmKSA9
IGRlZmF1bHQ7CiAgICAgCi0gICAgU3RyaW5nIGJvZHk7CisgICAgdW5zaWduZWQgc3RhdHVzQ29k
ZSB7IDIwMCB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGhlYWRlckZpZWxkczsKKyAg
ICBTdHJpbmcgYm9keTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NDE4MykK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsMTggQEAgSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxp
emVyXwogICAgIG53X2xpc3RlbmVyX3N0YXJ0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCitzdGF0
aWMgU3RyaW5nIHN0YXR1c1RleHQodW5zaWduZWQgc3RhdHVzQ29kZSkKK3sKKyAgICBzd2l0Y2gg
KHN0YXR1c0NvZGUpIHsKKyAgICBjYXNlIDIwMDoKKyAgICAgICAgcmV0dXJuICJPSyJfczsKKyAg
ICBjYXNlIDMwMToKKyAgICAgICAgcmV0dXJuICJNb3ZlZCBQZXJtYW5lbnRseSJfczsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogdm9pZCBI
VFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
IHsKICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBeKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19j
b250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sIGNvbXBsZXRlLCBud19lcnJvcl90IGVycm9y
KSB7CkBAIC03Niw3ICs4OCwxMSBAQCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3Rz
KG53X2NvCiAgICAgICAgIAogICAgICAgICBhdXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9u
c2VNYXAuZ2V0KHBhdGgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsK
LSAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRl
bnQtTGVuZ3RoOiAiKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEg
Iik7CisgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2Uuc3RhdHVz
Q29kZSk7CisgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZChzdGF0dXNUZXh0KHJlc3BvbnNlLnN0YXR1c0NvZGUpKTsKKyAg
ICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtTGVuZ3RoOiAiKTsKICAg
ICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5ib2R5Lmxlbmd0aCgp
KTsKICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwogICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiByZXNwb25zZS5oZWFkZXJGaWVsZHMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387280</attachid>
            <date>2020-01-09 15:08:10 -0800</date>
            <delta_ts>2020-01-09 15:53:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206037-20200109150809.patch</filename>
            <type>text/plain</type>
            <size>74384</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDIwLTAxLTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwYW5kIF9XS1Jl
c291cmNlTG9hZERlbGVnYXRlIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzEz
MjI5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgNSBpbmZvcm1hdGl2ZSBkZWxlZ2F0ZSBjYWxsYmFja3MgYXQgdGhlc2UgdGltZXMgZHVyaW5n
IHRoZSBsb2FkaW5nIHByb2Nlc3M6CisgICAgICAgIDEuIFdoZW4gYSByZXF1ZXN0IGlzIHNlbnQu
CisgICAgICAgIDIuIFdoZW4gYSByZWRpcmVjdCBoYXBwZW5zLgorICAgICAgICAzLiBXaGVuIGEg
Y2hhbGxlbmdlIGhhcHBlbnMuCisgICAgICAgIDQuIFdoZW4gYSByZXNwb25zZSBpcyByZWNlaXZl
ZC4KKyAgICAgICAgNS4gV2hlbiBsb2FkaW5nIGNvbXBsZXRlcyBvciBmYWlscy4KKworICAgICAg
ICBBcyBtZW50aW9uZWQgaW4gcjI1NDE4MyB0aGVzZSBjYWxsYmFja3MgYXJlIG9ubHkgY2FsbGVk
IHdoZW4gYSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZSBpcyBnaXZlbiB0byBhIFdLV2ViVmlldy4K
KyAgICAgICAgV2UgYWRkIGEgbmV3IHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHdoaWNoIHdpbGwg
bmVlZCB0byBiZSBleHBhbmRlZCBjb250YWluaW5nIGN1cnJlbnRseSBvbmx5IHRoZSBsb2FkIGlk
ZW50aWZpZXIuCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cyB3aGljaCB2ZXJpZnkg
dGhlIHZhbGlkaXR5IG9mIHRoZSBzZW50IGluZm9ybWF0aW9uLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVzb3VyY2VMb2FkSUQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlTG9hZEluZm8p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICBBZGQgYSB3YXkgdG8gc2VuZCBhIG1lc3NhZ2UgaW5m
b3JtaW5nIHRoYXQgYSBjaGFsbGVuZ2UgaGFwcGVuZWQgd2l0aCBpbmZvcm1hdGlvbiBnYXRoZXJl
ZCBmcm9tIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIsCisgICAgICAgIHdoaWNoIHByZXZpb3Vz
bHkgd2FzIG5vdCBpbmZvcm1lZCBvZiBjaGFsbGVuZ2VzIGJlY2F1c2UgdGhlIGNoYWxsZW5nZXMg
d2VudCBkaXJlY3RseSBmcm9tIHRoZSBOZXR3b3JrTG9hZCB0byB0aGUgQXV0aGVudGljYXRpb25N
YW5hZ2VyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9BUEkv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAg
ICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9SZXNvdXJjZUxv
YWRJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvOjpkZWNvZGUpOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElS
ZXNvdXJjZUxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNl
TG9hZEluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVz
b3VyY2VMb2FkSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Jlc291cmNlTG9hZEluZm8ubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJ
bmZvIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJRF0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJbmZvIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICBBbiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5IHdhcyBvbmx5IHVzZWQgZm9yIGNoYWxsZW5nZXMg
dGhhdCBuZWVkZWQgY3JlZGVudGlhbHMsIHNvIHRoZXkgd3JhcHBlZCBhIENvbXBsZXRpb25IYW5k
bGVyLgorICAgICAgICBUaGlzIG5ldyB0eXBlIG9mIGluZm9ybWF0aXZlLW9ubHkgY2hhbGxlbmdl
IHdpbGwgYmUgZ2l2ZW4gYSBudWxsIENvbXBsZXRpb25IYW5kbGVyLCB3aGljaCBtZWFucyBubyBh
Y3Rpb24gY2FuIGJlIHRha2VuLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OnNldERlbGVn
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9h
ZENsaWVudDo6ZGlkU2VuZFJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291
cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ6OmRpZENvbXBsZXRlV2l0aEVycm9yIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
c291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGFnZVdpbGxTZW5kUmVxdWVzdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0
UGluZ0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QpOgorCiAyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0ludGVybmFsRGVidWdGZWF0CiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tTZXNzaW9uU3RhdGUubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5tbQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNiArMTg5LDggQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlYwogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY2hhbGxlbmdlKTsKKwogICAgIGF1dG8gc2NoZW1lID0gY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7CiAgICAgYm9vbCBpc1RMU0hhbmRzaGFr
ZSA9IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRy
dXN0RXZhbHVhdGlvblJlcXVlc3RlZAogICAgICAgICB8fCBzY2hlbWUgPT0gUHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJ
KHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdDsKQEAg
LTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZvLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTk3LDYgKzk4
LDEyIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBkYXRh
LmRlbGF5ZWRSZXBseSA9IG51bGxwdHI7CiB9CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJl
c291cmNlTG9hZElEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgeyAx
IH07CisgICAgcmV0dXJuIG5leHRJZGVudGlmaWVyKys7Cit9CisKIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1l
dGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVj
dGlvbiB9CkBAIC0xMDQsNiArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3Jr
UmVzb3VyY2VMbwogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1f
cGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIg
eyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CiAg
ICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24t
PmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKKyAgICAsIG1fcmVzb3Vy
Y2VMb2FkSUQgeyBnZW5lcmF0ZVJlc291cmNlTG9hZElEKCkgfQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTMyMyw3ICszMzEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVu
Y2VzID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFs
UmVxdWVzdCgpLnVybCgpKTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNl
TG9hZENsaWVudCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlBhZ2VXaWxsU2VuZFJlcXVlc3QobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXF1ZXN0
KSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNv
dXJjZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291
cmNlTG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFy
YW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CkBAIC0zMzEsNiArMzM5LDEzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249
JXtwdWJsaWN9cykiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCitSZXNvdXJjZUxvYWRJbmZvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VM
b2FkSW5mbygpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRJRAorICAg
IH07Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQg
cmVzdWx0KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NDcsNiArNTYy
LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7
CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJ
bmZvKCksIHJlc3BvbnNlKSwgMCk7CisKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSkgewogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDYgKzY0
MSw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKIAogICAgIHRy
eVN0b3JlQXNDYWNoZUVudHJ5KCk7CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNv
dXJjZUxvYWRDbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpSZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIHJlc291cmNlTG9hZEluZm8oKSwgeyB9KSwgMCk7CisKICAgICBjbGVhbnVwKExv
YWRSZXN1bHQ6OlN1Y2Nlc3MpOwogfQogCkBAIC02NTUsNiArNjc2LDkgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaQogI2VuZGlmCiAgICAgfQogCisgICAgaWYgKG1f
cGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJy
b3IobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvKCksIGVycm9y
KSwgMCk7CisKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQogCkBAIC02NjQs
NiArNjg4LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGgKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkQmxvY2tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sK
KyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAg
IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNl
aXZlQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5m
bygpLCBjaGFsbGVuZ2UpLCAwKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTY5MCw2ICs3MjAsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDoiKTsKICAgICArK21fcmVk
aXJlY3RDb3VudDsKKyAgICBtX3JlZGlyZWN0UmVzcG9uc2UgPSByZWRpcmVjdFJlc3BvbnNlOwog
CiAgICAgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiBhZENsaWNrQ29u
dmVyc2lvbjsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC04NjUsNiAr
ODk2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKIAogICAg
IGlmIChtX25ldHdvcmtMb2FkKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBUZWxsaW5nIE5ldHdvcmtMb2FkIHRvIHByb2NlZWQgd2l0
aCB0aGUgcmVkaXJlY3QiKTsKKworICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNv
dXJjZUxvYWRDbGllbnQgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNlTG9hZElu
Zm8oKSwgbV9yZWRpcmVjdFJlc3BvbnNlLCBuZXdSZXF1ZXN0KSwgMCk7CisKICAgICAgICAgbV9u
ZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw2ICs1NCw4IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK3N0cnVj
dCBSZXNvdXJjZUxvYWRJbmZvOworCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVu
dHJ5OwogfQpAQCAtMTA2LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udmVydFRvRG93
bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMTk1LDYgKzE5OCw4IEBAIHByaXZhdGU6
CiAKICAgICBPcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKKyAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsK
KwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpA
QCAtMjM0LDYgKzIzOSw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiAjZW5kaWYKKyAgICB1aW50NjRfdCBtX3Jlc291cmNlTG9hZElEIHsgMCB9
OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkSW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IFJlc291cmNlTG9hZEluZm8geworCisgICAgdWludDY0X3Qg
cmVzb3VyY2VMb2FkSUQgeyAwIH07CisgICAgCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRJ
RDsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VMb2FkSW5mbz4gZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiByZXNvdXJjZUxvYWRJRDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNvdXJjZUxvYWRJRDsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZUxvYWRJRCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpyZXNvdXJjZUxv
YWRJRCksCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMjU0MTgzKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJvdGVjdGlvblNwYWNlLAogICAgICAg
ICBSZW5kZXJMYXllciwKICAgICAgICAgUmVuZGVyT2JqZWN0LAorICAgICAgICBSZXNvdXJjZUxv
YWRJbmZvLAogICAgICAgICBTZWN1cml0eU9yaWdpbiwKICAgICAgICAgU2Vzc2lvblN0YXRlLAog
ICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAK
ICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnRlcm5hbERl
YnVnRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKQEAgLTMzMiw2ICszMzMsMTAg
QEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgICAgICB3cmFw
cGVyID0gW19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBUeXBlOjpSZXNvdXJjZUxvYWRJbmZvOgorICAgICAgICB3cmFwcGVyID0gW19XS1Jl
c291cmNlTG9hZEluZm8gYWxsb2NdOworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAg
IGNhc2UgVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk6CiAgICAgICAgIHdy
YXBwZXIgPSBbX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgYWxsb2NdOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkxNiwxMCArNTkxNiwzNCBAQCBXZWJJbnNwZWN0
b3JQcm94eSogV2ViUGFnZVByb3h5OjppbnNwZWN0CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdl
dCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xp
ZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVl
c3QpOworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+ZGlkU2VuZFJlcXVlc3QoV1RGTW92
ZShsb2FkSW5mbyksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYg
bG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRDbGll
bnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxl
bmdlKFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpCit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xpZW50
KQorICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGxvYWRJbmZvKSwgY2hhbGxlbmdlKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc291
cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBpZiAobV9yZXNvdXJj
ZUxvYWRDbGllbnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlTG9h
ZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKQoreworICAg
IGlmIChtX3Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQt
PmRpZENvbXBsZXRlV2l0aEVycm9yKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKGVycm9yKSk7
CiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsNyBA
QCBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBQREZDb250ZXh0TWVudTsKK3N0cnVjdCBS
ZXNvdXJjZUxvYWRJbmZvOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTsKIHN0cnVjdCBX
ZWJIaXRUZXN0UmVzdWx0RGF0YTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwpAQCAt
NDY3LDcgKzQ2OCwxMSBAQCBwdWJsaWM6CiAKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVj
dG9yKCkgY29uc3Q7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFJl
c291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OworICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShSZXNvdXJjZUxvYWRJ
bmZvJiYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
IAogICAgIHZvaWQgZGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1bnNpZ25lZCBjb3Vu
dCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ291bnQgPSBjb3VudDsgfQogICAgIHVuc2lnbmVkIGlu
c3BlY3RvckZyb250ZW5kQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
Q291bnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxv
YWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UmVzb3VyY2VMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsMTMgKzI1LDIyIEBACiAKICNwcmFnbWEgb25jZQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5m
bzsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFJlc291cmNlTG9hZENsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRSZXF1ZXN0KFdlYktp
dDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
JikgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZv
LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBSZXNvdXJjZUxvYWRJbmZvIGZpbmFsIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpSZXNvdXJjZUxvYWRJbmZvPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRJbmZvPiBjcmVhdGUoV2ViS2l0OjpSZXNv
dXJjZUxvYWRJbmZvJiYgaW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlc291cmNlTG9hZEluZm8oV1RGTW92ZShpbmZvKSkpOworICAgIH0KKworICAgIFJlc291cmNl
TG9hZEluZm8oV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYgaW5mbykKKyAgICAgICAgOiBtX2lu
Zm8oV1RGTW92ZShpbmZvKSkKKyAgICB7CisgICAgfQorCisgICAgdWludDY0X3QgcmVzb3VyY2VM
b2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2luZm8ucmVzb3VyY2VMb2FkSUQ7IH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gbV9pbmZvOworCit9OworCit9
IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAy
NTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDE5IEBACiAKICNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIF9XS1Jlc291cmNlTG9hZEluZm87
CisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0OworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVzb3Vy
Y2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdDsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJjZUxv
YWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3Q7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3Vy
Y2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVDaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2U7CistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3VyY2VMb2FkOihfV0tSZXNvdXJjZUxv
YWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNl
TG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcjooTlNFcnJvciAqIF9fbnVsbGFibGUpZXJyb3I7CiAKIEBlbmQKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2Fk
SW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tSZXNv
dXJjZUxvYWRJbmZvIDogTlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlM
QUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2NF90IHJlc291cmNlTG9hZElEOworCitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0JKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZElu
Zm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCisjaW1wb3J0
ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRJbmZvSW50
ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1Jlc291cmNlTG9hZEluZm8KKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgX2luZm8tPkFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6flJlc291cmNl
TG9hZEluZm8oKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHVpbnQ2NF90KXJlc291
cmNlTG9hZElECit7CisgICAgcmV0dXJuIF9pbmZvLT5yZXNvdXJjZUxvYWRJRCgpOworfQorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2luZm87Cit9CisKK0Bl
bmQKKwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNl
TG9hZEluZm9JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkSW5mb0lu
dGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJX
S09iamVjdC5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlJlc291cmNl
TG9hZEluZm8+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tSZXNvdXJjZUxvYWRJbmZv
OworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1Jlc291cmNlTG9hZEluZm8gKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlJlc291cmNlTG9hZElu
Zm8+IF9pbmZvOworfQorQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdl
YWtQdHI8U2VjS2V5UHJveHlTdG9yZT4mJiBzZWNLZXlQcm94eVN0b3JlKQogICAgIDogbV9jb3Jl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
Ci0gICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6Y3JlYXRl
KFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbiksIHNlY0tleVBy
b3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKSB7CisgICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcjo6Y3JlYXRlKGNoYWxsZW5nZUlEID8gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+
KFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbiksIHNlY0tleVBy
b3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKSB7CiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQogICAgICAgICBpZiAoc2VjS2V5
UHJveHlTdG9yZSAmJiBzZWNLZXlQcm94eVN0b3JlLT5pbml0aWFsaXplKGNyZWRlbnRpYWwpKSB7
CiAgICAgICAgICAgICBzZW5kQ2xpZW50Q2VydGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25u
ZWN0aW9uLCAqc2VjS2V5UHJveHlTdG9yZSwgY2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwpOwpAQCAt
NTMsNyArNTMsNyBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhCiAg
ICAgICAgIH0KICNlbmRpZgogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OkNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxl
bmdlSUQsIGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFsKSwgMCk7Ci0gICAgfSkpCisgICAgfSkgOiBu
dWxscHRyKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1NywxMSBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgLy8gQVBJOjpSZXNvdXJjZUxvYWRDbGllbnQKLSAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgICAg
IHZvaWQgZGlkU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJikgY29uc3QgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpIGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
IGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNl
TG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKSBjb25zdCBmaW5hbDsKIAogICAg
ICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSYgbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZTsKICAgICB9
OwpAQCAtNjYsNyArNzAsMTEgQEAgcHJpdmF0ZToKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLUmVz
b3VyY2VMb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKIAogICAgIHN0cnVjdCB7Ci0gICAgICAg
IGJvb2wgd2lsbFNlbmRSZXF1ZXN0IDogMTsKKyAgICAgICAgYm9vbCBkaWRTZW5kUmVxdWVzdCA6
IDE7CisgICAgICAgIGJvb2wgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA6IDE7CisgICAgICAg
IGJvb2wgZGlkUmVjZWl2ZUNoYWxsZW5nZSA6IDE7CisgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJl
c3BvbnNlIDogMTsKKyAgICAgICAgYm9vbCBkaWRDb21wbGV0ZVdpdGhFcnJvciA6IDE7CiAgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCIKIAogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIl9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNTEsNyArNTIsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6c2V0RGVs
ZWdhdGUoaQogewogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAotICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndpbGxTZW5kUmVxdWVzdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6d2lsbFNlbmRSZXF1ZXN0OildOworICAgIC8vIHJlc291cmNlV2l0aElE
OgorICAgIC8vIHR5cGU6CisgICAgLy8gX1dLRnJhbWVIYW5kbGUgZnJhbWU6CisgICAgLy8gX1dL
RnJhbWVIYW5kbGUgcGFyZW50RnJhbWU6CisgICAgCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZGlk
U2VuZFJlcXVlc3QgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJW
aWV3OnJlc291cmNlTG9hZDpkaWRTZW5kUmVxdWVzdDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZUxvYWQ6ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjpuZXdSZXF1ZXN0OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRpZFJlY2VpdmVDaGFsbGVu
Z2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJlc291
cmNlTG9hZDpkaWRSZWNlaXZlQ2hhbGxlbmdlOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRp
ZFJlY2VpdmVSZXNwb25zZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFJlY2VpdmVSZXNwb25zZTopXTsKKyAgICBtX2RlbGVn
YXRlTWV0aG9kcy5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZENvbXBsZXRlV2l0aEVycm9y
OildOwogfQogCiBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpSZXNv
dXJjZUxvYWRDbGllbnQoUmVzb3VyY2VMb2FkRGVsZWdhdGUmIGRlbGVnYXRlKQpAQCAtNjEsMTYg
KzcxLDY0IEBAIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQKIAogUmVz
b3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6flJlc291cmNlTG9hZENsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2Fk
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xp
ZW50OjpkaWRTZW5kUmVxdWVzdChXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
cmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0KQor
ICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRTZW5k
UmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVn
YXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSB3aWxsU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKKyAgICBb
ZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5n
ZXQoKSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShX
VEZNb3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFNlbmRSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1
ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtkZWxl
Z2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgp
IHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1v
dmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVw
ZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworfQorCit2b2lkIFJlc291cmNlTG9h
ZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0
OjpSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRSZWNlaXZlQ2hhbGxlbmdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgp
LmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRl
KFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUmVjZWl2ZUNoYWxsZW5nZTp3cmFwcGVyKGNo
YWxsZW5nZSldOworfQorCit2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2Fk
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSBjb25zdAoreworICAg
IGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRSZWNlaXZl
UmVzcG9uc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Jlc291
cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNv
dXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRSZWNlaXZl
UmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKK30KKwordm9pZCBSZXNvdXJjZUxv
YWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJL
aXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
IGVycm9yKSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy5kaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsK
KyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgd2Vi
VmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJj
ZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJ
bmZvKSkuZ2V0KCkpIGRpZENvbXBsZXRlV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTMgKzQ1Miw1MCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmxvZ0dsb2JhbERpYWduCiAgICAgICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNhbnRG
aWd1cmVzLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBh
Z2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT53
aWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7CisgICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkU2VuZFJl
cXVlc3QoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQoreworICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IHBhZ2UtPnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92ZShsb2Fk
SW5mbyksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQoreworICAgIGF1dG8q
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2hhbGxlbmdlUHJveHkgPSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92ZShjaGFsbGVuZ2UpLCAwLCAqY29ubmVj
dGlvbigpLCBudWxscHRyKTsKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxl
bmdlKFdURk1vdmUobG9hZEluZm8pLCBjaGFsbGVuZ2VQcm94eS5nZXQoKSk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBhdXRvKiBwYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYgZXJyb3IpCit7CisgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV1RGTW92ZShsb2FkSW5m
byksIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDEyICs2NCwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERvd25sb2FkUHJv
eHk7CiBjbGFzcyBEb3dubG9hZFByb3h5TWFwOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKKwogZW51bSBjbGFzcyBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xh
c3MgV2Vic2l0ZURhdGFUeXBlOworCiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK3N0cnVjdCBSZXNv
dXJjZUxvYWRJbmZvOwogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vz
c1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9j
ZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQ
cm94eT4gewpAQCAtMjAxLDcgKzIwNCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICB2
b2lkIHBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRTZW5kUmVx
dWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
KyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTY4LDUgKzY4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZQogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQp
IC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCiAgICAgCi0gICAgUGFnZVdp
bGxTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNlTG9hZERp
ZFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmll
ciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBSZXNvdXJjZUxvYWREaWRQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
S2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkKKyAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgUmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5
LDYgKzU5LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCA8VUlLaXQv
VUlBcHBsaWNhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE3MCw2ICsxMTcwLDggQEAK
IAkJNUNCMjM3OEMxREYwREU2RTAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3ODkxREYwREQ0
MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQjIzNzhFMURGMEUwRDMwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQ
b2xpY2llc0ludGVybmFsLmggKi87IH07CiAJCTVDQjdBRkUwMjNDNTJDRTUwMEU0OUNGMyAvKiBf
V0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9h
ZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNUNCN0FGRTcyM0M2ODIwNzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkU2MjNDNjgx
QjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87IH07CisJCTVDQjdBRkU4MjNDNjlC
NjEwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyogX1dL
UmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM5Qjg5
MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsgfTsKIAkJNUNCRDU5NUMy
MjgwRURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzg4MjI3QTE4OTIwMDBCOUJE
QSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi87IH07CiAJCTVDRDI4NjUxMUU3MjM1OTkw
MDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RDFFNzIyRjQ0MDA5NEZEQzggLyogV0tD
b250ZW50UnVsZUxpc3RTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKQEAgLTM4OTYsNiArMzg5OCwxMSBAQAogCQk1Q0I3QUZERDIzQzUyNzNEMDBF
NDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNCN0FGREUyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjdBRkRGMjNDNTJDQkMw
MEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0I3QUZFMjIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2Fk
SW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Jlc291
cmNlTG9hZEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkUzMjND
NjdEMzcwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNCN0FGRTQyM0M2N0Q2NDAwRTQ5Q0YzIC8qIEFQSVJlc291cmNlTG9hZElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I3QUZFNTIzQzY3REY5MDBFNDlD
RjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2Fk
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya0RhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhC
MUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NjE1LDYgKzU2MjIsNyBAQAogCQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQ
cmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uLmggKi8sCiAJCQkJRjZBMEMxM0YxMzI4MUU2RTAwNzA0MzBGIC8qIFJl
c291cmNlQ2FjaGVzVG9DbGVhci5oICovLAorCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAv
KiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuY3BwICovLAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENO
ZXR3b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1BhY2tldE9w
dGlvbnMuY3BwICovLApAQCAtNjc3MSw2ICs2Nzc5LDkgQEAKIAkJCQlBNTVCQTgwRDFCQTEyQkUx
MDA3Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJOTkwRTFFMDgyMzg0QTg4QjAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyUHJpdmF0ZS5oICovLAogCQkJCTVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAvKiBf
V0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDQjdBRkUzMjNDNjdEMzcwMEU0OUNG
MyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi8sCisJCQkJNUNCN0FGRTIyM0M2N0QzNzAwRTQ5
Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8ubW0gKi8sCisJCQkJNUNCN0FGRTUyM0M2N0RGOTAw
RTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oICovLAogCQkJCTQ5RkJFRkZC
MjM5QURCMTgwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5o
ICovLAogCQkJCTQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eS5tbSAqLywKIAkJCQk0OUJDQTE5MDIzQTE3NTQ5MDAyOEE4MzYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oICovLApAQCAtODQ3
MCw2ICs4NDgxLDcgQEAKIAkJCQk3Q0U0RDIxRDFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk3Q0U0RDIxRTFBNDkxNENBMDBDN0YxNTIg
LyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJNUNCN0FGREEyM0M0M0U2
NDAwRTQ5Q0YzIC8qIEFQSVJlc291cmNlTG9hZENsaWVudC5oICovLAorCQkJCTVDQjdBRkU0MjND
NjdENjQwMEU0OUNGMyAvKiBBUElSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNDlCQ0ExOTEy
M0ExNzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lmgg
Ki8sCiAJCQkJNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5LmggKi8sCiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQ
SVNlc3Npb25TdGF0ZS5jcHAgKi8sCkBAIC05ODE3LDYgKzk4MjksNyBAQAogCQkJCTM3NzIxNkI4
MUE0RTZCRTAwMERDQTcxOCAvKiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1IC8qIF9XS1JlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjdBRkUwMjNDNTJDRTUw
MEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUNCN0FGRTgyM0M2OUI2MTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCQ0ExOTUyM0ExOENG
RDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3Nyw2
ICsxMDI5MCw3IEBACiAJCQkJQTU1QkE4MUYxQkEyNUIyNzAwN0NEMzNEIC8qIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVCQTgyNTFCQTI1Q0ZCMDA3Q0Qz
M0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU1QkE4MTcxQkEyM0UxMjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1Q0I3QUZFNzIzQzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2Fk
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QkU5
NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiw5ICs1
MjYsMTAgQEAgT3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNMb2FkUmVzdQogCiB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVy
JiBmcmFtZUxvYWRlciwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRU
UEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxv
YWRlckNsaWVudChmcmFtZUxvYWRlci5jbGllbnQoKSk7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1l
ID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUo
KSA6IG51bGxwdHI7Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUt
PnBhZ2UoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dl
YkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJG
cmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZy
YW1lKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1l
LT5wYWdlKCkgOiBudWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
Y29yZVBhZ2UoKSA6IG51bGxwdHI7CiAKICAgICBhdXRvIHdlYlBhZ2VQcm94eUlEID0gd2ViUGFn
ZSA/IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgeyB9OwogICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmlkZW50aWZp
ZXIoKSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKQEAgLTU3OSw2ICs1ODAsOCBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVy
cy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVh
ZGVycygpOwogICAgIH0KICAgICBsb2FkUGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJz
ID0gb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsKKyAgICBpZiAocGFnZSkKKyAgICAgICAgbG9hZFBh
cmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9h
ZENsaWVudCgpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CiAKQEAgLTU5MSw3ICs1OTQsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jCiAKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVy
cm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1dJ
VEhfRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgibG9hZFJlc291cmNl
U3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNz
IG1lc3NhZ2UiKTsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
Y29yZVBhZ2UoKSA6IG51bGxwdHIpCisgICAgICAgIGlmIChwYWdlKQogICAgICAgICAgICAgcGFn
ZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpzeW5jaHJvbm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25z
ZSgpOwogICAgICAgICBlcnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CkBAIC02
NDQsNiArNjQ3LDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcgog
ICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9u
c2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAg
ICB9CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICBsb2Fk
UGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gcGFnZS0+aGFzUmVzb3VyY2VM
b2FkQ2xpZW50KCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQ
YXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgp
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjU0MzAwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMjAtMDEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBFeHBhbmQgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUgY2Fs
bGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06
CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9h
ZDpkaWRTZW5kUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJlc291cmNlTG9hZERlbGVnYXRl
IHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVz
dDpdKToKKyAgICAgICAgKC1bVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3Vy
Y2VMb2FkOmRpZFJlY2VpdmVDaGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxv
YWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpk
aWRDb21wbGV0ZVdpdGhFcnJvcjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtUZXN0
UmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzp3aWxsU2VuZFJlcXVlc3Q6XSk6IERlbGV0ZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIGhhdmUgbm9uLTIwMCBzdGF0dXMgY29kZXMgaW4gcmVzcG9uc2VzLgorICAg
ICAgICBBbHNvIHN3aXRjaCB0aGUgb3JkZXIgb2YgcGFyYW1ldGVycyB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgaGVhZGVyIGZpZWxkcyBhcmUgc2VudCBiZWZvcmUgdGhlIGJvZHkuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c3RhdHVzVGV4dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpy
ZXNwb25kVG9SZXF1ZXN0cyk6CisKIDIwMjAtMDEtMDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBZGQgdGlt
aW5nIGluZm9ybWF0aW9uIHRvIFdlYlBhZ2VQcm94eTo6bG9nRnJhbWVOYXZpZ2F0aW9uKCkgdG8g
ZGV0ZWN0IGRlbGF5ZWQgY2xpZW50LXNpZGUgcmVkaXJlY3RzCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDI1ICsyNSw1NyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCAiSFRUUFNl
cnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRDUFNlcnZl
ci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291cmNlTG9hZEluZm8uaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgOiBO
U09iamVjdCA8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkIChed2lsbFNlbmRSZXF1ZXN0KShXS1dlYlZpZXcgKiwgTlNVUkxSZXF1ZXN0
ICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRTZW5kUmVxdWVzdCko
V0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXF1ZXN0ICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KShXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU1VSTFJlc3BvbnNlICosIE5T
VVJMUmVxdWVzdCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVj
ZWl2ZUNoYWxsZW5nZSkoV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5m
byAqLCBOU1VSTFJlc3BvbnNlICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRDb21wbGV0ZVdpdGhFcnJvcikoV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8g
KiwgTlNFcnJvciAqKTsKIAogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdFJlc291cmNlTG9h
ZERlbGVnYXRlCiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU2Vu
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJj
ZUxvYWQgZGlkU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICBpZiAo
X3dpbGxTZW5kUmVxdWVzdCkKLSAgICAgICAgX3dpbGxTZW5kUmVxdWVzdCh3ZWJWaWV3LCByZXF1
ZXN0KTsKKyAgICBpZiAoX2RpZFNlbmRSZXF1ZXN0KQorICAgICAgICBfZGlkU2VuZFJlcXVlc3Qo
d2ViVmlldywgcmVzb3VyY2VMb2FkLCByZXF1ZXN0KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJl
c291cmNlTG9hZCBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVz
cG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAoreworICAgIGlmIChfZGlk
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgX2RpZFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24od2ViVmlldywgcmVzb3VyY2VMb2FkLCByZXNwb25zZSwgcmVxdWVzdCk7Cit9CisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNl
TG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChfZGlkUmVjZWl2ZUNoYWxs
ZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVDaGFsbGVuZ2Uod2ViVmlldywgcmVzb3VyY2VMb2Fk
LCBjaGFsbGVuZ2UpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVzb3VyY2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2Vp
dmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgaWYgKF9kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2Uod2ViVmlldywgcmVzb3Vy
Y2VMb2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlk
Q29tcGxldGVXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIGlmIChfZGlkQ29tcGxl
dGVXaXRoRXJyb3IpCisgICAgICAgIF9kaWRDb21wbGV0ZVdpdGhFcnJvcih3ZWJWaWV3LCByZXNv
dXJjZUxvYWQsIGVycm9yKTsKIH0KIAogQGVuZApAQCAtNjIsNyArOTQsNyBAQCBURVNUKFJlc291
cmNlTG9hZERlbGVnYXRlLCBCYXNpYykKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1VSTFJlcXVl
c3Q+IHJlcXVlc3RGcm9tRGVsZWdhdGU7CiAgICAgYXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBbd2ViVmlldyBf
c2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCldOwotICAg
IFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXRXaWxsU2VuZFJlcXVlc3Q6XihXS1dlYlZpZXcgKiwg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAgW3Jlc291cmNlTG9hZERlbGVnYXRlIHNldERp
ZFNlbmRSZXF1ZXN0Ol4oV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0KSB7CiAgICAgICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUgPSByZXF1ZXN0
OwogICAgIH1dOwogCkBAIC03MiwzICsxMDQsMTk2IEBAIFRFU1QoUmVzb3VyY2VMb2FkRGVsZWdh
dGUsIEJhc2ljKQogICAgIAogICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0TG9hZGVkLmdldCgp
LlVSTC5hYnNvbHV0ZVN0cmluZywgcmVxdWVzdEZyb21EZWxlZ2F0ZS5nZXQoKS5VUkwuYWJzb2x1
dGVTdHJpbmcpOwogfQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworVEVTVChSZXNv
dXJjZUxvYWREZWxlZ2F0ZSwgQmVhY29uQW5kU3luY1hIUikKK3sKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9LAorICAg
ICAgICB7ICIveGhyVGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICAgICAgeyAiL2JlYWNvblRhcmdl
dCIsIHsgImhpIiB9IH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtU
ZXN0V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TVVJMUmVxdWVz
dD4gcmVxdWVzdEZyb21EZWxlZ2F0ZTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDYWxsYmFj
ayA9IGZhbHNlOworICAgIGF1dG8gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
UmVzb3VyY2VMb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgX3NldFJlc291cmNlTG9h
ZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBbcmVzb3VyY2VMb2Fk
RGVsZWdhdGUgc2V0RGlkU2VuZFJlcXVlc3Q6XihXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2Fk
SW5mbyAqLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpIHsKKyAgICAgICAgcmVxdWVzdEZyb21EZWxl
Z2F0ZSA9IHJlcXVlc3Q7CisgICAgICAgIHJlY2VpdmVkQ2FsbGJhY2sgPSB0cnVlOworICAgIH1d
OworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibmF2aWdhdG9yLnNlbmRCZWFj
b24oJy9iZWFjb25UYXJnZXQnKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQ2FsbGJhY2spOworICAgIEVYUEVDVF9XS19TVFJF
USgiL2JlYWNvblRhcmdldCIsIHJlcXVlc3RGcm9tRGVsZWdhdGUuZ2V0KCkuVVJMLnBhdGgpOwor
CisgICAgcmVjZWl2ZWRDYWxsYmFjayA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDoKKyAgICAgICAgQCJ2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOyIK
KyAgICAgICAgInZhciBhc3luY2hyb25vdXMgPSBmYWxzZTsiCisgICAgICAgICJyZXF1ZXN0Lm9w
ZW4oJ0dFVCcsICd4aHJUYXJnZXQnLCBhc3luY2hyb25vdXMpOyIKKyAgICAgICAgInJlcXVlc3Qu
c2VuZCgpOyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkQ2FsbGJhY2spOworICAgIEVYUEVDVF9XS19TVFJFUSgiL3hoclRhcmdl
dCIsIHJlcXVlc3RGcm9tRGVsZWdhdGUuZ2V0KCkuVVJMLnBhdGgpOworfQorCitURVNUKFJlc291
cmNlTG9hZERlbGVnYXRlLCBSZWRpcmVjdCkKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9yZWRp
cmVjdFRhcmdldCIgfX0gfSB9LAorICAgICAgICB7ICIvcmVkaXJlY3RUYXJnZXQiLCB7ICJoaSIg
fSB9LAorICAgIH0pOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRv
IHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVnYXRl
IG5ld10pOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOl4oV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkgeworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEocmVzcG9uc2UuVVJMLnBhdGgsICIvIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZXF1ZXN0LlVSTC5wYXRoLCAiL3JlZGlyZWN0VGFyZ2V0Iik7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OworICAgIFt3ZWJWaWV3IF9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNvdXJjZUxvYWREZWxl
Z2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSwgTG9hZEluZm8pCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiPGlmcmFtZSBzcmM9J2lmcmFtZVNyYyc+PC9p
ZnJhbWU+IiB9IH0sCisgICAgICAgIHsgIi9pZnJhbWVTcmMiLCB7ICI8c2NyaXB0PmZldGNoKCdm
ZXRjaFRhcmdldCcpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi9mZXRjaFRhcmdldCIsIHsg
ImhpIiB9IH0sCisgICAgfSk7CisKKyAgICBlbnVtIGNsYXNzIENhbGxiYWNrIHsKKyAgICAgICAg
RGlkU2VuZFJlcXVlc3QsCisgICAgICAgIERpZFJlY2VpdmVSZXNwb25zZSwKKyAgICAgICAgRGlk
Q29tcGxldGVXaXRoRXJyb3IsCisgICAgfTsKKworICAgIF9fYmxvY2sgVmVjdG9yPENhbGxiYWNr
PiBjYWxsYmFja3M7CisgICAgX19ibG9jayBWZWN0b3I8UmV0YWluUHRyPFdLV2ViVmlldz4+IHdl
YlZpZXdzOworICAgIF9fYmxvY2sgVmVjdG9yPFJldGFpblB0cjxfV0tSZXNvdXJjZUxvYWRJbmZv
Pj4gbG9hZEluZm9zOworICAgIF9fYmxvY2sgVmVjdG9yPFJldGFpblB0cjxpZD4+IG90aGVyUGFy
YW1ldGVyczsKKworICAgIF9fYmxvY2sgc2l6ZV90IHJlc291cmNlQ29tcGxldGlvbkNvdW50ID0g
MDsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVnYXRl
IG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRTZW5kUmVxdWVzdDpeKFdLV2ViVmlldyAqd2Vi
VmlldywgX1dLUmVzb3VyY2VMb2FkSW5mbyAqbG9hZEluZm8sIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCkgeworICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEaWRTZW5kUmVxdWVzdCk7
CisgICAgICAgIHdlYlZpZXdzLmFwcGVuZCh3ZWJWaWV3KTsKKyAgICAgICAgbG9hZEluZm9zLmFw
cGVuZChsb2FkSW5mbyk7CisgICAgICAgIG90aGVyUGFyYW1ldGVycy5hcHBlbmQocmVxdWVzdCk7
CisgICAgfV07CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVSZXNwb25zZTpeKFdLV2ViVmll
dyAqd2ViVmlldywgX1dLUmVzb3VyY2VMb2FkSW5mbyAqbG9hZEluZm8sIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlKSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRpZFJlY2Vp
dmVSZXNwb25zZSk7CisgICAgICAgIHdlYlZpZXdzLmFwcGVuZCh3ZWJWaWV3KTsKKyAgICAgICAg
bG9hZEluZm9zLmFwcGVuZChsb2FkSW5mbyk7CisgICAgICAgIG90aGVyUGFyYW1ldGVycy5hcHBl
bmQocmVzcG9uc2UpOworICAgIH1dOworICAgIFtkZWxlZ2F0ZSBzZXREaWRDb21wbGV0ZVdpdGhF
cnJvcjpeKFdLV2ViVmlldyAqd2ViVmlldywgX1dLUmVzb3VyY2VMb2FkSW5mbyAqbG9hZEluZm8s
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRp
ZENvbXBsZXRlV2l0aEVycm9yKTsKKyAgICAgICAgd2ViVmlld3MuYXBwZW5kKHdlYlZpZXcpOwor
ICAgICAgICBsb2FkSW5mb3MuYXBwZW5kKGxvYWRJbmZvKTsKKyAgICAgICAgb3RoZXJQYXJhbWV0
ZXJzLmFwcGVuZChlcnJvcik7CisgICAgICAgIHJlc291cmNlQ29tcGxldGlvbkNvdW50Kys7Cisg
ICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgX3NldFJlc291cmNlTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGlsZSAocmVz
b3VyY2VDb21wbGV0aW9uQ291bnQgPCAzKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgpOworCisgICAgVmVjdG9yPENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcyB7
CisgICAgICAgIENhbGxiYWNrOjpEaWRTZW5kUmVxdWVzdCwKKyAgICAgICAgQ2FsbGJhY2s6OkRp
ZFJlY2VpdmVSZXNwb25zZSwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZENvbXBsZXRlV2l0aEVycm9y
LAorICAgICAgICBDYWxsYmFjazo6RGlkU2VuZFJlcXVlc3QsCisgICAgICAgIENhbGxiYWNrOjpE
aWRSZWNlaXZlUmVzcG9uc2UsCisgICAgICAgIENhbGxiYWNrOjpEaWRDb21wbGV0ZVdpdGhFcnJv
ciwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZFNlbmRSZXF1ZXN0LAorICAgICAgICBDYWxsYmFjazo6
RGlkUmVjZWl2ZVJlc3BvbnNlLAorICAgICAgICBDYWxsYmFjazo6RGlkQ29tcGxldGVXaXRoRXJy
b3IKKyAgICB9OworICAgIEVYUEVDVF9FUShjYWxsYmFja3MsIGV4cGVjdGVkQ2FsbGJhY2tzKTsK
KworICAgIEVYUEVDVF9FUSh3ZWJWaWV3cy5zaXplKCksIDl1bGwpOworICAgIGZvciAoYXV0byYg
dmlldyA6IHdlYlZpZXdzKQorICAgICAgICBFWFBFQ1RfRVEod2ViVmlldy5nZXQoKSwgdmlldy5n
ZXQoKSk7CisKKyAgICBzdHJ1Y3QgRXhwZWN0ZWRJbmZvIHsKKyAgICAgICAgdWludDY0X3QgcmVz
b3VyY2VMb2FkSUQ7CisgICAgfTsKKyAgICBhdXRvIGNoZWNrTG9hZEluZm8gPSBbXSAoUmV0YWlu
UHRyPF9XS1Jlc291cmNlTG9hZEluZm8+JiBpbmZvLCBFeHBlY3RlZEluZm8gZXhwZWN0ZWRJbmZv
KSB7CisgICAgICAgIEVYUEVDVF9FUShpbmZvLmdldCgpLnJlc291cmNlTG9hZElELCBleHBlY3Rl
ZEluZm8ucmVzb3VyY2VMb2FkSUQpOworICAgIH07CisgICAgRVhQRUNUX0VRKGxvYWRJbmZvcy5z
aXplKCksIDl1bGwpOworICAgIGNoZWNrTG9hZEluZm8obG9hZEluZm9zWzBdLCB7IDEgfSk7Cisg
ICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbMV0sIHsgMSB9KTsKKyAgICBjaGVja0xvYWRJbmZv
KGxvYWRJbmZvc1syXSwgeyAxIH0pOworICAgIGNoZWNrTG9hZEluZm8obG9hZEluZm9zWzNdLCB7
IDIgfSk7CisgICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbNF0sIHsgMiB9KTsKKyAgICBjaGVj
a0xvYWRJbmZvKGxvYWRJbmZvc1s1XSwgeyAyIH0pOworICAgIGNoZWNrTG9hZEluZm8obG9hZElu
Zm9zWzZdLCB7IDMgfSk7CisgICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbN10sIHsgMyB9KTsK
KyAgICBjaGVja0xvYWRJbmZvKGxvYWRJbmZvc1s4XSwgeyAzIH0pOworCisgICAgRVhQRUNUX0VR
KG90aGVyUGFyYW1ldGVycy5zaXplKCksIDl1bGwpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0
cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzBdIGNsYXNzXSksICJOU011dGFibGVVUkxS
ZXF1ZXN0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbMF0gVVJMXS5w
YXRoLCAiLyIpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQ
YXJhbWV0ZXJzWzFdIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOworICAgIEVYUEVDVF9X
S19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzFdIFVSTF0ucGF0aCwgIi8iKTsKKyAgICBFWFBFQ1Rf
RVEob3RoZXJQYXJhbWV0ZXJzWzJdLCBuaWwpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmlu
Z0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzNdIGNsYXNzXSksICJOU011dGFibGVVUkxSZXF1
ZXN0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbM10gVVJMXS5wYXRo
LCAiL2lmcmFtZVNyYyIpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhb
b3RoZXJQYXJhbWV0ZXJzWzRdIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOworICAgIEVY
UEVDVF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzRdIFVSTF0ucGF0aCwgIi9pZnJhbWVTcmMi
KTsKKyAgICBFWFBFQ1RfRVEob3RoZXJQYXJhbWV0ZXJzWzVdLCBuaWwpOworICAgIEVYUEVDVF9X
S19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzZdIGNsYXNzXSksICJO
U011dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRl
cnNbNl0gVVJMXS5wYXRoLCAiL2ZldGNoVGFyZ2V0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKE5T
U3RyaW5nRnJvbUNsYXNzKFtvdGhlclBhcmFtZXRlcnNbN10gY2xhc3NdKSwgIk5TSFRUUFVSTFJl
c3BvbnNlIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbN10gVVJMXS5w
YXRoLCAiL2ZldGNoVGFyZ2V0Iik7CisgICAgRVhQRUNUX0VRKG90aGVyUGFyYW1ldGVyc1s4XSwg
bmlsKTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK1RFU1QoUmVz
b3VyY2VMb2FkRGVsZWdhdGUsIENoYWxsZW5nZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhU
VFBTLCBbXSAoU1NMKiBzc2wpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFzc2wpOyAvLyBDb25u
ZWN0aW9uIHNob3VsZCBzdWNjZWVkIGFmdGVyIGEgc2VydmVyIHRydXN0IGNoYWxsZW5nZS4KKyAg
ICAgICAgLy8gU2VuZCBub3RoaW5nIHRvIG1ha2UgdGhlIHJlc291cmNlIGxvYWQgZmFpbC4KKyAg
ICB9KTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGlj
YXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50
aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgcmVj
ZWl2ZWRFcnJvck5vdGlmaWNhdGlvbiA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZl
ZENoYWxsZW5nZU5vdGlmaWNpYXRpb24gPSBmYWxzZTsKKyAgICBhdXRvIHJlc291cmNlTG9hZERl
bGVnYXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIG5ld10pOworICAgIFty
ZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICos
IF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hh
bGxlbmdlKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVy
VHJ1c3QpOworICAgICAgICByZWNlaXZlZENoYWxsZW5nZU5vdGlmaWNpYXRpb24gPSB0cnVlOwor
ICAgIH1dOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRDb21wbGV0ZVdpdGhFcnJv
cjpeKFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBrQ0ZVUkxFcnJvckNhbm5vdENvbm5lY3RU
b0hvc3QpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9y
RG9tYWluKTsKKyAgICAgICAgcmVjZWl2ZWRFcnJvck5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAg
fV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07
CisgICAgW3dlYlZpZXcgX3NldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVn
YXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEVycm9yTm90aWZpY2F0aW9uKTsKKyAgICBFWFBF
Q1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZU5vdGlmaWNpYXRpb24pOworfQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNl
V29ya2VyQmFzaWMubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzA1LDcgKzE3MDUsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBUaHJvdHRsZUNyYXNoKQog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewogICAgICAgICB7ICIvIiwg
eyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHNjcmlwdEJ5dGVzLCB7eyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19IH0gfSwKKyAgICAgICAg
eyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH19LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24gMjU0
MTgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3OCw3ICs1NzgsNyBAQCBU
RVNUKFdlYktpdCwgQXBwbGljYXRpb25DYWNoZURpcmVjdG9yaWVzCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewogICAgICAgICB7ICIvaW5kZXguaHRtbCIsIHsgIjxodG1s
IG1hbmlmZXN0PSd0ZXN0LmFwcGNhY2hlJz4iIH0gfSwKICAgICAgICAgeyAiL3Rlc3QuYXBwY2Fj
aGUiLCB7ICJDQUNIRSBNQU5JRkVTVFxuaW5kZXguaHRtbFxudGVzdC5tcDRcbiIgfSB9LAotICAg
ICAgICB7ICIvdGVzdC5tcDQiLCB7ICJ0ZXN0ISIsIHt7ICJDb250ZW50LVR5cGUiLCAidmlkZW8v
dGVzdCIgfX19fSwKKyAgICAgICAgeyAiL3Rlc3QubXA0IiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
InZpZGVvL3Rlc3QiIH19LCAidGVzdCEiIH19LAogICAgIH0pOwogICAgIAogICAgIE5TVVJMICp0
ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDdXN0b21QYXRoc1Rlc3QiXSBpc0RpcmVj
dG9yeTpZRVNdOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJl
dmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw5ICs1MiwxMyBAQCBwcml2YXRlOgogc3RydWN0IEhUVFBT
ZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgSFRUUFJlc3BvbnNlKFN0cmluZyYmIGJvZHkpCiAg
ICAgICAgIDogYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0KLSAgICBIVFRQUmVzcG9uc2UoU3RyaW5n
JiYgYm9keSwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMpCi0gICAgICAg
IDogYm9keShXVEZNb3ZlKGJvZHkpKQotICAgICAgICAsIGhlYWRlckZpZWxkcyhXVEZNb3ZlKGhl
YWRlckZpZWxkcykpIHsgfQorICAgIEhUVFBSZXNwb25zZShIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYmIGhlYWRlckZpZWxkcywgU3RyaW5nJiYgYm9keSkKKyAgICAgICAgOiBoZWFkZXJGaWVsZHMo
V1RGTW92ZShoZWFkZXJGaWVsZHMpKQorICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9
CisgICAgSFRUUFJlc3BvbnNlKHVuc2lnbmVkIHN0YXR1c0NvZGUsIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiYgaGVhZGVyRmllbGRzLCBTdHJpbmcmJiBib2R5ID0geyB9KQorICAgICAgICA6IHN0
YXR1c0NvZGUoc3RhdHVzQ29kZSkKKyAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFk
ZXJGaWVsZHMpKQorICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CiAKICAgICBIVFRQ
UmVzcG9uc2UoY29uc3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0OwogICAgIEhUVFBSZXNwb25z
ZShIVFRQUmVzcG9uc2UmJikgPSBkZWZhdWx0OwpAQCAtNjIsOCArNjYsOSBAQCBzdHJ1Y3QgSFRU
UFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKICAgICBIVFRQUmVzcG9uc2UmIG9wZXJhdG9yPShjb25z
dCBIVFRQUmVzcG9uc2UmKSA9IGRlZmF1bHQ7CiAgICAgSFRUUFJlc3BvbnNlJiBvcGVyYXRvcj0o
SFRUUFJlc3BvbnNlJiYpID0gZGVmYXVsdDsKICAgICAKLSAgICBTdHJpbmcgYm9keTsKKyAgICB1
bnNpZ25lZCBzdGF0dXNDb2RlIHsgMjAwIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
aGVhZGVyRmllbGRzOworICAgIFN0cmluZyBib2R5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQko
cmV2aXNpb24gMjU0MTgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxOCBAQCBIVFRQU2VydmVyOjpIVFRQU2Vy
dmVyKHN0ZDo6aW5pdGlhbGl6ZXJfCiAgICAgbndfbGlzdGVuZXJfc3RhcnQobV9saXN0ZW5lci5n
ZXQoKSk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0dXNDb2Rl
KQoreworICAgIHN3aXRjaCAoc3RhdHVzQ29kZSkgeworICAgIGNhc2UgMjAwOgorICAgICAgICBy
ZXR1cm4gIk9LIl9zOworICAgIGNhc2UgMzAxOgorICAgICAgICByZXR1cm4gIk1vdmVkIFBlcm1h
bmVudGx5Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
eyB9OworfQorCiB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uKQogewogICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9u
LCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIF4oZGlzcGF0Y2hfZGF0
YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wgY29tcGxldGUs
IG53X2Vycm9yX3QgZXJyb3IpIHsKQEAgLTc2LDcgKzg4LDExIEBAIHZvaWQgSFRUUFNlcnZlcjo6
cmVzcG9uZFRvUmVxdWVzdHMobndfY28KICAgICAgICAgCiAgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBtX3JlcXVlc3RSZXNwb25zZU1hcC5nZXQocGF0aCk7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
cmVzcG9uc2VCdWlsZGVyOwotICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEu
MSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6ICIpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKCJIVFRQLzEuMSAiKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJl
cihyZXNwb25zZS5zdGF0dXNDb2RlKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgn
ICcpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHN0YXR1c1RleHQocmVzcG9uc2Uu
c3RhdHVzQ29kZSkpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVu
dC1MZW5ndGg6ICIpOwogICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3Bv
bnNlLmJvZHkubGVuZ3RoKCkpOwogICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxu
Iik7CiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHJlc3BvbnNlLmhlYWRlckZpZWxkcykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387284</attachid>
            <date>2020-01-09 15:53:34 -0800</date>
            <delta_ts>2020-01-10 09:48:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206037-20200109155333.patch</filename>
            <type>text/plain</type>
            <size>74381</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDIwLTAxLTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwYW5kIF9XS1Jl
c291cmNlTG9hZERlbGVnYXRlIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzEz
MjI5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgNSBpbmZvcm1hdGl2ZSBkZWxlZ2F0ZSBjYWxsYmFja3MgYXQgdGhlc2UgdGltZXMgZHVyaW5n
IHRoZSBsb2FkaW5nIHByb2Nlc3M6CisgICAgICAgIDEuIFdoZW4gYSByZXF1ZXN0IGlzIHNlbnQu
CisgICAgICAgIDIuIFdoZW4gYSByZWRpcmVjdCBoYXBwZW5zLgorICAgICAgICAzLiBXaGVuIGEg
Y2hhbGxlbmdlIGhhcHBlbnMuCisgICAgICAgIDQuIFdoZW4gYSByZXNwb25zZSBpcyByZWNlaXZl
ZC4KKyAgICAgICAgNS4gV2hlbiBsb2FkaW5nIGNvbXBsZXRlcyBvciBmYWlscy4KKworICAgICAg
ICBBcyBtZW50aW9uZWQgaW4gcjI1NDE4MyB0aGVzZSBjYWxsYmFja3MgYXJlIG9ubHkgY2FsbGVk
IHdoZW4gYSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZSBpcyBnaXZlbiB0byBhIFdLV2ViVmlldy4K
KyAgICAgICAgV2UgYWRkIGEgbmV3IHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHdoaWNoIHdpbGwg
bmVlZCB0byBiZSBleHBhbmRlZCBjb250YWluaW5nIGN1cnJlbnRseSBvbmx5IHRoZSBsb2FkIGlk
ZW50aWZpZXIuCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cyB3aGljaCB2ZXJpZnkg
dGhlIHZhbGlkaXR5IG9mIHRoZSBzZW50IGluZm9ybWF0aW9uLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVzb3VyY2VMb2FkSUQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlTG9hZEluZm8p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICBBZGQgYSB3YXkgdG8gc2VuZCBhIG1lc3NhZ2UgaW5m
b3JtaW5nIHRoYXQgYSBjaGFsbGVuZ2UgaGFwcGVuZWQgd2l0aCBpbmZvcm1hdGlvbiBnYXRoZXJl
ZCBmcm9tIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIsCisgICAgICAgIHdoaWNoIHByZXZpb3Vz
bHkgd2FzIG5vdCBpbmZvcm1lZCBvZiBjaGFsbGVuZ2VzIGJlY2F1c2UgdGhlIGNoYWxsZW5nZXMg
d2VudCBkaXJlY3RseSBmcm9tIHRoZSBOZXR3b3JrTG9hZCB0byB0aGUgQXV0aGVudGljYXRpb25N
YW5hZ2VyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9BUEkv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAg
ICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9SZXNvdXJjZUxv
YWRJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvOjpkZWNvZGUpOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElS
ZXNvdXJjZUxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNl
TG9hZEluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVz
b3VyY2VMb2FkSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S1Jlc291cmNlTG9hZEluZm8ubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJ
bmZvIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJRF0pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJbmZvIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICBBbiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5IHdhcyBvbmx5IHVzZWQgZm9yIGNoYWxsZW5nZXMg
dGhhdCBuZWVkZWQgY3JlZGVudGlhbHMsIHNvIHRoZXkgd3JhcHBlZCBhIENvbXBsZXRpb25IYW5k
bGVyLgorICAgICAgICBUaGlzIG5ldyB0eXBlIG9mIGluZm9ybWF0aXZlLW9ubHkgY2hhbGxlbmdl
IHdpbGwgYmUgZ2l2ZW4gYSBudWxsIENvbXBsZXRpb25IYW5kbGVyLCB3aGljaCBtZWFucyBubyBh
Y3Rpb24gY2FuIGJlIHRha2VuLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OnNldERlbGVn
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9h
ZENsaWVudDo6ZGlkU2VuZFJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291
cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ6OmRpZENvbXBsZXRlV2l0aEVycm9yIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
c291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cGFnZVdpbGxTZW5kUmVxdWVzdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0
UGluZ0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QpOgorCiAyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0ludGVybmFsRGVidWdGZWF0CiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0xpbmtJY29uUGFyYW1ldGVycy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tTZXNzaW9uU3RhdGUubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dElucHV0Q29udGV4dC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5tbQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNiArMTg5LDggQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlYwogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY2hhbGxlbmdlKTsKKwogICAgIGF1dG8gc2NoZW1lID0gY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7CiAgICAgYm9vbCBpc1RMU0hhbmRzaGFr
ZSA9IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRy
dXN0RXZhbHVhdGlvblJlcXVlc3RlZAogICAgICAgICB8fCBzY2hlbWUgPT0gUHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJ
KHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdDsKQEAg
LTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZvLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTk3LDYgKzk4
LDEyIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXMKICAgICBkYXRh
LmRlbGF5ZWRSZXBseSA9IG51bGxwdHI7CiB9CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJl
c291cmNlTG9hZElEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgeyAx
IH07CisgICAgcmV0dXJuIG5leHRJZGVudGlmaWVyKys7Cit9CisKIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9u
b3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1l
dGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVj
dGlvbiB9CkBAIC0xMDQsNiArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3Jr
UmVzb3VyY2VMbwogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1f
cGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIg
eyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CiAg
ICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24t
PmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKKyAgICAsIG1fcmVzb3Vy
Y2VMb2FkSUQgeyBnZW5lcmF0ZVJlc291cmNlTG9hZElEKCkgfQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTMyMyw3ICszMzEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVu
Y2VzID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFs
UmVxdWVzdCgpLnVybCgpKTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNl
TG9hZENsaWVudCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlBhZ2VXaWxsU2VuZFJlcXVlc3QobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXF1ZXN0
KSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNv
dXJjZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291
cmNlTG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFy
YW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CkBAIC0zMzEsNiArMzM5LDEzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249
JXtwdWJsaWN9cykiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCitSZXNvdXJjZUxvYWRJbmZvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VM
b2FkSW5mbygpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRJRAorICAg
IH07Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQg
cmVzdWx0KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NDcsNiArNTYy
LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7
CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAg
ICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJ
bmZvKCksIHJlc3BvbnNlKSwgMCk7CisKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSkgewogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDYgKzY0
MSw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKIAogICAgIHRy
eVN0b3JlQXNDYWNoZUVudHJ5KCk7CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNv
dXJjZUxvYWRDbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpSZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihtX3BhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQsIHJlc291cmNlTG9hZEluZm8oKSwgeyB9KSwgMCk7CisKICAgICBjbGVhbnVwKExv
YWRSZXN1bHQ6OlN1Y2Nlc3MpOwogfQogCkBAIC02NTUsNiArNjc2LDkgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaQogI2VuZGlmCiAgICAgfQogCisgICAgaWYgKG1f
cGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJy
b3IobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvKCksIGVycm9y
KSwgMCk7CisKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQogCkBAIC02NjQs
NiArNjg4LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGgKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkQmxvY2tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sK
KyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAg
IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNl
aXZlQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5m
bygpLCBjaGFsbGVuZ2UpLCAwKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTY5MCw2ICs3MjAsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDoiKTsKICAgICArK21fcmVk
aXJlY3RDb3VudDsKKyAgICBtX3JlZGlyZWN0UmVzcG9uc2UgPSByZWRpcmVjdFJlc3BvbnNlOwog
CiAgICAgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiBhZENsaWNrQ29u
dmVyc2lvbjsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC04NjUsNiAr
ODk2LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKIAogICAg
IGlmIChtX25ldHdvcmtMb2FkKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiBUZWxsaW5nIE5ldHdvcmtMb2FkIHRvIHByb2NlZWQgd2l0
aCB0aGUgcmVkaXJlY3QiKTsKKworICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNv
dXJjZUxvYWRDbGllbnQgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNlTG9hZElu
Zm8oKSwgbV9yZWRpcmVjdFJlc3BvbnNlLCBuZXdSZXF1ZXN0KSwgMCk7CisKICAgICAgICAgbV9u
ZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw2ICs1NCw4IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlcjsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKK3N0cnVj
dCBSZXNvdXJjZUxvYWRJbmZvOworCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVu
dHJ5OwogfQpAQCAtMTA2LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udmVydFRvRG93
bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMTk1LDYgKzE5OCw4IEBAIHByaXZhdGU6
CiAKICAgICBPcHRpb25hbDxTZWNvbmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKKyAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsK
KwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
IAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpA
QCAtMjM0LDYgKzIzOSw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiAjZW5kaWYKKyAgICB1aW50NjRfdCBtX3Jlc291cmNlTG9hZElEIHsgMCB9
OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkSW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IFJlc291cmNlTG9hZEluZm8geworCisgICAgdWludDY0X3Qg
cmVzb3VyY2VMb2FkSUQgeyAwIH07CisgICAgCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRJ
RDsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VMb2FkSW5mbz4gZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiByZXNvdXJjZUxvYWRJRDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNvdXJjZUxvYWRJRDsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZUxvYWRJRCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpyZXNvdXJjZUxv
YWRJRCksCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMjU0MTgzKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJvdGVjdGlvblNwYWNlLAogICAgICAg
ICBSZW5kZXJMYXllciwKICAgICAgICAgUmVuZGVyT2JqZWN0LAorICAgICAgICBSZXNvdXJjZUxv
YWRJbmZvLAogICAgICAgICBTZWN1cml0eU9yaWdpbiwKICAgICAgICAgU2Vzc2lvblN0YXRlLAog
ICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAK
ICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnRlcm5hbERl
YnVnRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKQEAgLTMzMiw2ICszMzMsMTAg
QEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgICAgICB3cmFw
cGVyID0gW19XS0N1c3RvbUhlYWRlckZpZWxkcyBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBUeXBlOjpSZXNvdXJjZUxvYWRJbmZvOgorICAgICAgICB3cmFwcGVyID0gW19XS1Jl
c291cmNlTG9hZEluZm8gYWxsb2NdOworICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAg
IGNhc2UgVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHk6CiAgICAgICAgIHdy
YXBwZXIgPSBbX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgYWxsb2NdOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkxNiwxMCArNTkxNiwzNCBAQCBXZWJJbnNwZWN0
b3JQcm94eSogV2ViUGFnZVByb3h5OjppbnNwZWN0CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdl
dCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xp
ZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVl
c3QpOworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+ZGlkU2VuZFJlcXVlc3QoV1RGTW92
ZShsb2FkSW5mbyksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYg
bG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRDbGll
bnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxl
bmdlKFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpCit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xpZW50
KQorICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGxvYWRJbmZvKSwgY2hhbGxlbmdlKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJlc291
cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBpZiAobV9yZXNvdXJj
ZUxvYWRDbGllbnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlTG9h
ZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKQoreworICAg
IGlmIChtX3Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQt
PmRpZENvbXBsZXRlV2l0aEVycm9yKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKGVycm9yKSk7
CiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsNyBA
QCBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBQREZDb250ZXh0TWVudTsKK3N0cnVjdCBS
ZXNvdXJjZUxvYWRJbmZvOwogc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTsKIHN0cnVjdCBX
ZWJIaXRUZXN0UmVzdWx0RGF0YTsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwpAQCAt
NDY3LDcgKzQ2OCwxMSBAQCBwdWJsaWM6CiAKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVj
dG9yKCkgY29uc3Q7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0KFJl
c291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OworICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShSZXNvdXJjZUxvYWRJ
bmZvJiYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpOworICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
IAogICAgIHZvaWQgZGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1bnNpZ25lZCBjb3Vu
dCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ291bnQgPSBjb3VudDsgfQogICAgIHVuc2lnbmVkIGlu
c3BlY3RvckZyb250ZW5kQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
Q291bnQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxv
YWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UmVzb3VyY2VMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsMTMgKzI1LDIyIEBACiAKICNwcmFnbWEgb25jZQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5m
bzsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFJlc291cmNlTG9hZENsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRSZXF1ZXN0KFdlYktp
dDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6
UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
JikgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRJbmZvLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZv
LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBSZXNvdXJjZUxvYWRJbmZvIGZpbmFsIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpSZXNvdXJjZUxvYWRJbmZvPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRJbmZvPiBjcmVhdGUoV2ViS2l0OjpSZXNv
dXJjZUxvYWRJbmZvJiYgaW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlc291cmNlTG9hZEluZm8oV1RGTW92ZShpbmZvKSkpOworICAgIH0KKworICAgIFJlc291cmNl
TG9hZEluZm8oV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvJiYgaW5mbykKKyAgICAgICAgOiBtX2lu
Zm8oV1RGTW92ZShpbmZvKSkKKyAgICB7CisgICAgfQorCisgICAgdWludDY0X3QgcmVzb3VyY2VM
b2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2luZm8ucmVzb3VyY2VMb2FkSUQ7IH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gbV9pbmZvOworCit9OworCit9
IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAy
NTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDE5IEBACiAKICNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIF9XS1Jlc291cmNlTG9hZEluZm87
CisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0OworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVzb3Vy
Y2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdDsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJjZUxv
YWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3Q7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3Vy
Y2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVDaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2U7CistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3VyY2VMb2FkOihfV0tSZXNvdXJjZUxv
YWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNl
TG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcjooTlNFcnJvciAqIF9fbnVsbGFibGUpZXJyb3I7CiAKIEBlbmQKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2Fk
SW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZXNvdXJjZUxvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tSZXNv
dXJjZUxvYWRJbmZvIDogTlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlM
QUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2NF90IHJlc291cmNlTG9hZElEOworCitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0JKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZElu
Zm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCisjaW1wb3J0
ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRJbmZvSW50
ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1Jlc291cmNlTG9hZEluZm8KKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgX2luZm8tPkFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6flJlc291cmNl
TG9hZEluZm8oKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHVpbnQ2NF90KXJlc291
cmNlTG9hZElECit7CisgICAgcmV0dXJuIF9pbmZvLT5yZXNvdXJjZUxvYWRJRCgpOworfQorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2luZm87Cit9CisKK0Bl
bmQKKwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNl
TG9hZEluZm9JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkSW5mb0lu
dGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJX
S09iamVjdC5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlJlc291cmNl
TG9hZEluZm8+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tSZXNvdXJjZUxvYWRJbmZv
OworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS1Jlc291cmNlTG9hZEluZm8gKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlJlc291cmNlTG9hZElu
Zm8+IF9pbmZvOworfQorQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdl
YWtQdHI8U2VjS2V5UHJveHlTdG9yZT4mJiBzZWNLZXlQcm94eVN0b3JlKQogICAgIDogbV9jb3Jl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
Ci0gICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6Y3JlYXRl
KFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbiksIHNlY0tleVBy
b3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKSB7CisgICAgLCBtX2xpc3RlbmVyKEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcjo6Y3JlYXRlKGNoYWxsZW5nZUlEID8gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+
KFtjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbiksIHNlY0tleVBy
b3h5U3RvcmUgPSBXVEZNb3ZlKHNlY0tleVByb3h5U3RvcmUpXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKSB7CiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQogICAgICAgICBpZiAoc2VjS2V5
UHJveHlTdG9yZSAmJiBzZWNLZXlQcm94eVN0b3JlLT5pbml0aWFsaXplKGNyZWRlbnRpYWwpKSB7
CiAgICAgICAgICAgICBzZW5kQ2xpZW50Q2VydGlmaWNhdGVDcmVkZW50aWFsT3ZlclhwYyhjb25u
ZWN0aW9uLCAqc2VjS2V5UHJveHlTdG9yZSwgY2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwpOwpAQCAt
NTMsNyArNTMsNyBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhCiAg
ICAgICAgIH0KICNlbmRpZgogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OkNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxl
bmdlSUQsIGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFsKSwgMCk7Ci0gICAgfSkpCisgICAgfSkgOiBu
dWxscHRyKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1NywxMSBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgLy8gQVBJOjpSZXNvdXJjZUxvYWRDbGllbnQKLSAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgICAg
IHZvaWQgZGlkU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJikgY29uc3QgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpIGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
IGNvbnN0IGZpbmFsOworICAgICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNl
TG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKSBjb25zdCBmaW5hbDsKIAogICAg
ICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSYgbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZTsKICAgICB9
OwpAQCAtNjYsNyArNzAsMTEgQEAgcHJpdmF0ZToKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLUmVz
b3VyY2VMb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKIAogICAgIHN0cnVjdCB7Ci0gICAgICAg
IGJvb2wgd2lsbFNlbmRSZXF1ZXN0IDogMTsKKyAgICAgICAgYm9vbCBkaWRTZW5kUmVxdWVzdCA6
IDE7CisgICAgICAgIGJvb2wgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA6IDE7CisgICAgICAg
IGJvb2wgZGlkUmVjZWl2ZUNoYWxsZW5nZSA6IDE7CisgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJl
c3BvbnNlIDogMTsKKyAgICAgICAgYm9vbCBkaWRDb21wbGV0ZVdpdGhFcnJvciA6IDE7CiAgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCIKIAogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIl9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNTEsNyArNTIsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6c2V0RGVs
ZWdhdGUoaQogewogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAotICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndpbGxTZW5kUmVxdWVzdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6d2lsbFNlbmRSZXF1ZXN0OildOworICAgIC8vIHJlc291cmNlV2l0aElE
OgorICAgIC8vIHR5cGU6CisgICAgLy8gX1dLRnJhbWVIYW5kbGUgZnJhbWU6CisgICAgLy8gX1dL
RnJhbWVIYW5kbGUgcGFyZW50RnJhbWU6CisgICAgCisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZGlk
U2VuZFJlcXVlc3QgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJW
aWV3OnJlc291cmNlTG9hZDpkaWRTZW5kUmVxdWVzdDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZUxvYWQ6ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjpuZXdSZXF1ZXN0OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRpZFJlY2VpdmVDaGFsbGVu
Z2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJlc291
cmNlTG9hZDpkaWRSZWNlaXZlQ2hhbGxlbmdlOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRp
ZFJlY2VpdmVSZXNwb25zZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFJlY2VpdmVSZXNwb25zZTopXTsKKyAgICBtX2RlbGVn
YXRlTWV0aG9kcy5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZENvbXBsZXRlV2l0aEVycm9y
OildOwogfQogCiBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpSZXNv
dXJjZUxvYWRDbGllbnQoUmVzb3VyY2VMb2FkRGVsZWdhdGUmIGRlbGVnYXRlKQpAQCAtNjEsMTYg
KzcxLDY0IEBAIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQKIAogUmVz
b3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6flJlc291cmNlTG9hZENsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2Fk
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xp
ZW50OjpkaWRTZW5kUmVxdWVzdChXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
cmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0KQor
ICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRTZW5k
UmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVn
YXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSB3aWxsU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKKyAgICBb
ZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5n
ZXQoKSByZXNvdXJjZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShX
VEZNb3ZlKGxvYWRJbmZvKSkuZ2V0KCkpIGRpZFNlbmRSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1
ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtkZWxl
Z2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgp
IHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRlKFdURk1v
dmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVw
ZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworfQorCit2b2lkIFJlc291cmNlTG9h
ZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViS2l0
OjpSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRSZWNlaXZlQ2hhbGxlbmdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgp
LmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRl
KFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkUmVjZWl2ZUNoYWxsZW5nZTp3cmFwcGVyKGNo
YWxsZW5nZSldOworfQorCit2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2Fk
SW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSBjb25zdAoreworICAg
IGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5kaWRSZWNlaXZl
UmVzcG9uc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Jlc291
cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNv
dXJjZUxvYWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRSZWNlaXZl
UmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKK30KKwordm9pZCBSZXNvdXJjZUxv
YWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJL
aXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
IGVycm9yKSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy5kaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsK
KyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgd2Vi
VmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJj
ZUxvYWQ6d3JhcHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJ
bmZvKSkuZ2V0KCkpIGRpZENvbXBsZXRlV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsMTMgKzQ1Miw1MCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmxvZ0dsb2JhbERpYWduCiAgICAgICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNhbnRG
aWd1cmVzLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBh
Z2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT53
aWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7CisgICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkU2VuZFJl
cXVlc3QoV1RGTW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQoreworICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IHBhZ2UtPnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92ZShsb2Fk
SW5mbyksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQoreworICAgIGF1dG8q
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2hhbGxlbmdlUHJveHkgPSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92ZShjaGFsbGVuZ2UpLCAwLCAqY29ubmVj
dGlvbigpLCBudWxscHRyKTsKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRSZWNlaXZlQ2hhbGxl
bmdlKFdURk1vdmUobG9hZEluZm8pLCBjaGFsbGVuZ2VQcm94eS5nZXQoKSk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBhdXRvKiBwYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV1RG
TW92ZShsb2FkSW5mbyksIFdURk1vdmUocmVzcG9uc2UpKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYgZXJyb3IpCit7CisgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV1RGTW92ZShsb2FkSW5m
byksIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDEyICs2NCwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERvd25sb2FkUHJv
eHk7CiBjbGFzcyBEb3dubG9hZFByb3h5TWFwOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CitjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKKwogZW51bSBjbGFzcyBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xh
c3MgV2Vic2l0ZURhdGFUeXBlOworCiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK3N0cnVjdCBSZXNv
dXJjZUxvYWRJbmZvOwogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vz
c1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9j
ZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQ
cm94eT4gewpAQCAtMjAxLDcgKzIwNCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICB2
b2lkIHBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRTZW5kUmVx
dWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
KyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTY4LDUgKzY4LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZQogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQp
IC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCiAgICAgCi0gICAgUGFnZVdp
bGxTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNlTG9hZERp
ZFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmll
ciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBSZXNvdXJjZUxvYWREaWRQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNlTG9hZERpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
S2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkKKyAgICBSZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgUmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1w
b3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjaW1wb3J0ICJTaGFyZWFi
bGVSZXNvdXJjZS5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIlVzZXJEYXRhLmgi
CiAjaW1wb3J0ICJVc2VySW50ZXJmYWNlSWRpb20uaCIKICNpbXBvcnQgIlZlcnNpb25DaGVja3Mu
aCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE3MCw2ICsxMTcwLDggQEAKIAkJ
NUNCMjM3OEMxREYwREU2RTAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3ODkxREYwREQ0MzAw
MTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQjIzNzhFMURGMEUwRDMwMDExN0FBMyAvKiBfV0tX
ZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggKi87IH07CiAJCTVDQjdBRkUwMjNDNTJDRTUwMEU0OUNGMyAvKiBfV0tS
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNUNCN0FGRTcyM0M2ODIwNzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkU2MjNDNjgxQjAw
MEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87IH07CisJCTVDQjdBRkU4MjNDNjlCNjEw
MEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVz
b3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2
NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsgfTsKIAkJNUNCRDU5NUMyMjgw
RURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzg4MjI3QTE4OTIwMDBCOUJEQSAv
KiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi87IH07CiAJCTVDRDI4NjUxMUU3MjM1OTkwMDk0
RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RDFFNzIyRjQ0MDA5NEZEQzggLyogV0tDb250
ZW50UnVsZUxpc3RTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKQEAgLTM4OTYsNiArMzg5OCwxMSBAQAogCQk1Q0I3QUZERDIzQzUyNzNEMDBFNDlD
RjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNCN0FGREUyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjdBRkRGMjNDNTJDQkMwMEU0
OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0I3QUZFMjIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5m
by5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Jlc291cmNl
TG9hZEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkUzMjNDNjdE
MzcwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNCN0FGRTQyM0M2N0Q2NDAwRTQ5Q0YzIC8qIEFQSVJlc291cmNlTG9hZEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I3QUZFNTIzQzY3REY5MDBFNDlDRjMg
LyogX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAv
KiBOZXR3b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya0RhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2
NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NjE1LDYgKzU2MjIsNyBAQAogCQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmlu
dEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uLmggKi8sCiAJCQkJRjZBMEMxM0YxMzI4MUU2RTAwNzA0MzBGIC8qIFJlc291
cmNlQ2FjaGVzVG9DbGVhci5oICovLAorCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBS
ZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJU
Q05ldHdvcmsuY3BwICovLAogCQkJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggKi8sCiAJCQkJNDFCMjhCMDkxRjgzQUQzRTAwRkI1MkFDIC8qIFJUQ1BhY2tldE9wdGlv
bnMuY3BwICovLApAQCAtNjc3MSw2ICs2Nzc5LDkgQEAKIAkJCQlBNTVCQTgwRDFCQTEyQkUxMDA3
Q0QzM0QgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8sCiAJCQkJ
OTkwRTFFMDgyMzg0QTg4QjAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyUHJpdmF0ZS5oICovLAogCQkJCTVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAvKiBfV0tS
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDQjdBRkUzMjNDNjdEMzcwMEU0OUNGMyAv
KiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi8sCisJCQkJNUNCN0FGRTIyM0M2N0QzNzAwRTQ5Q0Yz
IC8qIF9XS1Jlc291cmNlTG9hZEluZm8ubW0gKi8sCisJCQkJNUNCN0FGRTUyM0M2N0RGOTAwRTQ5
Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oICovLAogCQkJCTQ5RkJFRkZCMjM5
QURCMTgwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICov
LAogCQkJCTQ5RkJFRkZDMjM5QjAxMUQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyc3RQYXJ0eS5tbSAqLywKIAkJCQk0OUJDQTE5MDIzQTE3NTQ5MDAyOEE4MzYgLyogX1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oICovLApAQCAtODQ3MCw2
ICs4NDgxLDcgQEAKIAkJCQk3Q0U0RDIxRDFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk3Q0U0RDIxRTFBNDkxNENBMDBDN0YxNTIgLyog
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJNUNCN0FGREEyM0M0M0U2NDAw
RTQ5Q0YzIC8qIEFQSVJlc291cmNlTG9hZENsaWVudC5oICovLAorCQkJCTVDQjdBRkU0MjNDNjdE
NjQwMEU0OUNGMyAvKiBBUElSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNDlCQ0ExOTEyM0Ex
Nzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggKi8s
CiAJCQkJNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5LmggKi8sCiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNl
c3Npb25TdGF0ZS5jcHAgKi8sCkBAIC05ODE3LDYgKzk4MjksNyBAQAogCQkJCTM3NzIxNkI4MUE0
RTZCRTAwMERDQTcxOCAvKiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1IC8qIF9XS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjdBRkUwMjNDNTJDRTUwMEU0
OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNC
N0FGRTgyM0M2OUI2MTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCQ0ExOTUyM0ExOENGRDAw
MjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3Nyw2ICsx
MDI5MCw3IEBACiAJCQkJQTU1QkE4MUYxQkEyNUIyNzAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVCQTgyNTFCQTI1Q0ZCMDA3Q0QzM0Qg
LyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU1QkE4MTcxQkEyM0UxMjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1Q0I3QUZFNzIzQzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QkU5NjlD
QjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiw5ICs1MjYs
MTAgQEAgT3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNMb2FkUmVzdQogCiB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSwgIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhl
YWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgV2Vi
RnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChmcmFtZUxvYWRlci5jbGllbnQoKSk7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0g
d2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6
IG51bGxwdHI7Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBh
Z2UoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFt
ZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1l
KCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5w
YWdlKCkgOiBudWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29y
ZVBhZ2UoKSA6IG51bGxwdHI7CiAKICAgICBhdXRvIHdlYlBhZ2VQcm94eUlEID0gd2ViUGFnZSA/
IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgeyB9OwogICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmlkZW50aWZpZXIo
KSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKQEAgLTU3OSw2ICs1ODAsOCBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5j
c3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVy
cygpOwogICAgIH0KICAgICBsb2FkUGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzID0g
b3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsKKyAgICBpZiAocGFnZSkKKyAgICAgICAgbG9hZFBhcmFt
ZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9hZENs
aWVudCgpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CiAKQEAgLTU5MSw3ICs1OTQsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jCiAKICAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBl
cmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVycm9y
LCByZXNwb25zZSwgZGF0YSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1dJVEhf
RlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgibG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1l
c3NhZ2UiKTsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29y
ZVBhZ2UoKSA6IG51bGxwdHIpCisgICAgICAgIGlmIChwYWdlKQogICAgICAgICAgICAgcGFnZS0+
ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpzeW5jaHJvbm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgp
OwogICAgICAgICBlcnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CkBAIC02NDQs
NiArNjQ3LDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcgogICAg
ICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VI
ZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9
CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICBsb2FkUGFy
YW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gcGFnZS0+aGFzUmVzb3VyY2VMb2Fk
Q2xpZW50KCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQYXJh
bWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpOwpJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjU0MzAwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjkgQEAKKzIwMjAtMDEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBFeHBhbmQgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUgY2FsbGJh
Y2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYw
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpk
aWRTZW5kUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIHdl
YlZpZXc6cmVzb3VyY2VMb2FkOmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpd
KToKKyAgICAgICAgKC1bVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2VM
b2FkOmRpZFJlY2VpdmVDaGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAg
ICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRD
b21wbGV0ZVdpdGhFcnJvcjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtUZXN0UmVz
b3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzp3aWxsU2VuZFJlcXVlc3Q6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OkhUVFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAgICAgICAgQWRkIHRoZSBh
YmlsaXR5IHRvIGhhdmUgbm9uLTIwMCBzdGF0dXMgY29kZXMgaW4gcmVzcG9uc2VzLgorICAgICAg
ICBBbHNvIHN3aXRjaCB0aGUgb3JkZXIgb2YgcGFyYW1ldGVycyB0byByZWZsZWN0IHRoZSBmYWN0
IHRoYXQgaGVhZGVyIGZpZWxkcyBhcmUgc2VudCBiZWZvcmUgdGhlIGJvZHkuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6c3RhdHVzVGV4dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXNw
b25kVG9SZXF1ZXN0cyk6CisKIDIwMjAtMDEtMDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBBZGQgdGltaW5n
IGluZm9ybWF0aW9uIHRvIFdlYlBhZ2VQcm94eTo6bG9nRnJhbWVOYXZpZ2F0aW9uKCkgdG8gZGV0
ZWN0IGRlbGF5ZWQgY2xpZW50LXNpZGUgcmVkaXJlY3RzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1
LDI1ICsyNSw1NyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZl
ci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRDUFNlcnZlci5o
IgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291cmNlTG9hZEluZm8uaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgOiBOU09i
amVjdCA8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkIChed2lsbFNlbmRSZXF1ZXN0KShXS1dlYlZpZXcgKiwgTlNVUkxSZXF1ZXN0ICop
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRTZW5kUmVxdWVzdCkoV0tX
ZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXF1ZXN0ICopOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKShX
S1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU1VSTFJlc3BvbnNlICosIE5TVVJM
UmVxdWVzdCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2
ZUNoYWxsZW5nZSkoV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkUmVjZWl2ZVJlc3BvbnNlKShXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAq
LCBOU1VSTFJlc3BvbnNlICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
aWRDb21wbGV0ZVdpdGhFcnJvcikoV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwg
TlNFcnJvciAqKTsKIAogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdFJlc291cmNlTG9hZERl
bGVnYXRlCiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU2VuZFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxv
YWQgZGlkU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICBpZiAoX3dp
bGxTZW5kUmVxdWVzdCkKLSAgICAgICAgX3dpbGxTZW5kUmVxdWVzdCh3ZWJWaWV3LCByZXF1ZXN0
KTsKKyAgICBpZiAoX2RpZFNlbmRSZXF1ZXN0KQorICAgICAgICBfZGlkU2VuZFJlcXVlc3Qod2Vi
VmlldywgcmVzb3VyY2VMb2FkLCByZXF1ZXN0KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291
cmNlTG9hZCBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9u
c2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAoreworICAgIGlmIChfZGlkUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgX2RpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
d2ViVmlldywgcmVzb3VyY2VMb2FkLCByZXNwb25zZSwgcmVxdWVzdCk7Cit9CisKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNlTG9h
ZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChfZGlkUmVjZWl2ZUNoYWxsZW5n
ZSkKKyAgICAgICAgX2RpZFJlY2VpdmVDaGFsbGVuZ2Uod2ViVmlldywgcmVzb3VyY2VMb2FkLCBj
aGFsbGVuZ2UpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVz
b3VyY2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgaWYgKF9kaWRSZWNlaXZl
UmVzcG9uc2UpCisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2Uod2ViVmlldywgcmVzb3VyY2VM
b2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXNvdXJjZUxvYWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkQ29t
cGxldGVXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIGlmIChfZGlkQ29tcGxldGVX
aXRoRXJyb3IpCisgICAgICAgIF9kaWRDb21wbGV0ZVdpdGhFcnJvcih3ZWJWaWV3LCByZXNvdXJj
ZUxvYWQsIGVycm9yKTsKIH0KIAogQGVuZApAQCAtNjIsNyArOTQsNyBAQCBURVNUKFJlc291cmNl
TG9hZERlbGVnYXRlLCBCYXNpYykKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+
IHJlcXVlc3RGcm9tRGVsZWdhdGU7CiAgICAgYXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBbd2ViVmlldyBfc2V0
UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCldOwotICAgIFty
ZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXRXaWxsU2VuZFJlcXVlc3Q6XihXS1dlYlZpZXcgKiwgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAgW3Jlc291cmNlTG9hZERlbGVnYXRlIHNldERpZFNl
bmRSZXF1ZXN0Ol4oV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0KSB7CiAgICAgICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUgPSByZXF1ZXN0Owog
ICAgIH1dOwogCkBAIC03MiwzICsxMDQsMTk2IEBAIFRFU1QoUmVzb3VyY2VMb2FkRGVsZWdhdGUs
IEJhc2ljKQogICAgIAogICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0TG9hZGVkLmdldCgpLlVS
TC5hYnNvbHV0ZVN0cmluZywgcmVxdWVzdEZyb21EZWxlZ2F0ZS5nZXQoKS5VUkwuYWJzb2x1dGVT
dHJpbmcpOwogfQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworVEVTVChSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSwgQmVhY29uQW5kU3luY1hIUikKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9LAorICAgICAg
ICB7ICIveGhyVGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICAgICAgeyAiL2JlYWNvblRhcmdldCIs
IHsgImhpIiB9IH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0
V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4g
cmVxdWVzdEZyb21EZWxlZ2F0ZTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDYWxsYmFjayA9
IGZhbHNlOworICAgIGF1dG8gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0UmVz
b3VyY2VMb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgX3NldFJlc291cmNlTG9hZERl
bGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpXTsKKyAgICBbcmVzb3VyY2VMb2FkRGVs
ZWdhdGUgc2V0RGlkU2VuZFJlcXVlc3Q6XihXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5m
byAqLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpIHsKKyAgICAgICAgcmVxdWVzdEZyb21EZWxlZ2F0
ZSA9IHJlcXVlc3Q7CisgICAgICAgIHJlY2VpdmVkQ2FsbGJhY2sgPSB0cnVlOworICAgIH1dOwor
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibmF2aWdhdG9yLnNlbmRCZWFjb24o
Jy9iZWFjb25UYXJnZXQnKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQ2FsbGJhY2spOworICAgIEVYUEVDVF9XS19TVFJFUSgi
L2JlYWNvblRhcmdldCIsIHJlcXVlc3RGcm9tRGVsZWdhdGUuZ2V0KCkuVVJMLnBhdGgpOworCisg
ICAgcmVjZWl2ZWRDYWxsYmFjayA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDoKKyAgICAgICAgQCJ2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOyIKKyAg
ICAgICAgInZhciBhc3luY2hyb25vdXMgPSBmYWxzZTsiCisgICAgICAgICJyZXF1ZXN0Lm9wZW4o
J0dFVCcsICd4aHJUYXJnZXQnLCBhc3luY2hyb25vdXMpOyIKKyAgICAgICAgInJlcXVlc3Quc2Vu
ZCgpOyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkQ2FsbGJhY2spOworICAgIEVYUEVDVF9XS19TVFJFUSgiL3hoclRhcmdldCIs
IHJlcXVlc3RGcm9tRGVsZWdhdGUuZ2V0KCkuVVJMLnBhdGgpOworfQorCitURVNUKFJlc291cmNl
TG9hZERlbGVnYXRlLCBSZWRpcmVjdCkKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9yZWRpcmVj
dFRhcmdldCIgfX0gfSB9LAorICAgICAgICB7ICIvcmVkaXJlY3RUYXJnZXQiLCB7ICJoaSIgfSB9
LAorICAgIH0pOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRvIHJl
c291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIG5l
d10pOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uOl4oV0tXZWJWaWV3ICosIF9XS1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2UuVVJMLnBhdGgsICIvIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1
ZXN0LlVSTC5wYXRoLCAiL3JlZGlyZWN0VGFyZ2V0Iik7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt3ZWJWaWV3IF9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNvdXJjZUxvYWREZWxlZ2F0
ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChSZXNvdXJjZUxv
YWREZWxlZ2F0ZSwgTG9hZEluZm8pCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiPGlmcmFtZSBzcmM9J2lmcmFtZVNyYyc+PC9pZnJh
bWU+IiB9IH0sCisgICAgICAgIHsgIi9pZnJhbWVTcmMiLCB7ICI8c2NyaXB0PmZldGNoKCdmZXRj
aFRhcmdldCcpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi9mZXRjaFRhcmdldCIsIHsgImhp
IiB9IH0sCisgICAgfSk7CisKKyAgICBlbnVtIGNsYXNzIENhbGxiYWNrIHsKKyAgICAgICAgRGlk
U2VuZFJlcXVlc3QsCisgICAgICAgIERpZFJlY2VpdmVSZXNwb25zZSwKKyAgICAgICAgRGlkQ29t
cGxldGVXaXRoRXJyb3IsCisgICAgfTsKKworICAgIF9fYmxvY2sgVmVjdG9yPENhbGxiYWNrPiBj
YWxsYmFja3M7CisgICAgX19ibG9jayBWZWN0b3I8UmV0YWluUHRyPFdLV2ViVmlldz4+IHdlYlZp
ZXdzOworICAgIF9fYmxvY2sgVmVjdG9yPFJldGFpblB0cjxfV0tSZXNvdXJjZUxvYWRJbmZvPj4g
bG9hZEluZm9zOworICAgIF9fYmxvY2sgVmVjdG9yPFJldGFpblB0cjxpZD4+IG90aGVyUGFyYW1l
dGVyczsKKworICAgIF9fYmxvY2sgc2l6ZV90IHJlc291cmNlQ29tcGxldGlvbkNvdW50ID0gMDsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIG5l
d10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRTZW5kUmVxdWVzdDpeKFdLV2ViVmlldyAqd2ViVmll
dywgX1dLUmVzb3VyY2VMb2FkSW5mbyAqbG9hZEluZm8sIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkg
eworICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEaWRTZW5kUmVxdWVzdCk7Cisg
ICAgICAgIHdlYlZpZXdzLmFwcGVuZCh3ZWJWaWV3KTsKKyAgICAgICAgbG9hZEluZm9zLmFwcGVu
ZChsb2FkSW5mbyk7CisgICAgICAgIG90aGVyUGFyYW1ldGVycy5hcHBlbmQocmVxdWVzdCk7Cisg
ICAgfV07CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVSZXNwb25zZTpeKFdLV2ViVmlldyAq
d2ViVmlldywgX1dLUmVzb3VyY2VMb2FkSW5mbyAqbG9hZEluZm8sIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlKSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRpZFJlY2VpdmVS
ZXNwb25zZSk7CisgICAgICAgIHdlYlZpZXdzLmFwcGVuZCh3ZWJWaWV3KTsKKyAgICAgICAgbG9h
ZEluZm9zLmFwcGVuZChsb2FkSW5mbyk7CisgICAgICAgIG90aGVyUGFyYW1ldGVycy5hcHBlbmQo
cmVzcG9uc2UpOworICAgIH1dOworICAgIFtkZWxlZ2F0ZSBzZXREaWRDb21wbGV0ZVdpdGhFcnJv
cjpeKFdLV2ViVmlldyAqd2ViVmlldywgX1dLUmVzb3VyY2VMb2FkSW5mbyAqbG9hZEluZm8sIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRpZENv
bXBsZXRlV2l0aEVycm9yKTsKKyAgICAgICAgd2ViVmlld3MuYXBwZW5kKHdlYlZpZXcpOworICAg
ICAgICBsb2FkSW5mb3MuYXBwZW5kKGxvYWRJbmZvKTsKKyAgICAgICAgb3RoZXJQYXJhbWV0ZXJz
LmFwcGVuZChlcnJvcik7CisgICAgICAgIHJlc291cmNlQ29tcGxldGlvbkNvdW50Kys7CisgICAg
fV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
W3dlYlZpZXcgX3NldFJlc291cmNlTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGlsZSAocmVzb3Vy
Y2VDb21wbGV0aW9uQ291bnQgPCAzKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGlu
UnVuTG9vcCgpOworCisgICAgVmVjdG9yPENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcyB7Cisg
ICAgICAgIENhbGxiYWNrOjpEaWRTZW5kUmVxdWVzdCwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZFJl
Y2VpdmVSZXNwb25zZSwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZENvbXBsZXRlV2l0aEVycm9yLAor
ICAgICAgICBDYWxsYmFjazo6RGlkU2VuZFJlcXVlc3QsCisgICAgICAgIENhbGxiYWNrOjpEaWRS
ZWNlaXZlUmVzcG9uc2UsCisgICAgICAgIENhbGxiYWNrOjpEaWRDb21wbGV0ZVdpdGhFcnJvciwK
KyAgICAgICAgQ2FsbGJhY2s6OkRpZFNlbmRSZXF1ZXN0LAorICAgICAgICBDYWxsYmFjazo6RGlk
UmVjZWl2ZVJlc3BvbnNlLAorICAgICAgICBDYWxsYmFjazo6RGlkQ29tcGxldGVXaXRoRXJyb3IK
KyAgICB9OworICAgIEVYUEVDVF9FUShjYWxsYmFja3MsIGV4cGVjdGVkQ2FsbGJhY2tzKTsKKwor
ICAgIEVYUEVDVF9FUSh3ZWJWaWV3cy5zaXplKCksIDl1bGwpOworICAgIGZvciAoYXV0byYgdmll
dyA6IHdlYlZpZXdzKQorICAgICAgICBFWFBFQ1RfRVEod2ViVmlldy5nZXQoKSwgdmlldy5nZXQo
KSk7CisKKyAgICBzdHJ1Y3QgRXhwZWN0ZWRJbmZvIHsKKyAgICAgICAgdWludDY0X3QgcmVzb3Vy
Y2VMb2FkSUQ7CisgICAgfTsKKyAgICBhdXRvIGNoZWNrTG9hZEluZm8gPSBbXSAoUmV0YWluUHRy
PF9XS1Jlc291cmNlTG9hZEluZm8+JiBpbmZvLCBFeHBlY3RlZEluZm8gZXhwZWN0ZWRJbmZvKSB7
CisgICAgICAgIEVYUEVDVF9FUShpbmZvLmdldCgpLnJlc291cmNlTG9hZElELCBleHBlY3RlZElu
Zm8ucmVzb3VyY2VMb2FkSUQpOworICAgIH07CisgICAgRVhQRUNUX0VRKGxvYWRJbmZvcy5zaXpl
KCksIDl1bGwpOworICAgIGNoZWNrTG9hZEluZm8obG9hZEluZm9zWzBdLCB7IDEgfSk7CisgICAg
Y2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbMV0sIHsgMSB9KTsKKyAgICBjaGVja0xvYWRJbmZvKGxv
YWRJbmZvc1syXSwgeyAxIH0pOworICAgIGNoZWNrTG9hZEluZm8obG9hZEluZm9zWzNdLCB7IDIg
fSk7CisgICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbNF0sIHsgMiB9KTsKKyAgICBjaGVja0xv
YWRJbmZvKGxvYWRJbmZvc1s1XSwgeyAyIH0pOworICAgIGNoZWNrTG9hZEluZm8obG9hZEluZm9z
WzZdLCB7IDMgfSk7CisgICAgY2hlY2tMb2FkSW5mbyhsb2FkSW5mb3NbN10sIHsgMyB9KTsKKyAg
ICBjaGVja0xvYWRJbmZvKGxvYWRJbmZvc1s4XSwgeyAzIH0pOworCisgICAgRVhQRUNUX0VRKG90
aGVyUGFyYW1ldGVycy5zaXplKCksIDl1bGwpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmlu
Z0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzBdIGNsYXNzXSksICJOU011dGFibGVVUkxSZXF1
ZXN0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbMF0gVVJMXS5wYXRo
LCAiLyIpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJh
bWV0ZXJzWzFdIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOworICAgIEVYUEVDVF9XS19T
VFJFUShbb3RoZXJQYXJhbWV0ZXJzWzFdIFVSTF0ucGF0aCwgIi8iKTsKKyAgICBFWFBFQ1RfRVEo
b3RoZXJQYXJhbWV0ZXJzWzJdLCBuaWwpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zy
b21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzNdIGNsYXNzXSksICJOU011dGFibGVVUkxSZXF1ZXN0
Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbM10gVVJMXS5wYXRoLCAi
L2lmcmFtZVNyYyIpOworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3Ro
ZXJQYXJhbWV0ZXJzWzRdIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOworICAgIEVYUEVD
VF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzRdIFVSTF0ucGF0aCwgIi9pZnJhbWVTcmMiKTsK
KyAgICBFWFBFQ1RfRVEob3RoZXJQYXJhbWV0ZXJzWzVdLCBuaWwpOworICAgIEVYUEVDVF9XS19T
VFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJzWzZdIGNsYXNzXSksICJOU011
dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNb
Nl0gVVJMXS5wYXRoLCAiL2ZldGNoVGFyZ2V0Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKE5TU3Ry
aW5nRnJvbUNsYXNzKFtvdGhlclBhcmFtZXRlcnNbN10gY2xhc3NdKSwgIk5TSFRUUFVSTFJlc3Bv
bnNlIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtvdGhlclBhcmFtZXRlcnNbN10gVVJMXS5wYXRo
LCAiL2ZldGNoVGFyZ2V0Iik7CisgICAgRVhQRUNUX0VRKG90aGVyUGFyYW1ldGVyc1s4XSwgbmls
KTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK1RFU1QoUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUsIENoYWxsZW5nZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBT
LCBbXSAoU1NMKiBzc2wpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFzc2wpOyAvLyBDb25uZWN0
aW9uIHNob3VsZCBzdWNjZWVkIGFmdGVyIGEgc2VydmVyIHRydXN0IGNoYWxsZW5nZS4KKyAgICAg
ICAgLy8gU2VuZCBub3RoaW5nIHRvIG1ha2UgdGhlIHJlc291cmNlIGxvYWQgZmFpbC4KKyAgICB9
KTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRp
b25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2
ZWRFcnJvck5vdGlmaWNhdGlvbiA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENo
YWxsZW5nZU5vdGlmaWNpYXRpb24gPSBmYWxzZTsKKyAgICBhdXRvIHJlc291cmNlTG9hZERlbGVn
YXRlID0gYWRvcHROUyhbVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIG5ld10pOworICAgIFtyZXNv
dXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIF9X
S1Jlc291cmNlTG9hZEluZm8gKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxl
bmdlKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1
c3QpOworICAgICAgICByZWNlaXZlZENoYWxsZW5nZU5vdGlmaWNpYXRpb24gPSB0cnVlOworICAg
IH1dOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRDb21wbGV0ZVdpdGhFcnJvcjpe
KFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBrQ0ZVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hv
c3QpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9t
YWluKTsKKyAgICAgICAgcmVjZWl2ZWRFcnJvck5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgfV07
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07Cisg
ICAgW3dlYlZpZXcgX3NldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRl
LmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
aHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEVycm9yTm90aWZpY2F0aW9uKTsKKyAgICBFWFBFQ1Rf
VFJVRShyZWNlaXZlZENoYWxsZW5nZU5vdGlmaWNpYXRpb24pOworfQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzA1LDcgKzE3MDUsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBUaHJvdHRsZUNyYXNoKQogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewogICAgICAgICB7ICIvIiwgeyBt
YWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHNjcmlwdEJ5dGVzLCB7eyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19IH0gfSwKKyAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24gMjU0MTgz
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3OCw3ICs1NzgsNyBAQCBURVNU
KFdlYktpdCwgQXBwbGljYXRpb25DYWNoZURpcmVjdG9yaWVzCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewogICAgICAgICB7ICIvaW5kZXguaHRtbCIsIHsgIjxodG1sIG1h
bmlmZXN0PSd0ZXN0LmFwcGNhY2hlJz4iIH0gfSwKICAgICAgICAgeyAiL3Rlc3QuYXBwY2FjaGUi
LCB7ICJDQUNIRSBNQU5JRkVTVFxuaW5kZXguaHRtbFxudGVzdC5tcDRcbiIgfSB9LAotICAgICAg
ICB7ICIvdGVzdC5tcDQiLCB7ICJ0ZXN0ISIsIHt7ICJDb250ZW50LVR5cGUiLCAidmlkZW8vdGVz
dCIgfX19fSwKKyAgICAgICAgeyAiL3Rlc3QubXA0IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgInZp
ZGVvL3Rlc3QiIH19LCAidGVzdCEiIH19LAogICAgIH0pOwogICAgIAogICAgIE5TVVJMICp0ZW1w
RGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDdXN0b21QYXRoc1Rlc3QiXSBpc0RpcmVjdG9y
eTpZRVNdOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlz
aW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw5ICs1MiwxMyBAQCBwcml2YXRlOgogc3RydWN0IEhUVFBTZXJ2
ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgSFRUUFJlc3BvbnNlKFN0cmluZyYmIGJvZHkpCiAgICAg
ICAgIDogYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0KLSAgICBIVFRQUmVzcG9uc2UoU3RyaW5nJiYg
Ym9keSwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMpCi0gICAgICAgIDog
Ym9keShXVEZNb3ZlKGJvZHkpKQotICAgICAgICAsIGhlYWRlckZpZWxkcyhXVEZNb3ZlKGhlYWRl
ckZpZWxkcykpIHsgfQorICAgIEhUVFBSZXNwb25zZShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYm
IGhlYWRlckZpZWxkcywgU3RyaW5nJiYgYm9keSkKKyAgICAgICAgOiBoZWFkZXJGaWVsZHMoV1RG
TW92ZShoZWFkZXJGaWVsZHMpKQorICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9Cisg
ICAgSFRUUFJlc3BvbnNlKHVuc2lnbmVkIHN0YXR1c0NvZGUsIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiYgaGVhZGVyRmllbGRzLCBTdHJpbmcmJiBib2R5ID0geyB9KQorICAgICAgICA6IHN0YXR1
c0NvZGUoc3RhdHVzQ29kZSkKKyAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJG
aWVsZHMpKQorICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CiAKICAgICBIVFRQUmVz
cG9uc2UoY29uc3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0OwogICAgIEhUVFBSZXNwb25zZShI
VFRQUmVzcG9uc2UmJikgPSBkZWZhdWx0OwpAQCAtNjIsOCArNjYsOSBAQCBzdHJ1Y3QgSFRUUFNl
cnZlcjo6SFRUUFJlc3BvbnNlIHsKICAgICBIVFRQUmVzcG9uc2UmIG9wZXJhdG9yPShjb25zdCBI
VFRQUmVzcG9uc2UmKSA9IGRlZmF1bHQ7CiAgICAgSFRUUFJlc3BvbnNlJiBvcGVyYXRvcj0oSFRU
UFJlc3BvbnNlJiYpID0gZGVmYXVsdDsKICAgICAKLSAgICBTdHJpbmcgYm9keTsKKyAgICB1bnNp
Z25lZCBzdGF0dXNDb2RlIHsgMjAwIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaGVh
ZGVyRmllbGRzOworICAgIFN0cmluZyBib2R5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2
aXNpb24gMjU0MTgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxOCBAQCBIVFRQU2VydmVyOjpIVFRQU2VydmVy
KHN0ZDo6aW5pdGlhbGl6ZXJfCiAgICAgbndfbGlzdGVuZXJfc3RhcnQobV9saXN0ZW5lci5nZXQo
KSk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0dXNDb2RlKQor
eworICAgIHN3aXRjaCAoc3RhdHVzQ29kZSkgeworICAgIGNhc2UgMjAwOgorICAgICAgICByZXR1
cm4gIk9LIl9zOworICAgIGNhc2UgMzAxOgorICAgICAgICByZXR1cm4gIk1vdmVkIFBlcm1hbmVu
dGx5Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9
OworfQorCiB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2Nvbm5lY3Rpb25f
dCBjb25uZWN0aW9uKQogewogICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAx
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIF4oZGlzcGF0Y2hfZGF0YV90
IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wgY29tcGxldGUsIG53
X2Vycm9yX3QgZXJyb3IpIHsKQEAgLTc2LDcgKzg4LDExIEBAIHZvaWQgSFRUUFNlcnZlcjo6cmVz
cG9uZFRvUmVxdWVzdHMobndfY28KICAgICAgICAgCiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBt
X3JlcXVlc3RSZXNwb25zZU1hcC5nZXQocGF0aCk7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVz
cG9uc2VCdWlsZGVyOwotICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAy
MDAgT0tcclxuQ29udGVudC1MZW5ndGg6ICIpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBw
ZW5kKCJIVFRQLzEuMSAiKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihy
ZXNwb25zZS5zdGF0dXNDb2RlKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgnICcp
OworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHN0YXR1c1RleHQocmVzcG9uc2Uuc3Rh
dHVzQ29kZSkpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1M
ZW5ndGg6ICIpOwogICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3BvbnNl
LmJvZHkubGVuZ3RoKCkpOwogICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuIik7
CiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHJlc3BvbnNlLmhlYWRlckZpZWxkcykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387350</attachid>
            <date>2020-01-10 09:48:18 -0800</date>
            <delta_ts>2020-01-10 09:51:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206037-20200110094817.patch</filename>
            <type>text/plain</type>
            <size>79767</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDIwLTAxLTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwYW5kIF9XS1Jl
c291cmNlTG9hZERlbGVnYXRlIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzEz
MjI5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFk
ZCA1IGluZm9ybWF0aXZlIGRlbGVnYXRlIGNhbGxiYWNrcyBhdCB0aGVzZSB0aW1lcyBkdXJpbmcg
dGhlIGxvYWRpbmcgcHJvY2VzczoKKyAgICAgICAgMS4gV2hlbiBhIHJlcXVlc3QgaXMgc2VudC4K
KyAgICAgICAgMi4gV2hlbiBhIHJlZGlyZWN0IGhhcHBlbnMuCisgICAgICAgIDMuIFdoZW4gYSBj
aGFsbGVuZ2UgaGFwcGVucy4KKyAgICAgICAgNC4gV2hlbiBhIHJlc3BvbnNlIGlzIHJlY2VpdmVk
LgorICAgICAgICA1LiBXaGVuIGxvYWRpbmcgY29tcGxldGVzIG9yIGZhaWxzLgorCisgICAgICAg
IEFzIG1lbnRpb25lZCBpbiByMjU0MTgzIHRoZXNlIGNhbGxiYWNrcyBhcmUgb25seSBjYWxsZWQg
d2hlbiBhIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlIGlzIGdpdmVuIHRvIGEgV0tXZWJWaWV3Lgor
ICAgICAgICBXZSBhZGQgYSBuZXcgc3RydWN0IFJlc291cmNlTG9hZEluZm8gd2hpY2ggd2lsbCBu
ZWVkIHRvIGJlIGV4cGFuZGVkIGNvbnRhaW5pbmcgY3VycmVudGx5IG9ubHkgdGhlIGxvYWQgaWRl
bnRpZmllci4KKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3RzIHdoaWNoIHZlcmlmeSB0
aGUgdmFsaWRpdHkgb2YgdGhlIHNlbnQgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENsaWVudDo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVSZXNvdXJjZUxvYWRJRCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VMb2FkSW5mbyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWls
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIEFkZCBhIHdheSB0byBzZW5kIGEgbWVzc2FnZSBpbmZv
cm1pbmcgdGhhdCBhIGNoYWxsZW5nZSBoYXBwZW5lZCB3aXRoIGluZm9ybWF0aW9uIGdhdGhlcmVk
IGZyb20gdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciwKKyAgICAgICAgd2hpY2ggcHJldmlvdXNs
eSB3YXMgbm90IGluZm9ybWVkIG9mIGNoYWxsZW5nZXMgYmVjYXVzZSB0aGUgY2hhbGxlbmdlcyB3
ZW50IGRpcmVjdGx5IGZyb20gdGhlIE5ldHdvcmtMb2FkIHRvIHRoZSBBdXRoZW50aWNhdGlvbk1h
bmFnZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAg
ICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9h
ZEluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZEluZm86OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZEluZm86OmRlY29kZSk6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJl
c291cmNlTG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VM
b2FkSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291
cmNlTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWRJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVzb3VyY2VMb2FkSW5mby5tbTogQWRkZWQuCisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZElu
Zm8gZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9h
ZElEXSk6CisgICAgICAgICgtW19XS1Jlc291cmNlTG9hZEluZm8gX2FwaU9iamVjdF0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSk6CisgICAgICAgIEFuIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgd2FzIG9ubHkgdXNlZCBmb3IgY2hhbGxlbmdlcyB0
aGF0IG5lZWRlZCBjcmVkZW50aWFscywgc28gdGhleSB3cmFwcGVkIGEgQ29tcGxldGlvbkhhbmRs
ZXIuCisgICAgICAgIFRoaXMgbmV3IHR5cGUgb2YgaW5mb3JtYXRpdmUtb25seSBjaGFsbGVuZ2Ug
d2lsbCBiZSBnaXZlbiBhIG51bGwgQ29tcGxldGlvbkhhbmRsZXIsIHdoaWNoIG1lYW5zIG5vIGFj
dGlvbiBjYW4gYmUgdGFrZW4uCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9h
ZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6c2V0RGVsZWdh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2Fk
Q2xpZW50OjpkaWRTZW5kUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3Vy
Y2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlQ2hhbGxlbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJl
c291cmNlTG9hZENsaWVudDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNl
aXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVz
b3VyY2VMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwYWdlV2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQ
aW5nTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dCk6CisKIDIwMjAtMDEtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDYgKzI2NCw3IEBAIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXQKIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxv
YWRJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Nlc3Npb25TdGF0ZS5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tUZXh0SW5wdXRDb250ZXh0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU0MTgzKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OSw2ICsxODksOCBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjCiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUNoYWxs
ZW5nZShjaGFsbGVuZ2UpOworCiAgICAgYXV0byBzY2hlbWUgPSBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hlbWUoKTsKICAgICBib29sIGlzVExTSGFuZHNoYWtl
ID0gc2NoZW1lID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2VydmVyVHJ1
c3RFdmFsdWF0aW9uUmVxdWVzdGVkCiAgICAgICAgIHx8IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZUNsaWVudENlcnRpZmljYXRlUmVxdWVzdGVkOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAko
cmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwpAQCAt
NTQsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgeyB9OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZEluZm8uaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMTA0LDYgKzEw
NSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQogICAgICwgbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3NFbmFibGVkKCkpCisgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTMyMyw3ICszMjUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2Vz
ID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVx
dWVzdCgpLnVybCgpKTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9h
ZENsaWVudCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlBh
Z2VXaWxsU2VuZFJlcXVlc3QobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXF1ZXN0KSwg
MCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNl
TG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1l
dGVycyksICpuZXR3b3JrU2Vzc2lvbik7CkBAIC0zMzEsNiArMzMzLDEzIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JXtw
dWJsaWN9cykiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwog
fQogCitSZXNvdXJjZUxvYWRJbmZvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VMb2Fk
SW5mbygpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRJRAorICAgIH07
Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVz
dWx0KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC01NDcsNiArNTU2LDkg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogU2VuZGluZyBXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZT0lZCkiLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7CiAK
KyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAg
IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNl
aXZlUmVzcG9uc2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZv
KCksIHJlc3BvbnNlKSwgMCk7CisKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSkgewogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjIzLDYgKzYzNSw5
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKIAogICAgIHRyeVN0
b3JlQXNDYWNoZUVudHJ5KCk7CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJj
ZUxvYWRDbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpSZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihtX3BhcmFtZXRlcnMud2ViUGFnZVBy
b3h5SUQsIHJlc291cmNlTG9hZEluZm8oKSwgeyB9KSwgMCk7CisKICAgICBjbGVhbnVwKExvYWRS
ZXN1bHQ6OlN1Y2Nlc3MpOwogfQogCkBAIC02NTUsNiArNjcwLDkgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaQogI2VuZGlmCiAgICAgfQogCisgICAgaWYgKG1fcGFy
YW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rpb24t
Pm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3Io
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCByZXNvdXJjZUxvYWRJbmZvKCksIGVycm9yKSwg
MCk7CisKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQogCkBAIC02NjQsNiAr
NjgyLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGgKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkQmxvY2tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVD
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAg
ICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJjZUxvYWREaWRSZWNlaXZl
Q2hhbGxlbmdlKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5mbygp
LCBjaGFsbGVuZ2UpLCAwKTsKK30KKwogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTY5MCw2ICs3MTQsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDoiKTsKICAgICArK21fcmVkaXJl
Y3RDb3VudDsKKyAgICBtX3JlZGlyZWN0UmVzcG9uc2UgPSByZWRpcmVjdFJlc3BvbnNlOwogCiAg
ICAgT3B0aW9uYWw8QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uPiBhZENsaWNrQ29udmVy
c2lvbjsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC04NjUsNiArODkw
LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKIAogICAgIGlm
IChtX25ldHdvcmtMb2FkKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0OiBUZWxsaW5nIE5ldHdvcmtMb2FkIHRvIHByb2NlZWQgd2l0aCB0
aGUgcmVkaXJlY3QiKTsKKworICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJj
ZUxvYWRDbGllbnQgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNlTG9hZEluZm8o
KSwgbV9yZWRpcmVjdFJlc3BvbnNlLCBuZXdSZXF1ZXN0KSwgMCk7CisKICAgICAgICAgbV9uZXR3
b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGll
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KQEAgLTU0LDYgKzU1
LDggQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNo
VGFzazsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIAorc3RydWN0IFJlc291cmNlTG9h
ZEluZm87CisKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnk7CiB9CkBAIC05
NywxNiArMTAwLDE3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2FkRGF0YTsK
IAogICAgIC8vIE5ldHdvcmtMb2FkQ2xpZW50LgotICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KLSAgICB2
b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsOworICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CisgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQg
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZp
bmFsOworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIGNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKIApAQCAtMTk1LDYgKzE5OSw4IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25hbDxTZWNv
bmRzPiB2YWxpZGF0ZUNhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVk
aXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKKyAgICBS
ZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKKwogICAgIGNvbnN0IE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwpAQCAtMjM0LDYgKzI0MCw4IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiAjZW5kaWYK
KyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX3Jlc291cmNlTG9hZElEOworICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9OZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVHlwZT47CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJj
ZUxvYWRJbmZvLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3Vy
Y2VMb2FkSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHsKKworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIHJlc291cmNlTG9hZElEOworICAgIAorICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2Fk
SUQ7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFJlc291cmNlTG9hZEluZm8+IGRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSUQ7CisgICAgICAgIGRlY29kZXIg
Pj4gcmVzb3VyY2VMb2FkSUQ7CisgICAgICAgIGlmICghcmVzb3VyY2VMb2FkSUQpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAg
ICAgV1RGTW92ZSgqcmVzb3VyY2VMb2FkSUQpLAorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBy
b3RlY3Rpb25TcGFjZSwKICAgICAgICAgUmVuZGVyTGF5ZXIsCiAgICAgICAgIFJlbmRlck9iamVj
dCwKKyAgICAgICAgUmVzb3VyY2VMb2FkSW5mbywKICAgICAgICAgU2VjdXJpdHlPcmlnaW4sCiAg
ICAgICAgIFNlc3Npb25TdGF0ZSwKICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlLApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkocmV2aXNpb24gMjU0MTgz
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Jlc291cmNl
TG9hZEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cnN0UGFydHlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFs
LmgiCkBAIC0zMzIsNiArMzMzLDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBz
aXplLCBUeXAKICAgICAgICAgd3JhcHBlciA9IFtfV0tDdXN0b21IZWFkZXJGaWVsZHMgYWxsb2Nd
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6UmVzb3VyY2VMb2FkSW5mbzoKKyAg
ICAgICAgd3JhcHBlciA9IFtfV0tSZXNvdXJjZUxvYWRJbmZvIGFsbG9jXTsKKyAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKICAgICBjYXNlIFR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5OgogICAgICAgICB3cmFwcGVyID0gW19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MTYsMTAg
KzU5MTYsMzQgQEAgV2ViSW5zcGVjdG9yUHJveHkqIFdlYlBhZ2VQcm94eTo6aW5zcGVjdAogICAg
IHJldHVybiBtX2luc3BlY3Rvci5nZXQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OndpbGxT
ZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkSW5m
byYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAg
IGlmIChtX3Jlc291cmNlTG9hZENsaWVudCkKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQt
PndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQt
PmRpZFNlbmRSZXF1ZXN0KFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCit7CisgICAg
aWYgKG1fcmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+
ZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKGxvYWRJbmZvKSwgV1RGTW92ZShyZXNw
b25zZSksIFdURk1vdmUocmVxdWVzdCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb3Vy
Y2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKQoreworICAgIGlm
IChtX3Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQtPmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV1RGTW92ZShsb2FkSW5mbyksIGNoYWxsZW5nZSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VM
b2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
Cit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX3Jlc291cmNlTG9h
ZENsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUobG9hZEluZm8pLCBXVEZNb3ZlKHJl
c3BvbnNlKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNvdXJjZUxvYWREaWRDb21wbGV0
ZVdpdGhFcnJvcihSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJiBlcnJvcikKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihXVEZNb3ZlKGxvYWRJ
bmZvKSwgV1RGTW92ZShlcnJvcikpOwogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NDE4
MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjIsNiArMzIyLDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3Ry
dWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKIHN0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgUERG
Q29udGV4dE1lbnU7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIHN0cnVjdCBXZWJBdXRvY29y
cmVjdGlvbkRhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiBzdHJ1Y3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZTsKQEAgLTQ2Nyw3ICs0NjgsMTEgQEAgcHVibGljOgogCiAgICAgV2Vi
SW5zcGVjdG9yUHJveHkqIGluc3BlY3RvcigpIGNvbnN0OwogCi0gICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCByZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVD
aGFsbGVuZ2UoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CisgICAgdm9pZCBy
ZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJik7CiAKICAgICB2b2lkIGRpZENoYW5nZUluc3BlY3RvckZyb250
ZW5kQ291bnQodW5zaWduZWQgY291bnQpIHsgbV9pbnNwZWN0b3JGcm9udGVuZENvdW50ID0gY291
bnQ7IH0KICAgICB1bnNpZ25lZCBpbnNwZWN0b3JGcm9udGVuZENvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9pbnNwZWN0b3JGcm9udGVuZENvdW50OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCShyZXZpc2lvbiAyNTQx
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEzICsyNSwyMiBAQAogCiAjcHJhZ21hIG9uY2UKIAor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Owor
c3RydWN0IFJlc291cmNlTG9hZEluZm87Cit9CisKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBS
ZXNvdXJjZUxvYWRDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZENs
aWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kUmVxdWVzdChXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5m
byYmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OlJlc291cmNlTG9hZElu
Zm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZElu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3Vy
Y2VMb2FkSW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElSZXNvdXJjZUxvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgUmVz
b3VyY2VMb2FkSW5mbyBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UmVz
b3VyY2VMb2FkSW5mbz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVzb3VyY2VMb2FkSW5m
bz4gY3JlYXRlKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGluZm8pCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRJbmZvKFdURk1vdmUoaW5mbykpKTsK
KyAgICB9CisKKyAgICBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291
cmNlTG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLnJlc291cmNlTG9hZElEOyB9CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgUmVzb3VyY2VMb2FkSW5mbyhXZWJLaXQ6OlJlc291cmNlTG9h
ZEluZm8mJiBpbmZvKQorICAgICAgICA6IG1faW5mbyhXVEZNb3ZlKGluZm8pKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gbV9pbmZvOworCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lv
biAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDE5IEBACiAKICNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIF9XS1Jlc291cmNlTG9hZElu
Zm87CisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQHByb3RvY29sIF9XS1Jlc291cmNlTG9h
ZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Owor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVz
b3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdDsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJj
ZUxvYWQ6KF9XS1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3Q7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVz
b3VyY2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVD
aGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2U7CistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVzb3VyY2VMb2FkOihfV0tSZXNvdXJj
ZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25z
ZSAqKXJlc3BvbnNlOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291
cmNlTG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcjooTlNFcnJvciAqIF9fbnVsbGFibGUpZXJyb3I7CiAKIEBlbmQKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VM
b2FkSW5mby5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZXNvdXJjZUxvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tS
ZXNvdXJjZUxvYWRJbmZvIDogTlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFW
QUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2NF90IHJlc291cmNlTG9hZElEOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm8ubW0JKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9h
ZEluZm8ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mby5oIgorCisjaW1w
b3J0ICJBUElSZXNvdXJjZUxvYWRJbmZvLmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRJbmZv
SW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS1Jlc291cmNlTG9hZEluZm8KKworLSAo
dm9pZClkZWFsbG9jCit7CisgICAgX2luZm8tPkFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6flJlc291
cmNlTG9hZEluZm8oKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHVpbnQ2NF90KXJl
c291cmNlTG9hZElECit7CisgICAgcmV0dXJuIF9pbmZvLT5yZXNvdXJjZUxvYWRJRCgpLnRvVUlu
dDY0KCk7Cit9CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpf
aW5mbzsKK30KKworQGVuZAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZEluZm9JbnRlcm5hbC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWRJbmZvSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSVJlc291cmNlTG9hZEluZm8u
aCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRJbmZvLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRz
PEFQSTo6UmVzb3VyY2VMb2FkSW5mbz4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS1Jl
c291cmNlTG9hZEluZm87Cit9OworCit9CisKK0BpbnRlcmZhY2UgX1dLUmVzb3VyY2VMb2FkSW5m
byAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6
UmVzb3VyY2VMb2FkSW5mbz4gX2luZm87Cit9CitAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkocmV2aXNpb24gMjU0MTgzKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgV2Vha1B0cjxTZWNLZXlQcm94eVN0b3JlPiYmIHNlY0tleVByb3h5U3RvcmUp
CiAgICAgOiBtX2NvcmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKSkKLSAgICAsIG1fbGlzdGVuZXIoQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjpjcmVhdGUoW2NoYWxsZW5nZUlELCBjb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0
aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdURk1vdmUoc2VjS2V5UHJveHlTdG9yZSldKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAgICAsIG1fbGlzdGVuZXIoQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUoY2hhbGxlbmdlSUQgPyBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmKT4oW2NoYWxsZW5nZUlELCBjb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0
aW9uKSwgc2VjS2V5UHJveHlTdG9yZSA9IFdURk1vdmUoc2VjS2V5UHJveHlTdG9yZSldKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICNpZiBIQVZFKFNFQ19LRVlfUFJPWFkpCiAgICAg
ICAgIGlmIChzZWNLZXlQcm94eVN0b3JlICYmIHNlY0tleVByb3h5U3RvcmUtPmluaXRpYWxpemUo
Y3JlZGVudGlhbCkpIHsKICAgICAgICAgICAgIHNlbmRDbGllbnRDZXJ0aWZpY2F0ZUNyZWRlbnRp
YWxPdmVyWHBjKGNvbm5lY3Rpb24sICpzZWNLZXlQcm94eVN0b3JlLCBjaGFsbGVuZ2VJRCwgY3Jl
ZGVudGlhbCk7CkBAIC01Myw3ICs1Myw3IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6
OkF1dGhlbnRpY2EKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Q29tcGxldGVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjaGFsbGVuZ2VJRCwgZGlzcG9zaXRpb24sIGNyZWRlbnRpYWwpLCAwKTsKLSAgICB9
KSkKKyAgICB9KSA6IG51bGxwdHIpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDI1
NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVn
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDExIEBAIHByaXZhdGU6CiAKICAgICBw
cml2YXRlOgogICAgICAgICAvLyBBUEk6OlJlc291cmNlTG9hZENsaWVudAotICAgICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBm
aW5hbDsKKyAgICAgICAgdm9pZCBkaWRTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRJbmZvJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJikgY29uc3QgZmluYWw7Cisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGNvbnN0IGZpbmFsOworICAgICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJikgY29uc3QgZmluYWw7CisgICAgICAgIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpIGNvbnN0
IGZpbmFsOwogCiAgICAgICAgIFJlc291cmNlTG9hZERlbGVnYXRlJiBtX3Jlc291cmNlTG9hZERl
bGVnYXRlOwogICAgIH07CkBAIC02Niw3ICs3MCwxMSBAQCBwcml2YXRlOgogICAgIFdlYWtPYmpD
UHRyPGlkIDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwogCiAgICAgc3Ry
dWN0IHsKLSAgICAgICAgYm9vbCB3aWxsU2VuZFJlcXVlc3QgOiAxOworICAgICAgICBib29sIGRp
ZFNlbmRSZXF1ZXN0IDogMTsKKyAgICAgICAgYm9vbCBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
IDogMTsKKyAgICAgICAgYm9vbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIDogMTsKKyAgICAgICAgYm9v
bCBkaWRSZWNlaXZlUmVzcG9uc2UgOiAxOworICAgICAgICBib29sIGRpZENvbXBsZXRlV2l0aEVy
cm9yIDogMTsKICAgICB9IG1fZGVsZWdhdGVNZXRob2RzOwogfTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0J
KHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1w
b3J0ICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogCiAjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5oIgorI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC01MSw3ICs1MiwxNiBAQCB2b2lkIFJlc291cmNlTG9hZERl
bGVnYXRlOjpzZXREZWxlZ2F0ZShpCiB7CiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCi0g
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0ID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzp3aWxsU2VuZFJlcXVlc3Q6KV07CisgICAgLy8g
cmVzb3VyY2VXaXRoSUQ6CisgICAgLy8gdHlwZToKKyAgICAvLyBfV0tGcmFtZUhhbmRsZSBmcmFt
ZToKKyAgICAvLyBfV0tGcmFtZUhhbmRsZSBwYXJlbnRGcmFtZToKKyAgICAKKyAgICBtX2RlbGVn
YXRlTWV0aG9kcy5kaWRTZW5kUmVxdWVzdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFNlbmRSZXF1ZXN0OildOworICAgIG1f
ZGVsZWdhdGVNZXRob2RzLmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZGlk
UmVjZWl2ZUNoYWxsZW5nZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFJlY2VpdmVDaGFsbGVuZ2U6KV07CisgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMuZGlkUmVjZWl2ZVJlc3BvbnNlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZUxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOild
OworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRpZENvbXBsZXRlV2l0aEVycm9yID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZUxvYWQ6ZGlkQ29t
cGxldGVXaXRoRXJyb3I6KV07CiB9CiAKIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxv
YWRDbGllbnQ6OlJlc291cmNlTG9hZENsaWVudChSZXNvdXJjZUxvYWREZWxlZ2F0ZSYgZGVsZWdh
dGUpCkBAIC02MSwxNiArNzEsNjQgQEAgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9h
ZENsaWVudAogCiBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50Ojp+UmVz
b3VyY2VMb2FkQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlTG9hZERlbGVnYXRl
OjpSZXNvdXJjZUxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ6OmRpZFNlbmRSZXF1ZXN0KFdlYktpdDo6UmVzb3VyY2VMb2FkSW5m
byYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBjb25zdAog
ewotICAgIGlmICghbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53aWxs
U2VuZFJlcXVlc3QpCisgICAgaWYgKCFtX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLmRpZFNlbmRSZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGRlbGVn
YXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICgh
ZGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVz
b3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIHdpbGxTZW5kUmVxdWVzdDpy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQ
Qm9keSldOworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93
ZWJWaWV3LmdldCgpLmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2Fk
SW5mbzo6Y3JlYXRlKFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkU2VuZFJlcXVlc3Q6cmVx
dWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJv
ZHkpXTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50
OjpkaWRQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGxv
YWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9h
ZERlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Jlc291cmNlTG9hZERlbGVn
YXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX3dlYlZp
ZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxvYWRJbmZv
OjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1
ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8mJiBsb2FkSW5mbywgV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3Jlc291cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmRpZFJlY2VpdmVDaGFsbGVu
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3Jlc291cmNlTG9h
ZERlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
X3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVzb3VyY2VMb2FkOndyYXBwZXIoQVBJOjpSZXNvdXJjZUxv
YWRJbmZvOjpjcmVhdGUoV1RGTW92ZShsb2FkSW5mbykpLmdldCgpKSBkaWRSZWNlaXZlQ2hhbGxl
bmdlOndyYXBwZXIoY2hhbGxlbmdlKV07Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6
OlJlc291cmNlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6UmVzb3VyY2VM
b2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
IGNvbnN0Cit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGVNZXRo
b2RzLmRpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkZWxl
Z2F0ZSA9IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAo
IWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Jl
c291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXNvdXJjZUxvYWQ6d3Jh
cHBlcihBUEk6OlJlc291cmNlTG9hZEluZm86OmNyZWF0ZShXVEZNb3ZlKGxvYWRJbmZvKSkuZ2V0
KCkpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOworfQorCit2
b2lkIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZENvbXBsZXRl
V2l0aEVycm9yKFdlYktpdDo6UmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYgZXJyb3IpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9hZERl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmRpZENvbXBsZXRlV2l0aEVycm9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2Rl
bGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgp
LmdldCgpIHJlc291cmNlTG9hZDp3cmFwcGVyKEFQSTo6UmVzb3VyY2VMb2FkSW5mbzo6Y3JlYXRl
KFdURk1vdmUobG9hZEluZm8pKS5nZXQoKSkgZGlkQ29tcGxldGVXaXRoRXJyb3I6ZXJyb3IubnNF
cnJvcigpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDI1NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MiwxMyArNDUyLDUwIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nR2xvYmFsRGlhZ24KICAgICAgICAgcGFnZS0+
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUobWVzc2FnZSwgZGVzY3JpcHRpb24sIHZhbHVl
LCBzaWduaWZpY2FudEZpZ3VyZXMsIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cGFnZVdpbGxTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHBhZ2UtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBwYWdlLT5yZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChXVEZNb3ZlKGxvYWRJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSk7
Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2Fk
SW5mbyYmIGxvYWRJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCit7CisgICAgYXV0byogcGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcGFnZS0+cmVzb3VyY2VMb2FkRGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXVEZNb3ZlKGxvYWRJbmZvKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCkp
OworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZEluZm8m
JiBsb2FkSW5mbywgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2Up
Cit7CisgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwor
ICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjaGFsbGVuZ2VQcm94
eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKGNoYWxsZW5n
ZSksIDAsICpjb25uZWN0aW9uKCksIG51bGxwdHIpOworICAgIHBhZ2UtPnJlc291cmNlTG9hZERp
ZFJlY2VpdmVDaGFsbGVuZ2UoV1RGTW92ZShsb2FkSW5mbyksIGNoYWxsZW5nZVByb3h5LmdldCgp
KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNvdXJjZUxvYWREaWRSZWNlaXZl
UmVzcG9uc2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZEluZm8m
JiBsb2FkSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQoreworICAg
IGF1dG8qIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnJlc291cmNlTG9hZERpZFJlY2Vp
dmVSZXNwb25zZShXVEZNb3ZlKGxvYWRJbmZvKSwgV1RGTW92ZShyZXNwb25zZSkpOworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc291cmNlTG9hZERpZENvbXBsZXRlV2l0aEVycm9y
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJbmZvJiYgbG9hZElu
Zm8sIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikKK3sKKyAgICBhdXRvKiBwYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYWdlLT5yZXNvdXJjZUxvYWREaWRDb21wbGV0ZVdpdGhFcnJvcihX
VEZNb3ZlKGxvYWRJbmZvKSwgV1RGTW92ZShlcnJvcikpOwogfQogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNTQxODMpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNjQsMTIgKzY0LDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OworCiBlbnVtIGNs
YXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0
aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7CisKIHN0cnVjdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKLWNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Oworc3RydWN0IFJlc291cmNlTG9hZEluZm87CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxO
ZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CkBAIC0yMDEsNyArMjA0LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAotICAgIHZvaWQgcGFnZVdpbGxTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHJlc291cmNl
TG9hZERpZFNlbmRSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElu
Zm8mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2Fk
RGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJj
ZUxvYWRJbmZvJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJbmZvJiYsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYpOworICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9j
ZXNzUHJveHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1
NDE4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjgsNSArNjgsOSBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKICAg
ICAKLSAgICBQYWdlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAg
UmVzb3VyY2VMb2FkRGlkU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNl
TG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc291cmNl
TG9hZERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZXNvdXJjZUxvYWRJbmZvIHJlc291
cmNlTG9hZEluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgUmVzb3VyY2VMb2FkRGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbywgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKQorICAgIFJlc291cmNlTG9h
ZERpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBSZXNvdXJjZUxvYWRE
aWRDb21wbGV0ZVdpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjU0MTgzKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNp
bXBvcnQgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9y
dCAiVXNlckRhdGEuaCIKICNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJZGlvbS5oIgogI2ltcG9ydCAi
VmVyc2lvbkNoZWNrcy5oIgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTQxODMpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcwLDYg
KzExNzAsOCBAQAogCQk1Q0IyMzc4QzFERjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGlj
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Iy
Mzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMjM3OEUxREYwRTBEMzAw
MTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJNUNCN0FGRTAyM0M1MkNFNTAw
RTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dL
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1Q0I3QUZFNzIzQzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2Fk
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNC
N0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLzsgfTsKKwkJNUNC
N0FGRTgyM0M2OUI2MTAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkUzMjNDNjdEMzcwMEU0
OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCQzlCOEUxQzY1MkNBMDAwQThGRENGIC8qIE5ldHdv
cmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovOyB9Owog
CQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1RDIzODgyMjdB
MTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSAqLzsgfTsKIAkJNUNEMjg2
NTExRTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4NjREMUU3MjJGNDQwMDk0
RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMzg5Niw2ICszODk4LDExIEBACiAJCTVDQjdBRkRE
MjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0I3QUZERTIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCN0FG
REYyM0M1MkNCQzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkUyMjNDNjdEMzcwMEU0OUNGMyAvKiBfV0tS
ZXNvdXJjZUxvYWRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLUmVzb3VyY2VMb2FkSW5mby5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCN0FGRTMyM0M2N0QzNzAwRTQ5Q0YzIC8qIF9XS1Jlc291cmNlTG9hZEluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I3QUZFNDIzQzY3RDY0MDBFNDlDRjMgLyogQVBJUmVz
b3VyY2VMb2FkSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElSZXNv
dXJjZUxvYWRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkU1MjND
NjdERjkwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkSW5mb0ludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBS
ZXNvdXJjZUxvYWRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291
cmNlTG9hZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1
MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOZXR3b3JrRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQzVEQjkxMjE0ODhFMTYwMDZD
QjhBOCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM5MDgsNiArMzkxNSw3IEBACiAJCTVDRDI4NjRFMUU3MjJGNDQwMDk0
RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNEMjg2NEYxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1
bGVMaXN0U3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0NvbnRlbnRSdWxlTGlzdFN0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNEMjg2NTAxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmVQ
cml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGVudFJ1bGVM
aXN0U3RvcmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDRDc0OEI1
MjNDOEVCMTkwMDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0UwQzM2NjIyOUYyRDNEMDAzNjk1
RjAgLyogQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFMEMzNjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQSUNvbnRl
eHRNZW51RWxlbWVudEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0UwQzM2ODIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUVsZW1l
bnRJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwNiw2ICs1NjE0LDcg
QEAKIAkJCQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5o
ICovLAogCQkJCTFBRENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rp
b25EYXRhLmggKi8sCisJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCiAJCQkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8q
IE9wdGlvbmFsQ2FsbGJhY2tJRC5oICovLAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0Ig
LyogUGVyc2lzdGVuY3lVdGlscy5oICovLApAQCAtNTYxNSw2ICs1NjI0LDcgQEAKIAkJCQlFMUND
MUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5
NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovLAogCQkJCUY2QTBD
MTNGMTMyODFFNkUwMDcwNDMwRiAvKiBSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCAqLywKKwkJCQk1
Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLAogCQkJCTQx
MDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLywKIAkJCQk0MTA0ODJD
QzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovLAogCQkJCTQxQjI4QjA5MUY4M0FE
M0UwMEZCNTJBQyAvKiBSVENQYWNrZXRPcHRpb25zLmNwcCAqLywKQEAgLTY3NzEsNiArNjc4MSw5
IEBACiAJCQkJQTU1QkE4MEQxQkExMkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCTk5MEUxRTA4MjM4NEE4OEIwMDQ2MDJERiAvKiBf
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCAqLywKIAkJCQk1Q0I3
QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLywKKwkJ
CQk1Q0I3QUZFMzIzQzY3RDM3MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkSW5mby5oICovLAor
CQkJCTVDQjdBRkUyMjNDNjdEMzcwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvLm1tICov
LAorCQkJCTVDQjdBRkU1MjNDNjdERjkwMEU0OUNGMyAvKiBfV0tSZXNvdXJjZUxvYWRJbmZvSW50
ZXJuYWwuaCAqLywKIAkJCQk0OUZCRUZGQjIzOUFEQjE4MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLywKIAkJCQk0OUZCRUZGQzIzOUIwMTFEMDBCRDAz
MkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkubW0gKi8sCiAJCQkJNDlC
Q0ExOTAyM0ExNzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5SW50ZXJuYWwuaCAqLywKQEAgLTg0NzAsNiArODQ4Myw3IEBACiAJCQkJN0NFNEQyMUQxQTQ5
MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJ
N0NFNEQyMUUxQTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
ICovLAogCQkJCTVDQjdBRkRBMjNDNDNFNjQwMEU0OUNGMyAvKiBBUElSZXNvdXJjZUxvYWRDbGll
bnQuaCAqLywKKwkJCQk1Q0I3QUZFNDIzQzY3RDY0MDBFNDlDRjMgLyogQVBJUmVzb3VyY2VMb2Fk
SW5mby5oICovLAogCQkJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovLAogCQkJCTQ5QkNBMTk2MjNBMThGNjIwMDI4QTgz
NiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oICovLAogCQkJCTFBRkRF
NjVGMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuY3BwICovLApAQCAtOTgxNyw2
ICs5ODMxLDcgQEAKIAkJCQkzNzcyMTZCODFBNEU2QkUwMDBEQ0E3MTggLyogX1dLUmVuZGVyaW5n
UHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVF
MDM5NSAvKiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0I3QUZFMDIzQzUyQ0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjdBRkU4MjNDNjlCNjEwMEU0OUNGMyAvKiBfV0tS
ZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwMTIzOUIxRjhEMDBC
RDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5QkNBMTk1MjNBMThDRkQwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUZCRjAwMDIz
OUIxRjc1MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCBp
biBIZWFkZXJzICovLApAQCAtMTAyNzcsNiArMTAyOTIsNyBAQAogCQkJCUE1NUJBODFGMUJBMjVC
MjcwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU1QkE4MjUxQkEyNUNGQjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODE3MUJBMjNFMTIwMDdDRDMzRCAvKiBS
ZW1vdGVXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNCN0FGRTcyM0M2ODIw
NzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRTk2
OUNEMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNkJFOTY5Q0IxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkJE
MzY3MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjU0MTgzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjYsOSArNTI2LDEwIEBAIE9wdGlvbmFsPFdlYkxvYWRlclN0cmF0
ZWd5OjpTeW5jTG9hZFJlc3UKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgcmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksICBjb25zdCBGZXRjaE9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVj
dG9yPGNoYXI+JiBkYXRhKQogewotICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxv
YWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWVMb2FkZXIuY2xpZW50KCkp
OwotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwotICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5j
bGllbnQoKSk7CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdl
YkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQ
YWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiBw
YWdlID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmNvcmVQYWdlKCkgOiBudWxscHRyOwogCiAgICAgYXV0
byB3ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlm
aWVyKCkgOiBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIHBhZ2VJRCA9IHdl
YlBhZ2UgPyB3ZWJQYWdlLT5pZGVudGlmaWVyKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CkBAIC01
NzksNiArNTgwLDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luYwog
ICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNl
Y3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgbG9hZFBhcmFtZXRl
cnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnM7CisgICAg
aWYgKHBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGll
bnQgPSBwYWdlLT5oYXNSZXNvdXJjZUxvYWRDbGllbnQoKTsKIAogICAgIGRhdGEuc2hyaW5rKDAp
OwogCkBAIC01OTEsNyArNTk0LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291
cmNlU3luYwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJh
bWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewogICAg
ICAgICBXRUJMT0FERVJTVFJBVEVHWV9XSVRIX0ZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5
bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIik7Ci0gICAgICAgIGlmIChhdXRvKiBw
YWdlID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmNvcmVQYWdlKCkgOiBudWxscHRyKQorICAgICAgICBp
ZiAocGFnZSkKICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9n
RGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5h
bEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25vdXNN
ZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBy
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVy
cm9yKHJlcXVlc3QudXJsKCkpOwpAQCAtNjQ0LDYgKzY0Nyw4IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnIKICAgICAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0
eVBvbGljeSA9IGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkKICAgICAgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGlj
eS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgfQorICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoKSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENs
aWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9hZENsaWVudCgpOwogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKICAgICBsb2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1
bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDMxNykKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAxLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwYW5kIF9X
S1Jlc291cmNlTG9hZERlbGVnYXRlIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxl
Z2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRTZW5kUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
VGVzdFJlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJlc291cmNlTG9h
ZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2VMb2FkOmRpZFJlY2VpdmVDaGFsbGVuZ2U6XSk6Cisg
ICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpk
aWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0
ZSB3ZWJWaWV3OnJlc291cmNlTG9hZDpkaWRDb21wbGV0ZVdpdGhFcnJvcjpdKToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAoLVtUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzp3aWxs
U2VuZFJlcXVlc3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZTo6SFRUUFJl
c3BvbnNlKToKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbm9uLTIwMCBzdGF0dXMg
Y29kZXMgaW4gcmVzcG9uc2VzLgorICAgICAgICBBbHNvIHN3aXRjaCB0aGUgb3JkZXIgb2YgcGFy
YW1ldGVycyB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgaGVhZGVyIGZpZWxkcyBhcmUgc2VudCBi
ZWZvcmUgdGhlIGJvZHkuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3RhdHVzVGV4dCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyk6CisKIDIwMjAtMDEtMDkg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBt
YW5pcHVsYXRpb24gY29udHJvbGxlciBzaG91bGQgbm90IG9ic2VydmUgY2hhbmdlcyBpbiBuZXcg
cmVwbGFjZW1lbnQgZWxlbWVudHMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkocmV2
aXNpb24gMjU0MTgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsMjUgKzI1LDU3IEBA
CiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291cmNlTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLUmVzb3VyY2VMb2FkSW5mby5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
CiBAaW50ZXJmYWNlIFRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZT4KIAotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF53
aWxsU2VuZFJlcXVlc3QpKFdLV2ViVmlldyAqLCBOU1VSTFJlcXVlc3QgKik7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFNlbmRSZXF1ZXN0KShXS1dlYlZpZXcgKiwgX1dL
UmVzb3VyY2VMb2FkSW5mbyAqLCBOU1VSTFJlcXVlc3QgKik7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLV2ViVmlldyAqLCBf
V0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICopOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQ2hhbGxlbmdlKShX
S1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZl
UmVzcG9uc2UpKFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMUmVzcG9u
c2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENvbXBsZXRlV2l0
aEVycm9yKShXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU0Vycm9yICopOwog
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUKIAotLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTZW5kUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
c291cmNlTG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRTZW5kUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIGlmIChfd2lsbFNlbmRSZXF1ZXN0
KQotICAgICAgICBfd2lsbFNlbmRSZXF1ZXN0KHdlYlZpZXcsIHJlcXVlc3QpOworICAgIGlmIChf
ZGlkU2VuZFJlcXVlc3QpCisgICAgICAgIF9kaWRTZW5kUmVxdWVzdCh3ZWJWaWV3LCByZXNvdXJj
ZUxvYWQsIHJlcXVlc3QpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVzb3VyY2VMb2FkOihfV0tSZXNvdXJjZUxvYWRJbmZvICopcmVzb3VyY2VMb2FkIGRpZFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Cit7CisgICAgaWYgKF9kaWRQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKQorICAgICAgICBfZGlkUGVyZm9ybUhUVFBSZWRpcmVjdGlvbih3ZWJWaWV3LCByZXNv
dXJjZUxvYWQsIHJlc3BvbnNlLCByZXF1ZXN0KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9hZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291
cmNlTG9hZCBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQ2hhbGxlbmdlKQorICAgICAgICBf
ZGlkUmVjZWl2ZUNoYWxsZW5nZSh3ZWJWaWV3LCByZXNvdXJjZUxvYWQsIGNoYWxsZW5nZSk7Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvdXJjZUxvYWQ6KF9X
S1Jlc291cmNlTG9hZEluZm8gKilyZXNvdXJjZUxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKKyAg
ICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZSh3ZWJWaWV3LCByZXNvdXJjZUxvYWQsIHJlc3BvbnNl
KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc291cmNlTG9h
ZDooX1dLUmVzb3VyY2VMb2FkSW5mbyAqKXJlc291cmNlTG9hZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAg
ICAgICAgX2RpZENvbXBsZXRlV2l0aEVycm9yKHdlYlZpZXcsIHJlc291cmNlTG9hZCwgZXJyb3Ip
OwogfQogCiBAZW5kCkBAIC02Miw3ICs5NCw3IEBAIFRFU1QoUmVzb3VyY2VMb2FkRGVsZWdhdGUs
IEJhc2ljKQogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdEZyb21E
ZWxlZ2F0ZTsKICAgICBhdXRvIHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdFJl
c291cmNlTG9hZERlbGVnYXRlIG5ld10pOwogICAgIFt3ZWJWaWV3IF9zZXRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTpyZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3Jlc291cmNlTG9hZERl
bGVnYXRlIHNldFdpbGxTZW5kUmVxdWVzdDpeKFdLV2ViVmlldyAqLCBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QpIHsKKyAgICBbcmVzb3VyY2VMb2FkRGVsZWdhdGUgc2V0RGlkU2VuZFJlcXVlc3Q6XihX
S1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qp
IHsKICAgICAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZSA9IHJlcXVlc3Q7CiAgICAgfV07CiAKQEAg
LTcyLDMgKzEwNCwxOTAgQEAgVEVTVChSZXNvdXJjZUxvYWREZWxlZ2F0ZSwgQmFzaWMpCiAgICAg
CiAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3RMb2FkZWQuZ2V0KCkuVVJMLmFic29sdXRlU3Ry
aW5nLCByZXF1ZXN0RnJvbURlbGVnYXRlLmdldCgpLlVSTC5hYnNvbHV0ZVN0cmluZyk7CiB9CisK
KyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRl
LCBCZWFjb25BbmRTeW5jWEhSKQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0sCisgICAgICAgIHsgIi94aHJUYXJn
ZXQiLCB7ICJoaSIgfSB9LAorICAgICAgICB7ICIvYmVhY29uVGFyZ2V0IiwgeyAiaGkiIH0gfSwK
KyAgICB9KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3
XSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCldOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0RnJvbURl
bGVnYXRlOworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENhbGxiYWNrID0gZmFsc2U7CisgICAg
YXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxl
Z2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBfc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXREaWRT
ZW5kUmVxdWVzdDpeKFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCkgeworICAgICAgICByZXF1ZXN0RnJvbURlbGVnYXRlID0gcmVxdWVzdDsK
KyAgICAgICAgcmVjZWl2ZWRDYWxsYmFjayA9IHRydWU7CisgICAgfV07CisKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJuYXZpZ2F0b3Iuc2VuZEJlYWNvbignL2JlYWNvblRhcmdl
dCcpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRDYWxsYmFjayk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIvYmVhY29uVGFyZ2V0
IiwgcmVxdWVzdEZyb21EZWxlZ2F0ZS5nZXQoKS5VUkwucGF0aCk7CisKKyAgICByZWNlaXZlZENh
bGxiYWNrID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OgorICAgICAg
ICBAInZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7IgorICAgICAgICAidmFyIGFz
eW5jaHJvbm91cyA9IGZhbHNlOyIKKyAgICAgICAgInJlcXVlc3Qub3BlbignR0VUJywgJ3hoclRh
cmdldCcsIGFzeW5jaHJvbm91cyk7IgorICAgICAgICAicmVxdWVzdC5zZW5kKCk7IiBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRD
YWxsYmFjayk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIveGhyVGFyZ2V0IiwgcmVxdWVzdEZyb21E
ZWxlZ2F0ZS5nZXQoKS5VUkwucGF0aCk7Cit9CisKK1RFU1QoUmVzb3VyY2VMb2FkRGVsZWdhdGUs
IFJlZGlyZWN0KQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAg
ICAgICAgeyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9fSB9
IH0sCisgICAgICAgIHsgIi9yZWRpcmVjdFRhcmdldCIsIHsgImhpIiB9IH0sCisgICAgfSk7CisK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGF1dG8gcmVzb3VyY2VMb2FkRGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgW3Jl
c291cmNlTG9hZERlbGVnYXRlIHNldERpZFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246XihXS1dlYlZp
ZXcgKiwgX1dLUmVzb3VyY2VMb2FkSW5mbyAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5V
UkwucGF0aCwgIi8iKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLnBhdGgs
ICIvcmVkaXJlY3RUYXJnZXQiKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcg
X3NldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBM
b2FkSW5mbykKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAg
ICAgIHsgIi8iLCB7ICI8aWZyYW1lIHNyYz0naWZyYW1lU3JjJz48L2lmcmFtZT4iIH0gfSwKKyAg
ICAgICAgeyAiL2lmcmFtZVNyYyIsIHsgIjxzY3JpcHQ+ZmV0Y2goJ2ZldGNoVGFyZ2V0Jyk8L3Nj
cmlwdD4iIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoVGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9
KTsKKworICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgeworICAgICAgICBEaWRTZW5kUmVxdWVzdCwK
KyAgICAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlLAorICAgICAgICBEaWRDb21wbGV0ZVdpdGhFcnJv
ciwKKyAgICB9OworCisgICAgX19ibG9jayBWZWN0b3I8Q2FsbGJhY2s+IGNhbGxiYWNrczsKKyAg
ICBfX2Jsb2NrIFZlY3RvcjxSZXRhaW5QdHI8V0tXZWJWaWV3Pj4gd2ViVmlld3M7CisgICAgX19i
bG9jayBWZWN0b3I8UmV0YWluUHRyPF9XS1Jlc291cmNlTG9hZEluZm8+PiBsb2FkSW5mb3M7Cisg
ICAgX19ibG9jayBWZWN0b3I8UmV0YWluUHRyPGlkPj4gb3RoZXJQYXJhbWV0ZXJzOworCisgICAg
X19ibG9jayBzaXplX3QgcmVzb3VyY2VDb21wbGV0aW9uQ291bnQgPSAwOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgW2Rl
bGVnYXRlIHNldERpZFNlbmRSZXF1ZXN0Ol4oV0tXZWJWaWV3ICp3ZWJWaWV3LCBfV0tSZXNvdXJj
ZUxvYWRJbmZvICpsb2FkSW5mbywgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAgICAgIGNh
bGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRpZFNlbmRSZXF1ZXN0KTsKKyAgICAgICAgd2ViVmll
d3MuYXBwZW5kKHdlYlZpZXcpOworICAgICAgICBsb2FkSW5mb3MuYXBwZW5kKGxvYWRJbmZvKTsK
KyAgICAgICAgb3RoZXJQYXJhbWV0ZXJzLmFwcGVuZChyZXF1ZXN0KTsKKyAgICB9XTsKKyAgICBb
ZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZVJlc3BvbnNlOl4oV0tXZWJWaWV3ICp3ZWJWaWV3LCBfV0tS
ZXNvdXJjZUxvYWRJbmZvICpsb2FkSW5mbywgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpIHsKKyAg
ICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGlkUmVjZWl2ZVJlc3BvbnNlKTsKKyAg
ICAgICAgd2ViVmlld3MuYXBwZW5kKHdlYlZpZXcpOworICAgICAgICBsb2FkSW5mb3MuYXBwZW5k
KGxvYWRJbmZvKTsKKyAgICAgICAgb3RoZXJQYXJhbWV0ZXJzLmFwcGVuZChyZXNwb25zZSk7Cisg
ICAgfV07CisgICAgW2RlbGVnYXRlIHNldERpZENvbXBsZXRlV2l0aEVycm9yOl4oV0tXZWJWaWV3
ICp3ZWJWaWV3LCBfV0tSZXNvdXJjZUxvYWRJbmZvICpsb2FkSW5mbywgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGlkQ29tcGxldGVXaXRoRXJy
b3IpOworICAgICAgICB3ZWJWaWV3cy5hcHBlbmQod2ViVmlldyk7CisgICAgICAgIGxvYWRJbmZv
cy5hcHBlbmQobG9hZEluZm8pOworICAgICAgICBvdGhlclBhcmFtZXRlcnMuYXBwZW5kKGVycm9y
KTsKKyAgICAgICAgcmVzb3VyY2VDb21wbGV0aW9uQ291bnQrKzsKKyAgICB9XTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBfc2V0
UmVzb3VyY2VMb2FkRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlIChyZXNvdXJjZUNvbXBsZXRpb25D
b3VudCA8IDMpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisK
KyAgICBWZWN0b3I8Q2FsbGJhY2s+IGV4cGVjdGVkQ2FsbGJhY2tzIHsKKyAgICAgICAgQ2FsbGJh
Y2s6OkRpZFNlbmRSZXF1ZXN0LAorICAgICAgICBDYWxsYmFjazo6RGlkUmVjZWl2ZVJlc3BvbnNl
LAorICAgICAgICBDYWxsYmFjazo6RGlkQ29tcGxldGVXaXRoRXJyb3IsCisgICAgICAgIENhbGxi
YWNrOjpEaWRTZW5kUmVxdWVzdCwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZFJlY2VpdmVSZXNwb25z
ZSwKKyAgICAgICAgQ2FsbGJhY2s6OkRpZENvbXBsZXRlV2l0aEVycm9yLAorICAgICAgICBDYWxs
YmFjazo6RGlkU2VuZFJlcXVlc3QsCisgICAgICAgIENhbGxiYWNrOjpEaWRSZWNlaXZlUmVzcG9u
c2UsCisgICAgICAgIENhbGxiYWNrOjpEaWRDb21wbGV0ZVdpdGhFcnJvcgorICAgIH07CisgICAg
RVhQRUNUX0VRKGNhbGxiYWNrcywgZXhwZWN0ZWRDYWxsYmFja3MpOworCisgICAgRVhQRUNUX0VR
KHdlYlZpZXdzLnNpemUoKSwgOXVsbCk7CisgICAgZm9yIChhdXRvJiB2aWV3IDogd2ViVmlld3Mp
CisgICAgICAgIEVYUEVDVF9FUSh3ZWJWaWV3LmdldCgpLCB2aWV3LmdldCgpKTsKKworICAgIEVY
UEVDVF9FUShsb2FkSW5mb3Muc2l6ZSgpLCA5dWxsKTsKKyAgICBFWFBFQ1RfRVEobG9hZEluZm9z
WzBdLmdldCgpLnJlc291cmNlTG9hZElELCBsb2FkSW5mb3NbMV0uZ2V0KCkucmVzb3VyY2VMb2Fk
SUQpOworICAgIEVYUEVDVF9FUShsb2FkSW5mb3NbMF0uZ2V0KCkucmVzb3VyY2VMb2FkSUQsIGxv
YWRJbmZvc1syXS5nZXQoKS5yZXNvdXJjZUxvYWRJRCk7CisgICAgRVhQRUNUX05FKGxvYWRJbmZv
c1swXS5nZXQoKS5yZXNvdXJjZUxvYWRJRCwgbG9hZEluZm9zWzNdLmdldCgpLnJlc291cmNlTG9h
ZElEKTsKKyAgICBFWFBFQ1RfRVEobG9hZEluZm9zWzNdLmdldCgpLnJlc291cmNlTG9hZElELCBs
b2FkSW5mb3NbNF0uZ2V0KCkucmVzb3VyY2VMb2FkSUQpOworICAgIEVYUEVDVF9FUShsb2FkSW5m
b3NbM10uZ2V0KCkucmVzb3VyY2VMb2FkSUQsIGxvYWRJbmZvc1s1XS5nZXQoKS5yZXNvdXJjZUxv
YWRJRCk7CisgICAgRVhQRUNUX05FKGxvYWRJbmZvc1szXS5nZXQoKS5yZXNvdXJjZUxvYWRJRCwg
bG9hZEluZm9zWzZdLmdldCgpLnJlc291cmNlTG9hZElEKTsKKyAgICBFWFBFQ1RfRVEobG9hZElu
Zm9zWzZdLmdldCgpLnJlc291cmNlTG9hZElELCBsb2FkSW5mb3NbN10uZ2V0KCkucmVzb3VyY2VM
b2FkSUQpOworICAgIEVYUEVDVF9FUShsb2FkSW5mb3NbNl0uZ2V0KCkucmVzb3VyY2VMb2FkSUQs
IGxvYWRJbmZvc1s4XS5nZXQoKS5yZXNvdXJjZUxvYWRJRCk7CisgICAgRVhQRUNUX05FKGxvYWRJ
bmZvc1s2XS5nZXQoKS5yZXNvdXJjZUxvYWRJRCwgbG9hZEluZm9zWzBdLmdldCgpLnJlc291cmNl
TG9hZElEKTsKKworICAgIEVYUEVDVF9FUShvdGhlclBhcmFtZXRlcnMuc2l6ZSgpLCA5dWxsKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1sw
XSBjbGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIEVYUEVDVF9XS19TVFJFUShb
b3RoZXJQYXJhbWV0ZXJzWzBdIFVSTF0ucGF0aCwgIi8iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
TlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1sxXSBjbGFzc10pLCAiTlNIVFRQVVJM
UmVzcG9uc2UiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW290aGVyUGFyYW1ldGVyc1sxXSBVUkxd
LnBhdGgsICIvIik7CisgICAgRVhQRUNUX0VRKG90aGVyUGFyYW1ldGVyc1syXSwgbmlsKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1szXSBj
bGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIEVYUEVDVF9XS19TVFJFUShbb3Ro
ZXJQYXJhbWV0ZXJzWzNdIFVSTF0ucGF0aCwgIi9pZnJhbWVTcmMiKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVyUGFyYW1ldGVyc1s0XSBjbGFzc10pLCAiTlNI
VFRQVVJMUmVzcG9uc2UiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW290aGVyUGFyYW1ldGVyc1s0
XSBVUkxdLnBhdGgsICIvaWZyYW1lU3JjIik7CisgICAgRVhQRUNUX0VRKG90aGVyUGFyYW1ldGVy
c1s1XSwgbmlsKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoTlNTdHJpbmdGcm9tQ2xhc3MoW290aGVy
UGFyYW1ldGVyc1s2XSBjbGFzc10pLCAiTlNNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIEVYUEVD
VF9XS19TVFJFUShbb3RoZXJQYXJhbWV0ZXJzWzZdIFVSTF0ucGF0aCwgIi9mZXRjaFRhcmdldCIp
OworICAgIEVYUEVDVF9XS19TVFJFUShOU1N0cmluZ0Zyb21DbGFzcyhbb3RoZXJQYXJhbWV0ZXJz
WzddIGNsYXNzXSksICJOU0hUVFBVUkxSZXNwb25zZSIpOworICAgIEVYUEVDVF9XS19TVFJFUShb
b3RoZXJQYXJhbWV0ZXJzWzddIFVSTF0ucGF0aCwgIi9mZXRjaFRhcmdldCIpOworICAgIEVYUEVD
VF9FUShvdGhlclBhcmFtZXRlcnNbOF0sIG5pbCk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKE5FVFdP
UktfRlJBTUVXT1JLKQorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBDaGFsbGVuZ2UpCit7
CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZl
cihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10gKFNTTCogc3NsKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKCEhc3NsKTsgLy8gQ29ubmVjdGlvbiBzaG91bGQgc3VjY2VlZCBhZnRlciBhIHNl
cnZlciB0cnVzdCBjaGFsbGVuZ2UuCisgICAgICAgIC8vIFNlbmQgbm90aGluZyB0byBtYWtlIHRo
ZSByZXNvdXJjZSBsb2FkIGZhaWwuCisgICAgfSk7CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW25hdmln
YXRpb25EZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dl
YlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFs
Rm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1d
OworCisgICAgX19ibG9jayBib29sIHJlY2VpdmVkRXJyb3JOb3RpZmljYXRpb24gPSBmYWxzZTsK
KyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2VOb3RpZmljaWF0aW9uID0gZmFsc2U7
CisgICAgYXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxv
YWREZWxlZ2F0ZSBuZXddKTsKKyAgICBbcmVzb3VyY2VMb2FkRGVsZWdhdGUgc2V0RGlkUmVjZWl2
ZUNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBfV0tSZXNvdXJjZUxvYWRJbmZvICosIE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxB
dXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVu
Z2VOb3RpZmljaWF0aW9uID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBbcmVzb3VyY2VMb2FkRGVsZWdh
dGUgc2V0RGlkQ29tcGxldGVXaXRoRXJyb3I6XihXS1dlYlZpZXcgKiwgX1dLUmVzb3VyY2VMb2Fk
SW5mbyAqLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
a0NGVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIHJlY2VpdmVkRXJyb3JO
b3RpZmljYXRpb24gPSB0cnVlOworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IF9zZXRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTpyZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZl
ci5wb3J0KCldXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRFcnJv
ck5vdGlmaWNhdGlvbik7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2VOb3RpZmlj
aWF0aW9uKTsKK30KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2VydmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCShyZXZpc2lvbiAyNTQxODMp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJC
YXNpYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcwNSw3ICsxNzA1LDcgQEAgVEVTVChTZXJ2aWNl
V29ya2VycywgVGhyb3R0bGVDcmFzaCkKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKICAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3
LmpzIiwgeyBzY3JpcHRCeXRlcywge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwog
CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01NzgsNyArNTc4LDcgQEAgVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcmllcwogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKICAgICAgICAg
eyAiL2luZGV4Lmh0bWwiLCB7ICI8aHRtbCBtYW5pZmVzdD0ndGVzdC5hcHBjYWNoZSc+IiB9IH0s
CiAgICAgICAgIHsgIi90ZXN0LmFwcGNhY2hlIiwgeyAiQ0FDSEUgTUFOSUZFU1RcbmluZGV4Lmh0
bWxcbnRlc3QubXA0XG4iIH0gfSwKLSAgICAgICAgeyAiL3Rlc3QubXA0IiwgeyAidGVzdCEiLCB7
eyAiQ29udGVudC1UeXBlIiwgInZpZGVvL3Rlc3QiIH19fX0sCisgICAgICAgIHsgIi90ZXN0Lm1w
NCIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJ2aWRlby90ZXN0IiB9fSwgInRlc3QhIiB9fSwKICAg
ICB9KTsKICAgICAKICAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
Q3VzdG9tUGF0aHNUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNTQxODMpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsMTMg
QEAgcHJpdmF0ZToKIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogICAgIEhUVFBS
ZXNwb25zZShTdHJpbmcmJiBib2R5KQogICAgICAgICA6IGJvZHkoV1RGTW92ZShib2R5KSkgeyB9
Ci0gICAgSFRUUFJlc3BvbnNlKFN0cmluZyYmIGJvZHksIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiYgaGVhZGVyRmllbGRzKQotICAgICAgICA6IGJvZHkoV1RGTW92ZShib2R5KSkKLSAgICAgICAg
LCBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJGaWVsZHMpKSB7IH0KKyAgICBIVFRQUmVzcG9u
c2UoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMsIFN0cmluZyYmIGJvZHkp
CisgICAgICAgIDogaGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVyRmllbGRzKSkKKyAgICAgICAg
LCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQorICAgIEhUVFBSZXNwb25zZSh1bnNpZ25lZCBzdGF0
dXNDb2RlLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGhlYWRlckZpZWxkcywgU3RyaW5nJiYg
Ym9keSA9IHsgfSkKKyAgICAgICAgOiBzdGF0dXNDb2RlKHN0YXR1c0NvZGUpCisgICAgICAgICwg
aGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVyRmllbGRzKSkKKyAgICAgICAgLCBib2R5KFdURk1v
dmUoYm9keSkpIHsgfQogCiAgICAgSFRUUFJlc3BvbnNlKGNvbnN0IEhUVFBSZXNwb25zZSYpID0g
ZGVmYXVsdDsKICAgICBIVFRQUmVzcG9uc2UoSFRUUFJlc3BvbnNlJiYpID0gZGVmYXVsdDsKQEAg
LTYyLDggKzY2LDkgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgSFRU
UFJlc3BvbnNlJiBvcGVyYXRvcj0oY29uc3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0OwogICAg
IEhUVFBSZXNwb25zZSYgb3BlcmF0b3I9KEhUVFBSZXNwb25zZSYmKSA9IGRlZmF1bHQ7CiAgICAg
Ci0gICAgU3RyaW5nIGJvZHk7CisgICAgdW5zaWduZWQgc3RhdHVzQ29kZSB7IDIwMCB9OwogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGhlYWRlckZpZWxkczsKKyAgICBTdHJpbmcgYm9keTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI1NDE4MykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIs
MTggQEAgSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyXwogICAgIG53X2xp
c3RlbmVyX3N0YXJ0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCitzdGF0aWMgU3RyaW5nIHN0YXR1
c1RleHQodW5zaWduZWQgc3RhdHVzQ29kZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHsK
KyAgICBjYXNlIDIwMDoKKyAgICAgICAgcmV0dXJuICJPSyJfczsKKyAgICBjYXNlIDMwMToKKyAg
ICAgICAgcmV0dXJuICJNb3ZlZCBQZXJtYW5lbnRseSJfczsKKyAgICB9CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogdm9pZCBIVFRQU2VydmVyOjpyZXNw
b25kVG9SZXF1ZXN0cyhud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBud19jb25u
ZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpLCBeKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRf
dCBjb250ZXh0LCBib29sIGNvbXBsZXRlLCBud19lcnJvcl90IGVycm9yKSB7CkBAIC03Niw3ICs4
OCwxMSBAQCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAgICAgICAg
IAogICAgICAgICBhdXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9uc2VNYXAuZ2V0KHBhdGgp
OwogICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKLSAgICAgICAgcmVzcG9u
c2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAiKTsK
KyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgIik7CisgICAgICAgIHJl
c3BvbnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2Uuc3RhdHVzQ29kZSk7CisgICAgICAg
IHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFw
cGVuZChzdGF0dXNUZXh0KHJlc3BvbnNlLnN0YXR1c0NvZGUpKTsKKyAgICAgICAgcmVzcG9uc2VC
dWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtTGVuZ3RoOiAiKTsKICAgICAgICAgcmVzcG9uc2VC
dWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5ib2R5Lmxlbmd0aCgpKTsKICAgICAgICAgcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBy
ZXNwb25zZS5oZWFkZXJGaWVsZHMpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>