<?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>237234</bug_id>
          
          <creation_ts>2022-02-25 21:35:43 -0800</creation_ts>
          <short_desc>Add SPI _WKDataTask</short_desc>
          <delta_ts>2022-03-02 00:10:25 -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>Page Loading</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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846278</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-25 21:35:43 -0800</bug_when>
    <thetext>Add SPI _WKDataTask</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846279</commentid>
    <comment_count>1</comment_count>
      <attachid>453286</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-25 21:38:56 -0800</bug_when>
    <thetext>Created attachment 453286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846282</commentid>
    <comment_count>2</comment_count>
      <attachid>453287</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-25 21:51:54 -0800</bug_when>
    <thetext>Created attachment 453287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846297</commentid>
    <comment_count>3</comment_count>
      <attachid>453293</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-26 07:02:44 -0800</bug_when>
    <thetext>Created attachment 453293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846298</commentid>
    <comment_count>4</comment_count>
      <attachid>453294</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-26 07:03:41 -0800</bug_when>
    <thetext>Created attachment 453294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846928</commentid>
    <comment_count>5</comment_count>
      <attachid>453294</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-28 23:23:59 -0800</bug_when>
    <thetext>Comment on attachment 453294
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDataTask.h:41
&gt; +// Calling this will often delegate&apos;s dataTask:didCompleteWithError: with { NSURLErrorDomain, NSURLErrorCancelled }

often?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846932</commentid>
    <comment_count>6</comment_count>
      <attachid>453294</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-28 23:44:22 -0800</bug_when>
    <thetext>Comment on attachment 453294
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/WKURLSessionTaskDelegate.mm:76
&gt; +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler

No nullability in implementation files (because it&apos;s viral).

&gt; Source/WebKit/UIProcess/API/APIDataTask.cpp:56
&gt; +    , m_client(DataTaskClient::create()) { }

Odd place for those curly braces

&gt; Source/WebKit/UIProcess/API/APIDataTaskClient.h:50
&gt; +    virtual void willPerformHTTPRedirection(DataTask&amp;, WebCore::ResourceResponse&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) const { completionHandler(true); }

Is `HTTP` proper WebKit style or `Http`? (I like the all-caps version but I think WebKit style does not)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskDelegate.h:51
&gt; +- (void)dataTask:(_WKDataTask *)dataTask didCompleteWithError:(nullable NSError *)error;

Why both nullable and _Nullable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846933</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-28 23:44:35 -0800</bug_when>
    <thetext>Probably should get a Brady review too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847046</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-01 09:14:50 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #6)
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKDataTaskDelegate.h:51
&gt; &gt; +- (void)dataTask:(_WKDataTask *)dataTask didCompleteWithError:(nullable NSError *)error;
&gt; 
&gt; Why both nullable and _Nullable?
nullable for selector parameters, _Nullable for block parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847047</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-01 09:15:16 -0800</bug_when>
    <thetext>I think I&apos;m also going to make the delegate strong until cancelled or completed, kind of like NSURLSessionTask, and I&apos;ll make cancel give you no more callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847149</commentid>
    <comment_count>10</comment_count>
      <attachid>453528</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-01 12:58:32 -0800</bug_when>
    <thetext>Created attachment 453528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847214</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-01 15:30:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/89645347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847301</commentid>
    <comment_count>12</comment_count>
      <attachid>453571</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-01 22:42:20 -0800</bug_when>
    <thetext>Created attachment 453571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847315</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-02 00:10:21 -0800</bug_when>
    <thetext>Committed r290722 (247969@main): &lt;https://commits.webkit.org/247969@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453571.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453286</attachid>
            <date>2022-02-25 21:38:56 -0800</date>
            <delta_ts>2022-02-25 22:08:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237234-20220225213855.patch</filename>
            <type>text/plain</type>
            <size>87445</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjZjVlOGU3MjRjYTFjYWFi
NWY3NGQ4YmE4OTIyYWIxZjVlYjJmNDguLjAyMzdiY2FlMWI2YTg4NTY4MzRlYmYyMTM2ODhiYTJk
MjE0ODdkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjItMDItMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIF9X
S0RhdGFUYXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIEkgYWRkZWQgV0tXZWJWaWV3Ll9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6IEkgb3Zlcmxvb2tlZCBhIGZldyB0aGluZ3MuCisgICAgICAgIEZpcnN0LCBpdCBpcyB1bmFi
bGUgdG8gc3VwcG9ydCBIVFRQUyBiZWNhdXNlIEkgZGlkbid0IGhvb2sgdXAgYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlIGhhbmRsaW5nIHRvIGl0LgorICAgICAgICBTZWNvbmQsIGl0IGlzIHVuYWJs
ZSB0byBoYXZlIGEgbWF4aW11bSBhY2NlcHRlZCByZXNwb25zZSBsZW5ndGgsIHdoaWNoIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIGFuIGFkb3B0ZXIuCisgICAgICAgIFRvIG1ha2UgdGhlc2UgcG9zc2li
bGUsIEkgbWFkZSBfV0tEYXRhVGFzayB3aGljaCBpcyByZWxhdGVkIHRvIFdLRG93bmxvYWQgYW5k
IE5TVVJMU2Vzc2lvbkRhdGFUYXNrLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGF0YVRhc2tX
aXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEYXRh
VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6Y2FuY2VsRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtXS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUgaW5pdFdpdGhJZGVudGlmaWVyOnNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBjb25uZWN0aW9uXSk6CisgICAgICAgICgt
W1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFza0Rl
bGVnYXRlIFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNrRGVs
ZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNr
RGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3Qu
aDoKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6ZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24pOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVj
dDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2s6
OnNldENsaWVudCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrOjpjYW5jZWwpOgorICAgICAgICAo
QVBJOjpEYXRhVGFzazo6RGF0YVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGF0
YVRhc2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKEFQSTo6RGF0YVRhc2s6OnBhZ2UpOgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6
Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp+RGF0YVRhc2tDbGllbnQpOgorICAgICAg
ICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAg
ICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEgY29uc3Qp
OgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbTog
QWRkZWQuCisgICAgICAgICgtW19XS0RhdGFUYXNrIGNhbmNlbF0pOgorICAgICAgICAoLVtfV0tE
YXRhVGFzayB3ZWJWaWV3XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIGRlbGVnYXRlXSk6Cisg
ICAgICAgICgtW19XS0RhdGFUYXNrIHNldERlbGVnYXRlOl0pOgorICAgICAgICAoLVtfV0tEYXRh
VGFzayBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFz
a0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMi0wMi0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFRha2UgZG93biBzaGFyZWQgd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBsZXNzIGFnZ3Jlc3Np
dmVseSB3aGVuIGl0IGJlY29tZXMgaWRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5MmM1Y2IzMzliNjU5ODg0MjAzMDM3NGE5OWZl
NjYxNzE1YTZjMzM2Li45ODJkODhhODZiNGY4NjNlYTkxZWUyNjZhODdjOGJiMWQyZmM3YmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMTk5NiwxMyArMTk5NiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogICAgIH0sIGRl
c3RpbmF0aW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2Uo
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIGh0dHBCb2R5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkYXRhVGFza1dpdGhSZXF1ZXN0
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiBodHRwQm9keSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJv
ZHkudGFrZURhdGEoKSk7CisgICAgbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+ZGF0YVRhc2tX
aXRoUmVxdWVzdChwYWdlSUQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRGF0YVRhc2soRGF0YVRh
c2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAg
IHNlc3Npb24tPnJlcXVlc3RSZXNvdXJjZShwYWdlSUQsIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgeyB9LCB7IH0pOworICAgICAgICBzZXNzaW9uLT5jYW5jZWxEYXRhVGFzayhpZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbFN5bmNocm9u
b3VzbHlGb3JUZXN0aW5nKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGEzZWYxMTI4NTcxMTZkZjE1ODg2OWE5NjZiODU5
Y2FkMTM4ZjQ4YTguLjY4OWJmOTdlZGVkZDk1ZTM3YzYyOTBjYjZjZmFlOTViZDZiNDEwOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4
aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKKyNpbmNsdWRlICJEYXRh
VGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgi
CkBAIC00MzIsNyArNDMzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFBy
b2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsKICNlbmRpZgogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcik+JiYpOworICAgIHZvaWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRh
VGFza0lkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA2MzFlMmI2MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3
ZGUwLi4xMWQ2NWNiMjIxZTFiODMwZGM3NWY4YzBhNzNmMDBmZTU2OWUyYmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTUzLDcgKzUzLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dy
ZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogI2VuZGlmCi0gICAg
UmVxdWVzdFJlc291cmNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHkpIC0+IChJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcikgQXN5bmMKKyAgICBEYXRhVGFza1dpdGhSZXF1ZXN0KFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
cmVxdWVzdEJvZHkpIC0+IChXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmll
cikgQXN5bmMKKyAgICBDYW5jZWxEYXRhVGFzayhXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIEFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kKCkKICAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQo
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggODVjN2NiZDY5MDM0ZDljYmE3ZjQ0NWRhOWRlNDc1YTFkN2IzNTExOC4uNGRkMjlmODlkNTMy
YTI2MWZmYWIyYmY3ZGM3NDNlMmFjMTBmYTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAi
QXBwUHJpdmFjeVJlcG9ydC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKQEAgLTIzMiw3ICsyMzMsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxE
YXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJQ
YWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViUGFnZU5ldHdv
cmtQYXJhbWV0ZXJzJiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXZWJQYWdlTmV0d29y
a1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgeyB9CiAgICAgdmlydHVhbCBzaXpl
X3QgY291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCmluZGV4IDNjNDZlNmIwZDdjZTM1YzA2ZTk2MzhmYWJhN2M5MjhlMTc1YzUxMGUu
LmU5ZTkyYzc4MDIzM2Q0OTBlMGRkOTM3ZThlYTUzMDdiNTViYTQzZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCkBAIC0xNDIsNiArMTQyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVOZXR3b3Jr
V2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHJlbW92ZURhdGFUYXNrKERhdGFUYXNrSWRlbnRp
Zmllcik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CkBAIC0xNjIsNyArMTY0
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soU2Vzc2lvblNldCYs
IFdlYlNvY2tldFRhc2smKSBmaW5hbDsKICNlbmRpZgogCi0gICAgdm9pZCByZXF1ZXN0UmVzb3Vy
Y2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJ
ZGVudGlmaWVyKT4mJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICBzaXplX3QgY291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoKSBj
b25zdCBmaW5hbDsKQEAgLTE4OCw2ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mYXN0
U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICAgICBib29sIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJv
eHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CisgICAgSGFzaE1hcDxEYXRhVGFza0lkZW50aWZp
ZXIsIFJldGFpblB0cjxOU1VSTFNlc3Npb25EYXRhVGFzaz4+IG1fZGF0YVRhc2tzRm9yQVBJOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmM1NDdh
YjQ4NjE3ZWI5YmRhYmUyYjFkYjRlZTlhNzliNWJjNWZkYy4uMjA5NmEzN2I0N2JmOTY2ODViMzlm
NjZmZWE2NDdlYWYzZGZmYTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzcsNiArMzcsNyBA
QAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJQcml2YXRlUmVsYXllZC5oIgorI2ltcG9ydCAi
V0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJQYWdlTmV0d29ya1BhcmFt
ZXRlcnMuaCIKICNpbXBvcnQgIldlYlNvY2tldFRhc2suaCIKICNpbXBvcnQgPEZvdW5kYXRpb24v
TlNVUkxTZXNzaW9uLmg+CkBAIC0xNzYwLDE0ICsxNzYxLDI4IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b25Db2NvYTo6YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnCiAgICAgbV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmll
cnMuYWRkKHBhZ2VJRCwgcGFyYW1ldGVycy5hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcigpKTsK
IH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza1dpdGhSZXF1
ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gc2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKHBhZ2VJRCwgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZSwgc3RkOjpudWxsb3B0KS5zZXNzaW9uOworICAgIGF1dG8gaWRlbnRpZmllciA9IERh
dGFUYXNrSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJlcXVl
c3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQ
Qm9keSk7Ci0gICAgYXV0byBjb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0RhdGEgKmRhdGEsIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBlcnJvciB9KTsK
LSAgICB9KTsKLSAgICBbW3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkJsb2NrLmdldCgpXSByZXN1bWVdOworICAgIGF1dG8g
c2Vzc2lvbiA9IHNlc3Npb25XcmFwcGVyRm9yVGFzayhwYWdlSUQsIHJlcXVlc3QsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIHN0ZDo6bnVsbG9wdCkuc2Vzc2lvbjsKKyAg
ICBhdXRvIHRhc2sgPSBbc2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIHNlc3Npb246KnRoaXNdKTsKKyAgICB0
YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Rh
dGFUYXNrc0ZvckFQSS5hZGQoaWRlbnRpZmllciwgdGFzayk7CisgICAgUkVMRUFTRV9BU1NFUlQo
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIFt0YXNrIHJlc3VtZV07CisgICAgY29tcGxldGlv
bkhhbmRsZXIoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2Fu
Y2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgW21fZGF0
YVRhc2tzRm9yQVBJLmdldChpZGVudGlmaWVyKSBjYW5jZWxdOworfQorCit2b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnJlbW92ZURhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVy
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fZGF0YVRhc2tzRm9yQVBJLnJlbW92ZShpZGVudGlm
aWVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlV2ViUGFnZU5ldHdv
cmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFz
a0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0YTU4YzY4NTJhY2U4YTNkZWQ4MjFjODI1MGUwZjk0
OTA2MzA1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJEYXRhVGFza0lkZW50aWZpZXIuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOworfQorCitAcHJv
dG9jb2wgTlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAaW50ZXJmYWNlIFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSA6IE5TT2JqZWN0PE5TVVJM
U2Vzc2lvblRhc2tEZWxlZ2F0ZT4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6
KFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyKWlkZW50aWZpZXIgc2Vzc2lvbjooV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hJilzZXNzaW9uOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxT
ZXNzaW9uVGFza0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2ZjJmMTJhZGMzZjky
Y2FhYzgwZmQ2OGY2OWIyZGJkZWQ3OGRkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tCkBAIC0w
LDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
S1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCIKKworI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCisjaW1wb3J0ICJDb25uZWN0aW9uLmgiCisjaW1wb3J0
ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCisjaW1wb3J0ICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NyZWRlbnRpYWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgeworICAg
IFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hPiBfc2Vzc2lvbjsKK30KKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSWRlbnRpZmllcjooV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIpaWRlbnRpZmll
ciBzZXNzaW9uOihXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2EmKXNlc3Npb24KK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfaWRl
bnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX3Nlc3Npb24gPSBXZWFrUHRyIHsgc2Vzc2lvbiB9
OworICAgIHJldHVybiBzZWxmOworfQorCistIChJUEM6OkNvbm5lY3Rpb24qKWNvbm5lY3Rpb24K
K3sKKyAgICBpZiAoIV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBf
c2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOworfQor
CistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxT
ZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwgKiBfTnVsbGFibGUgY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZVJlamVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrUmVjZWl2ZWRD
aGFsbGVuZ2UoX2lkZW50aWZpZXIsIGNoYWxsZW5nZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmIGNyZWRl
bnRpYWwpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJvbUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgp
KTsKKyAgICB9KTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNz
aW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMUmVxdWVzdCAqIF9O
dWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gW3Nl
bGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVxdWVzdCA9IFJldGFpblB0
ciB7IHJlcXVlc3QgfV0gKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhbGxvd2VkID8gcmVxdWVzdC5nZXQoKSA6IG5pbCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKily
ZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uUmVzcG9uc2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvKiBj
b25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uUmVzcG9uc2VDYW5jZWwp
OworICAgIGNvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6RGF0YVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoX2lkZW50aWZpZXIsIHJlc3Bv
bnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd2VkID8g
TlNVUkxTZXNzaW9uUmVzcG9uc2VBbGxvdyA6IE5TVVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2VsKTsK
KyAgICB9KTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9u
IGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRh
OihOU0RhdGEgKilkYXRhCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rp
b25dOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkUmVjZWl2
ZURhdGEoX2lkZW50aWZpZXIsIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0pLCAwKTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihO
U1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZENv
bXBsZXRlV2l0aEVycm9yOihudWxsYWJsZSBOU0Vycm9yICopZXJyb3IKK3sKKyAgICBhdXRvKiBj
b25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm47CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6RGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihfaWRlbnRpZmllciwgZXJyb3Ip
LCAwKTsKKyAgICBpZiAoX3Nlc3Npb24pCisgICAgICAgIF9zZXNzaW9uLT5yZW1vdmVEYXRhVGFz
ayhfaWRlbnRpZmllcik7Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1M2MzZDk2MGQzYmE3Y2Jk
OGRhZjhjYjA1YTZiMjUyNWQ1NWJmZGM0Li40MTVmMDNlNDQzNTFlZmMxMDAwNmVmNWNjM2U4YmU2
OGI3NmJlZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTMxOSw2ICszMTksNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6RGlzcGxheUxpbmtPYnNlcnZlcklEJywKICAgICAgICAgJ1dlYktpdDo6RG93bmxvYWRJRCcs
CiAgICAgICAgICdXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3InLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDUzYWYxMGE4NmUxMjlhMTllZDEwNTEzYTE2MGQ5ZGEw
OTdmZTVjNWIuLjdkNGVlNmIyMGJlNDg2OTJlZWJkM2JjOThiNDllOTZkZDY2MWY1Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIENvbnRleHRNZW51TGlzdGVuZXIsCiAgICAgICAgIEN1c3RvbUhlYWRlckZpZWxk
cywKICAgICAgICAgSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUsCisgICAgICAgIERhdGFUYXNrLAogICAg
ICAgICBEZWJ1Z2dhYmxlSW5mbywKICAgICAgICAgRG93bmxvYWQsCiAgICAgICAgIEV4cGVyaW1l
bnRhbEZlYXR1cmUsCkBAIC0zNjQsNiArMzY1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6Q29u
dGV4dE1lbnVMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkN1c3RvbUhlYWRl
ckZpZWxkcywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkludGVybmFsRGVidWdGZWF0dXJl
LAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RGF0YVRhc2ssCiAgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpEZWJ1Z2dhYmxlSW5mbywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkRv
d25sb2FkLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbkNvY29hLmgKaW5kZXggZjQ5MjU4YTRjNzFiYjBjN2RlOTkwYjQyYmY3MmM0ZjM2YjljYzFl
Zi4uNzQ5NGQ0NGE4YjVlYmYyM2RhYTEyYjc0OGZkMGRkNWZkMGZiN2Y2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0
aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29h
LmgKQEAgLTMxLDUgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uIHRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24pOworTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uIGZyb21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24pOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb25Db2NvYS5tbQppbmRleCA0NDU0OTFhZWFlMTE2MWYyNDNjMWJhNzY5MWMw
MmViZDJlMTRiN2E2Li5mNzI5YTU2NDM1OTBjYTUwOTYxYmQxMjIzZmM1YjBjMGIzOTA2MmViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbkNvY29hLm1tCkBAIC00Myw0ICs0MywxOSBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIHRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbihOU1VSTFNl
cwogICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJJbnZhbGlkIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIs
IChsb25nKWRpc3Bvc2l0aW9uXTsKIH0KIAorTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uIGZyb21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pCit7CisgICAgc3dpdGNoIChkaXNw
b3NpdGlvbikgeworICAgIGNhc2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
VXNlQ3JlZGVudGlhbDoKKyAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VV
c2VDcmVkZW50aWFsOworICAgIGNhc2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZzoKKyAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nOworICAgIGNhc2UgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNhc2Ug
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNl
QW5kQ29udGludWU6CisgICAgICAgIHJldHVybiBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVq
ZWN0UHJvdGVjdGlvblNwYWNlOworICAgIH0KKyAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25dOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRl
eCAxMGI4MDkyYTFiMjI5NjJiMjkwNDA2NjViNzZlZDM3YjU2NTIxMjdmLi5iZjJlZDJhMDc5Yzg5
NTIwMjM5ZGM1YmRjYTFkNTVhMjg3YzM1Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCkBAIC03NCw2ICs3NCw3IEBACiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vz
c2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCIKKyNpbXBvcnQg
Il9XS0RhdGFUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yMTksNiArMjIwLDEwIEBAIHZvaWQqIE9i
amVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIg
PSBbV0tOU0RhdGEgYWxsb2NdOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6RGF0
YVRhc2s6CisgICAgICAgIHdyYXBwZXIgPSBbX1dLRGF0YVRhc2sgYWxsb2NdOworICAgICAgICBi
cmVhazsKKwogICAgIGNhc2UgVHlwZTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6CiAgICAgICAgIHdy
YXBwZXIgPSBbX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgYWxsb2NdOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFUYXNrSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUx
YmY1YjJjMzU2ZmYyNzY5ZWQxZGQyZjM3NWJjZjJjMWRmYTZlZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFUYXNrSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIERhdGFUYXNrSWRlbnRpZmll
clR5cGUgeyB9OwordXNpbmcgRGF0YVRhc2tJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxE
YXRhVGFza0lkZW50aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjc4MTMzNmU1ZWM4
MjMyMGZhMDU1ZmZhNzNmOTEwMWRjODhkNjQ4MS4uMDkwYmYxMmI3Mjg3NDhmYzRhMjdjMDViMDA2
NWIzNmNmZTNkZTM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC00NzMsNiArNDczLDcgQEAgVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RBY3Rpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuY3BwCiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51RWxlbWVudEluZm8uY3BwCitVSVByb2Nlc3MvQVBJ
L0FQSURhdGFUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElEZWJ1Z2dhYmxlSW5mby5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
RnJhbWVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDM5ZmVhOTFjZTU2MTc1ODE2
MGFkOTIxODk4OTQ1M2U1ODNlZDY0NjEuLjJmODIwNDhmZWIzMmZmZTJiZTdhNmVhNTZiM2FjMDk3
ODk0OTU2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI4LDYgKzI4LDcgQEAgTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tCiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRl
Lm1tCiAKIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAogCkBAIC0yNzksNiArMjgwLDcgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
Q29udGVudFJ1bGVMaXN0QWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRN
ZW51RWxlbWVudEluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmll
bGRzLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tF
bGVtZW50QWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Vycm9yUmVjb3ZlcnlBdHRl
bXB0aW5nLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0
YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MDkzYTAxMDBmZjVlMTJmYmIyNThhZjM1YzA3NjJmMWE2ZjhkMzg1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmNw
cApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElEYXRhVGFzay5oIgorCisjaW5jbHVkZSAiQVBJRGF0
YVRhc2tDbGllbnQuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgor
CituYW1lc3BhY2UgQVBJIHsKKworRGF0YVRhc2s6On5EYXRhVGFzaygpID0gZGVmYXVsdDsKKwor
dm9pZCBEYXRhVGFzazo6c2V0Q2xpZW50KFJlZjxEYXRhVGFza0NsaWVudD4mJiBjbGllbnQpCit7
CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKK3ZvaWQgRGF0YVRhc2s6OmNh
bmNlbCgpCit7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDYW5jZWxEYXRhVGFzayhtX2lk
ZW50aWZpZXIsIG1fc2Vzc2lvbklEKSwgMCk7Cit9CisKK0RhdGFUYXNrOjpEYXRhVGFzayhXZWJL
aXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWFrUHRyPFdlYktpdDo6V2ViUGFn
ZVByb3h5PiYmIHBhZ2UpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1f
cGFnZShXVEZNb3ZlKHBhZ2UpKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhtX3BhZ2UtPndlYnNp
dGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpKQorICAgICwgbV9zZXNzaW9uSUQobV9wYWdl
LT5zZXNzaW9uSUQoKSkKKyAgICAsIG1fY2xpZW50KERhdGFUYXNrQ2xpZW50OjpjcmVhdGUoKSkg
eyB9CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RGF0YVRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTZlM2YwZTQ0Y2UyMzcwNWZkNDMyZTQzOTZjZTA2Y2E5
YjhjYTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURhdGFUYXNrLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0YVRhc2tJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OworY2xhc3MgV2ViUGFnZVByb3h5OworfQorCituYW1lc3BhY2Ug
QVBJIHsKKworY2xhc3MgRGF0YVRhc2tDbGllbnQ7CisKK2NsYXNzIERhdGFUYXNrIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RGF0YVRhc2s+IHsKK3B1YmxpYzoK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8RGF0YVRhc2s+IGNy
ZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFUYXNrKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKyAgICB+RGF0
YVRhc2soKTsKKworICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICBXZWJLaXQ6OldlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQorICAgIGNvbnN0IERhdGFUYXNrQ2xp
ZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQorICAgIHZvaWQg
c2V0Q2xpZW50KFJlZjxEYXRhVGFza0NsaWVudD4mJik7CisKK3ByaXZhdGU6CisgICAgRGF0YVRh
c2soV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIsIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJv
eHk+JiYpOworCisgICAgV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
ICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZTsKKyAgICBXZWFrUHRyPFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBSZWY8RGF0YVRhc2tDbGllbnQ+IG1fY2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRGF0YVRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFza0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYzliMDQ2NGViYzkzOGQ0ODVlNDgy
MzlkZWU5ZWZlMWYxOTM2MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRGF0YVRhc2tDbGllbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDcmVkZW50aWFsOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVx
dWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBEYXRhOworCitjbGFzcyBEYXRhVGFza0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERh
dGFUYXNrQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxEYXRhVGFza0NsaWVudD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhVGFza0NsaWVudCk7IH0KKyAgICB2aXJ0dWFsIH5EYXRhVGFza0NsaWVudCgpIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoRGF0YVRhc2smLCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVu
dGlhbCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rp
b25TcGFjZUFuZENvbnRpbnVlLCB7IH0pOyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKERhdGFUYXNrJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoRGF0YVRhc2smLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoRGF0YVRhc2smLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoRGF0
YVRhc2smLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpIGNvbnN0IHsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKaW5kZXggMmZlZWY2MDgyYTA2NDU3NmU3ODQz
YWQ2MjY0NjQxNzMwMWRiYjRkNy4uZWVjZmI3ODFmYzIyMzZlMGNmM2MwMTY4NzkyMDRlYzMyMzIy
Y2U0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckV4dGVuc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNw
YWNlIEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCA1NDU5ZDJlM2JmODU3Nzg4MTVhNDFkNDI0Y2E0ZTIxNGYzN2M1MzAyLi44MGEy
OWJjYTI0Nzg2MTVlZGMyNGIzM2Y1MDAzMDc1NjU4NTk1NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKIAorI2ltcG9y
dCAiQVBJRGF0YVRhc2suaCIKICNpbXBvcnQgIkFQSUZvcm1DbGllbnQuaCIKICNpbXBvcnQgIkFQ
SUZyYW1lVHJlZU5vZGUuaCIKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05
OSw2ICsxMDAsNyBAQAogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0FwcEhp
Z2hsaWdodEludGVybmFsLmgiCisjaW1wb3J0ICJfV0tEYXRhVGFza0ludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKQEAgLTIyMjQsMTIg
KzIyMjYsMTAgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25F
cnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXQKICNlbmRpZgogfQogCi0tICh2b2lk
KV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlNEYXRhICosIE5TVVJMUmVzcG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgorLSAodm9pZClfZGF0YVRhc2tXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShfV0tEYXRhVGFzayAqKSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgewotICAgICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIG5pbCwgZXJyb3IubnNFcnJvcigpKTsK
KyAgICBfcGFnZS0+ZGF0YVRhc2tXaXRoUmVxdWVzdChyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPEFQSTo6RGF0YVRhc2s+
JiYgdGFzaykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKHRhc2spKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKaW5kZXggZjhiYzMwMzUxMWM1ZGI2ODM3YzIzNTIxMjY3YTE5MzY3
NTA4MTEzZi4uNDM1ZWYxNmQ2ODQxM2VmYTMwNDk2NTFlZmMyZmQ3NWNiMzM0MjAxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1JlY3RFZGdlKSB7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVy
ZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKK0BjbGFzcyBfV0tEYXRhVGFz
azsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZVRyZWVOb2RlOwogQGNs
YXNzIF9XS0hpdFRlc3RSZXN1bHQ7CkBAIC00MjcsNyArNDI4LDcgQEAgZm9yIHRoaXMgcHJvcGVy
dHkuCiAKIC0gKHZvaWQpX3N0YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
LS0gKHZvaWQpX3JlcXVlc3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU0RhdGEgKiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9kYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0RhdGFUYXNrICopKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLRGlzcGxheUNhcHR1
cmVTdGF0ZSkgewogICAgIFdLRGlzcGxheUNhcHR1cmVTdGF0ZU5vbmUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMzIz
MzMwZDE2ZTRjZGE1OTE4ZWY1OWExYzc0ZTliMTczMjMzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2suaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitA
cHJvdG9jb2wgX1dLRGF0YVRhc2tEZWxlZ2F0ZTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
CitAaW50ZXJmYWNlIF9XS0RhdGFUYXNrIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXQgTlNfVU5BVkFJTEFCTEU7CisrIChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOwor
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHdlYWspIFdLV2ViVmlldyAqd2ViVmll
dzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4g
ZGVsZWdhdGU7CisKKy8vIENhbGxpbmcgdGhpcyB3aWxsIG9mdGVuIGRlbGVnYXRlJ3MgZGF0YVRh
c2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6IHdpdGggeyBOU1VSTEVycm9yRG9tYWluLCBOU1VSTEVy
cm9yQ2FuY2VsbGVkIH0KKy8vIGJ1dCBhbm90aGVyIGVycm9yIG1heSBoYXBwZW4gYmV0d2VlbiB0
aG9zZSB0d28gcG9pbnRzIGluIHRpbWUsIGFuZCBpZiBzb21ldGhpbmcgZWxzZSBoYXBwZW5zCisv
LyBzdWNoIGFzIFdLV2Vic2l0ZURhdGFTdG9yZSBkZWFsbG9jYXRpb24gdGhlcmUgbWF5IGJlIG5v
IGNhbGxiYWNrLgorLSAodm9pZCljYW5jZWw7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0
YVRhc2subW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2su
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjFkYWUyMjY5MzhhNzI4ZjExNDM5ZDUwYjU4NzM2ODQyM2Q4NzI5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
YXRhVGFzay5tbQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiX1dLRGF0YVRhc2tJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJBUElEYXRh
VGFzay5oIgorI2ltcG9ydCAiQVBJRGF0YVRhc2tDbGllbnQuaCIKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgorI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJf
V0tEYXRhVGFza0RlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFj
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KKworY2xhc3MgV0tEYXRhVGFza0Ns
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRhdGFUYXNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFdLRGF0YVRhc2tDbGllbnQ+IGNyZWF0ZShpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0
ZT4gZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV0tEYXRhVGFza0NsaWVudChkZWxl
Z2F0ZSkpOyB9Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFdLRGF0YVRhc2tDbGllbnQoaWQgPF9X
S0RhdGFUYXNrRGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdh
dGUpCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRhdGFUYXNrOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRhVGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRz
VG9EaWRSZWNlaXZlUmVzcG9uc2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjopXSkKKyAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlRGF0YShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKKyAgICAgICAgLCBtX3Jl
c3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvcihbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihkYXRhVGFzazpkaWRDb21wbGV0ZVdpdGhFcnJvcjopXSkgeyB9CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQVBJOjpEYXRhVGFzayYgdGFzaywgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVk
ZW50aWFsJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3Bh
Y2VBbmRDb250aW51ZSwgeyB9KTsKKyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwg
QHNlbGVjdG9yKGRhdGFUYXNrOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21w
bGV0aW9uSGFuZGxlcjopKTsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0
YXNrKSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KmNyZWRlbnRpYWwpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV2ViS2l0Ojp0b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24oZGlzcG9zaXRpb24pLCBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpKTsKKyAg
ICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oQVBJOjpEYXRhVGFzayYgdGFzaywgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
KyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRhdGFUYXNrOndp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOikpOwor
ICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRhc2spIHdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KSBuZXdSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRl
UG9saWN5OjpVcGRhdGVIVFRQQm9keSkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihw
b2xpY3kgPT0gX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUFsbG93KTsKKyAgICAgICAgfSkuZ2V0
KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKEFQSTo6RGF0YVRhc2sm
IHRhc2ssIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZVJlc3Bv
bnNlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAg
ICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNy
ZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkUmVjZWl2
ZVJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRh
c2s6d3JhcHBlcih0YXNrKSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoX1dL
RGF0YVRhc2tSZXNwb25zZVBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5ID09IF9XS0RhdGFUYXNr
UmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKEFQSTo6RGF0YVRhc2smIHRhc2ssIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0
ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZURhdGEpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIFttX2RlbGVnYXRlIGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZURhdGE6
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6
ZGF0YS5zaXplKCldKS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcihBUEk6OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3Ip
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RpZENvbXBsZXRlV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBb
bV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRhc2spIGRpZENvbXBsZXRlV2l0aEVycm9yOmVy
cm9yLm5zRXJyb3IoKV07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPF9XS0RhdGFUYXNr
RGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb1dpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2Vp
dmVSZXNwb25zZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlRGF0YSA6IDE7
CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvciA6IDE7Cit9OworCitA
aW1wbGVtZW50YXRpb24gX1dLRGF0YVRhc2sKKworLSAodm9pZCljYW5jZWwKK3sKKyAgICBfZGF0
YVRhc2stPmNhbmNlbCgpOworfQorCistIChXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgYXV0
byogcGFnZSA9IF9kYXRhVGFzay0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gcGFnZS0+Y29jb2FWaWV3KCkuZ2V0KCk7Cit9CisKKy0gKGlk
IDxfV0tEYXRhVGFza0RlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIHJldHVybiBfZGVsZWdhdGUu
Z2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tEYXRhVGFza0Rl
bGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9kYXRh
VGFzay0+c2V0Q2xpZW50KFdLRGF0YVRhc2tDbGllbnQ6OmNyZWF0ZShkZWxlZ2F0ZSkpOworfQor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2Nh
dGVPbk1haW5SdW5Mb29wKF9XS0RhdGFUYXNrLmNsYXNzLCBzZWxmKSkKKyAgICAgICAgcmV0dXJu
OworICAgIF9kYXRhVGFzay0+fkRhdGFUYXNrKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJ
OjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9kYXRhVGFzazsKK30KKworQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFU
YXNrRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRh
VGFza0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJjODdiZWJlZDliNGM5MTAyOTc1Y2MwMTNlNDNh
YzM4Zjk0ZWIwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEYXRhVGFza0RlbGVnYXRlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgX1dLRGF0YVRhc2s7CisKK3R5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kpIHsKKyAgICBfV0tEYXRhVGFza1Jl
ZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3lBbGxvdywK
K30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkg
eworICAgIF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lDYW5jZWwsCisgICAgX1dLRGF0YVRhc2tS
ZXNwb25zZVBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAcHJvdG9j
b2wgX1dLRGF0YVRhc2tEZWxlZ2F0ZSA8TlNPYmplY3Q+CisKK0BvcHRpb25hbAorCistICh2b2lk
KWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworLSAo
dm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRGF0YVRhc2tSZWRp
cmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyOworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRh
c2sgKilkYXRhVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25z
ZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kpKWRl
Y2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sg
ZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGE7CistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRh
VGFzayAqKWRhdGFUYXNrIGRpZENvbXBsZXRlV2l0aEVycm9yOihudWxsYWJsZSBOU0Vycm9yICop
ZXJyb3I7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrSW50ZXJuYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lODc0YjE0MTI2YzVhMzYzMTdkOTNmYjFjNzIzNGVmNzMxNzc2ZmE3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNr
SW50ZXJuYWwuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiQVBJRGF0
YVRhc2suaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJfV0tEYXRhVGFzay5oIgor
I2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6RGF0YVRhc2s+IHsKKyAgICB1c2luZyBX
cmFwcGVyQ2xhc3MgPSBfV0tEYXRhVGFzazsKK307CisKK30KKworQGludGVyZmFjZSBfV0tEYXRh
VGFzayAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6RGF0YVRhc2s+IF9kYXRhVGFzazsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLRGF0YVRhc2tE
ZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1N2RlOGIx
ZjY1ODY2ZmIxZmNmN2JkMThiYmI2OGQyMGMxNWFlOWZjLi42ZjBiMmMxMGYyZjdkYmUzOGE1ODlh
ZTA4YzFmNzY4NmQyMzUxNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAog
I2luY2x1ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkFQSURhdGFUYXNrLmgiCisjaW5jbHVkZSAi
QVBJRGF0YVRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uTWFuYWdlci5oIgpAQCAtMzM3LDE0ICszMzksNjUgQEAgRG93bmxvYWRQcm94eSYgTmV0d29y
a1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3QKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRh
dGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5h
dGluZ1BhZ2UpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJj
ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHkm
IHBhZ2UsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UmVxdWVzdFJlc291cmNlKHBhZ2VJRCwgc2Vzc2lvbklELCByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlKHJlcXVlc3QuaHR0cEJvZHkoKSkpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGF0YVJlZmVyZW5jZSYm
IGRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3Zl
KGVycm9yKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RGF0YVRhc2tXaXRoUmVxdWVzdChwYWdlLmlkZW50aWZpZXIoKSwgc2Vzc2lvbklELCByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlKHJlcXVlc3QuaHR0cEJvZHkoKSkpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdlYWtQYWdlID0gV2Vha1B0ciB7IHBhZ2Ug
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKERhdGFU
YXNrSWRlbnRpZmllciBpZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgTUVTU0FHRV9DSEVD
SyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOworICAgICAg
ICBhdXRvIGRhdGFUYXNrID0gQVBJOjpEYXRhVGFzazo6Y3JlYXRlKGlkZW50aWZpZXIsIFdURk1v
dmUod2Vha1BhZ2UpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YVRhc2spOworICAg
ICAgICBtX2RhdGFUYXNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShkYXRhVGFzaykpOwogICAg
IH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrUmVjZWl2ZWRDaGFs
bGVuZ2UoRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9DSEVDSyhkZWNsdHlwZShtX2RhdGFUYXNr
cyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOworICAgIGlmIChhdXRvIHRhc2sgPSBtX2RhdGFU
YXNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHRhc2stPmNsaWVudCgpLmRpZFJlY2VpdmVD
aGFsbGVuZ2UoKnRhc2ssIFdURk1vdmUoY2hhbGxlbmdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7CisgICAgfQorfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBNRVNTQUdF
X0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7Cisg
ICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAg
dGFzay0+Y2xpZW50KCkud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oKnRhc2ssIFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZShEYXRhVGFza0lkZW50
aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IE1FU1NBR0VfQ0hFQ0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlkZW50aWZp
ZXIpKTsKKyAgICBpZiAoYXV0byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlkZW50aWZpZXIpKQor
ICAgICAgICB0YXNrLT5jbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKnRhc2ssIFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrRGlkUmVj
ZWl2ZURhdGEoRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tz
KTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRh
c2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZURh
dGEoKnRhc2ssIGRhdGEpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhF
cnJvcihEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmIGVycm9yKQoreworICAgIE1FU1NBR0VfQ0hFQ0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjpp
c1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKKyAgICBpZiAoYXV0byB0YXNrID0gbV9kYXRhVGFza3Mu
dGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkuZGlkQ29tcGxldGVXaXRo
RXJyb3IoKnRhc2ssIFdURk1vdmUoZXJyb3IpKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlv
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkZldGNoV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggM2QzNTQ0ZGNiOTc2MGQ2
ZTMzNzI3NWQ2MmE1MzYxYzliMTk1YzRlMC4uZTNkZmQ1M2VlMzNjZTM2ZmU4OGUxMWI2MTQ2ODUx
M2Q4NTE1MmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIkFw
cFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRGF0YVRhc2tJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmgiCkBAIC01OCw2ICs2MCw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogCiBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKK2NsYXNz
IERhdGFUYXNrOwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTEyNiw3ICsxMjksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94
eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5KiBvcmlnaW5h
dGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQg
ZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHkmLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhVGFz
ayYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9u
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpOwpAQCAtMjg5LDYgKzI5MiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYpOwogCisgICAgdm9p
ZCBkYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKERhdGFUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpPiYmKTsK
KyAgICB2b2lkIGRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oRGF0YVRhc2tJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRhdGFU
YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKERhdGFUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IGRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoRGF0YVRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoRGF0
YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApAQCAtMzk4LDYgKzQwNyw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWFrSGFzaFNldDxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmVzOwogICAgIFVuaXF1ZVJlZjxXZWJDb29raWVNYW5hZ2VyUHJveHk+IG1fY29va2ll
TWFuYWdlcjsKKyAgICBIYXNoTWFwPERhdGFUYXNrSWRlbnRpZmllciwgUmVmPEFQSTo6RGF0YVRh
c2s+PiBtX2RhdGFUYXNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUzYWJiYjQ2OGY1YjNhZDA3N2ViNjQ2YTY5MmNjN2Jm
OTI5NTRkZjAuLjU0ZTQ2M2NhODlmNWVhODE4ODQ2YjJiYTAxMDBmZWQxMThmZWNjZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTg5LDQgKzg5LDEyIEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShBUFBMRV9Q
QVlfUkVNT1RFX1VJX1VTRVNfU0NFTkUpCiAgICAgR2V0V2luZG93U2NlbmVJZGVudGlmaWVyRm9y
UGF5bWVudFByZXNlbnRhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SWRlbnRpZmllcikgLT4gKFN0cmluZyBzY2VuZUlEKSBBc3luYwogI2VuZGlmCisKKyAg
ICBEYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkgLT4g
KGVudW06dWludDhfdCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCkgQXN5bmMKKyAgICBE
YXRhVGFza1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYktpdDo6RGF0YVRhc2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KSAtPiAoYm9vbCBhbGxvd2VkKSBBc3luYworICAg
IERhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpIC0+IChib29sIGFs
bG93ZWQpIEFzeW5jCisgICAgRGF0YVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRhdGFUYXNr
SWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBEYXRh
VGFza0RpZENvbXBsZXRlV2l0aEVycm9yKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGRlNDhkYmM1ZDZhNGQ3NmM4MjE1ZDIz
NmIxMTc0NjEwNGNmYjBhYTUuLjMyNWVhMTg2NDU4ZjVlNjRlOWYzYTBjZWUyYTNhNDNiN2Y4NDQy
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjQ2Miw5
ICs2NDYyLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRT
dGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkYXRhVGFza1dpdGhSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpEYXRhVGFzayYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHdlYnNp
dGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RSZXNvdXJjZShpZGVudGlmaWVy
KCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuZGF0YVRhc2tX
aXRoUmVxdWVzdCgqdGhpcywgc2Vzc2lvbklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNv
bnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDg2ZGI3ODA2MWQ0MjdiYjE0MmJlOTMyYTM4ZWI0MGVhZDNmZDQ3ZTku
LjMzN2RiYjU0ZmE1ODU5N2RiMjhiMWI1NmVlOTMyNmFhNTA3MmNjZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDEsNiArMjAxLDcgQEAgbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3MgQ29udGV4
dE1lbnVDbGllbnQ7CitjbGFzcyBEYXRhVGFzazsKIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTsKIGNsYXNzIEVycm9yOwogY2xhc3MgRmluZENsaWVudDsKQEAgLTEzODYsNyArMTM4Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7
CiAgICAgdm9pZCByZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+
JiYpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7Ci0gICAgdm9pZCBy
ZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIGRhdGFU
YXNrV2l0aFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQVBJOjpEYXRhVGFzayYpPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3Bl
bGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU5NTY4NTVhYzU5YmY3YTVkMTdiMjkx
ZmE0ZTFmMTJlMWVhN2Q1YmEuLjRhMDVhMTEwODdhZWZlMDgyNWY3NWUzYTE2ZGM4NTBkMzIxMjEz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIyOCw2ICsxMjI4LDggQEAKIAkJNUMyMEY2NzkyNzZBNkRCNjAwNkNBQzIyIC8qIEFy
Z3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBM0Q2MTA0MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87
IH07CiAJCTVDMjY5NTg1MjAwNDMyMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzI2OTU4NDIwMDQyRjEyMDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMjk4
REEwMUMzREYwMjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAv
KiBQZW5kaW5nRG93bmxvYWQuaCAqLzsgfTsKKwkJNUMyQzZGQTkyN0M5RTVFMjAwQ0NEQTlFIC8q
IF9XS0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzJDNkZBNDI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QzJDNkZBQTI3QzlFNUVC
MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyQzZGQTMyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0Rh
dGFUYXNrRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1QzJENTc0ODI1N0ZGQTRCMDA2NzlBNzIgLyogV0tDb250ZXh0RG93bmxvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MkQ1NzQ3MjU3RkZBMTIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMkVCREZBMjU2
NDM4MEIwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tE
b3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTVDMzU5QzBEMjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzU5QzBDMjE1NDcz
MjEwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDkxMCw2ICs0OTEyLDE2IEBACiAJCTVDMkIxQUYzMjIz
QUI3MjgwMEI5MUNGNyAvKiBEb3dubG9hZE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG93bmxvYWRNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMyQjFBRjQyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyQjFBRjUyMjNDMUZEMjAwQjkxQ0Y3IC8qIERv
d25sb2FkUHJveHlNYXBDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERvd25sb2FkUHJveHlNYXBDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUMyQzZGOUUyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDMkM2RjlGMjdDOTUyMzUwMENDREE5RSAvKiBBUElEYXRhVGFzay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElEYXRhVGFzay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkEwMjdDOTUyMzUwMENDREE5RSAvKiBB
UElEYXRhVGFza0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElE
YXRhVGFza0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBMjI3
Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBfV0tEYXRhVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUMyQzZGQTMyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBNDI3Qzk1Mjk5MDBDQ0RBOUUgLyog
X1dLRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRGF0YVRh
c2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTUyN0M5NTI5OTAwQ0NE
QTlFIC8qIF9XS0RhdGFUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLRGF0YVRhc2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzJDNkZBNjI3Qzk1OEZDMDBDQ0RBOUUgLyogRGF0YVRhc2tJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFUYXNrSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBNzI3Qzk2RkY5MDBDQ0RBOUUgLyogV0tVUkxT
ZXNzaW9uVGFza0RlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzJDNkZBODI3Qzk2RkY5MDBDQ0RBOUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2Vzc2lvblRhc2tE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJENTc0NzI1N0ZGQTEy
MDA2NzlBNzIgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUMyRUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDgg
LyogV0tEZXByZWNhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVw
cmVjYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3Nyw2ICs3Mjg5LDcg
QEAKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29u
dGV4dERhdGEuaCAqLywKIAkJCQk5OUY2NDJEMjFGQUJFMzc4MDA5NjIxRTkgLyogQ29vcmRpbmF0
ZVN5c3RlbS5oICovLAorCQkJCTVDMkM2RkE2MjdDOTU4RkMwMENDREE5RSAvKiBEYXRhVGFza0lk
ZW50aWZpZXIuaCAqLywKIAkJCQk5OTAzNkFFODIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJs
ZUluZm9EYXRhLmNwcCAqLywKIAkJCQk5OTAzNkFFNzIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdn
YWJsZUluZm9EYXRhLmggKi8sCiAJCQkJMEYxODlDQUIyNDc0OUYyRjAwRTU4RDgxIC8qIERpc3Bs
YXlMaW5rT2JzZXJ2ZXJJRC5oICovLApAQCAtODgzNyw2ICs4ODUwLDEwIEBACiAJCQkJNUM1RDIz
ODkyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oICovLAogCQkJCTVD
NUQyMzg4MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi8sCiAJ
CQkJNUM1RDIzODcyMjdBMTg5MTAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVy
bmFsLmggKi8sCisJCQkJNUMyQzZGQTQyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLmgg
Ki8sCisJCQkJNUMyQzZGQTIyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLm1tICovLAor
CQkJCTVDMkM2RkEzMjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFza0RlbGVnYXRlLmggKi8s
CisJCQkJNUMyQzZGQTUyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrSW50ZXJuYWwuaCAq
LywKIAkJCQk4Mzg5MUI2ODFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdE
ZWxlZ2F0ZS5oICovLAogCQkJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZC5oICovLAogCQkJCUExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAq
LywKQEAgLTEwNDQyLDYgKzEwNDU5LDggQEAKIAkJCQk1QzIwQ0I5QjFCQjBEQ0QyMDA4OTVCQjEg
LyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLywKIAkJCQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNF
MjYgLyogV2ViU29ja2V0VGFza0NvY29hLmggKi8sCiAJCQkJNDEyODdENEIyMjVDMDVDNDAwOUEz
RTI2IC8qIFdlYlNvY2tldFRhc2tDb2NvYS5tbSAqLywKKwkJCQk1QzJDNkZBODI3Qzk2RkY5MDBD
Q0RBOUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmggKi8sCisJCQkJNUMyQzZGQTcyN0M5
NkZGOTAwQ0NEQTlFIC8qIFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTEyODIsNiAr
MTEzMDEsOSBAQAogCQkJCTVDRTBDMzY3MjI5RjJEM0UwMDM2OTVGMCAvKiBBUElDb250ZXh0TWVu
dUVsZW1lbnRJbmZvLmggKi8sCiAJCQkJNUM1RDIzOEEyMjdBMUQ5QjAwMEI5QkRBIC8qIEFQSUN1
c3RvbUhlYWRlckZpZWxkcy5oICovLAogCQkJCTdBODIxRjRGMUUyRjdBNUMwMDYwNDU3NyAvKiBB
UElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCAqLywKKwkJCQk1QzJDNkY5RjI3Qzk1MjM1
MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2suY3BwICovLAorCQkJCTVDMkM2RjlFMjdDOTUyMzUwMEND
REE5RSAvKiBBUElEYXRhVGFzay5oICovLAorCQkJCTVDMkM2RkEwMjdDOTUyMzUwMENDREE5RSAv
KiBBUElEYXRhVGFza0NsaWVudC5oICovLAogCQkJCTk5MDM2QUU0MjNBOTU4NzQwMDAwQjA2QSAv
KiBBUElEZWJ1Z2dhYmxlSW5mby5jcHAgKi8sCiAJCQkJOTkwMzZBRTMyM0E5NTg3NDAwMDBCMDZB
IC8qIEFQSURlYnVnZ2FibGVJbmZvLmggKi8sCiAJCQkJODM4OTFCNjIxQTY4QjM0MjAwMzBGMzg2
IC8qIEFQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCkBAIC0xMjg4Myw2ICsxMjkwNSw4
IEBACiAJCQkJNUM0NjA5RTgyMjQzMTdCQjAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFj
dGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGODFCRTAxRkY0MDA4NzRB
RjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1
RDIzOEMyMjdBMkNEQTAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUMyQzZGQTkyN0M5RTVFMjAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1QzJDNkZBQTI3QzlFNUVCMDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNjkxQTY4QkVCQzAwMzBGMzg2IC8q
IF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRG
RTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFBNEZFNjExOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGQwYzNkM2QzNzRhOTlhN2JiOTM4NzIzNTgwYjI2OTA2NzYxMWU2YTkuLmY1YTg2OGUyNmRm
OWE1NzIzYmVlMGY4ZGY0M2FkNzgzNWE3M2Y4ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yNSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgX1dLRGF0YVRhc2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5t
bToKKyAgICAgICAgKC1bVGVzdERhdGFUYXNrRGVsZWdhdGUgZGF0YVRhc2s6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtU
ZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6ZGVjaXNpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRS
ZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKC1bVGVzdERhdGFUYXNrRGVsZWdhdGUgZGF0YVRhc2s6
ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMi0wMi0yNCAg
Sm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1B5dGhvbjNd
IFJlbW92ZSBzaGViYW5ncyBmcm9tIHdlYmtpdHB5IGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQppbmRleCBi
MTFjNjllMjM1NGNhZjQ0Y2RkYzAwZTFlMzE5MmNlNGY4NjMyOGJkLi44ZmY2NDc0OTQ3NjhhY2Iy
YjNjMmQxMDM0MDc1ZGYyOTBhNmJjMDYzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KQEAgLTMzLDYgKzMzLDgg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEYXRhVGFzay5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS0RhdGFUYXNrRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zNTIsNyArMzU0LDQ5IEBAIFRFU1QoTmV0d29ya1By
b2Nlc3MsIEJyb2FkY2FzdENoYW5uZWxDcmFzaFJlY292ZXJ5KQogICAgIEVYUEVDVF9FUSh3ZWJQ
SUQyLCBbd2ViVmlldzIgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiB9CiAKLVRFU1QoTmV0d29y
a1Byb2Nlc3MsIExvYWRSZXNvdXJjZSkKK0BpbnRlcmZhY2UgVGVzdERhdGFUYXNrRGVsZWdhdGUg
OiBOU09iamVjdDxfV0tEYXRhVGFza0RlbGVnYXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEYXRhVGFz
ayAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQoXikoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0RhdGFUYXNr
ICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAoXikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkp
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlRGF0YSkoX1dL
RGF0YVRhc2sgKiwgTlNEYXRhICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRDb21wbGV0ZVdpdGhFcnJvcikoX1dLRGF0YVRhc2sgKiwgTlNFcnJvciAqKTsKKworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gVGVzdERhdGFUYXNrRGVsZWdhdGUKKworLSAodm9pZClkYXRh
VGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoZGF0YVRhc2ssIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKK30KKworLSAodm9pZClkYXRhVGFzazoo
X1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0RhdGFUYXNrUmVzcG9uc2VQ
b2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQor
ICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFUYXNrLCByZXNwb25zZSwgZGVjaXNpb25I
YW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFza1Jl
c3BvbnNlUG9saWN5QWxsb3cpOworfQorCistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAq
KWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgaWYgKF9kaWRS
ZWNlaXZlRGF0YSkKKyAgICAgICAgX2RpZFJlY2VpdmVEYXRhKGRhdGFUYXNrLCBkYXRhKTsKK30K
KworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRDb21wbGV0ZVdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRDb21wbGV0ZVdpdGhFcnJv
cikKKyAgICAgICAgX2RpZENvbXBsZXRlV2l0aEVycm9yKGRhdGFUYXNrLCBlcnJvcik7Cit9CisK
K0BlbmQKKworCitURVNUKF9XS0RhdGFUYXNrLCBCYXNpYykKIHsKICAgICB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKICAgICBhdXRvIGh0bWwgPSAiPHNjcmlwdD5kb2N1bWVudC5jb29r
aWU9J3Rlc3RrZXk9dmFsdWUnPC9zY3JpcHQ+IjsKQEAgLTM3NywyNCArNDIxLDk3IEBAIFRFU1Qo
TmV0d29ya1Byb2Nlc3MsIExvYWRSZXNvdXJjZSkKICAgICBbcG9zdFJlcXVlc3Qgc2V0SFRUUE1l
dGhvZDpAIlBPU1QiXTsKICAgICBhdXRvIHJlcXVlc3RCb2R5ID0gInJlcXVlc3QgYm9keSI7CiAg
ICAgW3Bvc3RSZXF1ZXN0IHNldEhUVFBCb2R5OltOU0RhdGEgZGF0YVdpdGhCeXRlczpyZXF1ZXN0
Qm9keSBsZW5ndGg6c3RybGVuKHJlcXVlc3RCb2R5KV1dOwotICAgIFt3ZWJWaWV3IF9yZXF1ZXN0
UmVzb3VyY2U6cG9zdFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKmRh
dGEsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwu
YWJzb2x1dGVTdHJpbmcsIHBvc3RSZXF1ZXN0LmdldCgpLlVSTC5hYnNvbHV0ZVN0cmluZyk7Ci0g
ICAgICAgIEVYUEVDVF9FUShkYXRhLmxlbmd0aCwgc3RybGVuKHNlY29uZFJlc3BvbnNlKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoZGF0YS5ieXRlcywgc2Vjb25kUmVzcG9uc2UsIGRh
dGEubGVuZ3RoKSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIFt3ZWJWaWV3IF9kYXRhVGFz
a1dpdGhSZXF1ZXN0OnBvc3RSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRGF0
YVRhc2sgKnRhc2spIHsKKyAgICAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNl
OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9XS0RhdGFU
YXNrICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShf
V0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgcG9zdFJlcXVlc3QuZ2V0KCkuVVJMLmFic29s
dXRlU3RyaW5nKTsKKyAgICAgICAgICAgIHJlY2VpdmVkUmVzcG9uc2UgPSB0cnVlOworICAgICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cisg
ICAgICAgIH07CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxzZTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICosIE5T
RGF0YSAqZGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRSZXNwb25zZSk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgsIHN0cmxlbihzZWNvbmRSZXNwb25z
ZSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBzZWNvbmRS
ZXNwb25zZSwgZGF0YS5sZW5ndGgpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRydWU7
CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZENvbXBsZXRlV2l0aEVycm9y
ID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUocmVjZWl2ZWREYXRhKTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OwogICAgIH1dOwogICAgIFV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihzZWNvbmRSZXF1ZXN0LmRhdGEoKSwg
IkNvb2tpZTogdGVzdGtleT12YWx1ZVxyXG4iLCBzZWNvbmRSZXF1ZXN0LnNpemUoKSkpOwogICAg
IEVYUEVDVF9XS19TVFJFUShIVFRQU2VydmVyOjpwYXJzZUJvZHkoc2Vjb25kUmVxdWVzdCksIHJl
cXVlc3RCb2R5KTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfcmVxdWVzdFJl
c291cmNlOltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJibG9iOmJsYW5rIl1dIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yVW5zdXBwb3J0ZWRVUkwpOwotICAgICAgICBFWFBFQ1RfTlVM
TChkYXRhKTsKLSAgICAgICAgRVhQRUNUX05VTEwocmVzcG9uc2UpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYmxvYjpibGFuayJdXSBjb21wbGV0
aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIHN0YXRpYyBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7CisgICAgICAgIHRh
c2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2Vp
dmVkUmVzcG9uc2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZVJl
c3BvbnNlID0gXihfV0tEYXRhVGFzayAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAo
XmRlY2lzaW9uSGFuZGxlcikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAg
ICAgIHJlY2VpdmVkUmVzcG9uc2UgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBfX2Jsb2Nr
IGJvb2wgcmVjZWl2ZWREYXRhID0gZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZFJl
Y2VpdmVEYXRhID0gXihfV0tEYXRhVGFzayAqLCBOU0RhdGEgKmRhdGEpIHsKKyAgICAgICAgICAg
IHJlY2VpdmVkRGF0YSA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRpZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkUmVzcG9uc2UpOworICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkRGF0YSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yVW5zdXBwb3J0ZWRVUkwpOworICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIH07CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIH0K
KworVEVTVChfV0tEYXRhVGFzaywgQ2hhbGxlbmdlKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKEhUVFBTZXJ2ZXI6OnJlc3BvbmRX
aXRoQ2hhbGxlbmdlVGhlbk9LLCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFzaykgewor
ICAgICAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFza0RlbGVn
YXRlIG5ld10pOworICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAg
ICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFNlcnZlclRydXN0Q2hhbGxlbmdlID0gZmFsc2U7Cisg
ICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSA9IGZhbHNlOwor
ICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBeKF9XS0RhdGFUYXNrICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5n
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICAgICAgaWYgKFtjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3RdKSB7CisgICAgICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSk7CisgICAgICAgICAg
ICAgICAgcmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBC
YXNpYyk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRCYXNpY0F1dGhDaGFsbGVu
Z2UpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5n
ZSk7CisgICAgICAgICAgICByZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSA9IHRydWU7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbCwgbmlsKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVk
RGF0YSA9IGZhbHNlOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlRGF0YSA9IF4o
X1dLRGF0YVRhc2sgKiwgTlNEYXRhICpkYXRhKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZFJlc3BvbnNlID0gIjxzY3JpcHQ+YWxlcnQoJ3N1Y2Nlc3MhJyk8L3NjcmlwdD4iOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCBzdHJsZW4oZXhwZWN0ZWRSZXNwb25z
ZSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBleHBlY3Rl
ZFJlc3BvbnNlLCBkYXRhLmxlbmd0aCkpOworICAgICAgICAgICAgcmVjZWl2ZWREYXRhID0gdHJ1
ZTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkQ29tcGxldGVXaXRoRXJy
b3IgPSBeKF9XS0RhdGFUYXNrICosIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShyZWNlaXZlZERhdGEpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRC
YXNpY0F1dGhDaGFsbGVuZ2UpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTZXJ2
ZXJUcnVzdENoYWxsZW5nZSk7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworfQorCisvLyBGSVhNRTogQWRkIHRlc3RzIGZvciBfV0tEYXRhVGFzayByZWRpcmVj
dGlvbiwgYXMgd2VsbCBhcyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGNy
YXNoZXMuCg==
</data>
<flag name="commit-queue"
          id="480600"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453287</attachid>
            <date>2022-02-25 21:51:54 -0800</date>
            <delta_ts>2022-02-26 07:02:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237234-20220225215153.patch</filename>
            <type>text/plain</type>
            <size>88232</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjZjVlOGU3MjRjYTFjYWFi
NWY3NGQ4YmE4OTIyYWIxZjVlYjJmNDguLjAyMzdiY2FlMWI2YTg4NTY4MzRlYmYyMTM2ODhiYTJk
MjE0ODdkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjItMDItMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIF9X
S0RhdGFUYXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIEkgYWRkZWQgV0tXZWJWaWV3Ll9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6IEkgb3Zlcmxvb2tlZCBhIGZldyB0aGluZ3MuCisgICAgICAgIEZpcnN0LCBpdCBpcyB1bmFi
bGUgdG8gc3VwcG9ydCBIVFRQUyBiZWNhdXNlIEkgZGlkbid0IGhvb2sgdXAgYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlIGhhbmRsaW5nIHRvIGl0LgorICAgICAgICBTZWNvbmQsIGl0IGlzIHVuYWJs
ZSB0byBoYXZlIGEgbWF4aW11bSBhY2NlcHRlZCByZXNwb25zZSBsZW5ndGgsIHdoaWNoIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIGFuIGFkb3B0ZXIuCisgICAgICAgIFRvIG1ha2UgdGhlc2UgcG9zc2li
bGUsIEkgbWFkZSBfV0tEYXRhVGFzayB3aGljaCBpcyByZWxhdGVkIHRvIFdLRG93bmxvYWQgYW5k
IE5TVVJMU2Vzc2lvbkRhdGFUYXNrLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGF0YVRhc2tX
aXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEYXRh
VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6Y2FuY2VsRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtXS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUgaW5pdFdpdGhJZGVudGlmaWVyOnNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBjb25uZWN0aW9uXSk6CisgICAgICAgICgt
W1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFza0Rl
bGVnYXRlIFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNrRGVs
ZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNr
RGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3Qu
aDoKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6ZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24pOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVj
dDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2s6
OnNldENsaWVudCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrOjpjYW5jZWwpOgorICAgICAgICAo
QVBJOjpEYXRhVGFzazo6RGF0YVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGF0
YVRhc2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKEFQSTo6RGF0YVRhc2s6OnBhZ2UpOgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6
Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp+RGF0YVRhc2tDbGllbnQpOgorICAgICAg
ICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAg
ICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEgY29uc3Qp
OgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbTog
QWRkZWQuCisgICAgICAgICgtW19XS0RhdGFUYXNrIGNhbmNlbF0pOgorICAgICAgICAoLVtfV0tE
YXRhVGFzayB3ZWJWaWV3XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIGRlbGVnYXRlXSk6Cisg
ICAgICAgICgtW19XS0RhdGFUYXNrIHNldERlbGVnYXRlOl0pOgorICAgICAgICAoLVtfV0tEYXRh
VGFzayBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFz
a0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMi0wMi0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFRha2UgZG93biBzaGFyZWQgd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBsZXNzIGFnZ3Jlc3Np
dmVseSB3aGVuIGl0IGJlY29tZXMgaWRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCA4YzYwOGEy
M2E0NGUyYzU2NjEyYmE4ZTMzM2Y4YzQ0NTRmZDQ1NjJmLi45ZmU3NmM4NjUxZDA3ZjJmMzlmNzA2
Y2RkOTA4ODJmY2QxNTZlZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtOTk5LDYgKzk5OSw3
IEBACiAgICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTUwMDAwKQogI2RlZmluZSBIQVZFX0NGTkVUV09SS19OU1VSTFNFU1NJT05fQVRU
UklCVVRFRF9CVU5ETEVfSURFTlRJRklFUiAxCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05TVVJM
U0VTU0lPTl9IU1RTX1dJVEhfVU5UUlVTVEVEX1JPT1QgMQorI2RlZmluZSBIQVZFX05TVVJMU0VT
U0lPTl9UQVNLX0RFTEVHQVRFIDEKICNkZWZpbmUgSEFWRV9BVURJT19PQkpFQ1RfUFJPUEVSVFlf
RUxFTUVOVF9NQUlOIDEKICNkZWZpbmUgSEFWRV9JTUFHRV9SRVNUUklDVEVEX0RFQ09ESU5HIDEK
ICNkZWZpbmUgSEFWRV9YUENfQ09OTkVDVElPTl9DT1BZX0lOVkFMSURBVElPTl9SRUFTT04gMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA5MmM1Y2IzMzliNjU5ODg0MjAzMDM3NGE5OWZlNjYxNzE1YTZjMzM2Li45ODJkODhhODZiNGY4
NjNlYTkxZWUyNjZhODdjOGJiMWQyZmM3YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk5NiwxMyArMTk5NiwxNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFU
YXNrJiBuZXR3b3JrRGF0YVRhcwogICAgIH0sIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGh0dHBCb2R5LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7CisgICAgbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKS0+ZGF0YVRhc2tXaXRoUmVxdWVzdChwYWdlSUQsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnJlcXVlc3RSZXNvdXJjZShw
YWdlSUQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9LCB7IH0pOworICAgICAg
ICBzZXNzaW9uLT5jYW5jZWxEYXRhVGFzayhpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5nKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IGEzZWYxMTI4NTcxMTZkZjE1ODg2OWE5NjZiODU5Y2FkMTM4ZjQ4YTguLjY4OWJmOTdlZGVkZDk1
ZTM3YzYyOTBjYjZjZmFlOTViZDZiNDEwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBcHBQ
cml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC00MzIsNyArNDMzLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVS
TCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICNlbmRpZgogICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYpOworICAgIHZv
aWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmKTsKKyAgICB2
b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKICAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MzFlMmI2
MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwLi4xMWQ2NWNiMjIxZTFiODMwZGM3NWY4
YzBhNzNmMDBmZTU2OWUyYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUzLDcgKzUzLDggQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQogI2VuZGlmCi0gICAgUmVxdWVzdFJlc291cmNlKFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVx
dWVzdEJvZHkpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKKyAg
ICBEYXRhVGFza1dpdGhSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHkpIC0+IChXZWJLaXQ6OkRh
dGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllcikgQXN5bmMKKyAgICBDYW5jZWxEYXRhVGFz
ayhXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKICAgICBB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggODVjN2NiZDY5MDM0ZDljYmE3ZjQ0NWRh
OWRlNDc1YTFkN2IzNTExOC4uNGRkMjlmODlkNTMyYTI2MWZmYWIyYmY3ZGM3NDNlMmFjMTBmYTdi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXBwUHJpdmFjeVJlcG9ydC5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIuaCIKQEAgLTIzMiw3ICsyMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRh
VGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRl
bnRpZmllcikgeyB9CiAgICAgdmlydHVhbCBzaXplX3QgY291bnROb25EZWZhdWx0U2Vzc2lvblNl
dHMoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDNjNDZlNmIwZDdj
ZTM1YzA2ZTk2MzhmYWJhN2M5MjhlMTc1YzUxMGUuLmU5ZTkyYzc4MDIzM2Q0OTBlMGRkOTM3ZThl
YTUzMDdiNTViYTQzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0xNDIsNiArMTQyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lk
IHJlbW92ZURhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRp
YWxzKCkgb3ZlcnJpZGU7CkBAIC0xNjIsNyArMTY0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZVdlYlNvY2tldFRhc2soU2Vzc2lvblNldCYsIFdlYlNvY2tldFRhc2smKSBmaW5hbDsKICNl
bmRpZgogCi0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFUYXNrV2l0aFJlcXVl
c3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJZGVudGlmaWVyKT4mJikgZmluYWw7CisgICAg
dm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlBh
Z2VOZXR3b3JrUGFyYW1ldGVycyYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2VOZXR3
b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBmaW5hbDsKICAgICBzaXplX3Qg
Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoKSBjb25zdCBmaW5hbDsKQEAgLTE4OCw2ICsxOTEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICAg
ICBib29sIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07
CisgICAgSGFzaE1hcDxEYXRhVGFza0lkZW50aWZpZXIsIFJldGFpblB0cjxOU1VSTFNlc3Npb25E
YXRhVGFzaz4+IG1fZGF0YVRhc2tzRm9yQVBJOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmM1NDdhYjQ4NjE3ZWI5YmRhYmUyYjFkYjRlZTlhNzli
NWJjNWZkYy4uMjQxZmFlNmJlMzIwODk4ZjJjYzY4OTMxNmE3Y2I2ODM0ODA2ZmNjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3Mu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0
ICJQcml2YXRlUmVsYXllZC5oIgorI2ltcG9ydCAiV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgi
CiAjaW1wb3J0ICJXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYlNvY2tl
dFRhc2suaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CkBAIC0xNzYwLDE0
ICsxNzYxLDMwIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkV2ViUGFnZU5ldHdvcmtQ
YXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnCiAgICAgbV9hdHRyaWJ1dGVkQnVu
ZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcnMuYWRkKHBhZ2VJRCwgcGFyYW1ldGVycy5h
dHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgYXV0byBzZXNzaW9uID0gc2Vzc2lvbldyYXBwZXJGb3JUYXNrKHBhZ2VJRCwgcmVxdWVzdCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgc3RkOjpudWxsb3B0KS5zZXNz
aW9uOworICAgIGF1dG8gaWRlbnRpZmllciA9IERhdGFUYXNrSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7Ci0gICAgYXV0byBjb21wbGV0aW9u
QmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChOU0RhdGEgKmRhdGEsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0
YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGggfSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgeyBlcnJvciB9KTsKLSAgICB9KTsKLSAgICBbW3Nlc3Npb24gZGF0
YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkJs
b2NrLmdldCgpXSByZXN1bWVdOworICAgIGF1dG8gc2Vzc2lvbiA9IHNlc3Npb25XcmFwcGVyRm9y
VGFzayhwYWdlSUQsIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2UsIHN0ZDo6bnVsbG9wdCkuc2Vzc2lvbjsKKyAgICBhdXRvIHRhc2sgPSBbc2Vzc2lvbiBkYXRh
VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVu
dGlmaWVyIHNlc3Npb246KnRoaXNdKTsKKyNpZiBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVH
QVRFKQorICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyNlbmRpZgorICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9kYXRhVGFza3NGb3JBUEkuYWRkKGlkZW50aWZpZXIsIHRhc2spOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBbdGFzayByZXN1
bWVdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCit2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIFttX2RhdGFUYXNrc0ZvckFQSS5nZXQoaWRlbnRpZmllcikgY2FuY2VsXTsK
K30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVEYXRhVGFzayhEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGFUYXNrc0Zv
ckFQSS5yZW1vdmUoaWRlbnRpZmllcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tV
UkxTZXNzaW9uVGFza0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNGE1OGM2ODUyYWNl
OGEzZGVkODIxYzgyNTBlMGY5NDkwNjMwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiRGF0YVRh
c2tJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgTmV0d29ya1Nlc3Np
b25Db2NvYTsKK30KKworQHByb3RvY29sIE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZTsKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBXS1VSTFNlc3Npb25UYXNrRGVsZWdh
dGUgOiBOU09iamVjdDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJZGVudGlmaWVyOihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllcilpZGVudGlmaWVy
IHNlc3Npb246KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYSYpc2Vzc2lvbjsKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU4NmYyZjEyYWRjM2Y5MmNhYWM4MGZkNjhmNjliMmRiZGVkNzhkZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRh
c2tEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgiCisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgorI2ltcG9ydCAiQ29u
bmVjdGlvbi5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgor
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW1wbGVtZW50YXRpb24gV0tVUkxTZXNzaW9u
VGFza0RlbGVnYXRlIHsKKyAgICBXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBfaWRlbnRpZmll
cjsKKyAgICBXZWFrUHRyPFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYT4gX3Nlc3Npb247Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYktpdDo6RGF0YVRhc2tJ
ZGVudGlmaWVyKWlkZW50aWZpZXIgc2Vzc2lvbjooV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
JilzZXNzaW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9zZXNzaW9uID0g
V2Vha1B0ciB7IHNlc3Npb24gfTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoSVBDOjpDb25u
ZWN0aW9uKiljb25uZWN0aW9uCit7CisgICAgaWYgKCFfc2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICByZXR1cm4gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlIGNyZWRlbnRpYWwpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAg
IGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7CisgICAgY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKF9pZGVudGlmaWVyLCBjaGFsbGVuZ2UpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZy
b21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVu
dGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1VSTFJlcXVlc3QgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0
byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgY29ubmVjdGlvbi0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEYXRhVGFz
a1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKF9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVz
dCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHJlcXVlc3QgPSBSZXRhaW5QdHIgeyByZXF1ZXN0IH1dIChib29sIGFsbG93ZWQpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dlZCA/IHJlcXVlc3QuZ2V0KCkgOiBuaWwpOworICAg
IH0pOworfQorCistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0
YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvblJlc3BvbnNlQ2FuY2VsKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KF9pZGVudGlmaWVyLCByZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGFsbG93ZWQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWxsb3dlZCA/IE5TVVJMU2Vzc2lvblJlc3BvbnNlQWxsb3cgOiBOU1VSTFNlc3Np
b25SZXNwb25zZUNhbmNlbCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
VGFzayBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSBbc2VsZiBjb25uZWN0aW9uXTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEYXRhVGFza0RpZFJlY2VpdmVEYXRhKF9pZGVudGlmaWVyLCB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9KSwgMCk7Cit9CisKKy0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjoobnVsbGFibGUgTlNFcnJvciAqKWVy
cm9yCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3Io
X2lkZW50aWZpZXIsIGVycm9yKSwgMCk7CisgICAgaWYgKF9zZXNzaW9uKQorICAgICAgICBfc2Vz
c2lvbi0+cmVtb3ZlRGF0YVRhc2soX2lkZW50aWZpZXIpOworfQorCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggNTNjM2Q5NjBkM2JhN2NiZDhkYWY4Y2IwNWE2YjI1MjVkNTViZmRjNC4uNDE1ZjAzZTQ0MzUx
ZWZjMTAwMDZlZjVjYzNlOGJlNjhiNzZiZWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CkBAIC0zMTksNiArMzE5LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6Q29u
dGVudFdvcmxkSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAgICdX
ZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA1M2FmMTBhODZlMTI5
YTE5ZWQxMDUxM2ExNjBkOWRhMDk3ZmU1YzViLi43ZDRlZTZiMjBiZTQ4NjkyZWViZDNiYzk4YjQ5
ZTk2ZGQ2NjFmNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMTYs
NiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBDb250ZXh0TWVudUxpc3RlbmVyLAogICAgICAg
ICBDdXN0b21IZWFkZXJGaWVsZHMsCiAgICAgICAgIEludGVybmFsRGVidWdGZWF0dXJlLAorICAg
ICAgICBEYXRhVGFzaywKICAgICAgICAgRGVidWdnYWJsZUluZm8sCiAgICAgICAgIERvd25sb2Fk
LAogICAgICAgICBFeHBlcmltZW50YWxGZWF0dXJlLApAQCAtMzY0LDYgKzM2NSw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+IHsKICAgICAgICAgQVBJ
OjpPYmplY3Q6OlR5cGU6OkNvbnRleHRNZW51TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0
OjpUeXBlOjpDdXN0b21IZWFkZXJGaWVsZHMsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJ
bnRlcm5hbERlYnVnRmVhdHVyZSwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkRhdGFUYXNr
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RGVidWdnYWJsZUluZm8sCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZCwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkV4
cGVyaW1lbnRhbEZlYXR1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oCmluZGV4IGY0OTI1OGE0YzcxYmIwYzdkZTk5
MGI0MmJmNzJjNGYzNmI5Y2MxZWYuLjc0OTRkNDRhOGI1ZWJmMjNkYWExMmI3NDhmZDBkZDVmZDBm
YjdmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2Nv
Y29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb25Db2NvYS5oCkBAIC0zMSw1ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24oTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
KTsKK05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBmcm9tQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EubW0KaW5kZXggNDQ1NDkxYWVh
ZTExNjFmMjQzYzFiYTc2OTFjMDJlYmQyZTE0YjdhNi4uZjcyOWE1NjQzNTkwY2E1MDk2MWJkMTIy
M2ZjNWIwYzBiMzkwNjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbQpAQCAtNDMsNCArNDMsMTkgQEAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24oTlNVUkxTZXMKICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07CiB9CiAKK05TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBmcm9tQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKQor
eworICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgIHJl
dHVybiBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzsKKyAg
ICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbDoKKyAgICAg
ICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZTsKKyAgICB9CisgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0
aW9uXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KaW5kZXggMTBiODA5MmExYjIyOTYyYjI5MDQwNjY1Yjc2ZWQzN2I1NjUy
MTI3Zi4uYmYyZWQyYTA3OWM4OTUyMDIzOWRjNWJkY2ExZDU1YTI4N2MzNWM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzQsNiArNzQsNyBAQAogI2ltcG9y
dCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1
bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0lu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tEYXRhVGFza0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tF
eHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgpAQCAtMjE5LDYg
KzIyMCwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBl
KQogICAgICAgICB3cmFwcGVyID0gW1dLTlNEYXRhIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIFR5cGU6OkRhdGFUYXNrOgorICAgICAgICB3cmFwcGVyID0gW19XS0RhdGFUYXNr
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OkludGVybmFsRGVidWdG
ZWF0dXJlOgogICAgICAgICB3cmFwcGVyID0gW19XS0ludGVybmFsRGVidWdGZWF0dXJlIGFsbG9j
XTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRh
VGFza0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFUYXNrSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU1MWJmNWIyYzM1NmZmMjc2OWVkMWRkMmYzNzViY2YyYzFkZmE2ZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhVGFza0lkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
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
bSBEYXRhVGFza0lkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIERhdGFUYXNrSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8RGF0YVRhc2tJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IGY3ODEzMzZlNWVjODIzMjBmYTA1NWZmYTczZjkxMDFkYzg4ZDY0ODEuLjA5MGJmMTJi
NzI4NzQ4ZmM0YTI3YzA1YjAwNjViMzZjZmUzZGUzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDczLDYg
KzQ3Myw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZv
LmNwcAorVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRGVi
dWdnYWJsZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUuY3Bw
CiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAzOWZlYTkxY2U1NjE3NTgxNjBhZDkyMTg5ODk0NTNlNTgzZWQ2NDYxLi4yZjgyMDQ4ZmViMzJm
ZmUyYmU3YTZlYTU2YjNhYzA5Nzg5NDk1NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
OCw2ICsyOCw3IEBAIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtBY3Rpdml0eVRyYWNrZXJD
b2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJM
U2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbQogCiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKIApAQCAtMjc5LDYgKzI4MCw3IEBAIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRGF0YVRhc2subW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA5M2EwMTAwZmY1ZTEyZmJiMjU4YWYzNWMw
NzYyZjFhNmY4ZDM4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEYXRhVGFzay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJRGF0YVRhc2suaCIK
KworI2luY2x1ZGUgIkFQSURhdGFUYXNrQ2xpZW50LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK0RhdGFUYXNrOjp+RGF0YVRh
c2soKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRGF0YVRhc2s6OnNldENsaWVudChSZWY8RGF0YVRhc2tD
bGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQor
Cit2b2lkIERhdGFUYXNrOjpjYW5jZWwoKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQor
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
Q2FuY2VsRGF0YVRhc2sobV9pZGVudGlmaWVyLCBtX3Nlc3Npb25JRCksIDApOworfQorCitEYXRh
VGFzazo6RGF0YVRhc2soV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vh
a1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJiBwYWdlKQorICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCisgICAgLCBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fbmV0d29ya1By
b2Nlc3MobV9wYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKSkKKyAgICAs
IG1fc2Vzc2lvbklEKG1fcGFnZS0+c2Vzc2lvbklEKCkpCisgICAgLCBtX2NsaWVudChEYXRhVGFz
a0NsaWVudDo6Y3JlYXRlKCkpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU2ZTNmMGU0NGNlMjM3
MDVmZDQzMmU0Mzk2Y2UwNmNhOWI4Y2E2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRh
dGFUYXNrSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eTsKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGFUYXNrQ2xpZW50OworCitjbGFz
cyBEYXRhVGFzayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRh
dGFUYXNrPiB7CitwdWJsaWM6CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0
aWMgUmVmPERhdGFUYXNrPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVGFzayhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
KTsKKyAgICB9CisgICAgfkRhdGFUYXNrKCk7CisKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAg
V2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KKyAg
ICBjb25zdCBEYXRhVGFza0NsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldENsaWVudChSZWY8RGF0YVRhc2tDbGllbnQ+JiYpOworCitw
cml2YXRlOgorICAgIERhdGFUYXNrKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyLCBXZWFrUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKTsKKworICAgIFdlYktpdDo6RGF0YVRhc2tJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3Bh
Z2U7CisgICAgV2Vha1B0cjxXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1By
b2Nlc3M7CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgUmVmPERhdGFUYXNr
Q2xpZW50PiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2tDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmM5
YjA0NjRlYmM5MzhkNDg1ZTQ4MjM5ZGVlOWVmZTFmMTkzNjAyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50LmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIFJlc291cmNlRXJyb3I7
CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCitu
YW1lc3BhY2UgQVBJIHsKKworY2xhc3MgRGF0YTsKKworY2xhc3MgRGF0YVRhc2tDbGllbnQgOiBw
dWJsaWMgUmVmQ291bnRlZDxEYXRhVGFza0NsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RGF0YVRhc2tDbGllbnQ+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRhc2tDbGllbnQpOyB9CisgICAgdmlydHVhbCB+
RGF0YVRhc2tDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKERhdGFUYXNrJiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsg
Y29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSwgeyB9KTsgfQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihEYXRhVGFzayYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERh
dGFUYXNrJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKERhdGFUYXNrJiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENv
bXBsZXRlV2l0aEVycm9yKERhdGFUYXNrJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKSBjb25z
dCB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oCmluZGV4IDJm
ZWVmNjA4MmEwNjQ1NzZlNzg0M2FkNjI2NDY0MTczMDFkYmI0ZDcuLmVlY2ZiNzgxZmMyMjM2ZTBj
ZjNjMDE2ODc5MjA0ZWMzMjMyMmNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNTQ1OWQyZTNiZjg1Nzc4ODE1YTQxZDQyNGNh
NGUyMTRmMzdjNTMwMi4uODBhMjliY2EyNDc4NjE1ZWRjMjRiMzNmNTAwMzA3NTY1ODU5NTRhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2ViVmlld0lu
dGVybmFsLmgiCiAKKyNpbXBvcnQgIkFQSURhdGFUYXNrLmgiCiAjaW1wb3J0ICJBUElGb3JtQ2xp
ZW50LmgiCiAjaW1wb3J0ICJBUElGcmFtZVRyZWVOb2RlLmgiCiAjaW1wb3J0ICJBUElQYWdlQ29u
ZmlndXJhdGlvbi5oIgpAQCAtOTksNiArMTAwLDcgQEAKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0FwcEhpZ2hsaWdodERlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tBcHBIaWdobGlnaHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRGF0YVRh
c2tJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVy
bmFsLmgiCkBAIC0yMjI0LDEyICsyMjI2LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4g
d2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAj
ZW5kaWYKIH0KIAotLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0YSAqLCBOU1VSTFJlc3BvbnNlICos
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2RhdGFUYXNrV2l0aFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoX1dL
RGF0YVRhc2sgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+cmVxdWVzdFJlc291
cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJy
b3IpIHsKLSAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSwgbmlsKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBuaWws
IGVycm9yLm5zRXJyb3IoKSk7CisgICAgX3BhZ2UtPmRhdGFUYXNrV2l0aFJlcXVlc3QocmVxdWVz
dCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFJlZjxBUEk6OkRhdGFUYXNrPiYmIHRhc2spIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
d3JhcHBlcih0YXNrKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGY4YmMzMDM1MTFjNWRi
NjgzN2MyMzUyMTI2N2ExOTM2NzUwODExM2YuLjQzNWVmMTZkNjg0MTNlZmEzMDQ5NjUxZWZjMmZk
NzVjYjMzNDIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTIyLDYgKzEyMiw3IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNs
YXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7
CitAY2xhc3MgX1dLRGF0YVRhc2s7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dL
RnJhbWVUcmVlTm9kZTsKIEBjbGFzcyBfV0tIaXRUZXN0UmVzdWx0OwpAQCAtNDI3LDcgKzQyOCw3
IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiAtICh2b2lkKV9zdGFydEltYWdlQW5hbHlzaXM6KE5T
U3RyaW5nICopaWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCi0tICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYXRhICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZGF0YVRhc2tXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShfV0tEYXRhVGFzayAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBXS0Rpc3BsYXlDYXB0dXJlU3RhdGUpIHsKICAgICBXS0Rpc3BsYXlDYXB0dXJlU3RhdGVO
b25lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rh
dGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMjMyMzMzMGQxNmU0Y2RhNTkxOGVmNTlhMWM3NGU5YjE3MzIzMzEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rh
dGFUYXNrLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworQHByb3RvY29sIF9XS0RhdGFUYXNrRGVsZWdhdGU7CisKK05TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tEYXRhVGFzayA6IE5TT2JqZWN0CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworKyAoaW5zdGFuY2V0eXBlKW5l
dyBOU19VTkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCB3ZWFr
KSBXS1dlYlZpZXcgKndlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPF9X
S0RhdGFUYXNrRGVsZWdhdGU+IGRlbGVnYXRlOworCisvLyBDYWxsaW5nIHRoaXMgd2lsbCBvZnRl
biBkZWxlZ2F0ZSdzIGRhdGFUYXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOiB3aXRoIHsgTlNVUkxF
cnJvckRvbWFpbiwgTlNVUkxFcnJvckNhbmNlbGxlZCB9CisvLyBidXQgYW5vdGhlciBlcnJvciBt
YXkgaGFwcGVuIGJldHdlZW4gdGhvc2UgdHdvIHBvaW50cyBpbiB0aW1lLCBhbmQgaWYgc29tZXRo
aW5nIGVsc2UgaGFwcGVucworLy8gc3VjaCBhcyBXS1dlYnNpdGVEYXRhU3RvcmUgZGVhbGxvY2F0
aW9uIHRoZXJlIG1heSBiZSBubyBjYWxsYmFjay4KKy0gKHZvaWQpY2FuY2VsOworCitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0RhdGFUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZGFlMjI2OTM4YTcyOGYxMTQzOWQ1
MGI1ODczNjg0MjNkODcyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2subW0KQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrSW50ZXJuYWwuaCIK
KworI2ltcG9ydCAiQVBJRGF0YVRhc2suaCIKKyNpbXBvcnQgIkFQSURhdGFUYXNrQ2xpZW50Lmgi
CisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKKyNp
bXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgorI2ltcG9ydCAiX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisK
K2NsYXNzIFdLRGF0YVRhc2tDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEYXRhVGFza0NsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXS0RhdGFUYXNrQ2xpZW50PiBjcmVhdGUoaWQg
PF9XS0RhdGFUYXNrRGVsZWdhdGU+IGRlbGVnYXRlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdL
RGF0YVRhc2tDbGllbnQoZGVsZWdhdGUpKTsgfQorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXS0Rh
dGFUYXNrQ2xpZW50KGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAg
OiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlv
bkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KV0pCisg
ICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZVJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lv
bkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZURhdGEoW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6
KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkQ29tcGxldGVXaXRoRXJyb3IoW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6KV0pIHsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKEFQSTo6RGF0YVRhc2sm
IHRhc2ssIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7CisgICAgICAgIGF1dG8gY2hl
Y2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgICAgIFttX2RlbGVnYXRl
IGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Om1hYyhjaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6dG9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgV2ViQ29yZTo6Q3JlZGVudGlh
bChjcmVkZW50aWFsKSk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKEFQSTo6RGF0YVRhc2smIHRhc2ssIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25k
c1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBz
ZWxlY3RvcihkYXRhVGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRl
Y2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0
YXNrKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJD
b3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpIGRlY2lzaW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoX1dLRGF0YVRhc2tSZWRpcmVjdFBv
bGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocG9saWN5ID09IF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3lBbGxv
dyk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShBUEk6OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKKyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9y
KGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAg
IFttX2RlbGVnYXRlIGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZVJlc3BvbnNlOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kgcG9saWN5KSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBv
bGljeSA9PSBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICB9KS5nZXQo
KV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShBUEk6OkRhdGFUYXNrJiB0YXNr
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVEYXRhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRh
c2spIGRpZFJlY2VpdmVEYXRhOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6
ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSkuZ2V0KCldOworICAgIH0KKworICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoQVBJOjpEYXRhVGFzayYgdGFzaywgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmIGVycm9yKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2Rl
bGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0YXNrKSBkaWRD
b21wbGV0ZVdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgIH0KKworICAgIFdlYWtPYmpD
UHRyPGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1f
cmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CisgICAgYm9v
bCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EaWRSZWNlaXZlUmVzcG9uc2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1Rv
RGlkUmVjZWl2ZURhdGEgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkQ29tcGxldGVXaXRo
RXJyb3IgOiAxOworfTsKKworQGltcGxlbWVudGF0aW9uIF9XS0RhdGFUYXNrCisKKy0gKHZvaWQp
Y2FuY2VsCit7CisgICAgX2RhdGFUYXNrLT5jYW5jZWwoKTsKK30KKworLSAoV0tXZWJWaWV3ICop
d2ViVmlldworeworICAgIGF1dG8qIHBhZ2UgPSBfZGF0YVRhc2stPnBhZ2UoKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHBhZ2UtPmNvY29hVmlldygp
LmdldCgpOworfQorCistIChpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAg
ICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOworfQorCistICh2b2lkKXNldERlbGVnYXRl
OihpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBfZGF0YVRhc2stPnNldENsaWVudChXS0RhdGFUYXNrQ2xpZW50OjpjcmVh
dGUoZGVsZWdhdGUpKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVP
YmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluUnVuTG9vcChfV0tEYXRhVGFzay5jbGFzcywgc2Vs
ZikpCisgICAgICAgIHJldHVybjsKKyAgICBfZGF0YVRhc2stPn5EYXRhVGFzaygpOworICAgIFtz
dXBlciBkZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxl
bWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpf
ZGF0YVRhc2s7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEYXRhVGFza0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYzg3YmViZWQ5
YjRjOTEwMjk3NWNjMDEzZTQzYWMzOGY5NGViMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIF9XS0RhdGFUYXNrOwor
Cit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5KSB7
CisgICAgX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUNhbmNlbCwKKyAgICBfV0tEYXRhVGFza1Jl
ZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0RhdGFU
YXNrUmVzcG9uc2VQb2xpY3kpIHsKKyAgICBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5Q2FuY2Vs
LAorICAgIF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxvdywKK30gV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworQHByb3RvY29sIF9XS0RhdGFUYXNrRGVsZWdhdGUgPE5TT2JqZWN0PgorCitA
b3B0aW9uYWwKKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2Ug
bmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQp
ZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tEYXRhVGFz
a1Jlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKWRhdGFUYXNrOihfV0tE
YXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhOworLSAodm9p
ZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjoo
bnVsbGFibGUgTlNFcnJvciAqKWVycm9yOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFU
YXNrSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRh
VGFza0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg3NGIxNDEyNmM1YTM2MzE3ZDkzZmIxYzcyMzRl
ZjczMTc3NmZhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgIkFQSURhdGFUYXNrLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9y
dCAiX1dLRGF0YVRhc2suaCIKKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OkRhdGFU
YXNrPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRGF0YVRhc2s7Cit9OworCit9CisK
K0BpbnRlcmZhY2UgX1dLRGF0YVRhc2sgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQ
STo6T2JqZWN0U3RvcmFnZTxBUEk6OkRhdGFUYXNrPiBfZGF0YVRhc2s7CisgICAgV2Vha09iakNQ
dHI8aWQgPF9XS0RhdGFUYXNrRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworfQorQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKaW5kZXggNTdkZThiMWY2NTg2NmZiMWZjZjdiZDE4YmJiNjhkMjBjMTVhZTlmYy4uNmYw
YjJjMTBmMmY3ZGJlMzhhNTg5YWUwOGMxZjc2ODZkMjM1MTRlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBA
IC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNs
dWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlICJBUElEYXRh
VGFzay5oIgorI2luY2x1ZGUgIkFQSURhdGFUYXNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2
aWdhdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKQEAgLTMzNywxNCArMzM5LDY1IEBAIERv
d25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0CiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3Jl
YXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3Qs
IGZyYW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2l0aFJl
cXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJ
OjpEYXRhVGFzayYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNvdXJjZShwYWdlSUQsIHNl
c3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0Lmh0dHBCb2R5
KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJ
UEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkRhdGFUYXNrV2l0aFJlcXVlc3QocGFnZS5pZGVudGlmaWVy
KCksIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0Lmh0
dHBCb2R5KCkpKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB3ZWFrUGFn
ZSA9IFdlYWtQdHIgeyBwYWdlIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllcikgbXV0YWJsZSB7Cisg
ICAgICAgIE1FU1NBR0VfQ0hFQ0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlk
ZW50aWZpZXIpKTsKKyAgICAgICAgYXV0byBkYXRhVGFzayA9IEFQSTo6RGF0YVRhc2s6OmNyZWF0
ZShpZGVudGlmaWVyLCBXVEZNb3ZlKHdlYWtQYWdlKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRhdGFUYXNrKTsKKyAgICAgICAgbV9kYXRhVGFza3MuYWRkKGlkZW50aWZpZXIsIFdURk1v
dmUoZGF0YVRhc2spKTsKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
YXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpD
cmVkZW50aWFsJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0so
ZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKKyAgICBpZiAo
YXV0byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0YXNrLT5j
bGllbnQoKS5kaWRSZWNlaXZlQ2hhbGxlbmdlKCp0YXNrLCBXVEZNb3ZlKGNoYWxsZW5nZSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlLCB7IH0p
OworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgTUVTU0FHRV9DSEVDSyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRL
ZXkoaWRlbnRpZmllcikpOworICAgIGlmIChhdXRvIHRhc2sgPSBtX2RhdGFUYXNrcy5nZXQoaWRl
bnRpZmllcikpCisgICAgICAgIHRhc2stPmNsaWVudCgpLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKCp0YXNrLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UoRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6
aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tz
LmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZVJlc3Bv
bnNlKCp0YXNrLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkYXRhVGFza0RpZFJlY2VpdmVEYXRhKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgTUVTU0FHRV9DSEVDSyhk
ZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOworICAgIGlmIChh
dXRvIHRhc2sgPSBtX2RhdGFUYXNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHRhc2stPmNs
aWVudCgpLmRpZFJlY2VpdmVEYXRhKCp0YXNrLCBkYXRhKTsKKyAgICBlbHNlCisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFU
YXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0
eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8g
dGFzayA9IG1fZGF0YVRhc2tzLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIHRhc2stPmNsaWVu
dCgpLmRpZENvbXBsZXRlV2l0aEVycm9yKCp0YXNrLCBXVEZNb3ZlKGVycm9yKSk7CisgICAgZWxz
ZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRh
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRhKHNlc3Npb25JRCwgZGF0YVR5cGVz
LCBmZXRjaE9wdGlvbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmlu
ZGV4IDNkMzU0NGRjYjk3NjBkNmUzMzcyNzVkNjJhNTM2MWM5YjE5NWM0ZTAuLmUzZGZkNTNlZTMz
Y2UzNmZlODhlMTFiNjE0Njg1MTNkODUxNTJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yNyw2ICsyNyw4
IEBACiAKICNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRh
dGFUYXNrSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgpAQCAtNTgsNiArNjAsNyBAQCBjbGFzcyBGb3Jt
RGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ7CitjbGFzcyBEYXRhVGFzazsKIH0KIAogbmFtZXNwYWNlIFBBTCB7CkBAIC0x
MjYsNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIERvd25sb2FkUHJveHkm
IGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdl
YlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYpPiYmKTsKKyAgICB2b2lkIGRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5JiwgUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YVRhc2smKT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTI4OSw2ICsyOTIsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRPcmlnaW5z
V2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYpPiYmKTsKIAorICAgIHZvaWQgZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZShEYXRhVGFza0lk
ZW50aWZpZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6
Q3JlZGVudGlhbCYmKT4mJik7CisgICAgdm9pZCBkYXRhVGFza1dpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKERhdGFUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBkYXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZShEYXRhVGFza0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBkYXRhVGFza0RpZFJlY2VpdmVEYXRhKERhdGFUYXNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkYXRhVGFza0RpZENv
bXBsZXRlV2l0aEVycm9yKERhdGFUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAK
QEAgLTM5OCw2ICs0MDcsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha0hhc2hTZXQ8V2Vic2l0ZURh
dGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlczsKICAgICBVbmlxdWVSZWY8V2ViQ29va2llTWFu
YWdlclByb3h5PiBtX2Nvb2tpZU1hbmFnZXI7CisgICAgSGFzaE1hcDxEYXRhVGFza0lkZW50aWZp
ZXIsIFJlZjxBUEk6OkRhdGFUYXNrPj4gbV9kYXRhVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlM2FiYmI0NjhmNWIz
YWQwNzdlYjY0NmE2OTJjYzdiZjkyOTU0ZGYwLi41NGU0NjNjYTg5ZjVlYTgxODg0NmIyYmEwMTAw
ZmVkMTE4ZmVjY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC04OSw0ICs4
OSwxMiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSV9VU0VTX1NDRU5FKQogICAgIEdldFdpbmRv
d1NjZW5lSWRlbnRpZmllckZvclBheW1lbnRQcmVzZW50YXRpb24oV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIC0+IChTdHJpbmcgc2NlbmVJRCkg
QXN5bmMKICNlbmRpZgorCisgICAgRGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZShXZWJLaXQ6OkRh
dGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjaGFsbGVuZ2UpIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsIGNyZWRl
bnRpYWwpIEFzeW5jCisgICAgRGF0YVRhc2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJL
aXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkgLT4gKGJvb2wg
YWxsb3dlZCkgQXN5bmMKKyAgICBEYXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRh
dGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKSAtPiAoYm9vbCBhbGxvd2VkKSBBc3luYworICAgIERhdGFUYXNrRGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpCisgICAgRGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFU
YXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkZTQ4
ZGJjNWQ2YTRkNzZjODIxNWQyMzZiMTE3NDYxMDRjZmIwYWE1Li4zMjVlYTE4NjQ1OGY1ZTY0ZTlm
M2EwY2VlMmEzYTQzYjdmODQ0MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTY0NjIsOSArNjQ2Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9h
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvCiAg
ICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YVRhc2smKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5yZXF1ZXN0
UmVzb3VyY2UoaWRlbnRpZmllcigpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3Jr
UHJvY2VzcygpLmRhdGFUYXNrV2l0aFJlcXVlc3QoKnRoaXMsIHNlc3Npb25JRCgpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4NmRiNzgwNjFkNDI3YmIxNDJiZTkz
MmEzOGViNDBlYWQzZmQ0N2U5Li4zMzdkYmI1NGZhNTg1OTdkYjI4YjFiNTZlZTkzMjZhYTUwNzJj
Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAxLDYgKzIw
MSw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIENvbnRlbnRX
b3JsZDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgRGF0YVRhc2s7CiBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CkBA
IC0xMzg2LDcgKzEzODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVl
c3QoRG93bmxvYWRQcm94eSYpOwogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpE
YXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRG93bmxvYWRQcm94eSopPiYmKTsKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5
Kik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4m
Jik7CisgICAgdm9pZCBkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YVRhc2smKT4mJik7CiAKICAgICB2
b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsK
ICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1OTU2
ODU1YWM1OWJmN2E1ZDE3YjI5MWZhNGUxZjEyZTFlYTdkNWJhLi40YTA1YTExMDg3YWVmZTA4MjVm
NzVlM2ExNmRjODUwZDMyMTIxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjgsNiArMTIyOCw4IEBACiAJCTVDMjBGNjc5Mjc2
QTZEQjYwMDZDQUMyMiAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJn
dW1lbnRDb2RlcnMuY3BwICovOyB9OwogCQk1QzI2OTU4NTIwMDQzMjEyMDA1QzQzOUIgLyogV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMyNjk1ODQyMDA0MkYxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVs
UGFyYW1ldGVyc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1QzI5OERBMDFDM0RGMDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2Fk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5
RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggKi87IH07CisJCTVDMkM2RkE5
MjdDOUU1RTIwMENDREE5RSAvKiBfV0tEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyQzZGQTQyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0Rh
dGFUYXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNUMyQzZGQUEyN0M5RTVFQjAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkM2RkEzMjdDOTUy
OTkwMENDREE5RSAvKiBfV0tEYXRhVGFza0RlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyRDU3NDgyNTdGRkE0QjAwNjc5QTcyIC8q
IFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzJENTc0NzI1N0ZGQTEyMDA2NzlBNzIgLyogV0tDb250ZXh0RG93
bmxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1QzJFQkRGQTI1NjQzODBCMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyRUJERjkyNTY0
MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzM1OUMwRDIxNTQ3MzlGMDA5RTc5NDggLyog
V0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ5MTAsNiArNDkxMiwx
NiBAQAogCQk1QzJCMUFGMzIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY0MjIzQUI3MjgwMEI5MUNGNyAv
KiBEb3dubG9hZE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93
bmxvYWRNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY1MjIz
QzFGRDIwMEI5MUNGNyAvKiBEb3dubG9hZFByb3h5TWFwQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb3h5TWFwQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RjlFMjdDOTUyMzUwMENDREE5RSAvKiBBUElE
YXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElEYXRhVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkY5RjI3Qzk1MjM1MDBDQ0RBOUUg
LyogQVBJRGF0YVRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QVBJRGF0YVRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBMDI3
Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2tDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJRGF0YVRhc2tDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUMyQzZGQTIyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLRGF0YVRhc2subW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkEzMjdDOTUyOTkwMENDREE5RSAvKiBfV0tE
YXRhVGFza0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rh
dGFUYXNrRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTQy
N0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0RhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
MkM2RkE1MjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFza0ludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0RhdGFUYXNrSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTYyN0M5NThGQzAwQ0NEQTlFIC8qIERhdGFUYXNr
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVGFza0lk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTcyN0M5NkZG
OTAwQ0NEQTlFIC8qIFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTgyN0M5NkZGOTAwQ0NEQTlFIC8qIFdL
VVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMyRDU3NDcyNTdGRkExMjAwNjc5QTcyIC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIw
NSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzNTlD
MEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcyNzcsNiArNzI4OSw3IEBACiAJCQkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENv
bnRleHRNZW51Q29udGV4dERhdGEuY3BwICovLAogCQkJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2
NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggKi8sCiAJCQkJOTlGNjQyRDIxRkFCRTM3ODAw
OTYyMUU5IC8qIENvb3JkaW5hdGVTeXN0ZW0uaCAqLywKKwkJCQk1QzJDNkZBNjI3Qzk1OEZDMDBD
Q0RBOUUgLyogRGF0YVRhc2tJZGVudGlmaWVyLmggKi8sCiAJCQkJOTkwMzZBRTgyM0E5NzA4NzAw
MDBCMDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0YS5jcHAgKi8sCiAJCQkJOTkwMzZBRTcyM0E5NzA4
NzAwMDBCMDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0YS5oICovLAogCQkJCTBGMTg5Q0FCMjQ3NDlG
MkYwMEU1OEQ4MSAvKiBEaXNwbGF5TGlua09ic2VydmVySUQuaCAqLywKQEAgLTg4MzcsNiArODg1
MCwxMCBAQAogCQkJCTVDNUQyMzg5MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJG
aWVsZHMuaCAqLywKIAkJCQk1QzVEMjM4ODIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVh
ZGVyRmllbGRzLm1tICovLAogCQkJCTVDNUQyMzg3MjI3QTE4OTEwMDBCOUJEQSAvKiBfV0tDdXN0
b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oICovLAorCQkJCTVDMkM2RkE0MjdDOTUyOTkwMENDREE5
RSAvKiBfV0tEYXRhVGFzay5oICovLAorCQkJCTVDMkM2RkEyMjdDOTUyOTkwMENDREE5RSAvKiBf
V0tEYXRhVGFzay5tbSAqLywKKwkJCQk1QzJDNkZBMzI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0
YVRhc2tEZWxlZ2F0ZS5oICovLAorCQkJCTVDMkM2RkE1MjdDOTUyOTkwMENDREE5RSAvKiBfV0tE
YXRhVGFza0ludGVybmFsLmggKi8sCiAJCQkJODM4OTFCNjgxQTY4QkVCQzAwMzBGMzg2IC8qIF9X
S0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKIAkJCQlBMUE0RkU1NzE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWQuaCAqLywKIAkJCQlBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEg
LyogX1dLRG93bmxvYWQubW0gKi8sCkBAIC0xMDQ0Miw2ICsxMDQ1OSw4IEBACiAJCQkJNUMyMENC
OUIxQkIwRENEMjAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJNDEy
ODdENEMyMjVDMDVDNTAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2tDb2NvYS5oICovLAogCQkJCTQx
Mjg3RDRCMjI1QzA1QzQwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EubW0gKi8sCisJCQkJ
NUMyQzZGQTgyN0M5NkZGOTAwQ0NEQTlFIC8qIFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oICov
LAorCQkJCTVDMkM2RkE3MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Npb25UYXNrRGVsZWdh
dGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTExMjgyLDYgKzExMzAxLDkgQEAKIAkJCQk1Q0UwQzM2NzIyOUYyRDNFMDAzNjk1
RjAgLyogQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5oICovLAogCQkJCTVDNUQyMzhBMjI3QTFE
OUIwMDBCOUJEQSAvKiBBUElDdXN0b21IZWFkZXJGaWVsZHMuaCAqLywKIAkJCQk3QTgyMUY0RjFF
MkY3QTVDMDA2MDQ1NzcgLyogQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggKi8sCisJ
CQkJNUMyQzZGOUYyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrLmNwcCAqLywKKwkJCQk1
QzJDNkY5RTI3Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2suaCAqLywKKwkJCQk1QzJDNkZB
MDI3Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2tDbGllbnQuaCAqLywKIAkJCQk5OTAzNkFF
NDIzQTk1ODc0MDAwMEIwNkEgLyogQVBJRGVidWdnYWJsZUluZm8uY3BwICovLAogCQkJCTk5MDM2
QUUzMjNBOTU4NzQwMDAwQjA2QSAvKiBBUElEZWJ1Z2dhYmxlSW5mby5oICovLAogCQkJCTgzODkx
QjYyMUE2OEIzNDIwMDMwRjM4NiAvKiBBUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLApA
QCAtMTI4ODMsNiArMTI5MDUsOCBAQAogCQkJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAvKiBf
V0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1
NzA0RjgxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNUQyMzhDMjI3QTJDREEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFk
ZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMkM2RkE5MjdDOUU1RTIwMENDREE5RSAv
KiBfV0tEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMyQzZGQUEyN0M5RTVFQjAwQ0NE
QTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzODkxQjY5
MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUE0RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExQTRGRTYxMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMGMzZDNkMzc0YTk5YTdiYjkzODcyMzU4MGIyNjkwNjc2
MTFlNmE5Li5mNWE4NjhlMjZkZjlhNTcyM2JlZTBmOGRmNDNhZDc4MzVhNzNmODg5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBBZGQgU1BJIF9XS0RhdGFUYXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTmV0d29ya1Byb2Nlc3MubW06CisgICAgICAgICgtW1Rlc3REYXRhVGFza0RlbGVnYXRlIGRh
dGFUYXNrOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bVGVzdERhdGFUYXNrRGVsZWdhdGUgZGF0YVRhc2s6ZGlkUmVjZWl2
ZVJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERhdGFUYXNrRGVs
ZWdhdGUgZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1Rlc3REYXRhVGFz
a0RlbGVnYXRlIGRhdGFUYXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoVEVT
VCk6CisKIDIwMjItMDItMjQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtQeXRob24zXSBSZW1vdmUgc2hlYmFuZ3MgZnJvbSB3ZWJraXRweSBmaWxlcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3Jr
UHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29y
a1Byb2Nlc3MubW0KaW5kZXggYjExYzY5ZTIzNTRjYWY0NGNkZGMwMGUxZTMxOTJjZTRmODYzMjhi
ZC4uMDIxYmY3NDBlZWEyYTdjMjg0Y2EzYWUyNjU5NmMxYmQ4NGVjMDYwZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNz
Lm1tCkBAIC0zMyw2ICszMyw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRGF0
YVRhc2suaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEYXRhVGFza0RlbGVnYXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzUyLDcgKzM1NCw1
MCBAQCBURVNUKE5ldHdvcmtQcm9jZXNzLCBCcm9hZGNhc3RDaGFubmVsQ3Jhc2hSZWNvdmVyeSkK
ICAgICBFWFBFQ1RfRVEod2ViUElEMiwgW3dlYlZpZXcyIF93ZWJQcm9jZXNzSWRlbnRpZmllcl0p
OwogfQogCi1URVNUKE5ldHdvcmtQcm9jZXNzLCBMb2FkUmVzb3VyY2UpCisjaWYgSEFWRShOU1VS
TFNFU1NJT05fVEFTS19ERUxFR0FURSkKKworQGludGVyZmFjZSBUZXN0RGF0YVRhc2tEZWxlZ2F0
ZSA6IE5TT2JqZWN0PF9XS0RhdGFUYXNrRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0RhdGFU
YXNrICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSk7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dLRGF0YVRh
c2sgKiwgTlNVUkxSZXNwb25zZSAqLCB2b2lkICheKShfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVEYXRhKShf
V0tEYXRhVGFzayAqLCBOU0RhdGEgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZENvbXBsZXRlV2l0aEVycm9yKShfV0tEYXRhVGFzayAqLCBOU0Vycm9yICopOworCitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RGF0YVRhc2tEZWxlZ2F0ZQorCistICh2b2lkKWRh
dGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoX2RpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShkYXRhVGFzaywgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlLCBuaWwpOworfQorCistICh2b2lkKWRhdGFUYXNr
OihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25z
ZSAqKXJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRGF0YVRhc2tSZXNwb25z
ZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlUmVzcG9uc2Up
CisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVRhc2ssIHJlc3BvbnNlLCBkZWNpc2lv
bkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNr
UmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNr
ICopZGF0YVRhc2sgZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBpZiAoX2Rp
ZFJlY2VpdmVEYXRhKQorICAgICAgICBfZGlkUmVjZWl2ZURhdGEoZGF0YVRhc2ssIGRhdGEpOwor
fQorCistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZENvbXBsZXRl
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpZiAoX2RpZENvbXBsZXRlV2l0aEVy
cm9yKQorICAgICAgICBfZGlkQ29tcGxldGVXaXRoRXJyb3IoZGF0YVRhc2ssIGVycm9yKTsKK30K
KworQGVuZAorCitURVNUKF9XS0RhdGFUYXNrLCBCYXNpYykKIHsKICAgICB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKICAgICBhdXRvIGh0bWwgPSAiPHNjcmlwdD5kb2N1bWVudC5jb29r
aWU9J3Rlc3RrZXk9dmFsdWUnPC9zY3JpcHQ+IjsKQEAgLTM3NywyNCArNDIyLDk5IEBAIFRFU1Qo
TmV0d29ya1Byb2Nlc3MsIExvYWRSZXNvdXJjZSkKICAgICBbcG9zdFJlcXVlc3Qgc2V0SFRUUE1l
dGhvZDpAIlBPU1QiXTsKICAgICBhdXRvIHJlcXVlc3RCb2R5ID0gInJlcXVlc3QgYm9keSI7CiAg
ICAgW3Bvc3RSZXF1ZXN0IHNldEhUVFBCb2R5OltOU0RhdGEgZGF0YVdpdGhCeXRlczpyZXF1ZXN0
Qm9keSBsZW5ndGg6c3RybGVuKHJlcXVlc3RCb2R5KV1dOwotICAgIFt3ZWJWaWV3IF9yZXF1ZXN0
UmVzb3VyY2U6cG9zdFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKmRh
dGEsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwu
YWJzb2x1dGVTdHJpbmcsIHBvc3RSZXF1ZXN0LmdldCgpLlVSTC5hYnNvbHV0ZVN0cmluZyk7Ci0g
ICAgICAgIEVYUEVDVF9FUShkYXRhLmxlbmd0aCwgc3RybGVuKHNlY29uZFJlc3BvbnNlKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoZGF0YS5ieXRlcywgc2Vjb25kUmVzcG9uc2UsIGRh
dGEubGVuZ3RoKSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOworICAgIFt3ZWJWaWV3IF9kYXRhVGFz
a1dpdGhSZXF1ZXN0OnBvc3RSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRGF0
YVRhc2sgKnRhc2spIHsKKyAgICAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNl
OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9XS0RhdGFU
YXNrICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShf
V0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgcG9zdFJlcXVlc3QuZ2V0KCkuVVJMLmFic29s
dXRlU3RyaW5nKTsKKyAgICAgICAgICAgIHJlY2VpdmVkUmVzcG9uc2UgPSB0cnVlOworICAgICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cisg
ICAgICAgIH07CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxzZTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICosIE5T
RGF0YSAqZGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRSZXNwb25zZSk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgsIHN0cmxlbihzZWNvbmRSZXNwb25z
ZSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBzZWNvbmRS
ZXNwb25zZSwgZGF0YS5sZW5ndGgpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRydWU7
CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZENvbXBsZXRlV2l0aEVycm9y
ID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUocmVjZWl2ZWREYXRhKTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OwogICAgIH1dOwogICAgIFV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihzZWNvbmRSZXF1ZXN0LmRhdGEoKSwg
IkNvb2tpZTogdGVzdGtleT12YWx1ZVxyXG4iLCBzZWNvbmRSZXF1ZXN0LnNpemUoKSkpOwogICAg
IEVYUEVDVF9XS19TVFJFUShIVFRQU2VydmVyOjpwYXJzZUJvZHkoc2Vjb25kUmVxdWVzdCksIHJl
cXVlc3RCb2R5KTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfcmVxdWVzdFJl
c291cmNlOltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJibG9iOmJsYW5rIl1dIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yVW5zdXBwb3J0ZWRVUkwpOwotICAgICAgICBFWFBFQ1RfTlVM
TChkYXRhKTsKLSAgICAgICAgRVhQRUNUX05VTEwocmVzcG9uc2UpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYmxvYjpibGFuayJdXSBjb21wbGV0
aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIHN0YXRpYyBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7CisgICAgICAgIHRh
c2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2Vp
dmVkUmVzcG9uc2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZVJl
c3BvbnNlID0gXihfV0tEYXRhVGFzayAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAo
XmRlY2lzaW9uSGFuZGxlcikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAg
ICAgIHJlY2VpdmVkUmVzcG9uc2UgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBfX2Jsb2Nr
IGJvb2wgcmVjZWl2ZWREYXRhID0gZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZFJl
Y2VpdmVEYXRhID0gXihfV0tEYXRhVGFzayAqLCBOU0RhdGEgKmRhdGEpIHsKKyAgICAgICAgICAg
IHJlY2VpdmVkRGF0YSA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmdldCgp
LmRpZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkUmVzcG9uc2UpOworICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkRGF0YSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yVW5zdXBwb3J0ZWRVUkwpOworICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgIH07CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIH0K
KworVEVTVChfV0tEYXRhVGFzaywgQ2hhbGxlbmdlKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKEhUVFBTZXJ2ZXI6OnJlc3BvbmRX
aXRoQ2hhbGxlbmdlVGhlbk9LLCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1Rlc3RXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFzaykgewor
ICAgICAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFza0RlbGVn
YXRlIG5ld10pOworICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAg
ICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFNlcnZlclRydXN0Q2hhbGxlbmdlID0gZmFsc2U7Cisg
ICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSA9IGZhbHNlOwor
ICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBeKF9XS0RhdGFUYXNrICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5n
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICAgICAgaWYgKFtjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3RdKSB7CisgICAgICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSk7CisgICAgICAgICAg
ICAgICAgcmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBC
YXNpYyk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRCYXNpY0F1dGhDaGFsbGVu
Z2UpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5n
ZSk7CisgICAgICAgICAgICByZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSA9IHRydWU7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbCwgbmlsKTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVk
RGF0YSA9IGZhbHNlOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlRGF0YSA9IF4o
X1dLRGF0YVRhc2sgKiwgTlNEYXRhICpkYXRhKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZFJlc3BvbnNlID0gIjxzY3JpcHQ+YWxlcnQoJ3N1Y2Nlc3MhJyk8L3NjcmlwdD4iOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCBzdHJsZW4oZXhwZWN0ZWRSZXNwb25z
ZSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBleHBlY3Rl
ZFJlc3BvbnNlLCBkYXRhLmxlbmd0aCkpOworICAgICAgICAgICAgcmVjZWl2ZWREYXRhID0gdHJ1
ZTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkQ29tcGxldGVXaXRoRXJy
b3IgPSBeKF9XS0RhdGFUYXNrICosIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShyZWNlaXZlZERhdGEpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRC
YXNpY0F1dGhDaGFsbGVuZ2UpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTZXJ2
ZXJUcnVzdENoYWxsZW5nZSk7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworfQorCisvLyBGSVhNRTogQWRkIHRlc3RzIGZvciBfV0tEYXRhVGFzayByZWRpcmVj
dGlvbiwgYXMgd2VsbCBhcyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGNy
YXNoZXMuCisKKyNlbmRpZiAvLyBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVHQVRFKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453293</attachid>
            <date>2022-02-26 07:02:44 -0800</date>
            <delta_ts>2022-02-26 07:03:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237234-20220226070243.patch</filename>
            <type>text/plain</type>
            <size>88260</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjZjVlOGU3MjRjYTFjYWFi
NWY3NGQ4YmE4OTIyYWIxZjVlYjJmNDguLjAyMzdiY2FlMWI2YTg4NTY4MzRlYmYyMTM2ODhiYTJk
MjE0ODdkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjItMDItMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIF9X
S0RhdGFUYXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIEkgYWRkZWQgV0tXZWJWaWV3Ll9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6IEkgb3Zlcmxvb2tlZCBhIGZldyB0aGluZ3MuCisgICAgICAgIEZpcnN0LCBpdCBpcyB1bmFi
bGUgdG8gc3VwcG9ydCBIVFRQUyBiZWNhdXNlIEkgZGlkbid0IGhvb2sgdXAgYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlIGhhbmRsaW5nIHRvIGl0LgorICAgICAgICBTZWNvbmQsIGl0IGlzIHVuYWJs
ZSB0byBoYXZlIGEgbWF4aW11bSBhY2NlcHRlZCByZXNwb25zZSBsZW5ndGgsIHdoaWNoIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIGFuIGFkb3B0ZXIuCisgICAgICAgIFRvIG1ha2UgdGhlc2UgcG9zc2li
bGUsIEkgbWFkZSBfV0tEYXRhVGFzayB3aGljaCBpcyByZWxhdGVkIHRvIFdLRG93bmxvYWQgYW5k
IE5TVVJMU2Vzc2lvbkRhdGFUYXNrLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGF0YVRhc2tX
aXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEYXRh
VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6Y2FuY2VsRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtXS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUgaW5pdFdpdGhJZGVudGlmaWVyOnNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBjb25uZWN0aW9uXSk6CisgICAgICAgICgt
W1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFza0Rl
bGVnYXRlIFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNrRGVs
ZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNr
RGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3Qu
aDoKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6ZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24pOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVj
dDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2s6
OnNldENsaWVudCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrOjpjYW5jZWwpOgorICAgICAgICAo
QVBJOjpEYXRhVGFzazo6RGF0YVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGF0
YVRhc2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKEFQSTo6RGF0YVRhc2s6OnBhZ2UpOgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6
Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp+RGF0YVRhc2tDbGllbnQpOgorICAgICAg
ICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAg
ICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEgY29uc3Qp
OgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbTog
QWRkZWQuCisgICAgICAgICgtW19XS0RhdGFUYXNrIGNhbmNlbF0pOgorICAgICAgICAoLVtfV0tE
YXRhVGFzayB3ZWJWaWV3XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIGRlbGVnYXRlXSk6Cisg
ICAgICAgICgtW19XS0RhdGFUYXNrIHNldERlbGVnYXRlOl0pOgorICAgICAgICAoLVtfV0tEYXRh
VGFzayBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFz
a0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMi0wMi0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFRha2UgZG93biBzaGFyZWQgd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBsZXNzIGFnZ3Jlc3Np
dmVseSB3aGVuIGl0IGJlY29tZXMgaWRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCA4YzYwOGEy
M2E0NGUyYzU2NjEyYmE4ZTMzM2Y4YzQ0NTRmZDQ1NjJmLi45ZmU3NmM4NjUxZDA3ZjJmMzlmNzA2
Y2RkOTA4ODJmY2QxNTZlZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtOTk5LDYgKzk5OSw3
IEBACiAgICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTUwMDAwKQogI2RlZmluZSBIQVZFX0NGTkVUV09SS19OU1VSTFNFU1NJT05fQVRU
UklCVVRFRF9CVU5ETEVfSURFTlRJRklFUiAxCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05TVVJM
U0VTU0lPTl9IU1RTX1dJVEhfVU5UUlVTVEVEX1JPT1QgMQorI2RlZmluZSBIQVZFX05TVVJMU0VT
U0lPTl9UQVNLX0RFTEVHQVRFIDEKICNkZWZpbmUgSEFWRV9BVURJT19PQkpFQ1RfUFJPUEVSVFlf
RUxFTUVOVF9NQUlOIDEKICNkZWZpbmUgSEFWRV9JTUFHRV9SRVNUUklDVEVEX0RFQ09ESU5HIDEK
ICNkZWZpbmUgSEFWRV9YUENfQ09OTkVDVElPTl9DT1BZX0lOVkFMSURBVElPTl9SRUFTT04gMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA5MmM1Y2IzMzliNjU5ODg0MjAzMDM3NGE5OWZlNjYxNzE1YTZjMzM2Li45ODJkODhhODZiNGY4
NjNlYTkxZWUyNjZhODdjOGJiMWQyZmM3YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk5NiwxMyArMTk5NiwxNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFU
YXNrJiBuZXR3b3JrRGF0YVRhcwogICAgIH0sIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGh0dHBCb2R5LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7CisgICAgbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKS0+ZGF0YVRhc2tXaXRoUmVxdWVzdChwYWdlSUQsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnJlcXVlc3RSZXNvdXJjZShw
YWdlSUQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9LCB7IH0pOworICAgICAg
ICBzZXNzaW9uLT5jYW5jZWxEYXRhVGFzayhpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5nKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IGEzZWYxMTI4NTcxMTZkZjE1ODg2OWE5NjZiODU5Y2FkMTM4ZjQ4YTguLjY4OWJmOTdlZGVkZDk1
ZTM3YzYyOTBjYjZjZmFlOTViZDZiNDEwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBcHBQ
cml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC00MzIsNyArNDMzLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVS
TCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICNlbmRpZgogICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYpOworICAgIHZv
aWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmKTsKKyAgICB2
b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKICAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MzFlMmI2
MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwLi4xMWQ2NWNiMjIxZTFiODMwZGM3NWY4
YzBhNzNmMDBmZTU2OWUyYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUzLDcgKzUzLDggQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQogI2VuZGlmCi0gICAgUmVxdWVzdFJlc291cmNlKFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVx
dWVzdEJvZHkpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKKyAg
ICBEYXRhVGFza1dpdGhSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHkpIC0+IChXZWJLaXQ6OkRh
dGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllcikgQXN5bmMKKyAgICBDYW5jZWxEYXRhVGFz
ayhXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKICAgICBB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggODVjN2NiZDY5MDM0ZDljYmE3ZjQ0NWRh
OWRlNDc1YTFkN2IzNTExOC4uNGRkMjlmODlkNTMyYTI2MWZmYWIyYmY3ZGM3NDNlMmFjMTBmYTdi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXBwUHJpdmFjeVJlcG9ydC5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIuaCIKQEAgLTIzMiw3ICsyMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRh
VGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRl
bnRpZmllcikgeyB9CiAgICAgdmlydHVhbCBzaXplX3QgY291bnROb25EZWZhdWx0U2Vzc2lvblNl
dHMoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDNjNDZlNmIwZDdj
ZTM1YzA2ZTk2MzhmYWJhN2M5MjhlMTc1YzUxMGUuLmU5ZTkyYzc4MDIzM2Q0OTBlMGRkOTM3ZThl
YTUzMDdiNTViYTQzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0xNDIsNiArMTQyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lk
IHJlbW92ZURhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRp
YWxzKCkgb3ZlcnJpZGU7CkBAIC0xNjIsNyArMTY0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZVdlYlNvY2tldFRhc2soU2Vzc2lvblNldCYsIFdlYlNvY2tldFRhc2smKSBmaW5hbDsKICNl
bmRpZgogCi0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFUYXNrV2l0aFJlcXVl
c3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJZGVudGlmaWVyKT4mJikgZmluYWw7CisgICAg
dm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlBh
Z2VOZXR3b3JrUGFyYW1ldGVycyYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2VOZXR3
b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBmaW5hbDsKICAgICBzaXplX3Qg
Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoKSBjb25zdCBmaW5hbDsKQEAgLTE4OCw2ICsxOTEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICAg
ICBib29sIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07
CisgICAgSGFzaE1hcDxEYXRhVGFza0lkZW50aWZpZXIsIFJldGFpblB0cjxOU1VSTFNlc3Npb25E
YXRhVGFzaz4+IG1fZGF0YVRhc2tzRm9yQVBJOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmM1NDdhYjQ4NjE3ZWI5YmRhYmUyYjFkYjRlZTlhNzli
NWJjNWZkYy4uMjQxZmFlNmJlMzIwODk4ZjJjYzY4OTMxNmE3Y2I2ODM0ODA2ZmNjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3Mu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0
ICJQcml2YXRlUmVsYXllZC5oIgorI2ltcG9ydCAiV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgi
CiAjaW1wb3J0ICJXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYlNvY2tl
dFRhc2suaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CkBAIC0xNzYwLDE0
ICsxNzYxLDMwIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkV2ViUGFnZU5ldHdvcmtQ
YXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnCiAgICAgbV9hdHRyaWJ1dGVkQnVu
ZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcnMuYWRkKHBhZ2VJRCwgcGFyYW1ldGVycy5h
dHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgYXV0byBzZXNzaW9uID0gc2Vzc2lvbldyYXBwZXJGb3JUYXNrKHBhZ2VJRCwgcmVxdWVzdCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgc3RkOjpudWxsb3B0KS5zZXNz
aW9uOworICAgIGF1dG8gaWRlbnRpZmllciA9IERhdGFUYXNrSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7Ci0gICAgYXV0byBjb21wbGV0aW9u
QmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChOU0RhdGEgKmRhdGEsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0
YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGggfSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgeyBlcnJvciB9KTsKLSAgICB9KTsKLSAgICBbW3Nlc3Npb24gZGF0
YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkJs
b2NrLmdldCgpXSByZXN1bWVdOworICAgIGF1dG8gc2Vzc2lvbiA9IHNlc3Npb25XcmFwcGVyRm9y
VGFzayhwYWdlSUQsIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2UsIHN0ZDo6bnVsbG9wdCkuc2Vzc2lvbjsKKyAgICBhdXRvIHRhc2sgPSBbc2Vzc2lvbiBkYXRh
VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVu
dGlmaWVyIHNlc3Npb246KnRoaXNdKTsKKyNpZiBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVH
QVRFKQorICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyNlbmRpZgorICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9kYXRhVGFza3NGb3JBUEkuYWRkKGlkZW50aWZpZXIsIHRhc2spOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBbdGFzayByZXN1
bWVdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCit2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIFttX2RhdGFUYXNrc0ZvckFQSS5nZXQoaWRlbnRpZmllcikgY2FuY2VsXTsK
K30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVEYXRhVGFzayhEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGFUYXNrc0Zv
ckFQSS5yZW1vdmUoaWRlbnRpZmllcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tV
UkxTZXNzaW9uVGFza0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNGE1OGM2ODUyYWNl
OGEzZGVkODIxYzgyNTBlMGY5NDkwNjMwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiRGF0YVRh
c2tJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgTmV0d29ya1Nlc3Np
b25Db2NvYTsKK30KKworQHByb3RvY29sIE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZTsKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBXS1VSTFNlc3Npb25UYXNrRGVsZWdh
dGUgOiBOU09iamVjdDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJZGVudGlmaWVyOihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllcilpZGVudGlmaWVy
IHNlc3Npb246KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYSYpc2Vzc2lvbjsKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU4NmYyZjEyYWRjM2Y5MmNhYWM4MGZkNjhmNjliMmRiZGVkNzhkZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRh
c2tEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgiCisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgorI2ltcG9ydCAiQ29u
bmVjdGlvbi5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgor
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW1wbGVtZW50YXRpb24gV0tVUkxTZXNzaW9u
VGFza0RlbGVnYXRlIHsKKyAgICBXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBfaWRlbnRpZmll
cjsKKyAgICBXZWFrUHRyPFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYT4gX3Nlc3Npb247Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYktpdDo6RGF0YVRhc2tJ
ZGVudGlmaWVyKWlkZW50aWZpZXIgc2Vzc2lvbjooV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
JilzZXNzaW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9zZXNzaW9uID0g
V2Vha1B0ciB7IHNlc3Npb24gfTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoSVBDOjpDb25u
ZWN0aW9uKiljb25uZWN0aW9uCit7CisgICAgaWYgKCFfc2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICByZXR1cm4gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlIGNyZWRlbnRpYWwpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAg
IGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7CisgICAgY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKF9pZGVudGlmaWVyLCBjaGFsbGVuZ2UpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZy
b21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVu
dGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1VSTFJlcXVlc3QgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0
byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgY29ubmVjdGlvbi0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEYXRhVGFz
a1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKF9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVz
dCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHJlcXVlc3QgPSBSZXRhaW5QdHIgeyByZXF1ZXN0IH1dIChib29sIGFsbG93ZWQpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dlZCA/IHJlcXVlc3QuZ2V0KCkgOiBuaWwpOworICAg
IH0pOworfQorCistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0
YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvblJlc3BvbnNlQ2FuY2VsKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KF9pZGVudGlmaWVyLCByZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGFsbG93ZWQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWxsb3dlZCA/IE5TVVJMU2Vzc2lvblJlc3BvbnNlQWxsb3cgOiBOU1VSTFNlc3Np
b25SZXNwb25zZUNhbmNlbCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
VGFzayBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSBbc2VsZiBjb25uZWN0aW9uXTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEYXRhVGFza0RpZFJlY2VpdmVEYXRhKF9pZGVudGlmaWVyLCB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9KSwgMCk7Cit9CisKKy0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjoobnVsbGFibGUgTlNFcnJvciAqKWVy
cm9yCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3Io
X2lkZW50aWZpZXIsIGVycm9yKSwgMCk7CisgICAgaWYgKF9zZXNzaW9uKQorICAgICAgICBfc2Vz
c2lvbi0+cmVtb3ZlRGF0YVRhc2soX2lkZW50aWZpZXIpOworfQorCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggNTNjM2Q5NjBkM2JhN2NiZDhkYWY4Y2IwNWE2YjI1MjVkNTViZmRjNC4uNDE1ZjAzZTQ0MzUx
ZWZjMTAwMDZlZjVjYzNlOGJlNjhiNzZiZWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CkBAIC0zMTksNiArMzE5LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6Q29u
dGVudFdvcmxkSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAgICdX
ZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA1M2FmMTBhODZlMTI5
YTE5ZWQxMDUxM2ExNjBkOWRhMDk3ZmU1YzViLi43ZDRlZTZiMjBiZTQ4NjkyZWViZDNiYzk4YjQ5
ZTk2ZGQ2NjFmNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMTYs
NiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBDb250ZXh0TWVudUxpc3RlbmVyLAogICAgICAg
ICBDdXN0b21IZWFkZXJGaWVsZHMsCiAgICAgICAgIEludGVybmFsRGVidWdGZWF0dXJlLAorICAg
ICAgICBEYXRhVGFzaywKICAgICAgICAgRGVidWdnYWJsZUluZm8sCiAgICAgICAgIERvd25sb2Fk
LAogICAgICAgICBFeHBlcmltZW50YWxGZWF0dXJlLApAQCAtMzY0LDYgKzM2NSw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+IHsKICAgICAgICAgQVBJ
OjpPYmplY3Q6OlR5cGU6OkNvbnRleHRNZW51TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0
OjpUeXBlOjpDdXN0b21IZWFkZXJGaWVsZHMsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJ
bnRlcm5hbERlYnVnRmVhdHVyZSwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkRhdGFUYXNr
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RGVidWdnYWJsZUluZm8sCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZCwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkV4
cGVyaW1lbnRhbEZlYXR1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oCmluZGV4IGY0OTI1OGE0YzcxYmIwYzdkZTk5
MGI0MmJmNzJjNGYzNmI5Y2MxZWYuLjc0OTRkNDRhOGI1ZWJmMjNkYWExMmI3NDhmZDBkZDVmZDBm
YjdmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2Nv
Y29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb25Db2NvYS5oCkBAIC0zMSw1ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24oTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
KTsKK05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBmcm9tQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EubW0KaW5kZXggNDQ1NDkxYWVh
ZTExNjFmMjQzYzFiYTc2OTFjMDJlYmQyZTE0YjdhNi4uZjcyOWE1NjQzNTkwY2E1MDk2MWJkMTIy
M2ZjNWIwYzBiMzkwNjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbQpAQCAtNDMsNCArNDMsMTkgQEAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24oTlNVUkxTZXMKICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07CiB9CiAKK05TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBmcm9tQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKQor
eworICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgIHJl
dHVybiBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzsKKyAg
ICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbDoKKyAgICAg
ICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZTsKKyAgICB9CisgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0
aW9uXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KaW5kZXggMTBiODA5MmExYjIyOTYyYjI5MDQwNjY1Yjc2ZWQzN2I1NjUy
MTI3Zi4uYmYyZWQyYTA3OWM4OTUyMDIzOWRjNWJkY2ExZDU1YTI4N2MzNWM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzQsNiArNzQsNyBAQAogI2ltcG9y
dCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1
bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0lu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tEYXRhVGFza0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tF
eHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgpAQCAtMjE5LDYg
KzIyMCwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBl
KQogICAgICAgICB3cmFwcGVyID0gW1dLTlNEYXRhIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIFR5cGU6OkRhdGFUYXNrOgorICAgICAgICB3cmFwcGVyID0gW19XS0RhdGFUYXNr
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OkludGVybmFsRGVidWdG
ZWF0dXJlOgogICAgICAgICB3cmFwcGVyID0gW19XS0ludGVybmFsRGVidWdGZWF0dXJlIGFsbG9j
XTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRh
VGFza0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFUYXNrSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU1MWJmNWIyYzM1NmZmMjc2OWVkMWRkMmYzNzViY2YyYzFkZmE2ZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhVGFza0lkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
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
bSBEYXRhVGFza0lkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIERhdGFUYXNrSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8RGF0YVRhc2tJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IGY3ODEzMzZlNWVjODIzMjBmYTA1NWZmYTczZjkxMDFkYzg4ZDY0ODEuLjA5MGJmMTJi
NzI4NzQ4ZmM0YTI3YzA1YjAwNjViMzZjZmUzZGUzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDczLDYg
KzQ3Myw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZv
LmNwcAorVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRGVi
dWdnYWJsZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUuY3Bw
CiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAzOWZlYTkxY2U1NjE3NTgxNjBhZDkyMTg5ODk0NTNlNTgzZWQ2NDYxLi4yZjgyMDQ4ZmViMzJm
ZmUyYmU3YTZlYTU2YjNhYzA5Nzg5NDk1NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
OCw2ICsyOCw3IEBAIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtBY3Rpdml0eVRyYWNrZXJD
b2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJM
U2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbQogCiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKIApAQCAtMjc5LDYgKzI4MCw3IEBAIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRGF0YVRhc2subW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA5M2EwMTAwZmY1ZTEyZmJiMjU4YWYzNWMw
NzYyZjFhNmY4ZDM4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEYXRhVGFzay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJRGF0YVRhc2suaCIK
KworI2luY2x1ZGUgIkFQSURhdGFUYXNrQ2xpZW50LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK0RhdGFUYXNrOjp+RGF0YVRh
c2soKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRGF0YVRhc2s6OnNldENsaWVudChSZWY8RGF0YVRhc2tD
bGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQor
Cit2b2lkIERhdGFUYXNrOjpjYW5jZWwoKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQor
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
Q2FuY2VsRGF0YVRhc2sobV9pZGVudGlmaWVyLCBtX3Nlc3Npb25JRCksIDApOworfQorCitEYXRh
VGFzazo6RGF0YVRhc2soV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vh
a1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJiBwYWdlKQorICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCisgICAgLCBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fbmV0d29ya1By
b2Nlc3MobV9wYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKSkKKyAgICAs
IG1fc2Vzc2lvbklEKG1fcGFnZS0+c2Vzc2lvbklEKCkpCisgICAgLCBtX2NsaWVudChEYXRhVGFz
a0NsaWVudDo6Y3JlYXRlKCkpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y5OTQ4ZTg1YjFmZGIx
Y2FjZGQxNzJhNjIxMjBjNjA2NzdiZmNjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRh
dGFUYXNrSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIE5ldHdvcmtQcm9j
ZXNzUHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBEYXRhVGFza0NsaWVudDsKKworY2xhc3MgRGF0YVRhc2sgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhVGFzaz4geworcHVibGljOgorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxEYXRhVGFzaz4gY3JlYXRlKEFyZ3Mm
Ji4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRhc2so
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgfQorICAgIH5EYXRhVGFzaygpOwor
CisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkg
eyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CisgICAgY29uc3QgRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRDbGllbnQo
UmVmPERhdGFUYXNrQ2xpZW50PiYmKTsKKworcHJpdmF0ZToKKyAgICBEYXRhVGFzayhXZWJLaXQ6
OkRhdGFUYXNrSWRlbnRpZmllciwgV2Vha1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJik7CisK
KyAgICBXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9wYWdlOworICAgIFdlYWtQdHI8V2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOworICAgIFJlZjxEYXRhVGFza0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEYXRhVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFU
YXNrQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJjOWIwNDY0ZWJjOTM4ZDQ4NWU0ODIzOWRlZTllZmUx
ZjE5MzYwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEYXRhVGFza0NsaWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENyZWRl
bnRpYWw7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGE7
CisKK2NsYXNzIERhdGFUYXNrQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRhc2tDbGll
bnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERhdGFUYXNrQ2xpZW50PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFU
YXNrQ2xpZW50KTsgfQorICAgIHZpcnR1YWwgfkRhdGFUYXNrQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShEYXRhVGFzayYsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5k
Q29udGludWUsIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oRGF0YVRhc2smLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEYXRhVGFzayYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShEYXRhVGFzayYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIGNvbnN0
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihEYXRhVGFzayYsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJikgY29uc3QgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb25DbGllbnQuaAppbmRleCAyZmVlZjYwODJhMDY0NTc2ZTc4NDNhZDYyNjQ2NDE3
MzAxZGJiNGQ3Li5lZWNmYjc4MWZjMjIzNmUwY2YzYzAxNjg3OTIwNGVjMzIzMjJjZTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4
dGVuc2lvbkNsaWVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgQVBJIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IDU0NTlkMmUzYmY4NTc3ODgxNWE0MWQ0MjRjYTRlMjE0ZjM3YzUzMDIuLjgwYTI5YmNhMjQ3ODYx
NWVkYzI0YjMzZjUwMDMwNzU2NTg1OTU0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJBUElEYXRh
VGFzay5oIgogI2ltcG9ydCAiQVBJRm9ybUNsaWVudC5oIgogI2ltcG9ydCAiQVBJRnJhbWVUcmVl
Tm9kZS5oIgogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTk5LDYgKzEwMCw3
IEBACiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tBcHBIaWdobGlnaHREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXBwSGlnaGxpZ2h0SW50
ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Rp
YWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpAQCAtMjIyNCwxMiArMjIyNiwxMCBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyhOU0Fy
cmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdAogI2VuZGlmCiB9CiAKLS0gKHZvaWQpX3JlcXVlc3RS
ZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0RhdGEgKiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CistICh2b2lkKV9kYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0RhdGFUYXNrICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvci5pc051
bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOworICAgIF9wYWdl
LT5kYXRhVGFza1dpdGhSZXF1ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8QVBJOjpEYXRhVGFzaz4mJiB0YXNrKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIodGFzaykpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAppbmRleCBmOGJjMzAzNTExYzVkYjY4MzdjMjM1MjEyNjdhMTkzNjc1MDgxMTNmLi40
MzVlZjE2ZDY4NDEzZWZhMzA0OTY1MWVmYzJmZDc1Y2IzMzQyMDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEy
Miw2ICsxMjIsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2Up
IHsKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBj
bGFzcyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OworQGNsYXNzIF9XS0RhdGFUYXNrOwogQGNsYXNz
IF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0ZyYW1lVHJlZU5vZGU7CiBAY2xhc3MgX1dLSGl0
VGVzdFJlc3VsdDsKQEAgLTQyNyw3ICs0MjgsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAo
dm9pZClfc3RhcnRJbWFnZUFuYWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLSAodm9pZClf
cmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TRGF0YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHZvaWQpX2RhdGFUYXNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoX1dLRGF0YVRhc2sgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEaXNwbGF5Q2FwdHVyZVN0YXRlKSB7
CiAgICAgV0tEaXNwbGF5Q2FwdHVyZVN0YXRlTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzMjMzMzBkMTZlNGNk
YTU5MThlZjU5YTFjNzRlOWIxNzMyMzMxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0Bwcm90b2NvbCBf
V0tEYXRhVGFza0RlbGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZh
Y2UgX1dLRGF0YVRhc2sgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFW
QUlMQUJMRTsKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgd2VhaykgV0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZTsK
KworLy8gQ2FsbGluZyB0aGlzIHdpbGwgb2Z0ZW4gZGVsZWdhdGUncyBkYXRhVGFzazpkaWRDb21w
bGV0ZVdpdGhFcnJvcjogd2l0aCB7IE5TVVJMRXJyb3JEb21haW4sIE5TVVJMRXJyb3JDYW5jZWxs
ZWQgfQorLy8gYnV0IGFub3RoZXIgZXJyb3IgbWF5IGhhcHBlbiBiZXR3ZWVuIHRob3NlIHR3byBw
b2ludHMgaW4gdGltZSwgYW5kIGlmIHNvbWV0aGluZyBlbHNlIGhhcHBlbnMKKy8vIHN1Y2ggYXMg
V0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NhdGlvbiB0aGVyZSBtYXkgYmUgbm8gY2FsbGJhY2su
CistICh2b2lkKWNhbmNlbDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMWRhZTIyNjkzOGE3MjhmMTE0MzlkNTBiNTg3MzY4NDIzZDg3MjlmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLm1t
CkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJfV0tEYXRhVGFza0ludGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURhdGFUYXNrLmgiCisj
aW1wb3J0ICJBUElEYXRhVGFza0NsaWVudC5oIgorI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNr
RGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorCitjbGFzcyBXS0RhdGFUYXNrQ2xpZW50IGZpbmFs
IDogcHVibGljIEFQSTo6RGF0YVRhc2tDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V0tEYXRhVGFza0NsaWVudD4gY3JlYXRlKGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXS0RhdGFUYXNrQ2xpZW50KGRlbGVnYXRlKSk7IH0K
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgV0tEYXRhVGFza0NsaWVudChpZCA8X1dLRGF0YVRhc2tE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRhdGFUYXNrOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1Jl
cXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2Vp
dmVSZXNwb25zZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRhVGFz
azpkaWRSZWNlaXZlUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb0RpZFJlY2VpdmVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0Rp
ZENvbXBsZXRlV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRhdGFUYXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOildKSB7IH0KKworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShBUEk6OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRp
bnVlLCB7IH0pOworICAgICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3Io
ZGF0YVRhc2s6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOikpOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRhc2spIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptYWMoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXZWJLaXQ6OnRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNw
b3NpdGlvbiksIFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkpOworICAgICAgICB9KS5n
ZXQoKV07CisgICAgfQorCisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihBUEk6
OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBp
ZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICBh
dXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZGF0YVRhc2s6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgIFtt
X2RlbGVnYXRlIGRhdGFUYXNrOndyYXBwZXIodGFzaykgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIG5ld1JlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVw
ZGF0ZUhUVFBCb2R5KSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSA9PSBf
V0tEYXRhVGFza1JlZGlyZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9KS5nZXQoKV07CisgICAg
fQorCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQVBJOjpEYXRhVGFzayYgdGFzaywgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlUmVzcG9uc2UpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIGF1dG8gY2hl
Y2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6
ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVy
KHRhc2spIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZGVjaXNp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChfV0tEYXRhVGFza1Jl
c3BvbnNlUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+
Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2xpY3kgPT0gX1dLRGF0YVRhc2tSZXNwb25zZVBv
bGljeUFsbG93KTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoQVBJOjpEYXRhVGFzayYgdGFzaywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jl
c3BvbmRzVG9EaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgW21f
ZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0YXNrKSBkaWRSZWNlaXZlRGF0YTphZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUo
KV0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKEFQSTo6
RGF0YVRhc2smIHRhc2ssIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkQ29t
cGxldGVXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFttX2RlbGVnYXRl
IGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkQ29tcGxldGVXaXRoRXJyb3I6ZXJyb3IubnNFcnJv
cigpXTsKKyAgICB9CisKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOworCisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24gOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZVJlc3BvbnNl
IDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVEYXRhIDogMTsKKyAgICBib29s
IG1fcmVzcG9uZHNUb0RpZENvbXBsZXRlV2l0aEVycm9yIDogMTsKK307CisKK0BpbXBsZW1lbnRh
dGlvbiBfV0tEYXRhVGFzaworCistICh2b2lkKWNhbmNlbAoreworICAgIF9kYXRhVGFzay0+Y2Fu
Y2VsKCk7Cit9CisKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBhdXRvKiBwYWdlID0g
X2RhdGFUYXNrLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiBwYWdlLT5jb2NvYVZpZXcoKS5nZXQoKTsKK30KKworLSAoaWQgPF9XS0RhdGFU
YXNrRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQo
KTsKK30KKworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0RhdGFUYXNrRGVsZWdhdGU+KWRl
bGVnYXRlCit7CisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgX2RhdGFUYXNrLT5zZXRD
bGllbnQoV0tEYXRhVGFza0NsaWVudDo6Y3JlYXRlKGRlbGVnYXRlKSk7Cit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblJ1
bkxvb3AoX1dLRGF0YVRhc2suY2xhc3MsIHNlbGYpKQorICAgICAgICByZXR1cm47CisgICAgX2Rh
dGFUYXNrLT5+RGF0YVRhc2soKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEg
bWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2RhdGFUYXNrOworfQorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMmM4N2JlYmVkOWI0YzkxMDI5NzVjYzAxM2U0M2FjMzhmOTRlYjBj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0RhdGFUYXNrRGVsZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9u
Lmg+CisKK0BjbGFzcyBfV0tEYXRhVGFzazsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeSkgeworICAgIF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xp
Y3lDYW5jZWwsCisgICAgX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5KSB7CisgICAgX1dL
RGF0YVRhc2tSZXNwb25zZVBvbGljeUNhbmNlbCwKKyAgICBfV0tEYXRhVGFza1Jlc3BvbnNlUG9s
aWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90b2NvbCBfV0tEYXRh
VGFza0RlbGVnYXRlIDxOU09iamVjdD4KKworQG9wdGlvbmFsCisKKy0gKHZvaWQpZGF0YVRhc2s6
KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWRhdGFU
YXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihO
U0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5
KSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFU
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGRlY2lzaW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5k
bGVyOworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZl
RGF0YTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0
YVRhc2sgZGlkQ29tcGxldGVXaXRoRXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKillcnJvcjsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
NzRiMTQxMjZjNWEzNjMxN2Q5M2ZiMWM3MjM0ZWY3MzE3NzZmYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tJbnRlcm5hbC5o
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJBUElEYXRhVGFzay5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrLmgiCisjaW1wb3J0IDx3
dGYvV2Vha09iakNQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpEYXRhVGFzaz4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IF9XS0RhdGFUYXNrOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS0RhdGFUYXNrICgpIDxX
S09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpEYXRhVGFz
az4gX2RhdGFUYXNrOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiA+
IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDU3ZGU4YjFmNjU4NjZmYjFm
Y2Y3YmQxOGJiYjY4ZDIwYzE1YWU5ZmMuLjZmMGIyYzEwZjJmN2RiZTM4YTU4OWFlMDhjMWY3Njg2
ZDIzNTE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAi
QVBJQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmgiCisjaW5jbHVkZSAiQVBJRGF0YVRhc2suaCIKKyNpbmNsdWRlICJBUElEYXRhVGFz
a0NsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCkBAIC0zMzcsMTQgKzMzOSw2NSBAQCBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdAogICAgIHJl
dHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBw
cm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9yaWdpbmF0aW5nUGFnZSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YVRhc2smKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpSZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0YSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3IpKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEYXRhVGFz
a1dpdGhSZXF1ZXN0KHBhZ2UuaWRlbnRpZmllcigpLCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgd2Vha1BhZ2UgPSBXZWFrUHRyIHsgcGFnZSB9LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoRGF0YVRhc2tJZGVudGlm
aWVyIGlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBl
KG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgICAgIGF1dG8gZGF0
YVRhc2sgPSBBUEk6OkRhdGFUYXNrOjpjcmVhdGUoaWRlbnRpZmllciwgV1RGTW92ZSh3ZWFrUGFn
ZSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhVGFzayk7CisgICAgICAgIG1fZGF0
YVRhc2tzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFUYXNrKSk7CiAgICAgfSk7CiB9CiAK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZShEYXRh
VGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiBjaGFsbGVuZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxp
ZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLmdldChp
ZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZUNoYWxsZW5nZSgq
dGFzaywgV1RGTW92ZShjaGFsbGVuZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90
ZWN0aW9uU3BhY2VBbmRDb250aW51ZSwgeyB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGF0YVRhc2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0soZGVj
bHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKKyAgICBpZiAoYXV0
byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0YXNrLT5jbGll
bnQoKS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigqdGFzaywgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKERhdGFUYXNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9D
SEVDSyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOworICAg
IGlmIChhdXRvIHRhc2sgPSBtX2RhdGFUYXNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHRh
c2stPmNsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqdGFzaywgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9
Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRSZWNlaXZlRGF0YShE
YXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKQoreworICAgIE1FU1NBR0VfQ0hFQ0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlk
S2V5KGlkZW50aWZpZXIpKTsKKyAgICBpZiAoYXV0byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlk
ZW50aWZpZXIpKQorICAgICAgICB0YXNrLT5jbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqdGFzaywg
ZGF0YSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKERhdGFU
YXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3Ip
Cit7CisgICAgTUVTU0FHRV9DSEVDSyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXko
aWRlbnRpZmllcikpOworICAgIGlmIChhdXRvIHRhc2sgPSBtX2RhdGFUYXNrcy50YWtlKGlkZW50
aWZpZXIpKQorICAgICAgICB0YXNrLT5jbGllbnQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvcigqdGFz
aywgV1RGTW92ZShlcnJvcikpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RmV0Y2hXZWJz
aXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzZDM1NDRkY2I5NzYwZDZlMzM3Mjc1ZDYy
YTUzNjFjOWIxOTVjNGUwLi5lM2RmZDUzZWUzM2NlMzZmZTg4ZTExYjYxNDY4NTEzZDg1MTUyYTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiQXBwUHJpdmFjeVJl
cG9ydC5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIK
QEAgLTU4LDYgKzYwLDcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OworY2xhc3MgRGF0YVRhc2s7
CiB9CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtMTI2LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVw
bHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVE
YXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7
Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCBkYXRhVGFza1dp
dGhSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYpOwog
CiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CkBAIC0yODksNiArMjkyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1c2hB
bmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIGRhdGFUYXNr
UmVjZWl2ZWRDaGFsbGVuZ2UoRGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik+JiYpOworICAgIHZvaWQg
ZGF0YVRhc2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihEYXRhVGFza0lkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGF0YVRhc2tEaWRSZWNl
aXZlUmVzcG9uc2UoRGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGF0YVRhc2tE
aWRSZWNlaXZlRGF0YShEYXRhVGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOworICAgIHZvaWQgZGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihEYXRhVGFza0lkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCkBAIC0zOTgsNiArNDA3LDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYWtIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZXM7
CiAgICAgVW5pcXVlUmVmPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gbV9jb29raWVNYW5hZ2VyOwor
ICAgIEhhc2hNYXA8RGF0YVRhc2tJZGVudGlmaWVyLCBSZWY8QVBJOjpEYXRhVGFzaz4+IG1fZGF0
YVRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggZTNhYmJiNDY4ZjViM2FkMDc3ZWI2NDZhNjkyY2M3YmY5Mjk1NGRmMC4u
NTRlNDYzY2E4OWY1ZWE4MTg4NDZiMmJhMDEwMGZlZDExOGZlY2NmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtODksNCArODksMTIgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUlfVVNFU19TQ0VORSkKICAgICBHZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXltZW50UHJl
c2VudGF0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJZGVu
dGlmaWVyKSAtPiAoU3RyaW5nIHNjZW5lSUQpIEFzeW5jCiAjZW5kaWYKKworICAgIERhdGFUYXNr
UmVjZWl2ZWRDaGFsbGVuZ2UoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKSAtPiAoZW51bTp1aW50
OF90IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKSBBc3luYworICAgIERhdGFUYXNrV2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCisgICAgRGF0YVRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkgLT4gKGJvb2wgYWxsb3dlZCkgQXN5
bmMKKyAgICBEYXRhVGFza0RpZFJlY2VpdmVEYXRhKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIERhdGFUYXNrRGlkQ29t
cGxldGVXaXRoRXJyb3IoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGU0OGRiYzVkNmE0ZDc2YzgyMTVkMjM2YjExNzQ2MTA0
Y2ZiMGFhNS4uMzI1ZWExODY0NThmNWU2NGU5ZjNhMGNlZTJhM2E0M2I3Zjg0NDI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02NDYyLDkgKzY0NjIsOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJh
Y2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGFUYXNrJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgd2Vic2l0ZURhdGFTdG9y
ZSgpLm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJlc291cmNlKGlkZW50aWZpZXIoKSwgc2Vzc2lv
bklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5kYXRhVGFza1dpdGhSZXF1ZXN0
KCp0aGlzLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggODZkYjc4MDYxZDQyN2JiMTQyYmU5MzJhMzhlYjQwZWFkM2ZkNDdlOS4uMzM3ZGJiNTRm
YTU4NTk3ZGIyOGIxYjU2ZWU5MzI2YWE1MDcyY2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dDsKK2NsYXNzIERhdGFUYXNrOwogY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3Mg
RXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwpAQCAtMTM4Niw3ICsxMzg3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKICAgICB2b2lk
IHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAgICAg
dm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNv
dXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQgZGF0YVRhc2tXaXRoUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChB
UEk6OkRhdGFUYXNrJik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29y
ZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTk1Njg1NWFjNTliZjdhNWQxN2IyOTFmYTRlMWYxMmUx
ZWE3ZDViYS4uNGEwNWExMTA4N2FlZmUwODI1Zjc1ZTNhMTZkYzg1MGQzMjEyMTM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI4
LDYgKzEyMjgsOCBAQAogCQk1QzIwRjY3OTI3NkE2REI2MDA2Q0FDMjIgLyogQXJndW1lbnRDb2Rl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEz
RDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJNUMy
Njk1ODUyMDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjY5NTg0MjAw
NDJGMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyOThEQTAxQzNERjAy
MTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdE
b3dubG9hZC5oICovOyB9OworCQk1QzJDNkZBOTI3QzlFNUUyMDBDQ0RBOUUgLyogX1dLRGF0YVRh
c2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkM2
RkE0MjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDMkM2RkFBMjdDOUU1RUIwMENDREE5RSAv
KiBfV0tEYXRhVGFza0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzJDNkZBMzI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tEZWxl
Z2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTVDMkQ1NzQ4MjU3RkZBNEIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyRDU3NDcyNTdG
RkExMjAwNjc5QTcyIC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyRUJERkEyNTY0MzgwQjAwRDU1
QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NUMzNTlDMEQyMTU0NzM5RjAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4
IC8qIFdLRGVwcmVjYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00OTEwLDYgKzQ5MTIsMTYgQEAKIAkJNUMyQjFBRjMyMjNBQjcyODAwQjkx
Q0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBCOTFDRjcgLyogRG93bmxvYWRQcm94
eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93
bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJD
NkY5RTI3Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUMyQzZGOUYyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSURhdGFUYXNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTAyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNr
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGFUYXNrQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkEyMjdDOTUyOTkwMEND
REE5RSAvKiBfV0tEYXRhVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0RhdGFUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJD
NkZBMzI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEYXRhVGFza0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE0MjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFz
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEYXRhVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBNTI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dL
RGF0YVRhc2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tE
YXRhVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE2
MjdDOTU4RkMwMENDREE5RSAvKiBEYXRhVGFza0lkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YVRhc2tJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDMkM2RkE3MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Npb25UYXNr
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
MkM2RkE4MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkQ1NzQ3MjU3RkZBMTIwMDY3OUE3MiAv
KiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0NvbnRleHREb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0RlcHJl
Y2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEZXByZWNhdGVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjc3LDYgKzcyODksNyBAQAogCQkJCTUx
MDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLywK
IAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5o
ICovLAogCQkJCTk5RjY0MkQyMUZBQkUzNzgwMDk2MjFFOSAvKiBDb29yZGluYXRlU3lzdGVtLmgg
Ki8sCisJCQkJNUMyQzZGQTYyN0M5NThGQzAwQ0NEQTlFIC8qIERhdGFUYXNrSWRlbnRpZmllci5o
ICovLAogCQkJCTk5MDM2QUU4MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEu
Y3BwICovLAogCQkJCTk5MDM2QUU3MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0Rh
dGEuaCAqLywKIAkJCQkwRjE4OUNBQjI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNl
cnZlcklELmggKi8sCkBAIC04ODM3LDYgKzg4NTAsMTAgQEAKIAkJCQk1QzVEMjM4OTIyN0ExODky
MDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8sCiAJCQkJNUM1RDIzODgyMjdB
MTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSAqLywKIAkJCQk1QzVEMjM4
NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCAqLywK
KwkJCQk1QzJDNkZBNDI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCAqLywKKwkJCQk1
QzJDNkZBMjI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2subW0gKi8sCisJCQkJNUMyQzZG
QTMyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCAqLywKKwkJCQk1QzJD
NkZBNTI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tJbnRlcm5hbC5oICovLAogCQkJCTgz
ODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgg
Ki8sCiAJCQkJQTFBNEZFNTcxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi8sCiAJ
CQkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLm1tICovLApAQCAtMTA0
NDIsNiArMTA0NTksOCBAQAogCQkJCTVDMjBDQjlCMUJCMERDRDIwMDg5NUJCMSAvKiBOZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJT
b2NrZXRUYXNrQ29jb2EuaCAqLywKIAkJCQk0MTI4N0Q0QjIyNUMwNUM0MDA5QTNFMjYgLyogV2Vi
U29ja2V0VGFza0NvY29hLm1tICovLAorCQkJCTVDMkM2RkE4MjdDOTZGRjkwMENDREE5RSAvKiBX
S1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCAqLywKKwkJCQk1QzJDNkZBNzI3Qzk2RkY5MDBDQ0RB
OUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBj
b2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTI4Miw2ICsxMTMwMSw5IEBA
CiAJCQkJNUNFMEMzNjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVudElu
Zm8uaCAqLywKIAkJCQk1QzVEMjM4QTIyN0ExRDlCMDAwQjlCREEgLyogQVBJQ3VzdG9tSGVhZGVy
RmllbGRzLmggKi8sCiAJCQkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5oICovLAorCQkJCTVDMkM2RjlGMjdDOTUyMzUwMENDREE5RSAv
KiBBUElEYXRhVGFzay5jcHAgKi8sCisJCQkJNUMyQzZGOUUyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQ
SURhdGFUYXNrLmggKi8sCisJCQkJNUMyQzZGQTAyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFU
YXNrQ2xpZW50LmggKi8sCiAJCQkJOTkwMzZBRTQyM0E5NTg3NDAwMDBCMDZBIC8qIEFQSURlYnVn
Z2FibGVJbmZvLmNwcCAqLywKIAkJCQk5OTAzNkFFMzIzQTk1ODc0MDAwMEIwNkEgLyogQVBJRGVi
dWdnYWJsZUluZm8uaCAqLywKIAkJCQk4Mzg5MUI2MjFBNjhCMzQyMDAzMEYzODYgLyogQVBJRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKQEAgLTEyODgzLDYgKzEyOTA1LDggQEAKIAkJCQk1
QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNEY4MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzVEMjM4QzIyN0Ey
Q0RBMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1QzJDNkZBOTI3QzlFNUUyMDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCBpbiBIZWFkZXJzICov
LAorCQkJCTVDMkM2RkFBMjdDOUU1RUIwMENDREE5RSAvKiBfV0tEYXRhVGFza0RlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2OTFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25v
c3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNUExOERDRTlG
QTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUE0RkU2MTE4
REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDBjM2Qz
ZDM3NGE5OWE3YmI5Mzg3MjM1ODBiMjY5MDY3NjExZTZhOS4uZjVhODY4ZTI2ZGY5YTU3MjNiZWUw
ZjhkZjQzYWQ3ODM1YTczZjg4OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTI1ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBfV0tEYXRh
VGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tOgorICAgICAg
ICAoLVtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REYXRhVGFz
a0RlbGVnYXRlIGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1Rlc3REYXRhVGFza0RlbGVnYXRlIGRhdGFUYXNrOmRpZFJlY2VpdmVEYXRh
Ol0pOgorICAgICAgICAoLVtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRDb21wbGV0
ZVdpdGhFcnJvcjpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAyLTI0ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbUHl0aG9uM10gUmVtb3ZlIHNo
ZWJhbmdzIGZyb20gd2Via2l0cHkgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCmluZGV4IGIxMWM2OWUyMzU0
Y2FmNDRjZGRjMDBlMWUzMTkyY2U0Zjg2MzI4YmQuLjAyMWJmNzQwZWVhMmE3YzI4NGNhM2FlMjY1
OTZjMWJkODRlYzA2MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQpAQCAtMzMsNiArMzMsOCBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0RhdGFUYXNrLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
RGF0YVRhc2tEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTM1Miw3ICszNTQsNTAgQEAgVEVTVChOZXR3b3JrUHJvY2VzcywgQnJv
YWRjYXN0Q2hhbm5lbENyYXNoUmVjb3ZlcnkpCiAgICAgRVhQRUNUX0VRKHdlYlBJRDIsIFt3ZWJW
aWV3MiBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KIAotVEVTVChOZXR3b3JrUHJvY2Vzcywg
TG9hZFJlc291cmNlKQorI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1RBU0tfREVMRUdBVEUpCisKK0Bp
bnRlcmZhY2UgVGVzdERhdGFUYXNrRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEYXRhVGFza0RlbGVn
YXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCheZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEYXRhVGFzayAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICosIHZvaWQoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
aWRSZWNlaXZlUmVzcG9uc2UpKF9XS0RhdGFUYXNrICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAo
XikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRSZWNlaXZlRGF0YSkoX1dLRGF0YVRhc2sgKiwgTlNEYXRhICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDb21wbGV0ZVdpdGhFcnJvcikoX1dL
RGF0YVRhc2sgKiwgTlNFcnJvciAqKTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdERh
dGFUYXNrRGVsZWdhdGUKKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFz
ayBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZGF0YVRhc2ssIGNo
YWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwg
bmlsKTsKK30KKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgorewor
ICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNl
KGRhdGFUYXNrLCByZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAg
IGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworfQorCist
ICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihO
U0RhdGEgKilkYXRhCit7CisgICAgaWYgKF9kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgX2RpZFJl
Y2VpdmVEYXRhKGRhdGFUYXNrLCBkYXRhKTsKK30KKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0
YVRhc2sgKilkYXRhVGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7
CisgICAgaWYgKF9kaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgX2RpZENvbXBsZXRlV2l0
aEVycm9yKGRhdGFUYXNrLCBlcnJvcik7Cit9CisKK0BlbmQKKworVEVTVChfV0tEYXRhVGFzaywg
QmFzaWMpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgYXV0byBo
dG1sID0gIjxzY3JpcHQ+ZG9jdW1lbnQuY29va2llPSd0ZXN0a2V5PXZhbHVlJzwvc2NyaXB0PiI7
CkBAIC0zNzcsMjQgKzQyMiw5OSBAQCBURVNUKE5ldHdvcmtQcm9jZXNzLCBMb2FkUmVzb3VyY2Up
CiAgICAgW3Bvc3RSZXF1ZXN0IHNldEhUVFBNZXRob2Q6QCJQT1NUIl07CiAgICAgYXV0byByZXF1
ZXN0Qm9keSA9ICJyZXF1ZXN0IGJvZHkiOwogICAgIFtwb3N0UmVxdWVzdCBzZXRIVFRQQm9keTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6cmVxdWVzdEJvZHkgbGVuZ3RoOnN0cmxlbihyZXF1ZXN0Qm9k
eSldXTsKLSAgICBbd2ViVmlldyBfcmVxdWVzdFJlc291cmNlOnBvc3RSZXF1ZXN0LmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwg
TlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwotICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBwb3N0UmVxdWVzdC5n
ZXQoKS5VUkwuYWJzb2x1dGVTdHJpbmcpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgs
IHN0cmxlbihzZWNvbmRSZXNwb25zZSkpOwotICAgICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGRh
dGEuYnl0ZXMsIHNlY29uZFJlc3BvbnNlLCBkYXRhLmxlbmd0aCkpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpwb3N0UmVxdWVzdC5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIHN0YXRp
YyBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7Cisg
ICAgICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgX19ibG9jayBi
b29sIHJlY2VpdmVkUmVzcG9uc2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlID0gXihfV0tEYXRhVGFzayAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcs
IHBvc3RSZXF1ZXN0LmdldCgpLlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICByZWNl
aXZlZFJlc3BvbnNlID0gdHJ1ZTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRh
VGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBfX2Jsb2NrIGJv
b2wgcmVjZWl2ZWREYXRhID0gZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2Vp
dmVEYXRhID0gXihfV0tEYXRhVGFzayAqLCBOU0RhdGEgKmRhdGEpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHJlY2VpdmVkUmVzcG9uc2UpOworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
bGVuZ3RoLCBzdHJsZW4oc2Vjb25kUmVzcG9uc2UpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoZGF0YS5ieXRlcywgc2Vjb25kUmVzcG9uc2UsIGRhdGEubGVuZ3RoKSk7CisgICAg
ICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0
ZS5nZXQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IF4oX1dLRGF0YVRhc2sgKiwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkRGF0YSk7CisgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogICAgIEVYUEVDVF9UUlVFKHN0
cm5zdHIoc2Vjb25kUmVxdWVzdC5kYXRhKCksICJDb29raWU6IHRlc3RrZXk9dmFsdWVcclxuIiwg
c2Vjb25kUmVxdWVzdC5zaXplKCkpKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoSFRUUFNlcnZlcjo6
cGFyc2VCb2R5KHNlY29uZFJlcXVlc3QpLCByZXF1ZXN0Qm9keSk7CiAKICAgICBkb25lID0gZmFs
c2U7Ci0gICAgW3dlYlZpZXcgX3JlcXVlc3RSZXNvdXJjZTpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYmxvYjpibGFuayJdXSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOwotICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvclVuc3VwcG9y
dGVkVVJMKTsKLSAgICAgICAgRVhQRUNUX05VTEwoZGF0YSk7Ci0gICAgICAgIEVYUEVDVF9OVUxM
KHJlc3BvbnNlKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgW3dlYlZpZXcgX2RhdGFUYXNr
V2l0aFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImJsb2I6YmxhbmsiXV0gY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFz
aykgeworICAgICAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFz
a0RlbGVnYXRlIG5ld10pOworICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CisgICAgICAg
IGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZSA9IF4oX1dLRGF0YVRhc2sgKiwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKF9XS0RhdGFUYXNr
UmVzcG9uc2VQb2xpY3kpKSB7CisgICAgICAgICAgICByZWNlaXZlZFJlc3BvbnNlID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVkRGF0YSA9IGZhbHNlOwor
ICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlRGF0YSA9IF4oX1dLRGF0YVRhc2sgKiwg
TlNEYXRhICpkYXRhKSB7CisgICAgICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAg
ICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IF4oX1dL
RGF0YVRhc2sgKiwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShy
ZWNlaXZlZFJlc3BvbnNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShyZWNlaXZlZERhdGEp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvclVuc3Vw
cG9ydGVkVVJMKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OwogICAgIH1d
OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK1RFU1QoX1dLRGF0YVRhc2ssIENoYWxsZW5n
ZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBIVFRQU2VydmVy
IHNlcnZlcihIVFRQU2VydmVyOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSywgSFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0V0tX
ZWJWaWV3IG5ld10pOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oX1dLRGF0YVRhc2sgKnRhc2spIHsKKyAgICAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRTZXJ2
ZXJUcnVzdENoYWxsZW5nZSA9IGZhbHNlOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRC
YXNpY0F1dGhDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihfV0tEYXRhVGFzayAqLCBOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikp
IHsKKyAgICAgICAgICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0XSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShyZWNlaXZlZEJhc2ljQXV0
aENoYWxsZW5nZSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkU2VydmVy
VHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAgICAgICAgIHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFs
bGVuZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRp
YWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5T
VVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWMpOworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAgICAgcmVjZWl2ZWRCYXNp
Y0F1dGhDaGFsbGVuZ2UgPSB0cnVlOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIG5pbCk7CisgICAgICAgIH07Cisg
ICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdh
dGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICosIE5TRGF0YSAqZGF0YSkg
eworICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRSZXNwb25zZSA9ICI8c2NyaXB0PmFs
ZXJ0KCdzdWNjZXNzIScpPC9zY3JpcHQ+IjsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmxl
bmd0aCwgc3RybGVuKGV4cGVjdGVkUmVzcG9uc2UpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoZGF0YS5ieXRlcywgZXhwZWN0ZWRSZXNwb25zZSwgZGF0YS5sZW5ndGgpKTsKKyAg
ICAgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGRlbGVn
YXRlLmdldCgpLmRpZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWREYXRhKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg
IH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworLy8gRklYTUU6IEFkZCB0
ZXN0cyBmb3IgX1dLRGF0YVRhc2sgcmVkaXJlY3Rpb24sIGFzIHdlbGwgYXMgd2hhdCBoYXBwZW5z
IHdoZW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVzLgorCisjZW5kaWYgLy8gSEFWRShOU1VS
TFNFU1NJT05fVEFTS19ERUxFR0FURSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453294</attachid>
            <date>2022-02-26 07:03:41 -0800</date>
            <delta_ts>2022-03-01 12:58:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237234-20220226070340.patch</filename>
            <type>text/plain</type>
            <size>88277</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjZjVlOGU3MjRjYTFjYWFi
NWY3NGQ4YmE4OTIyYWIxZjVlYjJmNDguLjAyMzdiY2FlMWI2YTg4NTY4MzRlYmYyMTM2ODhiYTJk
MjE0ODdkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjItMDItMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIF9X
S0RhdGFUYXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXaGVuIEkgYWRkZWQgV0tXZWJWaWV3Ll9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRs
ZXI6IEkgb3Zlcmxvb2tlZCBhIGZldyB0aGluZ3MuCisgICAgICAgIEZpcnN0LCBpdCBpcyB1bmFi
bGUgdG8gc3VwcG9ydCBIVFRQUyBiZWNhdXNlIEkgZGlkbid0IGhvb2sgdXAgYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlIGhhbmRsaW5nIHRvIGl0LgorICAgICAgICBTZWNvbmQsIGl0IGlzIHVuYWJs
ZSB0byBoYXZlIGEgbWF4aW11bSBhY2NlcHRlZCByZXNwb25zZSBsZW5ndGgsIHdoaWNoIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIGFuIGFkb3B0ZXIuCisgICAgICAgIFRvIG1ha2UgdGhlc2UgcG9zc2li
bGUsIEkgbWFkZSBfV0tEYXRhVGFzayB3aGljaCBpcyByZWxhdGVkIHRvIFdLRG93bmxvYWQgYW5k
IE5TVVJMU2Vzc2lvbkRhdGFUYXNrLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGF0YVRhc2tX
aXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEYXRh
VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6Y2FuY2VsRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtXS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUgaW5pdFdpdGhJZGVudGlmaWVyOnNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBjb25uZWN0aW9uXSk6CisgICAgICAgICgt
W1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFza0Rl
bGVnYXRlIFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNrRGVs
ZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25UYXNr
RGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3Qu
aDoKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6ZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24pOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVj
dDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2s6
OnNldENsaWVudCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrOjpjYW5jZWwpOgorICAgICAgICAo
QVBJOjpEYXRhVGFzazo6RGF0YVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGF0
YVRhc2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKEFQSTo6RGF0YVRhc2s6OnBhZ2UpOgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6
Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp+RGF0YVRhc2tDbGllbnQpOgorICAgICAg
ICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6CisgICAg
ICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEgY29uc3Qp
OgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbTog
QWRkZWQuCisgICAgICAgICgtW19XS0RhdGFUYXNrIGNhbmNlbF0pOgorICAgICAgICAoLVtfV0tE
YXRhVGFzayB3ZWJWaWV3XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIGRlbGVnYXRlXSk6Cisg
ICAgICAgICgtW19XS0RhdGFUYXNrIHNldERlbGVnYXRlOl0pOgorICAgICAgICAoLVtfV0tEYXRh
VGFzayBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFz
a0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMi0wMi0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFRha2UgZG93biBzaGFyZWQgd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiBsZXNzIGFnZ3Jlc3Np
dmVseSB3aGVuIGl0IGJlY29tZXMgaWRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCA4YzYwOGEy
M2E0NGUyYzU2NjEyYmE4ZTMzM2Y4YzQ0NTRmZDQ1NjJmLi45ZmU3NmM4NjUxZDA3ZjJmMzlmNzA2
Y2RkOTA4ODJmY2QxNTZlZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtOTk5LDYgKzk5OSw3
IEBACiAgICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTUwMDAwKQogI2RlZmluZSBIQVZFX0NGTkVUV09SS19OU1VSTFNFU1NJT05fQVRU
UklCVVRFRF9CVU5ETEVfSURFTlRJRklFUiAxCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05TVVJM
U0VTU0lPTl9IU1RTX1dJVEhfVU5UUlVTVEVEX1JPT1QgMQorI2RlZmluZSBIQVZFX05TVVJMU0VT
U0lPTl9UQVNLX0RFTEVHQVRFIDEKICNkZWZpbmUgSEFWRV9BVURJT19PQkpFQ1RfUFJPUEVSVFlf
RUxFTUVOVF9NQUlOIDEKICNkZWZpbmUgSEFWRV9JTUFHRV9SRVNUUklDVEVEX0RFQ09ESU5HIDEK
ICNkZWZpbmUgSEFWRV9YUENfQ09OTkVDVElPTl9DT1BZX0lOVkFMSURBVElPTl9SRUFTT04gMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA5MmM1Y2IzMzliNjU5ODg0MjAzMDM3NGE5OWZlNjYxNzE1YTZjMzM2Li45ODJkODhhODZiNGY4
NjNlYTkxZWUyNjZhODdjOGJiMWQyZmM3YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk5NiwxMyArMTk5NiwxNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFU
YXNrJiBuZXR3b3JrRGF0YVRhcwogICAgIH0sIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGh0dHBCb2R5LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7CisgICAgbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKS0+ZGF0YVRhc2tXaXRoUmVxdWVzdChwYWdlSUQsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnJlcXVlc3RSZXNvdXJjZShw
YWdlSUQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9LCB7IH0pOworICAgICAg
ICBzZXNzaW9uLT5jYW5jZWxEYXRhVGFzayhpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5nKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IGEzZWYxMTI4NTcxMTZkZjE1ODg2OWE5NjZiODU5Y2FkMTM4ZjQ4YTguLjY4OWJmOTdlZGVkZDk1
ZTM3YzYyOTBjYjZjZmFlOTViZDZiNDEwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBcHBQ
cml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC00MzIsNyArNDMzLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVS
TCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICNlbmRpZgogICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcik+JiYpOworICAgIHZv
aWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmKTsKKyAgICB2
b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKICAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2MzFlMmI2
MDczYzAxOTIxMzA2OGMyMDk2YjgyN2IyNzlkYmM3ZGUwLi4xMWQ2NWNiMjIxZTFiODMwZGM3NWY4
YzBhNzNmMDBmZTU2OWUyYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUzLDcgKzUzLDggQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQogI2VuZGlmCi0gICAgUmVxdWVzdFJlc291cmNlKFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVx
dWVzdEJvZHkpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKKyAg
ICBEYXRhVGFza1dpdGhSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHkpIC0+IChXZWJLaXQ6OkRh
dGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllcikgQXN5bmMKKyAgICBDYW5jZWxEYXRhVGFz
ayhXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKICAgICBB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggODVjN2NiZDY5MDM0ZDljYmE3ZjQ0NWRh
OWRlNDc1YTFkN2IzNTExOC4uNGRkMjlmODlkNTMyYTI2MWZmYWIyYmY3ZGM3NDNlMmFjMTBmYTdi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXBwUHJpdmFjeVJlcG9ydC5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIuaCIKQEAgLTIzMiw3ICsyMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+LCBzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRh
VGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRl
bnRpZmllcikgeyB9CiAgICAgdmlydHVhbCBzaXplX3QgY291bnROb25EZWZhdWx0U2Vzc2lvblNl
dHMoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDNjNDZlNmIwZDdj
ZTM1YzA2ZTk2MzhmYWJhN2M5MjhlMTc1YzUxMGUuLmU5ZTkyYzc4MDIzM2Q0OTBlMGRkOTM3ZThl
YTUzMDdiNTViYTQzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0xNDIsNiArMTQyLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lk
IHJlbW92ZURhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRp
YWxzKCkgb3ZlcnJpZGU7CkBAIC0xNjIsNyArMTY0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZVdlYlNvY2tldFRhc2soU2Vzc2lvblNldCYsIFdlYlNvY2tldFRhc2smKSBmaW5hbDsKICNl
bmRpZgogCi0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFUYXNrV2l0aFJlcXVl
c3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJZGVudGlmaWVyKT4mJikgZmluYWw7CisgICAg
dm9pZCBjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlBh
Z2VOZXR3b3JrUGFyYW1ldGVycyYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2VOZXR3
b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBmaW5hbDsKICAgICBzaXplX3Qg
Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoKSBjb25zdCBmaW5hbDsKQEAgLTE4OCw2ICsxOTEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICAg
ICBib29sIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07
CisgICAgSGFzaE1hcDxEYXRhVGFza0lkZW50aWZpZXIsIFJldGFpblB0cjxOU1VSTFNlc3Npb25E
YXRhVGFzaz4+IG1fZGF0YVRhc2tzRm9yQVBJOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmM1NDdhYjQ4NjE3ZWI5YmRhYmUyYjFkYjRlZTlhNzli
NWJjNWZkYy4uMjQxZmFlNmJlMzIwODk4ZjJjYzY4OTMxNmE3Y2I2ODM0ODA2ZmNjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3Mu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0
ICJQcml2YXRlUmVsYXllZC5oIgorI2ltcG9ydCAiV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgi
CiAjaW1wb3J0ICJXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYlNvY2tl
dFRhc2suaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+CkBAIC0xNzYwLDE0
ICsxNzYxLDMwIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkV2ViUGFnZU5ldHdvcmtQ
YXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnCiAgICAgbV9hdHRyaWJ1dGVkQnVu
ZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcnMuYWRkKHBhZ2VJRCwgcGFyYW1ldGVycy5h
dHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgYXV0byBzZXNzaW9uID0gc2Vzc2lvbldyYXBwZXJGb3JUYXNrKHBhZ2VJRCwgcmVxdWVzdCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgc3RkOjpudWxsb3B0KS5zZXNz
aW9uOworICAgIGF1dG8gaWRlbnRpZmllciA9IERhdGFUYXNrSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7Ci0gICAgYXV0byBjb21wbGV0aW9u
QmxvY2sgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChOU0RhdGEgKmRhdGEsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0
YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGggfSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgeyBlcnJvciB9KTsKLSAgICB9KTsKLSAgICBbW3Nlc3Npb24gZGF0
YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkJs
b2NrLmdldCgpXSByZXN1bWVdOworICAgIGF1dG8gc2Vzc2lvbiA9IHNlc3Npb25XcmFwcGVyRm9y
VGFzayhwYWdlSUQsIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2UsIHN0ZDo6bnVsbG9wdCkuc2Vzc2lvbjsKKyAgICBhdXRvIHRhc2sgPSBbc2Vzc2lvbiBkYXRh
VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVu
dGlmaWVyIHNlc3Npb246KnRoaXNdKTsKKyNpZiBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVH
QVRFKQorICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyNlbmRpZgorICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9kYXRhVGFza3NGb3JBUEkuYWRkKGlkZW50aWZpZXIsIHRhc2spOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBbdGFzayByZXN1
bWVdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCit2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIFttX2RhdGFUYXNrc0ZvckFQSS5nZXQoaWRlbnRpZmllcikgY2FuY2VsXTsK
K30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVEYXRhVGFzayhEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGFUYXNrc0Zv
ckFQSS5yZW1vdmUoaWRlbnRpZmllcikpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tV
UkxTZXNzaW9uVGFza0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNGE1OGM2ODUyYWNl
OGEzZGVkODIxYzgyNTBlMGY5NDkwNjMwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiRGF0YVRh
c2tJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgTmV0d29ya1Nlc3Np
b25Db2NvYTsKK30KKworQHByb3RvY29sIE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZTsKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBXS1VSTFNlc3Npb25UYXNrRGVsZWdh
dGUgOiBOU09iamVjdDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJZGVudGlmaWVyOihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllcilpZGVudGlmaWVy
IHNlc3Npb246KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYSYpc2Vzc2lvbjsKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU4NmYyZjEyYWRjM2Y5MmNhYWM4MGZkNjhmNjliMmRiZGVkNzhkZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRh
c2tEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgiCisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgorI2ltcG9ydCAiQ29u
bmVjdGlvbi5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgor
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW1wbGVtZW50YXRpb24gV0tVUkxTZXNzaW9u
VGFza0RlbGVnYXRlIHsKKyAgICBXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBfaWRlbnRpZmll
cjsKKyAgICBXZWFrUHRyPFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYT4gX3Nlc3Npb247Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYktpdDo6RGF0YVRhc2tJ
ZGVudGlmaWVyKWlkZW50aWZpZXIgc2Vzc2lvbjooV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
JilzZXNzaW9uCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9zZXNzaW9uID0g
V2Vha1B0ciB7IHNlc3Npb24gfTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoSVBDOjpDb25u
ZWN0aW9uKiljb25uZWN0aW9uCit7CisgICAgaWYgKCFfc2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICByZXR1cm4gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlIGNyZWRlbnRpYWwpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAg
IGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7CisgICAgY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKF9pZGVudGlmaWVyLCBjaGFsbGVuZ2UpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZy
b21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVu
dGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1VSTFJlcXVlc3QgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0
byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgY29ubmVjdGlvbi0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEYXRhVGFz
a1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKF9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVz
dCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHJlcXVlc3QgPSBSZXRhaW5QdHIgeyByZXF1ZXN0IH1dIChib29sIGFsbG93ZWQpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dlZCA/IHJlcXVlc3QuZ2V0KCkgOiBuaWwpOworICAg
IH0pOworfQorCistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0
YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvblJlc3BvbnNlQ2FuY2VsKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KF9pZGVudGlmaWVyLCByZXNwb25zZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGFsbG93ZWQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWxsb3dlZCA/IE5TVVJMU2Vzc2lvblJlc3BvbnNlQWxsb3cgOiBOU1VSTFNlc3Np
b25SZXNwb25zZUNhbmNlbCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
VGFzayBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIGF1dG8qIGNvbm5lY3Rp
b24gPSBbc2VsZiBjb25uZWN0aW9uXTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpEYXRhVGFza0RpZFJlY2VpdmVEYXRhKF9pZGVudGlmaWVyLCB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9KSwgMCk7Cit9CisKKy0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjoobnVsbGFibGUgTlNFcnJvciAqKWVy
cm9yCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3Io
X2lkZW50aWZpZXIsIGVycm9yKSwgMCk7CisgICAgaWYgKF9zZXNzaW9uKQorICAgICAgICBfc2Vz
c2lvbi0+cmVtb3ZlRGF0YVRhc2soX2lkZW50aWZpZXIpOworfQorCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggNTNjM2Q5NjBkM2JhN2NiZDhkYWY4Y2IwNWE2YjI1MjVkNTViZmRjNC4uNDE1ZjAzZTQ0MzUx
ZWZjMTAwMDZlZjVjYzNlOGJlNjhiNzZiZWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CkBAIC0zMTksNiArMzE5LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6Q29u
dGVudFdvcmxkSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCcsCiAgICAgICAgICdX
ZWJLaXQ6OkRvd25sb2FkSUQnLAogICAgICAgICAnV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA1M2FmMTBhODZlMTI5
YTE5ZWQxMDUxM2ExNjBkOWRhMDk3ZmU1YzViLi43ZDRlZTZiMjBiZTQ4NjkyZWViZDNiYzk4YjQ5
ZTk2ZGQ2NjFmNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMTYs
NiArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBDb250ZXh0TWVudUxpc3RlbmVyLAogICAgICAg
ICBDdXN0b21IZWFkZXJGaWVsZHMsCiAgICAgICAgIEludGVybmFsRGVidWdGZWF0dXJlLAorICAg
ICAgICBEYXRhVGFzaywKICAgICAgICAgRGVidWdnYWJsZUluZm8sCiAgICAgICAgIERvd25sb2Fk
LAogICAgICAgICBFeHBlcmltZW50YWxGZWF0dXJlLApAQCAtMzY0LDYgKzM2NSw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+IHsKICAgICAgICAgQVBJ
OjpPYmplY3Q6OlR5cGU6OkNvbnRleHRNZW51TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0
OjpUeXBlOjpDdXN0b21IZWFkZXJGaWVsZHMsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJ
bnRlcm5hbERlYnVnRmVhdHVyZSwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkRhdGFUYXNr
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RGVidWdnYWJsZUluZm8sCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZCwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkV4
cGVyaW1lbnRhbEZlYXR1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oCmluZGV4IGY0OTI1OGE0YzcxYmIwYzdkZTk5
MGI0MmJmNzJjNGYzNmI5Y2MxZWYuLjc0OTRkNDRhOGI1ZWJmMjNkYWExMmI3NDhmZDBkZDVmZDBm
YjdmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2Nv
Y29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb25Db2NvYS5oCkBAIC0zMSw1ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24oTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
KTsKK05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBmcm9tQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EubW0KaW5kZXggNDQ1NDkxYWVh
ZTExNjFmMjQzYzFiYTc2OTFjMDJlYmQyZTE0YjdhNi4uZjcyOWE1NjQzNTkwY2E1MDk2MWJkMTIy
M2ZjNWIwYzBiMzkwNjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbQpAQCAtNDMsNCArNDMsMTkgQEAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB0b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24oTlNVUkxTZXMKICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07CiB9CiAKK05TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBmcm9tQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uKQor
eworICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgIHJl
dHVybiBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzsKKyAg
ICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbDoKKyAgICAg
ICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKKyAgICBjYXNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJl
amVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZTsKKyAgICB9CisgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0
aW9uXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KaW5kZXggMTBiODA5MmExYjIyOTYyYjI5MDQwNjY1Yjc2ZWQzN2I1NjUy
MTI3Zi4uYmYyZWQyYTA3OWM4OTUyMDIzOWRjNWJkY2ExZDU1YTI4N2MzNWM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzQsNiArNzQsNyBAQAogI2ltcG9y
dCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1
bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0lu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tEYXRhVGFza0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tF
eHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgpAQCAtMjE5LDYg
KzIyMCwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBl
KQogICAgICAgICB3cmFwcGVyID0gW1dLTlNEYXRhIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIFR5cGU6OkRhdGFUYXNrOgorICAgICAgICB3cmFwcGVyID0gW19XS0RhdGFUYXNr
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OkludGVybmFsRGVidWdG
ZWF0dXJlOgogICAgICAgICB3cmFwcGVyID0gW19XS0ludGVybmFsRGVidWdGZWF0dXJlIGFsbG9j
XTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRh
VGFza0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFUYXNrSWRlbnRpZmll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU1MWJmNWIyYzM1NmZmMjc2OWVkMWRkMmYzNzViY2YyYzFkZmE2ZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhVGFza0lkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
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
bSBEYXRhVGFza0lkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIERhdGFUYXNrSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8RGF0YVRhc2tJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IGY3ODEzMzZlNWVjODIzMjBmYTA1NWZmYTczZjkxMDFkYzg4ZDY0ODEuLjA5MGJmMTJi
NzI4NzQ4ZmM0YTI3YzA1YjAwNjViMzZjZmUzZGUzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNDczLDYg
KzQ3Myw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZv
LmNwcAorVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRGVi
dWdnYWJsZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUuY3Bw
CiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAzOWZlYTkxY2U1NjE3NTgxNjBhZDkyMTg5ODk0NTNlNTgzZWQ2NDYxLi4yZjgyMDQ4ZmViMzJm
ZmUyYmU3YTZlYTU2YjNhYzA5Nzg5NDk1NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
OCw2ICsyOCw3IEBAIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtBY3Rpdml0eVRyYWNrZXJD
b2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJM
U2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbQogCiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKIApAQCAtMjc5LDYgKzI4MCw3IEBAIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRGF0YVRhc2subW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEYXRhVGFzay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA5M2EwMTAwZmY1ZTEyZmJiMjU4YWYzNWMw
NzYyZjFhNmY4ZDM4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEYXRhVGFzay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJRGF0YVRhc2suaCIK
KworI2luY2x1ZGUgIkFQSURhdGFUYXNrQ2xpZW50LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK0RhdGFUYXNrOjp+RGF0YVRh
c2soKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRGF0YVRhc2s6OnNldENsaWVudChSZWY8RGF0YVRhc2tD
bGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQor
Cit2b2lkIERhdGFUYXNrOjpjYW5jZWwoKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQor
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
Q2FuY2VsRGF0YVRhc2sobV9pZGVudGlmaWVyLCBtX3Nlc3Npb25JRCksIDApOworfQorCitEYXRh
VGFzazo6RGF0YVRhc2soV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vh
a1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJiBwYWdlKQorICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCisgICAgLCBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKKyAgICAsIG1fbmV0d29ya1By
b2Nlc3MobV9wYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKSkKKyAgICAs
IG1fc2Vzc2lvbklEKG1fcGFnZS0+c2Vzc2lvbklEKCkpCisgICAgLCBtX2NsaWVudChEYXRhVGFz
a0NsaWVudDo6Y3JlYXRlKCkpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y5OTQ4ZTg1YjFmZGIx
Y2FjZGQxNzJhNjIxMjBjNjA2NzdiZmNjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRh
dGFUYXNrSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIE5ldHdvcmtQcm9j
ZXNzUHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBEYXRhVGFza0NsaWVudDsKKworY2xhc3MgRGF0YVRhc2sgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhVGFzaz4geworcHVibGljOgorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxEYXRhVGFzaz4gY3JlYXRlKEFyZ3Mm
Ji4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRhc2so
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgfQorICAgIH5EYXRhVGFzaygpOwor
CisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkg
eyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CisgICAgY29uc3QgRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CisgICAgdm9pZCBzZXRDbGllbnQo
UmVmPERhdGFUYXNrQ2xpZW50PiYmKTsKKworcHJpdmF0ZToKKyAgICBEYXRhVGFzayhXZWJLaXQ6
OkRhdGFUYXNrSWRlbnRpZmllciwgV2Vha1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJik7CisK
KyAgICBXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9wYWdlOworICAgIFdlYWtQdHI8V2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOworICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOworICAgIFJlZjxEYXRhVGFza0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEYXRhVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFU
YXNrQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJjOWIwNDY0ZWJjOTM4ZDQ4NWU0ODIzOWRlZTllZmUx
ZjE5MzYwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEYXRhVGFza0NsaWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENyZWRl
bnRpYWw7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGE7
CisKK2NsYXNzIERhdGFUYXNrQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRhc2tDbGll
bnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERhdGFUYXNrQ2xpZW50PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFU
YXNrQ2xpZW50KTsgfQorICAgIHZpcnR1YWwgfkRhdGFUYXNrQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShEYXRhVGFzayYsIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5k
Q29udGludWUsIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oRGF0YVRhc2smLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEYXRhVGFzayYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShEYXRhVGFzayYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIGNvbnN0
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihEYXRhVGFzayYsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJikgY29uc3QgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JF
eHRlbnNpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb25DbGllbnQuaAppbmRleCAyZmVlZjYwODJhMDY0NTc2ZTc4NDNhZDYyNjQ2NDE3
MzAxZGJiNGQ3Li5lZWNmYjc4MWZjMjIzNmUwY2YzYzAxNjg3OTIwNGVjMzIzMjJjZTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4
dGVuc2lvbkNsaWVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgQVBJIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IDU0NTlkMmUzYmY4NTc3ODgxNWE0MWQ0MjRjYTRlMjE0ZjM3YzUzMDIuLjgwYTI5YmNhMjQ3ODYx
NWVkYzI0YjMzZjUwMDMwNzU2NTg1OTU0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJBUElEYXRh
VGFzay5oIgogI2ltcG9ydCAiQVBJRm9ybUNsaWVudC5oIgogI2ltcG9ydCAiQVBJRnJhbWVUcmVl
Tm9kZS5oIgogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTk5LDYgKzEwMCw3
IEBACiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tBcHBIaWdobGlnaHREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXBwSGlnaGxpZ2h0SW50
ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Rp
YWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpAQCAtMjIyNCwxMiArMjIyNiwxMCBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyhOU0Fy
cmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdAogI2VuZGlmCiB9CiAKLS0gKHZvaWQpX3JlcXVlc3RS
ZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0RhdGEgKiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CistICh2b2lkKV9kYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0RhdGFUYXNrICopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvci5pc051
bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOworICAgIF9wYWdl
LT5kYXRhVGFza1dpdGhSZXF1ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8QVBJOjpEYXRhVGFzaz4mJiB0YXNrKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIodGFzaykpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAppbmRleCBmOGJjMzAzNTExYzVkYjY4MzdjMjM1MjEyNjdhMTkzNjc1MDgxMTNmLi40
MzVlZjE2ZDY4NDEzZWZhMzA0OTY1MWVmYzJmZDc1Y2IzMzQyMDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEy
Miw2ICsxMjIsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2Up
IHsKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBj
bGFzcyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OworQGNsYXNzIF9XS0RhdGFUYXNrOwogQGNsYXNz
IF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0ZyYW1lVHJlZU5vZGU7CiBAY2xhc3MgX1dLSGl0
VGVzdFJlc3VsdDsKQEAgLTQyNyw3ICs0MjgsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAo
dm9pZClfc3RhcnRJbWFnZUFuYWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLSAodm9pZClf
cmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TRGF0YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHZvaWQpX2RhdGFUYXNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoX1dLRGF0YVRhc2sgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEaXNwbGF5Q2FwdHVyZVN0YXRlKSB7
CiAgICAgV0tEaXNwbGF5Q2FwdHVyZVN0YXRlTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzMjMzMzBkMTZlNGNk
YTU5MThlZjU5YTFjNzRlOWIxNzMyMzMxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5oCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0Bwcm90b2NvbCBf
V0tEYXRhVGFza0RlbGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZh
Y2UgX1dLRGF0YVRhc2sgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFW
QUlMQUJMRTsKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgd2VhaykgV0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZTsK
KworLy8gQ2FsbGluZyB0aGlzIHdpbGwgb2Z0ZW4gZGVsZWdhdGUncyBkYXRhVGFzazpkaWRDb21w
bGV0ZVdpdGhFcnJvcjogd2l0aCB7IE5TVVJMRXJyb3JEb21haW4sIE5TVVJMRXJyb3JDYW5jZWxs
ZWQgfQorLy8gYnV0IGFub3RoZXIgZXJyb3IgbWF5IGhhcHBlbiBiZXR3ZWVuIHRob3NlIHR3byBw
b2ludHMgaW4gdGltZSwgYW5kIGlmIHNvbWV0aGluZyBlbHNlIGhhcHBlbnMKKy8vIHN1Y2ggYXMg
V0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NhdGlvbiB0aGVyZSBtYXkgYmUgbm8gY2FsbGJhY2su
CistICh2b2lkKWNhbmNlbDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMWRhZTIyNjkzOGE3MjhmMTE0MzlkNTBiNTg3MzY4NDIzZDg3MjlmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLm1t
CkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJfV0tEYXRhVGFza0ludGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURhdGFUYXNrLmgiCisj
aW1wb3J0ICJBUElEYXRhVGFza0NsaWVudC5oIgorI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNr
RGVsZWdhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorCitjbGFzcyBXS0RhdGFUYXNrQ2xpZW50IGZpbmFs
IDogcHVibGljIEFQSTo6RGF0YVRhc2tDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V0tEYXRhVGFza0NsaWVudD4gY3JlYXRlKGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXS0RhdGFUYXNrQ2xpZW50KGRlbGVnYXRlKSk7IH0K
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgV0tEYXRhVGFza0NsaWVudChpZCA8X1dLRGF0YVRhc2tE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRhdGFUYXNrOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1Jl
cXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2Vp
dmVSZXNwb25zZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkYXRhVGFz
azpkaWRSZWNlaXZlUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb0RpZFJlY2VpdmVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0Rp
ZENvbXBsZXRlV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRhdGFUYXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOildKSB7IH0KKworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShBUEk6OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRp
bnVlLCB7IH0pOworICAgICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3Io
ZGF0YVRhc2s6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOikpOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRhc2spIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptYWMoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXZWJLaXQ6OnRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNw
b3NpdGlvbiksIFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkpOworICAgICAgICB9KS5n
ZXQoKV07CisgICAgfQorCisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihBUEk6
OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBp
ZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICBh
dXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZGF0YVRhc2s6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgIFtt
X2RlbGVnYXRlIGRhdGFUYXNrOndyYXBwZXIodGFzaykgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIG5ld1JlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVw
ZGF0ZUhUVFBCb2R5KSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSA9PSBf
V0tEYXRhVGFza1JlZGlyZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9KS5nZXQoKV07CisgICAg
fQorCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQVBJOjpEYXRhVGFzayYgdGFzaywgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlUmVzcG9uc2UpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIGF1dG8gY2hl
Y2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6
ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVy
KHRhc2spIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZGVjaXNp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChfV0tEYXRhVGFza1Jl
c3BvbnNlUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+
Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwb2xpY3kgPT0gX1dLRGF0YVRhc2tSZXNwb25zZVBv
bGljeUFsbG93KTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoQVBJOjpEYXRhVGFzayYgdGFzaywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jl
c3BvbmRzVG9EaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgW21f
ZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0YXNrKSBkaWRSZWNlaXZlRGF0YTphZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUo
KV0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKEFQSTo6
RGF0YVRhc2smIHRhc2ssIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkQ29t
cGxldGVXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFttX2RlbGVnYXRl
IGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkQ29tcGxldGVXaXRoRXJyb3I6ZXJyb3IubnNFcnJv
cigpXTsKKyAgICB9CisKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOworCisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24gOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZVJlc3BvbnNl
IDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVEYXRhIDogMTsKKyAgICBib29s
IG1fcmVzcG9uZHNUb0RpZENvbXBsZXRlV2l0aEVycm9yIDogMTsKK307CisKK0BpbXBsZW1lbnRh
dGlvbiBfV0tEYXRhVGFzaworCistICh2b2lkKWNhbmNlbAoreworICAgIF9kYXRhVGFzay0+Y2Fu
Y2VsKCk7Cit9CisKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBhdXRvKiBwYWdlID0g
X2RhdGFUYXNrLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiBwYWdlLT5jb2NvYVZpZXcoKS5nZXQoKTsKK30KKworLSAoaWQgPF9XS0RhdGFU
YXNrRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQo
KTsKK30KKworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0RhdGFUYXNrRGVsZWdhdGU+KWRl
bGVnYXRlCit7CisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgX2RhdGFUYXNrLT5zZXRD
bGllbnQoV0tEYXRhVGFza0NsaWVudDo6Y3JlYXRlKGRlbGVnYXRlKSk7Cit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblJ1
bkxvb3AoX1dLRGF0YVRhc2suY2xhc3MsIHNlbGYpKQorICAgICAgICByZXR1cm47CisgICAgX2Rh
dGFUYXNrLT5+RGF0YVRhc2soKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEg
bWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2RhdGFUYXNrOworfQorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMmM4N2JlYmVkOWI0YzkxMDI5NzVjYzAxM2U0M2FjMzhmOTRlYjBj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0RhdGFUYXNrRGVsZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9u
Lmg+CisKK0BjbGFzcyBfV0tEYXRhVGFzazsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeSkgeworICAgIF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xp
Y3lDYW5jZWwsCisgICAgX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5KSB7CisgICAgX1dL
RGF0YVRhc2tSZXNwb25zZVBvbGljeUNhbmNlbCwKKyAgICBfV0tEYXRhVGFza1Jlc3BvbnNlUG9s
aWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90b2NvbCBfV0tEYXRh
VGFza0RlbGVnYXRlIDxOU09iamVjdD4KKworQG9wdGlvbmFsCisKKy0gKHZvaWQpZGF0YVRhc2s6
KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWRhdGFU
YXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihO
U0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5
KSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFU
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGRlY2lzaW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5k
bGVyOworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZl
RGF0YTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0
YVRhc2sgZGlkQ29tcGxldGVXaXRoRXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKillcnJvcjsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
NzRiMTQxMjZjNWEzNjMxN2Q5M2ZiMWM3MjM0ZWY3MzE3NzZmYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tJbnRlcm5hbC5o
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJBUElEYXRhVGFzay5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrLmgiCisjaW1wb3J0IDx3
dGYvV2Vha09iakNQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpEYXRhVGFzaz4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IF9XS0RhdGFUYXNrOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS0RhdGFUYXNrICgpIDxX
S09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpEYXRhVGFz
az4gX2RhdGFUYXNrOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiA+
IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDU3ZGU4YjFmNjU4NjZmYjFm
Y2Y3YmQxOGJiYjY4ZDIwYzE1YWU5ZmMuLjZmMGIyYzEwZjJmN2RiZTM4YTU4OWFlMDhjMWY3Njg2
ZDIzNTE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAi
QVBJQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmgiCisjaW5jbHVkZSAiQVBJRGF0YVRhc2suaCIKKyNpbmNsdWRlICJBUElEYXRhVGFz
a0NsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCkBAIC0zMzcsMTQgKzMzOSw2NSBAQCBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdAogICAgIHJl
dHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBw
cm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9yaWdpbmF0aW5nUGFnZSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YVRhc2smKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpSZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0YSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3IpKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEYXRhVGFz
a1dpdGhSZXF1ZXN0KHBhZ2UuaWRlbnRpZmllcigpLCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgd2Vha1BhZ2UgPSBXZWFrUHRyIHsgcGFnZSB9LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoRGF0YVRhc2tJZGVudGlm
aWVyIGlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBl
KG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgICAgIGF1dG8gZGF0
YVRhc2sgPSBBUEk6OkRhdGFUYXNrOjpjcmVhdGUoaWRlbnRpZmllciwgV1RGTW92ZSh3ZWFrUGFn
ZSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhVGFzayk7CisgICAgICAgIG1fZGF0
YVRhc2tzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFUYXNrKSk7CiAgICAgfSk7CiB9CiAK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZShEYXRh
VGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiBjaGFsbGVuZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxp
ZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLmdldChp
ZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZUNoYWxsZW5nZSgq
dGFzaywgV1RGTW92ZShjaGFsbGVuZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90
ZWN0aW9uU3BhY2VBbmRDb250aW51ZSwgeyB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGF0YVRhc2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hFQ0soZGVj
bHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKKyAgICBpZiAoYXV0
byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0YXNrLT5jbGll
bnQoKS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigqdGFzaywgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKERhdGFUYXNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgTUVTU0FHRV9D
SEVDSyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOworICAg
IGlmIChhdXRvIHRhc2sgPSBtX2RhdGFUYXNrcy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHRh
c2stPmNsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqdGFzaywgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9
Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRSZWNlaXZlRGF0YShE
YXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKQoreworICAgIE1FU1NBR0VfQ0hFQ0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlk
S2V5KGlkZW50aWZpZXIpKTsKKyAgICBpZiAoYXV0byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlk
ZW50aWZpZXIpKQorICAgICAgICB0YXNrLT5jbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqdGFzaywg
ZGF0YSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKERhdGFU
YXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3Ip
Cit7CisgICAgTUVTU0FHRV9DSEVDSyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXko
aWRlbnRpZmllcikpOworICAgIGlmIChhdXRvIHRhc2sgPSBtX2RhdGFUYXNrcy50YWtlKGlkZW50
aWZpZXIpKQorICAgICAgICB0YXNrLT5jbGllbnQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvcigqdGFz
aywgV1RGTW92ZShlcnJvcikpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RmV0Y2hXZWJz
aXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzZDM1NDRkY2I5NzYwZDZlMzM3Mjc1ZDYy
YTUzNjFjOWIxOTVjNGUwLi5lM2RmZDUzZWUzM2NlMzZmZTg4ZTExYjYxNDY4NTEzZDg1MTUyYTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiQXBwUHJpdmFjeVJl
cG9ydC5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhVGFza0lkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIK
QEAgLTU4LDYgKzYwLDcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OworY2xhc3MgRGF0YVRhc2s7
CiB9CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtMTI2LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVw
bHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVE
YXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7
Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCBkYXRhVGFza1dp
dGhSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYpOwog
CiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CkBAIC0yODksNiArMjkyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1c2hB
bmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIGRhdGFUYXNr
UmVjZWl2ZWRDaGFsbGVuZ2UoRGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik+JiYpOworICAgIHZvaWQg
ZGF0YVRhc2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihEYXRhVGFza0lkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGF0YVRhc2tEaWRSZWNl
aXZlUmVzcG9uc2UoRGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZGF0YVRhc2tE
aWRSZWNlaXZlRGF0YShEYXRhVGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOworICAgIHZvaWQgZGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihEYXRhVGFza0lkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCkBAIC0zOTgsNiArNDA3LDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYWtIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZXM7
CiAgICAgVW5pcXVlUmVmPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gbV9jb29raWVNYW5hZ2VyOwor
ICAgIEhhc2hNYXA8RGF0YVRhc2tJZGVudGlmaWVyLCBSZWY8QVBJOjpEYXRhVGFzaz4+IG1fZGF0
YVRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggZTNhYmJiNDY4ZjViM2FkMDc3ZWI2NDZhNjkyY2M3YmY5Mjk1NGRmMC4u
NTRlNDYzY2E4OWY1ZWE4MTg4NDZiMmJhMDEwMGZlZDExOGZlY2NmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtODksNCArODksMTIgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUlfVVNFU19TQ0VORSkKICAgICBHZXRXaW5kb3dTY2VuZUlkZW50aWZpZXJGb3JQYXltZW50UHJl
c2VudGF0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJZGVu
dGlmaWVyKSAtPiAoU3RyaW5nIHNjZW5lSUQpIEFzeW5jCiAjZW5kaWYKKworICAgIERhdGFUYXNr
UmVjZWl2ZWRDaGFsbGVuZ2UoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKSAtPiAoZW51bTp1aW50
OF90IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKSBBc3luYworICAgIERhdGFUYXNrV2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCisgICAgRGF0YVRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkgLT4gKGJvb2wgYWxsb3dlZCkgQXN5
bmMKKyAgICBEYXRhVGFza0RpZFJlY2VpdmVEYXRhKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIERhdGFUYXNrRGlkQ29t
cGxldGVXaXRoRXJyb3IoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGU0OGRiYzVkNmE0ZDc2YzgyMTVkMjM2YjExNzQ2MTA0
Y2ZiMGFhNS4uMzI1ZWExODY0NThmNWU2NGU5ZjNhMGNlZTJhM2E0M2I3Zjg0NDI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02NDYyLDkgKzY0NjIsOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJh
Y2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGFUYXNrJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgd2Vic2l0ZURhdGFTdG9y
ZSgpLm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJlc291cmNlKGlkZW50aWZpZXIoKSwgc2Vzc2lv
bklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5kYXRhVGFza1dpdGhSZXF1ZXN0
KCp0aGlzLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggODZkYjc4MDYxZDQyN2JiMTQyYmU5MzJhMzhlYjQwZWFkM2ZkNDdlOS4uMzM3ZGJiNTRm
YTU4NTk3ZGIyOGIxYjU2ZWU5MzI2YWE1MDcyY2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dDsKK2NsYXNzIERhdGFUYXNrOwogY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3Mg
RXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwpAQCAtMTM4Niw3ICsxMzg3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKICAgICB2b2lk
IHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAgICAg
dm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNv
dXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQgZGF0YVRhc2tXaXRoUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChB
UEk6OkRhdGFUYXNrJik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
Ym9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29y
ZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTk1Njg1NWFjNTliZjdhNWQxN2IyOTFmYTRlMWYxMmUx
ZWE3ZDViYS4uNGEwNWExMTA4N2FlZmUwODI1Zjc1ZTNhMTZkYzg1MGQzMjEyMTM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI4
LDYgKzEyMjgsOCBAQAogCQk1QzIwRjY3OTI3NkE2REI2MDA2Q0FDMjIgLyogQXJndW1lbnRDb2Rl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEz
RDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKIAkJNUMy
Njk1ODUyMDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjY5NTg0MjAw
NDJGMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyOThEQTAxQzNERjAy
MTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdE
b3dubG9hZC5oICovOyB9OworCQk1QzJDNkZBOTI3QzlFNUUyMDBDQ0RBOUUgLyogX1dLRGF0YVRh
c2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkM2
RkE0MjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDMkM2RkFBMjdDOUU1RUIwMENDREE5RSAv
KiBfV0tEYXRhVGFza0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzJDNkZBMzI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tEZWxl
Z2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTVDMkQ1NzQ4MjU3RkZBNEIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyRDU3NDcyNTdG
RkExMjAwNjc5QTcyIC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyRUJERkEyNTY0MzgwQjAwRDU1
QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NUMzNTlDMEQyMTU0NzM5RjAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4
IC8qIFdLRGVwcmVjYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00OTEwLDYgKzQ5MTIsMTYgQEAKIAkJNUMyQjFBRjMyMjNBQjcyODAwQjkx
Q0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBCOTFDRjcgLyogRG93bmxvYWRQcm94
eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93
bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJD
NkY5RTI3Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUMyQzZGOUYyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSURhdGFUYXNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTAyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNr
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGFUYXNrQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkEyMjdDOTUyOTkwMEND
REE5RSAvKiBfV0tEYXRhVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0RhdGFUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJD
NkZBMzI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEYXRhVGFza0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE0MjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFz
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEYXRhVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBNTI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dL
RGF0YVRhc2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tE
YXRhVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE2
MjdDOTU4RkMwMENDREE5RSAvKiBEYXRhVGFza0lkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YVRhc2tJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDMkM2RkE3MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Npb25UYXNr
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
MkM2RkE4MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkQ1NzQ3MjU3RkZBMTIwMDY3OUE3MiAv
KiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0NvbnRleHREb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0RlcHJl
Y2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEZXByZWNhdGVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjc3LDYgKzcyODksNyBAQAogCQkJCTUx
MDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLywK
IAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5o
ICovLAogCQkJCTk5RjY0MkQyMUZBQkUzNzgwMDk2MjFFOSAvKiBDb29yZGluYXRlU3lzdGVtLmgg
Ki8sCisJCQkJNUMyQzZGQTYyN0M5NThGQzAwQ0NEQTlFIC8qIERhdGFUYXNrSWRlbnRpZmllci5o
ICovLAogCQkJCTk5MDM2QUU4MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEu
Y3BwICovLAogCQkJCTk5MDM2QUU3MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0Rh
dGEuaCAqLywKIAkJCQkwRjE4OUNBQjI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNl
cnZlcklELmggKi8sCkBAIC04ODM3LDYgKzg4NTAsMTAgQEAKIAkJCQk1QzVEMjM4OTIyN0ExODky
MDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8sCiAJCQkJNUM1RDIzODgyMjdB
MTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSAqLywKIAkJCQk1QzVEMjM4
NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCAqLywK
KwkJCQk1QzJDNkZBNDI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCAqLywKKwkJCQk1
QzJDNkZBMjI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2subW0gKi8sCisJCQkJNUMyQzZG
QTMyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCAqLywKKwkJCQk1QzJD
NkZBNTI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tJbnRlcm5hbC5oICovLAogCQkJCTgz
ODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgg
Ki8sCiAJCQkJQTFBNEZFNTcxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi8sCiAJ
CQkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLm1tICovLApAQCAtMTA0
NDIsNiArMTA0NTksOCBAQAogCQkJCTVDMjBDQjlCMUJCMERDRDIwMDg5NUJCMSAvKiBOZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJT
b2NrZXRUYXNrQ29jb2EuaCAqLywKIAkJCQk0MTI4N0Q0QjIyNUMwNUM0MDA5QTNFMjYgLyogV2Vi
U29ja2V0VGFza0NvY29hLm1tICovLAorCQkJCTVDMkM2RkE4MjdDOTZGRjkwMENDREE5RSAvKiBX
S1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCAqLywKKwkJCQk1QzJDNkZBNzI3Qzk2RkY5MDBDQ0RB
OUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBj
b2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTI4Miw2ICsxMTMwMSw5IEBA
CiAJCQkJNUNFMEMzNjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVudElu
Zm8uaCAqLywKIAkJCQk1QzVEMjM4QTIyN0ExRDlCMDAwQjlCREEgLyogQVBJQ3VzdG9tSGVhZGVy
RmllbGRzLmggKi8sCiAJCQkJN0E4MjFGNEYxRTJGN0E1QzAwNjA0NTc3IC8qIEFQSUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5oICovLAorCQkJCTVDMkM2RjlGMjdDOTUyMzUwMENDREE5RSAv
KiBBUElEYXRhVGFzay5jcHAgKi8sCisJCQkJNUMyQzZGOUUyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQ
SURhdGFUYXNrLmggKi8sCisJCQkJNUMyQzZGQTAyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFU
YXNrQ2xpZW50LmggKi8sCiAJCQkJOTkwMzZBRTQyM0E5NTg3NDAwMDBCMDZBIC8qIEFQSURlYnVn
Z2FibGVJbmZvLmNwcCAqLywKIAkJCQk5OTAzNkFFMzIzQTk1ODc0MDAwMEIwNkEgLyogQVBJRGVi
dWdnYWJsZUluZm8uaCAqLywKIAkJCQk4Mzg5MUI2MjFBNjhCMzQyMDAzMEYzODYgLyogQVBJRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKQEAgLTEyODgzLDYgKzEyOTA1LDggQEAKIAkJCQk1
QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNEY4MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzVEMjM4QzIyN0Ey
Q0RBMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1QzJDNkZBOTI3QzlFNUUyMDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCBpbiBIZWFkZXJzICov
LAorCQkJCTVDMkM2RkFBMjdDOUU1RUIwMENDREE5RSAvKiBfV0tEYXRhVGFza0RlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2OTFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25v
c3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNUExOERDRTlG
QTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUE0RkU2MTE4
REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDBjM2Qz
ZDM3NGE5OWE3YmI5Mzg3MjM1ODBiMjY5MDY3NjExZTZhOS4uZjVhODY4ZTI2ZGY5YTU3MjNiZWUw
ZjhkZjQzYWQ3ODM1YTczZjg4OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTI1ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBfV0tEYXRh
VGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tOgorICAgICAg
ICAoLVtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REYXRhVGFz
a0RlbGVnYXRlIGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1Rlc3REYXRhVGFza0RlbGVnYXRlIGRhdGFUYXNrOmRpZFJlY2VpdmVEYXRh
Ol0pOgorICAgICAgICAoLVtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRDb21wbGV0
ZVdpdGhFcnJvcjpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAyLTI0ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbUHl0aG9uM10gUmVtb3ZlIHNo
ZWJhbmdzIGZyb20gd2Via2l0cHkgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCmluZGV4IGIxMWM2OWUyMzU0
Y2FmNDRjZGRjMDBlMWUzMTkyY2U0Zjg2MzI4YmQuLjAyYzYzMjliMzgxZTYzZjhhMWIyZTE0ZWQ5
ZDk1OTZlOGQyMWFmZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQpAQCAtMzMsNiArMzMsOCBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0RhdGFUYXNrLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
RGF0YVRhc2tEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTM1Miw3ICszNTQsNTAgQEAgVEVTVChOZXR3b3JrUHJvY2VzcywgQnJv
YWRjYXN0Q2hhbm5lbENyYXNoUmVjb3ZlcnkpCiAgICAgRVhQRUNUX0VRKHdlYlBJRDIsIFt3ZWJW
aWV3MiBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KIAotVEVTVChOZXR3b3JrUHJvY2Vzcywg
TG9hZFJlc291cmNlKQorI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1RBU0tfREVMRUdBVEUpCisKK0Bp
bnRlcmZhY2UgVGVzdERhdGFUYXNrRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEYXRhVGFza0RlbGVn
YXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCheZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEYXRhVGFzayAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICosIHZvaWQoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
aWRSZWNlaXZlUmVzcG9uc2UpKF9XS0RhdGFUYXNrICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAo
XikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRSZWNlaXZlRGF0YSkoX1dLRGF0YVRhc2sgKiwgTlNEYXRhICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDb21wbGV0ZVdpdGhFcnJvcikoX1dL
RGF0YVRhc2sgKiwgTlNFcnJvciAqKTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdERh
dGFUYXNrRGVsZWdhdGUKKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFz
ayBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZGF0YVRhc2ssIGNo
YWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwg
bmlsKTsKK30KKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgorewor
ICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNl
KGRhdGFUYXNrLCByZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAg
IGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworfQorCist
ICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihO
U0RhdGEgKilkYXRhCit7CisgICAgaWYgKF9kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgX2RpZFJl
Y2VpdmVEYXRhKGRhdGFUYXNrLCBkYXRhKTsKK30KKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0
YVRhc2sgKilkYXRhVGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7
CisgICAgaWYgKF9kaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgX2RpZENvbXBsZXRlV2l0
aEVycm9yKGRhdGFUYXNrLCBlcnJvcik7Cit9CisKK0BlbmQKKworVEVTVChfV0tEYXRhVGFzaywg
QmFzaWMpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgYXV0byBo
dG1sID0gIjxzY3JpcHQ+ZG9jdW1lbnQuY29va2llPSd0ZXN0a2V5PXZhbHVlJzwvc2NyaXB0PiI7
CkBAIC0zNzcsMjQgKzQyMiw5OSBAQCBURVNUKE5ldHdvcmtQcm9jZXNzLCBMb2FkUmVzb3VyY2Up
CiAgICAgW3Bvc3RSZXF1ZXN0IHNldEhUVFBNZXRob2Q6QCJQT1NUIl07CiAgICAgYXV0byByZXF1
ZXN0Qm9keSA9ICJyZXF1ZXN0IGJvZHkiOwogICAgIFtwb3N0UmVxdWVzdCBzZXRIVFRQQm9keTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6cmVxdWVzdEJvZHkgbGVuZ3RoOnN0cmxlbihyZXF1ZXN0Qm9k
eSldXTsKLSAgICBbd2ViVmlldyBfcmVxdWVzdFJlc291cmNlOnBvc3RSZXF1ZXN0LmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwg
TlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwotICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBwb3N0UmVxdWVzdC5n
ZXQoKS5VUkwuYWJzb2x1dGVTdHJpbmcpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgs
IHN0cmxlbihzZWNvbmRSZXNwb25zZSkpOwotICAgICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGRh
dGEuYnl0ZXMsIHNlY29uZFJlc3BvbnNlLCBkYXRhLmxlbmd0aCkpOwotICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpwb3N0UmVxdWVzdC5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIHN0YXRp
YyBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7Cisg
ICAgICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgX19ibG9jayBi
b29sIHJlY2VpdmVkUmVzcG9uc2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlID0gXihfV0tEYXRhVGFzayAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcs
IHBvc3RSZXF1ZXN0LmdldCgpLlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICByZWNl
aXZlZFJlc3BvbnNlID0gdHJ1ZTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRh
VGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBfX2Jsb2NrIGJv
b2wgcmVjZWl2ZWREYXRhID0gZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2Vp
dmVEYXRhID0gXihfV0tEYXRhVGFzayAqLCBOU0RhdGEgKmRhdGEpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHJlY2VpdmVkUmVzcG9uc2UpOworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
bGVuZ3RoLCBzdHJsZW4oc2Vjb25kUmVzcG9uc2UpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoZGF0YS5ieXRlcywgc2Vjb25kUmVzcG9uc2UsIGRhdGEubGVuZ3RoKSk7CisgICAg
ICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0
ZS5nZXQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IF4oX1dLRGF0YVRhc2sgKiwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkRGF0YSk7CisgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogICAgIEVYUEVDVF9UUlVFKHN0
cm5zdHIoc2Vjb25kUmVxdWVzdC5kYXRhKCksICJDb29raWU6IHRlc3RrZXk9dmFsdWVcclxuIiwg
c2Vjb25kUmVxdWVzdC5zaXplKCkpKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoSFRUUFNlcnZlcjo6
cGFyc2VCb2R5KHNlY29uZFJlcXVlc3QpLCByZXF1ZXN0Qm9keSk7CiAKICAgICBkb25lID0gZmFs
c2U7Ci0gICAgW3dlYlZpZXcgX3JlcXVlc3RSZXNvdXJjZTpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYmxvYjpibGFuayJdXSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOwotICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvclVuc3VwcG9y
dGVkVVJMKTsKLSAgICAgICAgRVhQRUNUX05VTEwoZGF0YSk7Ci0gICAgICAgIEVYUEVDVF9OVUxM
KHJlc3BvbnNlKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAgW3dlYlZpZXcgX2RhdGFUYXNr
V2l0aFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImJsb2I6YmxhbmsiXV0gY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFz
aykgeworICAgICAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFz
a0RlbGVnYXRlIG5ld10pOworICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CisgICAgICAg
IGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZSA9IF4oX1dLRGF0YVRhc2sgKiwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKF9XS0RhdGFUYXNr
UmVzcG9uc2VQb2xpY3kpKSB7CisgICAgICAgICAgICByZWNlaXZlZFJlc3BvbnNlID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVkRGF0YSA9IGZhbHNlOwor
ICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlRGF0YSA9IF4oX1dLRGF0YVRhc2sgKiwg
TlNEYXRhICpkYXRhKSB7CisgICAgICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAg
ICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IF4oX1dL
RGF0YVRhc2sgKiwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShy
ZWNlaXZlZFJlc3BvbnNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShyZWNlaXZlZERhdGEp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvclVuc3Vw
cG9ydGVkVVJMKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OwogICAgIH1d
OwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK1RFU1QoX1dLRGF0YVRhc2ssIENoYWxsZW5n
ZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBIVFRQU2VydmVy
IHNlcnZlcihIVFRQU2VydmVyOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSywgSFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0V0tX
ZWJWaWV3IG5ld10pOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oX1dLRGF0YVRhc2sgKnRhc2spIHsKKyAgICAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRTZXJ2
ZXJUcnVzdENoYWxsZW5nZSA9IGZhbHNlOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRC
YXNpY0F1dGhDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihfV0tEYXRhVGFzayAqLCBOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikp
IHsKKyAgICAgICAgICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0XSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShyZWNlaXZlZEJhc2ljQXV0
aENoYWxsZW5nZSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkU2VydmVy
VHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAgICAgICAgIHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFs
bGVuZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRp
YWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5T
VVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWMpOworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAgICAgcmVjZWl2ZWRCYXNp
Y0F1dGhDaGFsbGVuZ2UgPSB0cnVlOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIG5pbCk7CisgICAgICAgIH07Cisg
ICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdh
dGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICosIE5TRGF0YSAqZGF0YSkg
eworICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRSZXNwb25zZSA9ICI8c2NyaXB0PmFs
ZXJ0KCdzdWNjZXNzIScpPC9zY3JpcHQ+IjsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmxl
bmd0aCwgc3RybGVuKGV4cGVjdGVkUmVzcG9uc2UpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoZGF0YS5ieXRlcywgZXhwZWN0ZWRSZXNwb25zZSwgZGF0YS5sZW5ndGgpKTsKKyAg
ICAgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGRlbGVn
YXRlLmdldCgpLmRpZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWREYXRhKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg
IH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworLy8gRklYTUU6IEFkZCB0
ZXN0cyBmb3IgX1dLRGF0YVRhc2sgcmVkaXJlY3Rpb24gYW5kIGNhbmNlbGxhdGlvbiwgYXMgd2Vs
bCBhcyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZXMuCisKKyNl
bmRpZiAvLyBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVHQVRFKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453528</attachid>
            <date>2022-03-01 12:58:32 -0800</date>
            <delta_ts>2022-03-01 22:42:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237234-20220301125831.patch</filename>
            <type>text/plain</type>
            <size>99126</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRjMzdlN2U5NzUzNzJmZDUyMjA4NGRk
NzVkNGUwZmQzMDQwY2JmMjEuLmQwNDY2ZjZiYzU5ODcyNWY3ZDc4MDI4ZTE0YWU0ZTQ0Y2Y3MWEw
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIF9XS0RhdGFUYXNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
SGF2ZS5oOgorCiAyMDIyLTAzLTAxICBHZXphIExvcmUgIDxnbG9yZUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtKU0NdIFBvcnQgRVhUUkFfQ1RJX1RIVU5LUyB0byBhbGwgcGxhdGZvcm1zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDllNzhlNDYyNWM1NTllNjMxZDQ0NjQ3M2QzMDg3Nzg5Y2FlZjAzMGQuLmZkMzVlZmQ1
ZjNjNjVmMDI1NTYyYzcxYTMyYmM0MWEyMjI5ZWJlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTgg
QEAKKzIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBBZGQgU1BJIF9XS0RhdGFUYXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uLgorCisgICAgICAgIFdoZW4gSSBhZGRlZCBXS1dlYlZpZXcuX3JlcXVlc3RSZXNv
dXJjZTpjb21wbGV0aW9uSGFuZGxlcjogSSBvdmVybG9va2VkIGEgZmV3IHRoaW5ncy4KKyAgICAg
ICAgRmlyc3QsIGl0IGlzIHVuYWJsZSB0byBzdXBwb3J0IEhUVFBTIGJlY2F1c2UgSSBkaWRuJ3Qg
aG9vayB1cCBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgaGFuZGxpbmcgdG8gaXQuCisgICAgICAg
IFNlY29uZCwgaXQgaXMgdW5hYmxlIHRvIGhhdmUgYSBtYXhpbXVtIGFjY2VwdGVkIHJlc3BvbnNl
IGxlbmd0aCwgd2hpY2ggaXMgYSByZXF1aXJlbWVudCBmb3IgYW4gYWRvcHRlci4KKyAgICAgICAg
VG8gbWFrZSB0aGVzZSBwb3NzaWJsZSwgSSBtYWRlIF9XS0RhdGFUYXNrIHdoaWNoIGlzIHJlbGF0
ZWQgdG8gV0tEb3dubG9hZCBhbmQgTlNVUkxTZXNzaW9uRGF0YVRhc2suCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmNhbmNlbERhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlcXVlc3RSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRhc2tXaXRoUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjYW5jZWxEYXRhVGFzayk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza1dpdGhSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2FuY2VsRGF0YVRhc2spOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVEYXRhVGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlcXVlc3RSZXNvdXJjZSk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0Rl
bGVnYXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbTogQWRk
ZWQuCisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBpbml0V2l0aElkZW50aWZp
ZXI6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlIGNvbm5l
Y3Rpb25dKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlIFVSTFNlc3Npb246
dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVS
ZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9uVGFz
a0RlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAg
ICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVX
aXRoRXJyb3I6XSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9j
b2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaDoKKyAgICAgICAg
KiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpmcm9tQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbik6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToK
KyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9EYXRh
VGFza0lkZW50aWZpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAg
ICAgICAoQVBJOjpEYXRhVGFzazo6c2V0Q2xpZW50KToKKyAgICAgICAgKEFQSTo6RGF0YVRhc2s6
OmNhbmNlbCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrOjpEYXRhVGFzayk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmguCisgICAgICAgIChBUEk6
OkRhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6cGFnZSk6CisgICAg
ICAgIChBUEk6OkRhdGFUYXNrOjpjbGllbnQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRGF0YVRhc2tDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAgICAgICAoQVBJOjpEYXRh
VGFza0NsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6On5EYXRh
VGFza0NsaWVudCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQ2hh
bGxlbmdlIGNvbnN0KToKKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRD
b21wbGV0ZVdpdGhFcnJvciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlcXVlc3RSZXNvdXJj
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0RhdGFUYXNrLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0RhdGFUYXNrLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLRGF0YVRhc2sgY2FuY2Vs
XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIHdlYlZpZXddKToKKyAgICAgICAgKC1bX1dLRGF0
YVRhc2sgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bX1dLRGF0YVRhc2sgc2V0RGVsZWdhdGU6XSk6
CisgICAgICAgICgtW19XS0RhdGFUYXNrIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLRGF0YVRh
c2sgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRh
c2tEZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rh
dGFUYXNrSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2l0aFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1JlY2VpdmVk
Q2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRh
c2tXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3Vy
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFUYXNrV2l0aFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAzLTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIGZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSkg
ZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4
IDhjNjA4YTIzYTQ0ZTJjNTY2MTJiYThlMzMzZjhjNDQ1NGZkNDU2MmYuLjlmZTc2Yzg2NTFkMDdm
MmYzOWY3MDZjZGQ5MDg4MmZjZDE1NmVmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC05OTks
NiArOTk5LDcgQEAKICAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxNTAwMDApCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05TVVJMU0VT
U0lPTl9BVFRSSUJVVEVEX0JVTkRMRV9JREVOVElGSUVSIDEKICNkZWZpbmUgSEFWRV9DRk5FVFdP
UktfTlNVUkxTRVNTSU9OX0hTVFNfV0lUSF9VTlRSVVNURURfUk9PVCAxCisjZGVmaW5lIEhBVkVf
TlNVUkxTRVNTSU9OX1RBU0tfREVMRUdBVEUgMQogI2RlZmluZSBIQVZFX0FVRElPX09CSkVDVF9Q
Uk9QRVJUWV9FTEVNRU5UX01BSU4gMQogI2RlZmluZSBIQVZFX0lNQUdFX1JFU1RSSUNURURfREVD
T0RJTkcgMQogI2RlZmluZSBIQVZFX1hQQ19DT05ORUNUSU9OX0NPUFlfSU5WQUxJREFUSU9OX1JF
QVNPTiAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDIwZmE2NGM5M2ZkZDlmMTdhZmE3OGEzZmQ3NjVkNDEyZmU2MmNlYWQuLjk5MGVj
N2ZiODJmNjM1NGJhMDFlNGJlN2JiZGNjMDY0OGIzMGZlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xOTk5LDEzICsxOTk5LDE2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3
b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzCiAgICAgfSwgZGVzdGluYXRpb25JRCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgaHR0cEJvZHksIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGh0dHBCb2R5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShodHRwQm9keS50YWtlRGF0YSgpKTsKKyAg
ICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5kYXRhVGFza1dpdGhSZXF1ZXN0KHBhZ2VJRCwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorewogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgc2Vzc2lvbi0+cmVxdWVzdFJl
c291cmNlKHBhZ2VJRCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0sIHsgfSk7
CisgICAgICAgIHNlc3Npb24tPmNhbmNlbERhdGFUYXNrKGlkZW50aWZpZXIpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoQ2Fj
aGVNb2RlbCBjYWNoZU1vZGVsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYTNlZjExMjg1NzExNmRmMTU4ODY5YTk2NmI4NTljYWQxMzhmNDhhOC4uNjg5YmY5
N2VkZWRkOTVlMzdjNjI5MGNiNmNmYWU5NWJkNmI0MTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgorI2luY2x1ZGUgIkRhdGFUYXNrSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNp
bmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTQzMiw3ICs0MzMsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwg
Y29uc3QgVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogI2VuZGlmCiAgICAgdm9p
ZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKT4mJik7
CisgICAgdm9pZCBkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYp
OworICAgIHZvaWQgY2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwogICAgIHZv
aWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDYzMWUyYjYwNzNjMDE5MjEzMDY4YzIwOTZiODI3YjI3OWRiYzdkZTAuLjExZDY1Y2IyMjFlMWI4
MzBkYzc1ZjhjMGE3M2YwMGZlNTY5ZTJiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTMsNyArNTMs
OCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAjZW5kaWYKLSAgICBSZXF1ZXN0UmVzb3VyY2UoV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKSBB
c3luYworICAgIERhdGFUYXNrV2l0aFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSkgLT4gKFdl
YktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyKSBBc3luYworICAgIENhbmNl
bERhdGFUYXNrKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQo
KQogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA4NWM3Y2JkNjkwMzRkOWNi
YTdmNDQ1ZGE5ZGU0NzVhMWQ3YjM1MTE4Li40ZGQyOWY4OWQ1MzJhMjYxZmZhYjJiZjdkYzc0M2Uy
YWMxMGZhN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0Lmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRhdGFUYXNrSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5jbHVkZSAi
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllci5oIgpAQCAtMjMyLDcgKzIzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxsVGltZT4s
IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJZGVudGlm
aWVyKT4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRl
bnRpZmllcikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVy
cyhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMmJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhXZWJQYWdl
UHJveHlJZGVudGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBjb3VudE5vbkRlZmF1bHRT
ZXNzaW9uU2V0cygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggM2M0
NmU2YjBkN2NlMzVjMDZlOTYzOGZhYmE3YzkyOGUxNzVjNTEwZS4uZTllOTJjNzgwMjMzZDQ5MGUw
ZGQ5MzdlOGVhNTMwN2I1NWJhNDNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTE0Miw2ICsxNDIs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiwgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAor
ICAgIHZvaWQgcmVtb3ZlRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToK
ICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFy
Q3JlZGVudGlhbHMoKSBvdmVycmlkZTsKQEAgLTE2Miw3ICsxNjQsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVtb3ZlV2ViU29ja2V0VGFzayhTZXNzaW9uU2V0JiwgV2ViU29ja2V0VGFzayYpIGZp
bmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVRhc2tX
aXRoUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllcikgZmluYWw7CiAg
ICAgdm9pZCBhZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlV2Vi
UGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGZpbmFsOwogICAg
IHNpemVfdCBjb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIGNvbnN0IGZpbmFsOwpAQCAtMTg4
LDYgKzE5MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Zhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRp
b25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlOwogICAgIGJvb2wgbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uIHsg
ZmFsc2UgfTsKKyAgICBIYXNoTWFwPERhdGFUYXNrSWRlbnRpZmllciwgUmV0YWluUHRyPE5TVVJM
U2Vzc2lvbkRhdGFUYXNrPj4gbV9kYXRhVGFza3NGb3JBUEk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAyYzU0N2FiNDg2MTdlYjliZGFiZTJiMWRi
NGVlOWE3OWI1YmM1ZmRjLi4wOWFlNzg2NTc1NWY0Y2FmMDYwNjgxOTBjNmExZGVlZWIzYTdhOTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzcy5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbXBvcnQgIlByaXZhdGVSZWxheWVkLmgiCisjaW1wb3J0ICJXS1VSTFNlc3Npb25UYXNrRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycy5oIgogI2ltcG9ydCAi
V2ViU29ja2V0VGFzay5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KQEAg
LTE3NjAsMTQgKzE3NjEsMzAgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWcKICAgICBtX2F0dHJp
YnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJvbVBhZ2VJZGVudGlmaWVycy5hZGQocGFnZUlELCBwYXJh
bWV0ZXJzLmF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyKCkpOwogfQogCi12b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBzZXNzaW9uV3JhcHBlckZvclRhc2socGFnZUlELCBy
ZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBzdGQ6Om51bGxv
cHQpLnNlc3Npb247CisgICAgYXV0byBpZGVudGlmaWVyID0gRGF0YVRhc2tJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOwogICAgIGF1dG8gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKLSAgICBhdXRvIGNv
bXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqZGF0YSwgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
SVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0
ZXMpLCBkYXRhLmxlbmd0aCB9LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2Ug
fSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGVycm9yIH0pOwotICAgIH0pOwotICAgIFtbc2Vz
c2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21w
bGV0aW9uQmxvY2suZ2V0KCldIHJlc3VtZV07CisgICAgYXV0byBzZXNzaW9uID0gc2Vzc2lvbldy
YXBwZXJGb3JUYXNrKHBhZ2VJRCwgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZSwgc3RkOjpudWxsb3B0KS5zZXNzaW9uOworICAgIGF1dG8gdGFzayA9IFtzZXNz
aW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhJZGVudGlm
aWVyOmlkZW50aWZpZXIgc2Vzc2lvbjoqdGhpc10pOworI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1RB
U0tfREVMRUdBVEUpCisgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworI2VuZGlm
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RhdGFUYXNrc0ZvckFQSS5hZGQoaWRlbnRpZmllciwg
dGFzayk7CisgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIFt0
YXNrIHJlc3VtZV07CisgICAgY29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit7CisgICAgW21fZGF0YVRhc2tzRm9yQVBJLnRha2UoaWRlbnRpZmllcikg
Y2FuY2VsXTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVEYXRhVGFzayhE
YXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBtX2RhdGFUYXNrc0ZvckFQSS5y
ZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6cmVtb3Zl
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XS1VSTFNlc3Np
b25UYXNrRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tV
UkxTZXNzaW9uVGFza0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0YTU4YzY4NTJhY2U4YTNkZWQ4
MjFjODI1MGUwZjk0OTA2MzA1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJEYXRhVGFza0lkZW50
aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29h
OworfQorCitAcHJvdG9jb2wgTlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlOworCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSA6IE5T
T2JqZWN0PE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aElkZW50aWZpZXI6KFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyKWlkZW50aWZpZXIgc2Vzc2lv
bjooV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hJilzZXNzaW9uOworQGVuZAorCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY5
ZTVhNDdlOGRhODAyOGJmODFhOGZjNmY4MDExNzhiZDYyZTYzNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVn
YXRlLm1tCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCIKKworI2ltcG9ydCAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCisjaW1wb3J0ICJDb25uZWN0aW9u
LmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCisjaW1wb3J0
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNz
aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgeworICAgIFdlYktpdDo6RGF0YVRh
c2tJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hPiBfc2Vzc2lvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRp
ZmllcjooV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIpaWRlbnRpZmllciBzZXNzaW9uOihXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2EmKXNlc3Npb24KK3sKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfaWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CisgICAgX3Nlc3Npb24gPSBXZWFrUHRyIHsgc2Vzc2lvbiB9OworICAgIHJldHVybiBz
ZWxmOworfQorCistIChJUEM6OkNvbm5lY3Rpb24qKWNvbm5lY3Rpb24KK3sKKyAgICBpZiAoIV9z
ZXNzaW9uKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBfc2Vzc2lvbi0+bmV0d29y
a1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCistICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRh
c2sgZGlkUmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxmIGNvbm5l
Y3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5p
bCk7CisgICAgY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpEYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKF9pZGVudGlmaWVyLCBjaGFs
bGVuZ2UpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZyb21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0
aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNr
ICopdGFzayB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKily
ZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1VSTFJlcXVlc3QgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBh
dXRvKiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICBjb25uZWN0aW9u
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRhdGFU
YXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1
ZXN0KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KSwgcmVxdWVzdCA9IFJldGFpblB0ciB7IHJlcXVlc3QgfV0gKGJvb2wgYWxsb3dlZCkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd2VkID8gcmVxdWVzdC5nZXQoKSA6IG5pbCk7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAg
aWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxT
ZXNzaW9uUmVzcG9uc2VDYW5jZWwpOworICAgIGNvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGF0YVRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UoX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhbGxvd2VkID8gTlNVUkxTZXNzaW9uUmVzcG9uc2VBbGxvdyA6IE5TVVJMU2Vz
c2lvblJlc3BvbnNlQ2FuY2VsKTsKKyAgICB9KTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihO
U1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRh
dGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgYXV0byogY29ubmVj
dGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAg
cmV0dXJuOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoX2lkZW50aWZpZXIsIHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0pLCAwKTsKK30KKwor
LSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vz
c2lvblRhc2sgKil0YXNrIGRpZENvbXBsZXRlV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sK
KyAgICBhdXRvKiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6RGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihfaWRlbnRp
ZmllciwgZXJyb3IpLCAwKTsKKyAgICBpZiAoX3Nlc3Npb24pCisgICAgICAgIF9zZXNzaW9uLT5y
ZW1vdmVEYXRhVGFzayhfaWRlbnRpZmllcik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDRlYTgzOTJiNWFhZGMyOTEyNmNlYTkzNmRlYmVi
MTY1NjY4MzMxZTIuLjY3MGQ0MTUxZDhiMjQ2YWNiYmU2NTExOWM0OTdmNmQzMTM0MGZhZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzE5LDYgKzMxOSw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInLAorICAgICAgICAn
V2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpEaXNwbGF5TGlu
a09ic2VydmVySUQnLAogICAgICAgICAnV2ViS2l0OjpEb3dubG9hZElEJywKICAgICAgICAgJ1dl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKaW5kZXggNTNhZjEwYTg2ZTEyOWExOWVkMTA1MTNhMTYwZDlkYTA5N2ZlNWM1Yi4uN2Q0
ZWU2YjIwYmU0ODY5MmVlYmQzYmM5OGI0OWU5NmRkNjYxZjVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICAgICAgQ29u
dGV4dE1lbnVMaXN0ZW5lciwKICAgICAgICAgQ3VzdG9tSGVhZGVyRmllbGRzLAogICAgICAgICBJ
bnRlcm5hbERlYnVnRmVhdHVyZSwKKyAgICAgICAgRGF0YVRhc2ssCiAgICAgICAgIERlYnVnZ2Fi
bGVJbmZvLAogICAgICAgICBEb3dubG9hZCwKICAgICAgICAgRXhwZXJpbWVudGFsRmVhdHVyZSwK
QEAgLTM2NCw2ICszNjUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2Jq
ZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZXh0TWVudUxpc3Rl
bmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6Q3VzdG9tSGVhZGVyRmllbGRzLAogICAg
ICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUsCisgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpEYXRhVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkRl
YnVnZ2FibGVJbmZvLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RG93bmxvYWQsCiAgICAg
ICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpFeHBlcmltZW50YWxGZWF0dXJlLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaApp
bmRleCBmNDkyNThhNGM3MWJiMGM3ZGU5OTBiNDJiZjcyYzRmMzZiOWNjMWVmLi43NDk0ZDQ0YThi
NWViZjIzZGFhMTJiNzQ4ZmQwZGQ1ZmQwZmI3ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9j
b2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaApAQCAtMzEsNSAr
MzEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24gdG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbik7CitOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24gZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24oQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bkNvY29hLm1tCmluZGV4IDQ0NTQ5MWFlYWUxMTYxZjI0M2MxYmE3NjkxYzAyZWJkMmUxNGI3YTYu
LmY3MjlhNTY0MzU5MGNhNTA5NjFiZDEyMjNmYzViMGMwYjM5MDYyZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2Eu
bW0KQEAgLTQzLDQgKzQzLDE5IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
dG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKE5TVVJMU2VzCiAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQg
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9z
aXRpb25dOwogfQogCitOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZnJvbUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Cisg
ICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFs
OgorICAgICAgICByZXR1cm4gTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw7
CisgICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBl
cmZvcm1EZWZhdWx0SGFuZGxpbmc7CisgICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpDYW5jZWw6CisgICAgICAgIHJldHVybiBOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2FzZSBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZToK
KyAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9u
U3BhY2U7CisgICAgfQorICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDEwYjgwOTJhMWIy
Mjk2MmIyOTA0MDY2NWI3NmVkMzdiNTY1MjEyN2YuLmJmMmVkMmEwNzljODk1MjAyMzlkYzViZGNh
MWQ1NWEyODdjMzVjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
QEAgLTc0LDYgKzc0LDcgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRGF0YVRhc2tJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVO
b2RlSW50ZXJuYWwuaCIKQEAgLTIxOSw2ICsyMjAsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmpl
Y3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtXS05TRGF0YSBh
bGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpEYXRhVGFzazoKKyAgICAg
ICAgd3JhcHBlciA9IFtfV0tEYXRhVGFzayBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAg
Y2FzZSBUeXBlOjpJbnRlcm5hbERlYnVnRmVhdHVyZToKICAgICAgICAgd3JhcHBlciA9IFtfV0tJ
bnRlcm5hbERlYnVnRmVhdHVyZSBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9EYXRhVGFza0lkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTFiZjViMmMzNTZmZjI3
NjllZDFkZDJmMzc1YmNmMmMxZGZhNmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gRGF0YVRhc2tJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBEYXRhVGFza0lkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPERhdGFUYXNrSWRlbnRp
ZmllclR5cGU+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAyZjhkMmMxMmJiNzVlZTJhZTVmOTVjZmU2
ZmIwOTRiOGQ4Y2Q5ZjBmLi43NTJmMjk0MTBkYWQ2MDZjNWEzYjEyNzY2NzA2YWNmMjM5MmU4ZjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTQ3NCw2ICs0NzQsNyBAQCBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdEFjdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHAKIFVJUHJvY2Vzcy9BUEkv
QVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2su
Y3BwCiBVSVByb2Nlc3MvQVBJL0FQSURlYnVnZ2FibGVJbmZvLmNwcAogVUlQcm9jZXNzL0FQSS9B
UElFeHBlcmltZW50YWxGZWF0dXJlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzlmZWE5MWNlNTYxNzU4MTYwYWQ5MjE4OTg5NDUz
ZTU4M2VkNjQ2MS4uMmY4MjA0OGZlYjMyZmZlMmJlN2E2ZWE1NmIzYWMwOTc4OTQ5NTZmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtMjgsNiArMjgsNyBAQCBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vz
c0NvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCitO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW0KIAogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAK
QEAgLTI3OSw2ICsyODAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxp
c3RBY3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gQG5vLXVu
aWZ5CitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24u
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2suY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
ZDk4NjNhNDI4YjQ4M2YyOTcxNjAwMjUxNGE3NDI2YjhhYmQzYjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2suY3BwCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFQSURhdGFUYXNrLmgiCisKKyNpbmNsdWRlICJBUElEYXRhVGFza0NsaWVudC5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK0RhdGFUYXNrOjp+RGF0YVRhc2soKSA9IGRlZmF1
bHQ7CisKK3ZvaWQgRGF0YVRhc2s6OnNldENsaWVudChSZWY8RGF0YVRhc2tDbGllbnQ+JiYgY2xp
ZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCit2b2lkIERhdGFU
YXNrOjpjYW5jZWwoKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQorICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5jYW5jZWxEYXRhVGFzayhtX2lkZW50aWZpZXIsIG1fc2Vzc2lvbklEKTsK
K30KKworRGF0YVRhc2s6OkRhdGFUYXNrKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYgcGFnZSwgV1RGOjpVUkwmJiBv
cmlnaW5hbFVSTCkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9wYWdl
KFdURk1vdmUocGFnZSkpCisgICAgLCBtX29yaWdpbmFsVVJMKFdURk1vdmUob3JpZ2luYWxVUkwp
KQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhtX3BhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5uZXR3
b3JrUHJvY2VzcygpKQorICAgICwgbV9zZXNzaW9uSUQobV9wYWdlLT5zZXNzaW9uSUQoKSkKKyAg
ICAsIG1fY2xpZW50KERhdGFUYXNrQ2xpZW50OjpjcmVhdGUoKSkgeyB9CisKK30gLy8gbmFtZXNw
YWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2suaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MDM1YmYxNTIzZTMxODBiN2UzYmZhY2JlNTYzMzc5ZmE3YTE1NmUwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRGF0YVRhc2tJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7CitjbGFz
cyBXZWJQYWdlUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBEYXRhVGFza0Ns
aWVudDsKKworY2xhc3MgRGF0YVRhc2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpEYXRhVGFzaz4geworcHVibGljOgorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4gc3RhdGljIFJlZjxEYXRhVGFzaz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRhc2soc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7CisgICAgfQorICAgIH5EYXRhVGFzaygpOworCisgICAgdm9pZCBjYW5j
ZWwoKTsKKworICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV9wYWdl
LmdldCgpOyB9CisgICAgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbFVSTDsgfQorICAgIGNvbnN0IERhdGFUYXNrQ2xpZW50JiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFJlZjxE
YXRhVGFza0NsaWVudD4mJik7CisKK3ByaXZhdGU6CisgICAgRGF0YVRhc2soV2ViS2l0OjpEYXRh
VGFza0lkZW50aWZpZXIsIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYsIFdURjo6VVJM
JiYpOworCisgICAgV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAg
IFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZTsKKyAgICBXVEY6OlVSTCBtX29y
aWdpbmFsVVJMOworICAgIFdlYWtQdHI8V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25l
dHdvcmtQcm9jZXNzOworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIFJlZjxE
YXRhVGFza0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFza0NsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDJjOWIwNDY0ZWJjOTM4ZDQ4NWU0ODIzOWRlZTllZmUxZjE5MzYwMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFza0NsaWVudC5oCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBSZXNvdXJj
ZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGE7CisKK2NsYXNzIERhdGFUYXNrQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRhc2tDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERhdGFUYXNrQ2xpZW50PiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUYXNrQ2xpZW50KTsgfQorICAgIHZp
cnR1YWwgfkRhdGFUYXNrQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShEYXRhVGFzayYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oRGF0YVRhc2smLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShEYXRhVGFzayYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShEYXRhVGFz
ayYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihEYXRhVGFzayYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
JikgY29uc3QgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaApp
bmRleCAyZmVlZjYwODJhMDY0NTc2ZTc4NDNhZDYyNjQ2NDE3MzAxZGJiNGQ3Li5lZWNmYjc4MWZj
MjIzNmUwY2YzYzAxNjg3OTIwNGVjMzIzMjJjZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lv
blR5cGVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgQVBJIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMwMTQzMjA4Mjc4N2QzMGU3ODhi
ZTNlNTBlN2E1OGEyYzZkYmVlNzUuLmYyNGI3MWJhNjBkNTVmMWZlOTljNDdmZDc3NjBlMjBlNzZj
NmViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJBUElEYXRhVGFzay5oIgogI2ltcG9ydCAiQVBJ
Rm9ybUNsaWVudC5oIgogI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9ydCAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTk5LDYgKzEwMCw3IEBACiAjaW1wb3J0ICJfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tBcHBIaWdobGlnaHREZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiX1dLQXBwSGlnaGxpZ2h0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9X
S0RhdGFUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGUuaCIKICNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5k
bGVJbnRlcm5hbC5oIgpAQCAtMjIyNCwxMiArMjIyNiwxMCBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
QXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyhOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdAogI2VuZGlmCiB9CiAKLS0gKHZvaWQpX3JlcXVlc3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0RhdGEgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kYXRhVGFza1dp
dGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKF9XS0RhdGFUYXNrICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgX3BhZ2UtPnJlcXVl
c3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5p
bCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOworICAgIF9wYWdlLT5kYXRhVGFza1dpdGhSZXF1ZXN0
KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChSZWY8QVBJOjpEYXRhVGFzaz4mJiB0YXNrKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdyYXBwZXIodGFzaykpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBmOGJjMzAz
NTExYzVkYjY4MzdjMjM1MjEyNjdhMTkzNjc1MDgxMTNmLi40MzVlZjE2ZDY4NDEzZWZhMzA0OTY1
MWVmYzJmZDc1Y2IzMzQyMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBjbGFzcyBXS0ZyYW1lSW5m
bzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBjbGFzcyBfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0OworQGNsYXNzIF9XS0RhdGFUYXNrOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNs
YXNzIF9XS0ZyYW1lVHJlZU5vZGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsKQEAgLTQyNyw3
ICs0MjgsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfc3RhcnRJbWFnZUFuYWx5
c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0YSAqLCBO
U1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2RhdGFU
YXNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoX1dLRGF0YVRhc2sgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgV0tEaXNwbGF5Q2FwdHVyZVN0YXRlKSB7CiAgICAgV0tEaXNwbGF5Q2FwdHVy
ZVN0YXRlTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rh
dGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZjZjg2OGE1OTFkZDY3OWY2NzE0ZjljYzRhNWFlYTk3M2Jh
OWYxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEYXRhVGFzay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0Bwcm90b2NvbCBfV0tEYXRhVGFza0RlbGVnYXRlOwor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLRGF0YVRhc2sgOiBOU09i
amVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKysgKGluc3RhbmNl
dHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKKy8vIERlbGVnYXRlIGlzIHN0cm9uZ2x5IHJlZmVy
ZW5jZWQgdW50aWwgdGhlIHRhc2sgY29tcGxldGVzLCBhZnRlciB3aGljaCBpdCBpcworLy8gcmVz
ZXQgdG8gYG5pbGAuCitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBpZCA8X1dLRGF0YVRh
c2tEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHdl
YWspIFdLV2ViVmlldyAqd2ViVmlldzsKKy0gKHZvaWQpY2FuY2VsOworCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0RhdGFUYXNrLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0RhdGFUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZjdmNzJhZWE0MTYwOTg1ZDJhZDNiMzQwZjRm
ZWFhYmRhN2VlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRGF0YVRhc2subW0KQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrSW50ZXJuYWwuaCIKKworI2lt
cG9ydCAiQVBJRGF0YVRhc2suaCIKKyNpbXBvcnQgIkFQSURhdGFUYXNrQ2xpZW50LmgiCisjaW1w
b3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKKyNpbXBvcnQg
IkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgorI2ltcG9ydCAiX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisKK2NsYXNz
IFdLRGF0YVRhc2tDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEYXRhVGFza0NsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxXS0RhdGFUYXNrQ2xpZW50PiBjcmVhdGUoaWQgPF9XS0Rh
dGFUYXNrRGVsZWdhdGU+IGRlbGVnYXRlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdLRGF0YVRh
c2tDbGllbnQoZGVsZWdhdGUpKTsgfQorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXS0RhdGFUYXNr
Q2xpZW50KGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2Rl
bGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihk
YXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6d2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KV0pCisgICAgICAg
ICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZVJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRs
ZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZURhdGEoW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCisg
ICAgICAgICwgbV9yZXNwb25kc1RvRGlkQ29tcGxldGVXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6KV0p
IHsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKEFQSTo6RGF0YVRhc2smIHRhc2ss
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
V2ViQ29yZTo6Q3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0
UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7CisgICAgICAgIGF1dG8gY2hlY2tlciA9
IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUu
Z2V0KCkuZ2V0KCksIEBzZWxlY3RvcihkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgICAgIFttX2RlbGVnYXRlIGRhdGFU
YXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1hYyhj
aGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVj
a2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6dG9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVk
ZW50aWFsKSk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKEFQSTo6RGF0YVRhc2smIHRhc2ssIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvV2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7CisgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rv
cihkYXRhVGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9u
SGFuZGxlcjopKTsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0YXNrKSB3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpIGRlY2lzaW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeSBw
b2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocG9saWN5ID09IF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3lBbGxvdyk7Cisg
ICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShB
UEk6OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0Rp
ZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0
cnVlKTsKKyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRhdGFU
YXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgIFttX2Rl
bGVnYXRlIGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSA9
PSBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICB9KS5nZXQoKV07Cisg
ICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShBUEk6OkRhdGFUYXNrJiB0YXNrLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBp
ZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVEYXRhKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRhc2spIGRp
ZFJlY2VpdmVEYXRhOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YS5k
YXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoQVBJOjpEYXRhVGFzayYgdGFzaywgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYmIGVycm9yKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRl
IHx8ICFtX3Jlc3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0YXNrKSBkaWRDb21wbGV0
ZVdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICB3cmFwcGVyKHRhc2spLT5fZGVs
ZWdhdGUgPSBuaWw7CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPF9XS0RhdGFUYXNrRGVs
ZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb1dpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVS
ZXNwb25zZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlRGF0YSA6IDE7Cisg
ICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvciA6IDE7Cit9OworCitAaW1w
bGVtZW50YXRpb24gX1dLRGF0YVRhc2sKKworLSAodm9pZCljYW5jZWwKK3sKKyAgICBfZGF0YVRh
c2stPmNhbmNlbCgpOworICAgIF9kZWxlZ2F0ZSA9IG5pbDsKK30KKworLSAoV0tXZWJWaWV3ICop
d2ViVmlldworeworICAgIGF1dG8qIHBhZ2UgPSBfZGF0YVRhc2stPnBhZ2UoKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHBhZ2UtPmNvY29hVmlldygp
LmdldCgpOworfQorCistIChpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAg
ICByZXR1cm4gX2RlbGVnYXRlLmdldCgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8
X1dLRGF0YVRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICBfZGF0YVRhc2stPnNldENsaWVudChXS0RhdGFUYXNrQ2xpZW50OjpjcmVhdGUoZGVs
ZWdhdGUpKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2No
ZWR1bGVEZWFsbG9jYXRlT25NYWluUnVuTG9vcChfV0tEYXRhVGFzay5jbGFzcywgc2VsZikpCisg
ICAgICAgIHJldHVybjsKKyAgICBfZGF0YVRhc2stPn5EYXRhVGFzaygpOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0
aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfZGF0YVRh
c2s7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tEYXRhVGFza0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYzg3YmViZWQ5YjRjOTEw
Mjk3NWNjMDEzZTQzYWMzOGY5NGViMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIF9XS0RhdGFUYXNrOworCit0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5KSB7CisgICAg
X1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUNhbmNlbCwKKyAgICBfV0tEYXRhVGFza1JlZGlyZWN0
UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0RhdGFUYXNrUmVz
cG9uc2VQb2xpY3kpIHsKKyAgICBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5Q2FuY2VsLAorICAg
IF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxvdywKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KKworQHByb3RvY29sIF9XS0RhdGFUYXNrRGVsZWdhdGUgPE5TT2JqZWN0PgorCitAb3B0aW9u
YWwKKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilj
aGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlcjsKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQpZGF0YVRh
c2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tEYXRhVGFza1Jlc3Bv
bnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFz
ayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhOworLSAodm9pZClkYXRh
VGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjoobnVsbGFi
bGUgTlNFcnJvciAqKWVycm9yOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0lu
dGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU2NTlmMjg5ZTcyMTBlNDIyOGFjYTlkY2EzMDY4NWZiZDUz
ZmZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEYXRhVGFza0ludGVybmFsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIkFQSURhdGFUYXNrLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiX1dL
RGF0YVRhc2suaCIKKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OkRhdGFUYXNrPiB7
CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRGF0YVRhc2s7Cit9OworCit9CisKK0BpbnRl
cmZhY2UgX1dLRGF0YVRhc2sgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OkRhdGFUYXNrPiBfZGF0YVRhc2s7CisgICAgUmV0YWluUHRyPGlkIDxf
V0tEYXRhVGFza0RlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDU3ZGU4YjFmNjU4NjZmYjFmY2Y3YmQxOGJiYjY4ZDIwYzE1YWU5ZmMuLjVmODY1YjZlZTE4
MGRmYmU4ZDVmZDI1YjcyZjE5OWEwMTVhMTQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiAr
MjgsOCBAQAogCiAjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQVBJ
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJRGF0YVRhc2suaCIK
KyNpbmNsdWRlICJBUElEYXRhVGFza0NsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24u
aCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC02MSw2ICs2Myw3IEBACiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTMzNywxNCArMzQw
LDYxIEBAIERvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2Fk
UHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0CiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94
eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJj
ZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFU
YXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQVBJOjpEYXRhVGFzayYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNvdXJjZShw
YWdlSUQsIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0
Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRhdGFUYXNrV2l0aFJlcXVlc3QocGFnZS5p
ZGVudGlmaWVyKCksIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShy
ZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCB3ZWFrUGFnZSA9IFdlYWtQdHIgeyBwYWdlIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG9yaWdpbmFsVVJMID0gcmVxdWVzdC51cmwoKV0gKERhdGFU
YXNrSWRlbnRpZmllciBpZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgTUVTU0FHRV9DSEVD
SyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOworICAgICAg
ICBhdXRvIGRhdGFUYXNrID0gQVBJOjpEYXRhVGFzazo6Y3JlYXRlKGlkZW50aWZpZXIsIFdURk1v
dmUod2Vha1BhZ2UpLCBXVEZNb3ZlKG9yaWdpbmFsVVJMKSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGRhdGFUYXNrKTsKKyAgICAgICAgbV9kYXRhVGFza3MuYWRkKGlkZW50aWZpZXIsIFdU
Rk1vdmUoZGF0YVRhc2spKTsKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3Jl
OjpDcmVkZW50aWFsJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0VfQ0hF
Q0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsKKyAgICBp
ZiAoYXV0byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICB0YXNr
LT5jbGllbnQoKS5kaWRSZWNlaXZlQ2hhbGxlbmdlKCp0YXNrLCBXVEZNb3ZlKGNoYWxsZW5nZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3Rl
Y3Rpb25TcGFjZUFuZENvbnRpbnVlLCB7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oRGF0YVRhc2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1f
ZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8gdGFzayA9
IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkud2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oKnRhc2ssIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoRGF0YVRhc2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBN
RVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVy
KSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVyKSkKKyAg
ICAgICAgdGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKCp0YXNrLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0
eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8g
dGFzayA9IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50
KCkuZGlkUmVjZWl2ZURhdGEoKnRhc2ssIGRhdGEpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoRGF0YVRhc2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikKK3sKKyAgICBNRVNTQUdF
X0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7Cisg
ICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLnRha2UoaWRlbnRpZmllcikpCisgICAgICAg
IHRhc2stPmNsaWVudCgpLmRpZENvbXBsZXRlV2l0aEVycm9yKCp0YXNrLCBXVEZNb3ZlKGVycm9y
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2FuY2VsRGF0YVRhc2soRGF0YVRh
c2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAg
ICBtX2RhdGFUYXNrcy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkNhbmNlbERhdGFUYXNrKGlkZW50aWZpZXIsIHNlc3Npb25JRCksIDApOwor
fQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9w
dGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkZldGNoV2Vic2l0ZURh
dGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucyksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKQEAgLTM4NCw2ICs0MzQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKFRlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKCp0aGlzLCByZWFz
b24pOwogICAgIGZvciAoYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA6IGNvcHlUb1ZlY3Rvck9mPFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPj4obV93ZWJzaXRlRGF0YVN0b3JlcykpCiAgICAgICAgIHdlYnNp
dGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKCp0aGlzKTsKKyAgICBmb3Ig
KGF1dG8mIHRhc2sgOiBtX2RhdGFUYXNrcy52YWx1ZXMoKSkKKyAgICAgICAgdGFzay0+Y2xpZW50
KCkuZGlkQ29tcGxldGVXaXRoRXJyb3IodGFzaywgV2ViQ29yZTo6aW50ZXJuYWxFcnJvcih0YXNr
LT5vcmlnaW5hbFVSTCgpKSk7CisgICAgbV9kYXRhVGFza3MuY2xlYXIoKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggM2QzNTQ0ZGNi
OTc2MGQ2ZTMzNzI3NWQ2MmE1MzYxYzliMTk1YzRlMC4uYzNlN2FiN2Q2NGMyN2UwNzBlYThkOTI0
MDVlZTQ5ZTI5OTMzMjVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1
ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHku
aCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRGF0YVRhc2tJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyLmgiCkBAIC01OCw2ICs2MCw3IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsK
K2NsYXNzIERhdGFUYXNrOwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTEyNiw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxv
YWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5KiBv
cmlnaW5hdGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAg
IHZvaWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHkmLCBQQUw6OlNlc3Npb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpE
YXRhVGFzayYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMjg5LDYgKzI5MiwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYpOwogCisg
ICAgdm9pZCBkYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKERhdGFUYXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYp
PiYmKTsKKyAgICB2b2lkIGRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oRGF0YVRh
c2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IGRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKERhdGFUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIGRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoRGF0YVRhc2tJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJy
b3IoRGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworICAgIHZv
aWQgY2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCkBAIC0zOTgs
NiArNDA4LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYWtIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmU+
IG1fd2Vic2l0ZURhdGFTdG9yZXM7CiAgICAgVW5pcXVlUmVmPFdlYkNvb2tpZU1hbmFnZXJQcm94
eT4gbV9jb29raWVNYW5hZ2VyOworICAgIEhhc2hNYXA8RGF0YVRhc2tJZGVudGlmaWVyLCBSZWY8
QVBJOjpEYXRhVGFzaz4+IG1fZGF0YVRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTNhYmJiNDY4ZjViM2FkMDc3ZWI2
NDZhNjkyY2M3YmY5Mjk1NGRmMC4uNTRlNDYzY2E4OWY1ZWE4MTg4NDZiMmJhMDEwMGZlZDExOGZl
Y2NmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtODksNCArODksMTIgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5B
QkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKICAgICBHZXRXaW5kb3dTY2VuZUlk
ZW50aWZpZXJGb3JQYXltZW50UHJlc2VudGF0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJZGVudGlmaWVyKSAtPiAoU3RyaW5nIHNjZW5lSUQpIEFzeW5jCiAj
ZW5kaWYKKworICAgIERhdGFUYXNrUmVjZWl2ZWRDaGFsbGVuZ2UoV2ViS2l0OjpEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hh
bGxlbmdlKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKSBB
c3luYworICAgIERhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0OjpEYXRh
VGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpIC0+IChib29sIGFsbG93ZWQp
IEFzeW5jCisgICAgRGF0YVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpEYXRhVGFza0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkg
LT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKKyAgICBEYXRhVGFza0RpZFJlY2VpdmVEYXRhKFdlYktp
dDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
KQorICAgIERhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpEYXRhVGFza0lkZW50
aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjU5YWU3M2VjYjky
MTM1ZjA5YTk2NTAxYjMzZWQyYTQxZDM1MzMxOS4uNWI1NmQwNmVkMGJiMWRlYmUwMmYyOGUwYjI3
Njg4NjI2NGI3Mzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC02NDcwLDkgKzY0NzAsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25s
b2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRhdGFU
YXNrV2l0aFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJlc291cmNl
KGlkZW50aWZpZXIoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3Mo
KS5kYXRhVGFza1dpdGhSZXF1ZXN0KCp0aGlzLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDMwODQyYTFiZGY3MjQ4Y2ZhZjUwYzk0Y2Q3NTg4
N2M0ODc3NzY5ZC4uODRlMzNhNGYxZTYyOTk2NTE0OWU4OGU4MTBmN2M5OTA0Zjk5ZDEyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CiBj
bGFzcyBDb250ZXh0TWVudUNsaWVudDsKK2NsYXNzIERhdGFUYXNrOwogY2xhc3MgRGVzdGluYXRp
b25Db2xvclNwYWNlOwogY2xhc3MgRXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwpAQCAtMTM4Nyw3
ICsxMzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25s
b2FkUHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25s
b2FkUHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsK
LSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAg
IHZvaWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYpOwogCiAgICAgdm9pZCBhZHZh
bmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9p
ZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWVkY2EzMzYwYzQ4
YTJiYjk4Yjk2YjFmZGFlOGQ5NzQ4YjY1ZjVhMi4uN2JmOTY0ZGMzNmUxYzgxOTAwNWRkZjkyNjY0
ZjVmMmM2ZjI2NWMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjI4LDYgKzEyMjgsOCBAQAogCQk1QzIwRjY3OTI3NkE2REI2MDA2
Q0FDMjIgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29k
ZXJzLmNwcCAqLzsgfTsKIAkJNUMyNjk1ODUyMDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVs
UGFyYW1ldGVyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMjY5NTg0MjAwNDJGMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRl
cnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUMyOThEQTAxQzNERjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYy
OTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oICovOyB9OworCQk1QzJDNkZBOTI3QzlFNUUy
MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMkM2RkE0MjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFzay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDMkM2
RkFBMjdDOUU1RUIwMENDREE5RSAvKiBfV0tEYXRhVGFza0RlbGVnYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzJDNkZBMzI3Qzk1Mjk5MDBDQ0RB
OUUgLyogX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTVDMkQ1NzQ4MjU3RkZBNEIwMDY3OUE3MiAvKiBXS0NvbnRl
eHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMyRDU3NDcyNTdGRkExMjAwNjc5QTcyIC8qIFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkVCREY5MjU2NDM1MjAwMEQ1
NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMzNTlDMEQyMTU0NzM5RjAwOUU3OTQ4IC8qIFdLRGVwcmVj
YXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMz
NTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00OTExLDYgKzQ5MTMsMTYgQEAKIAkJ
NUMyQjFBRjMyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxv
YWRNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9u
aXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBC
OTFDRjcgLyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzJDNkY5RTI3Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0YVRhc2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YVRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGOUYyN0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURh
dGFUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSURhdGFU
YXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTAyN0M5NTIzNTAw
Q0NEQTlFIC8qIEFQSURhdGFUYXNrQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSURhdGFUYXNrQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDMkM2RkEyMjdDOTUyOTkwMENDREE5RSAvKiBfV0tEYXRhVGFzay5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0RhdGFUYXNrLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzJDNkZBMzI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tE
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEYXRhVGFza0Rl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE0MjdDOTUyOTkw
MENDREE5RSAvKiBfV0tEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tEYXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBNTI3
Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tEYXRhVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDMkM2RkE2MjdDOTU4RkMwMENDREE5RSAvKiBEYXRhVGFza0lkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YVRhc2tJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE3MjdDOTZGRjkwMENDREE5
RSAvKiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDMkM2RkE4MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Np
b25UYXNrRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxT
ZXNzaW9uVGFza0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkQ1
NzQ3MjU3RkZBMTIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHREb3dubG9hZENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tE
b3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25s
b2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDcz
MjEwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tEZXByZWNhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjgy
LDYgKzcyOTQsNyBAQAogCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcCAqLywKIAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oICovLAogCQkJCTk5RjY0MkQyMUZBQkUzNzgwMDk2MjFFOSAv
KiBDb29yZGluYXRlU3lzdGVtLmggKi8sCisJCQkJNUMyQzZGQTYyN0M5NThGQzAwQ0NEQTlFIC8q
IERhdGFUYXNrSWRlbnRpZmllci5oICovLAogCQkJCTk5MDM2QUU4MjNBOTcwODcwMDAwQjA2QSAv
KiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwICovLAogCQkJCTk5MDM2QUU3MjNBOTcwODcwMDAwQjA2
QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCAqLywKIAkJCQkwRjE4OUNBQjI0NzQ5RjJGMDBFNThE
ODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggKi8sCkBAIC04ODQ2LDYgKzg4NTksMTAgQEAK
IAkJCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmgg
Ki8sCiAJCQkJNUM1RDIzODgyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxk
cy5tbSAqLywKIAkJCQk1QzVEMjM4NzIyN0ExODkxMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVy
RmllbGRzSW50ZXJuYWwuaCAqLywKKwkJCQk1QzJDNkZBNDI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dL
RGF0YVRhc2suaCAqLywKKwkJCQk1QzJDNkZBMjI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRh
c2subW0gKi8sCisJCQkJNUMyQzZGQTMyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVs
ZWdhdGUuaCAqLywKKwkJCQk1QzJDNkZBNTI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tJ
bnRlcm5hbC5oICovLAogCQkJCTgzODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9z
dGljTG9nZ2luZ0RlbGVnYXRlLmggKi8sCiAJCQkJQTFBNEZFNTcxOERDRTlGQTAwQjVFQThBIC8q
IF9XS0Rvd25sb2FkLmggKi8sCiAJCQkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkLm1tICovLApAQCAtMTA0NTEsNiArMTA0NjgsOCBAQAogCQkJCTVDMjBDQjlCMUJCMERD
RDIwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTQxMjg3RDRDMjI1
QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2EuaCAqLywKIAkJCQk0MTI4N0Q0QjIy
NUMwNUM0MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29hLm1tICovLAorCQkJCTVDMkM2RkE4
MjdDOTZGRjkwMENDREE5RSAvKiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCAqLywKKwkJCQk1
QzJDNkZBNzI3Qzk2RkY5MDBDQ0RBOUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tICov
LAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xMTI5MSw2ICsxMTMxMCw5IEBACiAJCQkJNUNFMEMzNjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQ
SUNvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQk1QzVEMjM4QTIyN0ExRDlCMDAwQjlC
REEgLyogQVBJQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8sCiAJCQkJN0E4MjFGNEYxRTJGN0E1QzAw
NjA0NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovLAorCQkJCTVDMkM2
RjlGMjdDOTUyMzUwMENDREE5RSAvKiBBUElEYXRhVGFzay5jcHAgKi8sCisJCQkJNUMyQzZGOUUy
N0M5NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrLmggKi8sCisJCQkJNUMyQzZGQTAyN0M5NTIz
NTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrQ2xpZW50LmggKi8sCiAJCQkJOTkwMzZBRTQyM0E5NTg3
NDAwMDBCMDZBIC8qIEFQSURlYnVnZ2FibGVJbmZvLmNwcCAqLywKIAkJCQk5OTAzNkFFMzIzQTk1
ODc0MDAwMEIwNkEgLyogQVBJRGVidWdnYWJsZUluZm8uaCAqLywKIAkJCQk4Mzg5MUI2MjFBNjhC
MzQyMDAzMEYzODYgLyogQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKQEAgLTEyODky
LDYgKzEyOTE0LDggQEAKIAkJCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNEY4MUJF
MDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzVEMjM4QzIyN0EyQ0RBMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzJDNkZBOTI3QzlFNUUyMDBDQ0RBOUUgLyogX1dLRGF0
YVRhc2suaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMkM2RkFBMjdDOUU1RUIwMENDREE5RSAvKiBf
V0tEYXRhVGFza0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2OTFBNjhCRUJD
MDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZTdlNDUxYzE4ZDZkMzE4OGRkNGEwZjQ2ZDAzNTZhOTRjYWZmMDllYi4u
Nzc3OGIwZDJiMjgzODJjMmMyNjhiZDg4N2IxYWM5ZmJmZTY5MGVhMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIy
LTAzLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIFNQSSBfV0tEYXRhVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1By
b2Nlc3MubW06CisgICAgICAgICgtW1Rlc3REYXRhVGFza0RlbGVnYXRlIGRhdGFUYXNrOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bVGVzdERhdGFUYXNrRGVsZWdhdGUgZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmRl
Y2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERhdGFUYXNrRGVsZWdhdGUgZGF0YVRh
c2s6ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1Rlc3REYXRhVGFza0RlbGVnYXRlIGRh
dGFUYXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjIt
MDMtMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkwMzI1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KaW5kZXggYjExYzY5
ZTIzNTRjYWY0NGNkZGMwMGUxZTMxOTJjZTRmODYzMjhiZC4uMWM1ZWYxYjc2ZTVlMDE2NDU0M2Y0
ZjE0OWJkY2JkOGEwZTVlNjc4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCkBAIC0zMyw2ICszMyw4IEBACiAj
aW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRGF0YVRhc2suaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tEYXRhVGFza0RlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgpAQCAtMzUyLDcgKzM1NCw1OSBAQCBURVNUKE5ldHdvcmtQcm9jZXNz
LCBCcm9hZGNhc3RDaGFubmVsQ3Jhc2hSZWNvdmVyeSkKICAgICBFWFBFQ1RfRVEod2ViUElEMiwg
W3dlYlZpZXcyIF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwogfQogCi1URVNUKE5ldHdvcmtQcm9j
ZXNzLCBMb2FkUmVzb3VyY2UpCisjaWYgSEFWRShOU1VSTFNFU1NJT05fVEFTS19ERUxFR0FURSkK
KworQGludGVyZmFjZSBUZXN0RGF0YVRhc2tEZWxlZ2F0ZSA6IE5TT2JqZWN0PF9XS0RhdGFUYXNr
RGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkKF5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0RhdGFUYXNrICosIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKiwgdm9pZCheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKF9XS0RhdGFUYXNrICosIE5TSFRUUFVSTFJl
c3BvbnNlICosIE5TVVJMUmVxdWVzdCAqLCB2b2lkKF4pKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xp
Y3kpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3Bv
bnNlKShfV0tEYXRhVGFzayAqLCBOU1VSTFJlc3BvbnNlICosIHZvaWQgKF4pKF9XS0RhdGFUYXNr
UmVzcG9uc2VQb2xpY3kpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
UmVjZWl2ZURhdGEpKF9XS0RhdGFUYXNrICosIE5TRGF0YSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGlkQ29tcGxldGVXaXRoRXJyb3IpKF9XS0RhdGFUYXNrICosIE5T
RXJyb3IgKik7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3REYXRhVGFza0RlbGVnYXRl
CisKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hh
bGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRhdGFUYXNrLCBjaGFsbGVuZ2UsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7Cit9CisKKy0g
KHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0RhdGFUYXNrUmVk
aXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGlmIChfd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pCisgICAgICAgIF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihkYXRhVGFz
aywgcmVzcG9uc2UsIHJlcXVlc3QsIGRlY2lzaW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUFsbG93KTsKK30KKwor
LSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGlmIChfZGlk
UmVjZWl2ZVJlc3BvbnNlKQorICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFUYXNrLCBy
ZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFu
ZGxlcihfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworfQorCistICh2b2lkKWRhdGFU
YXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRh
Cit7CisgICAgaWYgKF9kaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgX2RpZFJlY2VpdmVEYXRhKGRh
dGFUYXNrLCBkYXRhKTsKK30KKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRh
VGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9k
aWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgX2RpZENvbXBsZXRlV2l0aEVycm9yKGRhdGFU
YXNrLCBlcnJvcik7Cit9CisKK0BlbmQKKworVEVTVChfV0tEYXRhVGFzaywgQmFzaWMpCiB7CiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgYXV0byBodG1sID0gIjxzY3Jp
cHQ+ZG9jdW1lbnQuY29va2llPSd0ZXN0a2V5PXZhbHVlJzwvc2NyaXB0PiI7CkBAIC0zNzcsMjQg
KzQzMSwyMzAgQEAgVEVTVChOZXR3b3JrUHJvY2VzcywgTG9hZFJlc291cmNlKQogICAgIFtwb3N0
UmVxdWVzdCBzZXRIVFRQTWV0aG9kOkAiUE9TVCJdOwogICAgIGF1dG8gcmVxdWVzdEJvZHkgPSAi
cmVxdWVzdCBib2R5IjsKICAgICBbcG9zdFJlcXVlc3Qgc2V0SFRUUEJvZHk6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzOnJlcXVlc3RCb2R5IGxlbmd0aDpzdHJsZW4ocmVxdWVzdEJvZHkpXV07Ci0gICAg
W3dlYlZpZXcgX3JlcXVlc3RSZXNvdXJjZTpwb3N0UmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKLSAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgcG9zdFJlcXVlc3QuZ2V0KCkuVVJMLmFi
c29sdXRlU3RyaW5nKTsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCBzdHJsZW4oc2Vj
b25kUmVzcG9uc2UpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBz
ZWNvbmRSZXNwb25zZSwgZGF0YS5sZW5ndGgpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
W3dlYlZpZXcgX2RhdGFUYXNrV2l0aFJlcXVlc3Q6cG9zdFJlcXVlc3QuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFzaykgeworICAgICAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7CisgICAgICAgIHRhc2suZGVsZWdh
dGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVkUmVzcG9u
c2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlID0g
XihfV0tEYXRhVGFzayAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmRlY2lzaW9u
SGFuZGxlcikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHBvc3RSZXF1ZXN0LmdldCgp
LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICByZWNlaXZlZFJlc3BvbnNlID0gdHJ1
ZTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5
QWxsb3cpOworICAgICAgICB9OworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWREYXRhID0g
ZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVEYXRhID0gXihfV0tEYXRh
VGFzayAqLCBOU0RhdGEgKmRhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVk
UmVzcG9uc2UpOworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCBzdHJsZW4oc2Vj
b25kUmVzcG9uc2UpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoZGF0YS5ieXRl
cywgc2Vjb25kUmVzcG9uc2UsIGRhdGEubGVuZ3RoKSk7CisgICAgICAgICAgICByZWNlaXZlZERh
dGEgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRDb21wbGV0
ZVdpdGhFcnJvciA9IF4oX1dLRGF0YVRhc2sgKiwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkRGF0YSk7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKICAgICB9XTsKICAg
ICBVdGlsOjpydW4oJmRvbmUpOwogICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoc2Vjb25kUmVxdWVz
dC5kYXRhKCksICJDb29raWU6IHRlc3RrZXk9dmFsdWVcclxuIiwgc2Vjb25kUmVxdWVzdC5zaXpl
KCkpKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoSFRUUFNlcnZlcjo6cGFyc2VCb2R5KHNlY29uZFJl
cXVlc3QpLCByZXF1ZXN0Qm9keSk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcg
X3JlcXVlc3RSZXNvdXJjZTpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiYmxvYjpibGFuayJdXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqZGF0
YSwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwotICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvclVuc3VwcG9ydGVkVVJMKTsKLSAgICAgICAg
RVhQRUNUX05VTEwoZGF0YSk7Ci0gICAgICAgIEVYUEVDVF9OVUxMKHJlc3BvbnNlKTsKLSAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRGF0YVRhc2s+IHJldGFp
bmVkVGFzazsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYmxvYjpibGFuayJdXSBjb21w
bGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIHJldGFpbmVkVGFz
ayA9IHRhc2s7CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tE
ZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwor
ICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNlOworICAgICAgICBk
ZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9XS0RhdGFUYXNrICosIE5TVVJM
UmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShfV0tEYXRhVGFza1Jl
c3BvbnNlUG9saWN5KSkgeworICAgICAgICAgICAgcmVjZWl2ZWRSZXNwb25zZSA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxzZTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICosIE5T
RGF0YSAqZGF0YSkgeworICAgICAgICAgICAgcmVjZWl2ZWREYXRhID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkQ29tcGxldGVXaXRoRXJyb3IgPSBeKF9XS0Rh
dGFUYXNrICp0YXNrLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KHJlY2VpdmVkUmVzcG9uc2UpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkRGF0
YSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9y
RG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yVW5z
dXBwb3J0ZWRVUkwpOworICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxMKHRhc2suZGVsZWdhdGUp
OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwocmV0YWluZWRUYXNrLmdldCgpKTsK
KyAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZFRhc2suZ2V0KCkuZGVsZWdhdGUpOworfQorCitURVNU
KF9XS0RhdGFUYXNrLCBDaGFsbGVuZ2UpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEk7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoSFRUUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFs
bGVuZ2VUaGVuT0ssIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKKworICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2RhdGFUYXNrV2l0aFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAg
ICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBfX2Jsb2NrIGJv
b2wgcmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSA9IGZhbHNlOworICAgICAgICBfX2Jsb2Nr
IGJvb2wgcmVjZWl2ZWRCYXNpY0F1dGhDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICAgICAgZGVsZWdh
dGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihfV0tEYXRhVGFz
ayAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0XSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShy
ZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAgICAgICAgIHJlY2VpdmVk
U2VydmVyVHJ1c3RDaGFsbGVuZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVk
ZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZl
clRydXN0XSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGlj
YXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RIVFRQQmFzaWMpOworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVuZ2UpOworICAgICAgICAg
ICAgcmVjZWl2ZWRCYXNpY0F1dGhDaGFsbGVuZ2UgPSB0cnVlOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIG5pbCk7
CisgICAgICAgIH07CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxzZTsK
KyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICos
IE5TRGF0YSAqZGF0YSkgeworICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRSZXNwb25z
ZSA9ICI8c2NyaXB0PmFsZXJ0KCdzdWNjZXNzIScpPC9zY3JpcHQ+IjsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShkYXRhLmxlbmd0aCwgc3RybGVuKGV4cGVjdGVkUmVzcG9uc2UpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoZGF0YS5ieXRlcywgZXhwZWN0ZWRSZXNwb25zZSwgZGF0
YS5sZW5ndGgpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRydWU7CisgICAgICAgIH07
CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRh
VGFzayAqLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2
ZWREYXRhKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQmFzaWNBdXRoQ2hhbGxl
bmdlKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkU2VydmVyVHJ1c3RDaGFsbGVu
Z2UpOworICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgICAgIH07CiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIH0KKwor
dm9pZCBzZW5kTG9vcChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24sIGJvb2wm
IHNlbnRXaXRoRXJyb3IpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzKDEwMDAsIDApOwor
ICAgIGNvbm5lY3Rpb24uc2VuZEFuZFJlcG9ydEVycm9yKFdURk1vdmUoYnl0ZXMpLCBbJiwgY29u
bmVjdGlvbl0gKGJvb2wgc2F3RXJyb3IpIHsKKyAgICAgICAgaWYgKHNhd0Vycm9yKQorICAgICAg
ICAgICAgc2VudFdpdGhFcnJvciA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNl
bmRMb29wKGNvbm5lY3Rpb24sIHNlbnRXaXRoRXJyb3IpOworICAgIH0pOworfQorCitURVNUKF9X
S0RhdGFUYXNrLCBDYW5jZWwpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CisgICAgYm9vbCBzZW50V2l0aEVycm9yIHsgZmFsc2UgfTsKKyAgICBIVFRQU2VydmVyIHNlcnZl
cihbJl0gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbJiwgY29ubmVjdGlvbl0gKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAg
ICAgICBhdXRvKiBoZWFkZXIgPSAiSFRUUC8xLjEgMjAwIE9LXHJcblxyXG4iOworICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKGhlYWRlciwgWyYsIGNvbm5lY3Rpb25dIHsKKyAgICAgICAgICAg
ICAgICBzZW5kTG9vcChjb25uZWN0aW9uLCBzZW50V2l0aEVycm9yKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dL
V2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRGF0YVRhc2sgKnRhc2spIHsKKyAgICAg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFza0RlbGVnYXRlIG5ld10pOwor
ICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRl
LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZSA9IF4oX1dLRGF0YVRhc2sgKnRhc2ssIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShfV0tEYXRhVGFza1Jlc3Bv
bnNlUG9saWN5KSkgeworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNrUmVz
cG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTCh0YXNr
LmRlbGVnYXRlKTsKKyAgICAgICAgICAgICAgICBbdGFzayBjYW5jZWxdOworICAgICAgICAgICAg
ICAgIEVYUEVDVF9OVUxMKHRhc2suZGVsZWdhdGUpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZzZW50V2l0aEVycm9yKTsKKworICAgIF9fYmxv
Y2sgYm9vbCBjb21wbGV0ZWQgeyBmYWxzZSB9OworICAgIFt3ZWJWaWV3IF9kYXRhVGFza1dpdGhS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAq
dGFzaykgeworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVs
ZWdhdGUgbmV3XSk7CisgICAgICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlID0gXihfV0tEYXRhVGFzayAq
dGFzaywgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKF9X
S0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kpKSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIo
X1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeUNhbmNlbCk7CisgICAgICAgIH07CisgICAgICAgIGRl
bGVnYXRlLmdldCgpLmRpZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlOworICAgICAg
ICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY29tcGxldGVkKTsKK30KKworVEVTVChfV0tE
YXRhVGFzaywgUmVkaXJlY3QpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIgeyB7CisgICAgICAgIHsgIi8iLCB7IDMwMSwgeyB7ICJM
b2NhdGlvbiIsICIvcmVkaXJlY3RUYXJnZXQiIH0sIHsgIkN1c3RvbS1OYW1lIiwgIkN1c3RvbS1W
YWx1ZSIgfSB9IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyAiaGkiIH0gfSwK
KyAgICB9IH07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVz
dCgpOworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgeyBmYWxzZSB9OworICAgIFt3ZWJW
aWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihfV0tEYXRhVGFzayAqdGFzaykgeworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7CisgICAgICAgIHRhc2suZGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkud2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24gPSBeKF9XS0RhdGFUYXNrICp0YXNrLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVz
cG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCheZGVjaXNpb25IYW5kbGVyKShfV0tE
YXRhVGFza1JlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHNl
cnZlclJlcXVlc3QuZ2V0KCkuVVJMLmFic29sdXRlU3RyaW5nLCByZXNwb25zZS5VUkwuYWJzb2x1
dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtzZXJ2ZXJSZXF1ZXN0Lmdl
dCgpLlVSTC5hYnNvbHV0ZVN0cmluZyBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAInJlZGlyZWN0
VGFyZ2V0Il0sIHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShbcmVzcG9uc2UgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJDdXN0b20tTmFt
ZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLRGF0
YVRhc2tSZWRpcmVjdFBvbGljeUFsbG93KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUu
Z2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNrICosIE5TRGF0YSAqZGF0YSkgewor
ICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCBzdHJsZW4oImhpIikpOworICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCAiaGkiLCBkYXRhLmxlbmd0aCkp
OworICAgICAgICAgICAgcmVjZWl2ZWREYXRhID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsK
KyAgICBVdGlsOjpydW4oJnJlY2VpdmVkRGF0YSk7CisgICAgCisgICAgX19ibG9jayBib29sIGNv
bXBsZXRlZCB7IGZhbHNlIH07CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkUmVzcG9uc2UgeyBm
YWxzZSB9OworICAgIFt3ZWJWaWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3Qu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFzaykgeworICAgICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7CisgICAg
ICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0
KCkud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKF9XS0RhdGFUYXNrICp0YXNrLCBOU0hU
VFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCheZGVj
aXNpb25IYW5kbGVyKShfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAg
ICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9XS0Rh
dGFUYXNrICp0YXNrLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmRlY2lzaW9uSGFu
ZGxlcikoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuZ2V0KCku
VVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgoKE5TSFRUUFVSTFJl
c3BvbnNlICopcmVzcG9uc2UpLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICByZWNlaXZl
ZFJlc3BvbnNlID0gdHJ1ZTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFz
a1Jlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQo
KS5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IF4oX1dLRGF0YVRhc2sgKiwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkUmVzcG9uc2UpOworICAgICAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmNvbXBsZXRlZCk7Cit9CisKK1RFU1Qo
X1dLRGF0YVRhc2ssIENyYXNoKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKEhUVFBTZXJ2ZXI6OnJlc3BvbmRXaXRoT0spOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKworICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2RhdGFUYXNrV2l0aFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7Cisg
ICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXdd
KTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxl
Z2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9XS0RhdGFUYXNrICp0YXNrLCBOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoX1dLRGF0YVRhc2tS
ZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgICAgIGtpbGwod2ViVmlldy5nZXQoKS5jb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciwgU0lHS0lM
TCk7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLRGF0YVRhc2tSZXNwb25zZVBvbGlj
eUFsbG93KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkQ29tcGxldGVX
aXRoRXJyb3IgPSBeKF9XS0RhdGFUYXNrICosIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBXZWJLaXRFcnJvckRvbWFpbik7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgMzAwKTsKKyAgICAgICAgICAgIGRvbmUgPSB0
cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKKyNl
bmRpZiAvLyBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVHQVRFKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0hUVFBTZXJ2ZXIuaAppbmRleCA3NWQyODJlYTllNDBkMjExNWFmMTk0OGFkM2Y4ZWI4
ZmM2MzdjY2Q0Li40NjAzMDA5NDkxMWMzMmJiY2Q2YTk3YmNlNzdkMmI0N2U4MmQzZTVkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaApAQCAtNzgsNyArNzgsNyBAQCBjbGFz
cyBDb25uZWN0aW9uIHsKIHB1YmxpYzoKICAgICB2b2lkIHNlbmQoU3RyaW5nJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0OwogICAgIHZvaWQgc2VuZChWZWN0
b3I8dWludDhfdD4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29u
c3Q7Ci0gICAgdm9pZCBzZW5kKFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZvaWQgc2VuZEFuZFJl
cG9ydEVycm9yKFZlY3Rvcjx1aW50OF90PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBjb25zdDsKICAgICB2b2lkIHJlY2VpdmVCeXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3Rvcjx1aW50OF90PiYmKT4mJiwgc2l6ZV90IG1pbmltdW1TaXplID0gMSkgY29uc3Q7CiAg
ICAgdm9pZCByZWNlaXZlSFRUUFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
Y2hhcj4mJik+JiYsIFZlY3RvcjxjaGFyPiYmIGJ1ZmZlciA9IHsgfSkgY29uc3Q7CiAgICAgdm9p
ZCB3ZWJTb2NrZXRIYW5kc2hha2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0geyB9KTsK
QEAgLTkwLDYgKzkwLDggQEAgcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKG53X2Nvbm5lY3Rpb25f
dCBjb25uZWN0aW9uKQogICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKSB7IH0KIAor
ICAgIHZvaWQgc2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKwogICAgIFJldGFpblB0cjxud19jb25uZWN0aW9u
X3Q+IG1fY29ubmVjdGlvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5tbQppbmRleCA4OGQ4NmJmMWQwYzE5ZjBjY2YzMDVmZDA4NWRhYTRkNzg3MzRkNDkwLi5hNjVk
OTMxMWVkMDRjZWNiNTdiNWQ0YjA4NGRiYzQ3ZTJmNDBhNjYzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC00MTQsMTkgKzQxNCwzMCBAQCB2b2lkIENvbm5lY3Rp
b246OnJlY2VpdmVIVFRQUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFy
PiYmKT4mJiBjbwogCiB2b2lkIENvbm5lY3Rpb246OnNlbmQoU3RyaW5nJiYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAg
IHNlbmQoZGF0YUZyb21TdHJpbmcoV1RGTW92ZShtZXNzYWdlKSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBzZW5kKGRhdGFGcm9tU3RyaW5nKFdURk1vdmUobWVzc2FnZSkpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wpIG11
dGFibGUgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgIH0pOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnNlbmQoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIHNlbmQoZGF0YUZyb21WZWN0b3IoV1RGTW92ZSht
ZXNzYWdlKSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoYm9vbCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlv
bjo6c2VuZEFuZFJlcG9ydEVycm9yKFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAg
c2VuZChkYXRhRnJvbVZlY3RvcihXVEZNb3ZlKG1lc3NhZ2UpKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OnNlbmQoUmV0YWluUHRyPGRpc3BhdGNo
X2RhdGFfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit2b2lkIENvbm5lY3Rpb246OnNlbmQoUmV0YWluUHRyPGRpc3BhdGNo
X2RhdGFfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIG53X2Nvbm5lY3Rpb25fc2VuZChtX2Nvbm5lY3Rp
b24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCksIE5XX0NPTk5FQ1RJT05fREVGQVVMVF9NRVNTQUdFX0NP
TlRFWFQsIHRydWUsIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0obndfZXJyb3JfdCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcighIWVycm9yKTsKICAgICB9KS5nZXQoKSk7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453571</attachid>
            <date>2022-03-01 22:42:20 -0800</date>
            <delta_ts>2022-03-02 00:10:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237234-20220301224218.patch</filename>
            <type>text/plain</type>
            <size>100376</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmNDY4Mzg0N2FmMjBiYTA4OTBjYmUx
N2FlNjRkNTVmMzU0OTk3NWIuLjdkMjVlZWFiOWZiODQ0OGYzODYyMTMxMDc4MWQ1MzE1ODAwNTYw
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIF9XS0RhdGFUYXNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
SGF2ZS5oOgorCiAyMDIyLTAzLTAxICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFdURjo6U2VudGluZWxMaW5rZWRMaXN0OjppdGVyYXRvciBzaG91
bGQgaGF2ZSBvcGVyYXRvcisrIGZvciByYW5nZS1mb3IgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZjI2Y2Ey
OTk1ZTU1MzMyYTJlZDQ5NjNlMjEwYTE5YmMyYzk3YmNhLi41ZWUwZmQ2MWNlOWE4NTY5OWY4YmRj
MGRjNTIwMWM0ZGI3NjNmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIyLTAzLTAx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QWRkIFNQSSBfV0tEYXRhVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKwor
ICAgICAgICBXaGVuIEkgYWRkZWQgV0tXZWJWaWV3Ll9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlv
bkhhbmRsZXI6IEkgb3Zlcmxvb2tlZCBhIGZldyB0aGluZ3MuCisgICAgICAgIEZpcnN0LCBpdCBp
cyB1bmFibGUgdG8gc3VwcG9ydCBIVFRQUyBiZWNhdXNlIEkgZGlkbid0IGhvb2sgdXAgYXV0aGVu
dGljYXRpb24gY2hhbGxlbmdlIGhhbmRsaW5nIHRvIGl0LgorICAgICAgICBTZWNvbmQsIGl0IGlz
IHVuYWJsZSB0byBoYXZlIGEgbWF4aW11bSBhY2NlcHRlZCByZXNwb25zZSBsZW5ndGgsIHdoaWNo
IGlzIGEgcmVxdWlyZW1lbnQgZm9yIGFuIGFkb3B0ZXIuCisgICAgICAgIFRvIG1ha2UgdGhlc2Ug
cG9zc2libGUsIEkgbWFkZSBfV0tEYXRhVGFzayB3aGljaCBpcyByZWxhdGVkIHRvIFdLRG93bmxv
YWQgYW5kIE5TVVJMU2Vzc2lvbkRhdGFUYXNrLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGF0
YVRhc2tXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5j
ZWxEYXRhVGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0UmVz
b3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y2FuY2VsRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNhbmNlbERhdGFUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6cmVtb3ZlRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaC4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAo
LVtXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgaW5pdFdpdGhJZGVudGlmaWVyOnNlc3Npb246XSk6
CisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBjb25uZWN0aW9uXSk6CisgICAg
ICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tVUkxTZXNzaW9u
VGFza0RlbGVnYXRlIFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpu
ZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Npb25U
YXNrRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBVUkxT
ZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS1VSTFNlc3Np
b25UYXNrRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhh
dF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElP
YmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6ZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24pOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6
Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVy
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29h
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElEYXRhVGFzay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0
YVRhc2s6OnNldENsaWVudCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrOjpjYW5jZWwpOgorICAg
ICAgICAoQVBJOjpEYXRhVGFzazo6RGF0YVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJRGF0YVRhc2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5oLgorICAgICAgICAoQVBJOjpEYXRhVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKEFQSTo6RGF0YVRhc2s6OnBhZ2UpOgorICAgICAgICAoQVBJOjpEYXRh
VGFzazo6Y2xpZW50IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNr
Q2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNw
ZWN0b3JFeHRlbnNpb25DbGllbnQuaC4KKyAgICAgICAgKEFQSTo6RGF0YVRhc2tDbGllbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp+RGF0YVRhc2tDbGllbnQpOgor
ICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb25zdCk6
CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
biBjb25zdCk6CisgICAgICAgIChBUEk6OkRhdGFUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UgY29uc3QpOgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEg
Y29uc3QpOgorICAgICAgICAoQVBJOjpEYXRhVGFza0NsaWVudDo6ZGlkQ29tcGxldGVXaXRoRXJy
b3IgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0UmVzb3VyY2U6Y29tcGxldGlvbkhh
bmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFzay5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uQ2xpZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFz
ay5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0RhdGFUYXNrIGNhbmNlbF0pOgorICAgICAgICAo
LVtfV0tEYXRhVGFzayB3ZWJWaWV3XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIGRlbGVnYXRl
XSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIHNldERlbGVnYXRlOl0pOgorICAgICAgICAoLVtf
V0tEYXRhVGFzayBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0RhdGFUYXNrIF9hcGlPYmplY3Rd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrRGVsZWdhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFs
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29h
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tSZWNlaXZlZENoYWxsZW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
YXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAyMi0wMy0wMSAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTA1ODguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
CmluZGV4IDhjNjA4YTIzYTQ0ZTJjNTY2MTJiYThlMzMzZjhjNDQ1NGZkNDU2MmYuLjlmZTc2Yzg2
NTFkMDdmMmYzOWY3MDZjZGQ5MDg4MmZjZDE1NmVmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC05OTksNiArOTk5LDcgQEAKICAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNTAwMDApCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05T
VVJMU0VTU0lPTl9BVFRSSUJVVEVEX0JVTkRMRV9JREVOVElGSUVSIDEKICNkZWZpbmUgSEFWRV9D
Rk5FVFdPUktfTlNVUkxTRVNTSU9OX0hTVFNfV0lUSF9VTlRSVVNURURfUk9PVCAxCisjZGVmaW5l
IEhBVkVfTlNVUkxTRVNTSU9OX1RBU0tfREVMRUdBVEUgMQogI2RlZmluZSBIQVZFX0FVRElPX09C
SkVDVF9QUk9QRVJUWV9FTEVNRU5UX01BSU4gMQogI2RlZmluZSBIQVZFX0lNQUdFX1JFU1RSSUNU
RURfREVDT0RJTkcgMQogI2RlZmluZSBIQVZFX1hQQ19DT05ORUNUSU9OX0NPUFlfSU5WQUxJREFU
SU9OX1JFQVNPTiAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDIwZmE2NGM5M2ZkZDlmMTdhZmE3OGEzZmQ3NjVkNDEyZmU2MmNlYWQu
Ljk5MGVjN2ZiODJmNjM1NGJhMDFlNGJlN2JiZGNjMDY0OGIzMGZlOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xOTk5LDEzICsx
OTk5LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlv
bihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzCiAgICAgfSwgZGVzdGluYXRpb25JRCk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgaHR0cEJvZHks
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGh0dHBCb2R5
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmllcik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShodHRwQm9keS50YWtlRGF0YSgp
KTsKKyAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5kYXRhVGFza1dpdGhSZXF1ZXN0KHBh
Z2VJRCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEYXRhVGFzayhEYXRhVGFza0lkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorewogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgc2Vzc2lvbi0+cmVx
dWVzdFJlc291cmNlKHBhZ2VJRCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0s
IHsgfSk7CisgICAgICAgIHNlc3Npb24tPmNhbmNlbERhdGFUYXNrKGlkZW50aWZpZXIpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3Rp
bmcoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKaW5kZXggYTNlZjExMjg1NzExNmRmMTU4ODY5YTk2NmI4NTljYWQxMzhmNDhhOC4u
Njg5YmY5N2VkZWRkOTVlMzdjNjI5MGNiNmNmYWU5NWJkNmI0MTA5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgorI2luY2x1ZGUgIkRhdGFUYXNrSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIu
aCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTQzMiw3ICs0
MzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxv
YWRJRCwgY29uc3QgVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogI2VuZGlmCiAg
ICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVm
ZXJlbmNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
KT4mJik7CisgICAgdm9pZCBkYXRhVGFza1dpdGhSZXF1ZXN0KFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERhdGFUYXNrSWRlbnRpZmll
cik+JiYpOworICAgIHZvaWQgY2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwog
ICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDYzMWUyYjYwNzNjMDE5MjEzMDY4YzIwOTZiODI3YjI3OWRiYzdkZTAuLjExZDY1Y2Iy
MjFlMWI4MzBkYzc1ZjhjMGE3M2YwMGZlNTY5ZTJiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTMs
NyArNTMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAjZW5kaWYKLSAgICBSZXF1ZXN0UmVzb3Vy
Y2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKSBBc3luYworICAgIERhdGFUYXNrV2l0aFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSkg
LT4gKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyKSBBc3luYworICAg
IENhbmNlbERhdGFUYXNrKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoKQogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA5ZmM0ZmUwMmQy
ZTIxNmFlMzRhMzY2MTYwZTgyODYzZWQwZmFmZDkzLi4zMDNhNTAxMWE2YmQwYmM2Mjg0ZTU2YTA1
YzFiNTRjYmY4MjljMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcHBQcml2YWN5UmVw
b3J0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRhdGFUYXNrSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5j
bHVkZSAiTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllci5oIgpAQCAtMjMyLDcgKzIzMyw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4sIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFJlc291cmNlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJ
ZGVudGlmaWVyKT4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbERhdGFUYXNrKERhdGFU
YXNrSWRlbnRpZmllcikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZFdlYlBhZ2VOZXR3b3JrUGFy
YW1ldGVycyhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMm
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhX
ZWJQYWdlUHJveHlJZGVudGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBjb3VudE5vbkRl
ZmF1bHRTZXNzaW9uU2V0cygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5k
ZXggYWI0MTAxNmFhZTNjMTE3ZGFjZTk0ODdlOTk3NGE4ZjlkODVhNzhlOC4uODc5YjNjZDliMDFj
YmNmNmU3NWE2NzU5NWRhOWM5MDliN2RmMGJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTE0Miw2
ICsxNDIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiwgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlk
ZTsKIAorICAgIHZvaWQgcmVtb3ZlRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsZWFyQ3JlZGVudGlhbHMoKSBvdmVycmlkZTsKQEAgLTE2Miw3ICsxNjQsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVtb3ZlV2ViU29ja2V0VGFzayhTZXNzaW9uU2V0JiwgV2ViU29ja2V0VGFz
ayYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0
YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEYXRhVGFza0lkZW50aWZpZXIpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbERhdGFUYXNrKERhdGFUYXNrSWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBhZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGZpbmFs
OwogICAgIHNpemVfdCBjb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIGNvbnN0IGZpbmFsOwpA
QCAtMTg4LDYgKzE5MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Zhc3RTZXJ2ZXJUcnVzdEV2
YWx1YXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOwogICAgIGJvb2wgbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0
aW9uIHsgZmFsc2UgfTsKKyAgICBIYXNoTWFwPERhdGFUYXNrSWRlbnRpZmllciwgUmV0YWluUHRy
PE5TVVJMU2Vzc2lvbkRhdGFUYXNrPj4gbV9kYXRhVGFza3NGb3JBUEk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAzYTAxNGFlODQ5ZjkwZjFlZTUz
YWU5ZDNhNGQzNWJjZTg1OWUyMWZiLi5mMTIxZDVlZjg5OWMwNmI3MTJiM2YyODU1YTkzMGZkYTYy
Mzc5OTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJO
ZXR3b3JrUHJvY2Vzcy5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbXBvcnQgIlByaXZhdGVSZWxheWVkLmgiCisjaW1wb3J0ICJXS1VSTFNlc3Npb25U
YXNrRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycy5oIgogI2lt
cG9ydCAiV2ViU29ja2V0VGFzay5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24u
aD4KQEAgLTE3NzEsMTQgKzE3NzIsMzAgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRX
ZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWcKICAgICBt
X2F0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJvbVBhZ2VJZGVudGlmaWVycy5hZGQocGFnZUlE
LCBwYXJhbWV0ZXJzLmF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyKCkpOwogfQogCi12b2lkIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGF0YVRhc2tJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBzZXNzaW9uV3JhcHBlckZvclRhc2socGFn
ZUlELCByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBzdGQ6
Om51bGxvcHQpLnNlc3Npb247CisgICAgYXV0byBpZGVudGlmaWVyID0gRGF0YVRhc2tJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwogICAgIGF1dG8gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKLSAgICBh
dXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqZGF0YSwgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHsgcmVz
cG9uc2UgfSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGVycm9yIH0pOwotICAgIH0pOwotICAg
IFtbc2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxl
cjpjb21wbGV0aW9uQmxvY2suZ2V0KCldIHJlc3VtZV07CisgICAgYXV0byBzZXNzaW9uID0gc2Vz
c2lvbldyYXBwZXJGb3JUYXNrKHBhZ2VJRCwgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZSwgc3RkOjpudWxsb3B0KS5zZXNzaW9uOworICAgIGF1dG8gdGFzayA9
IFtzZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1dLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhJ
ZGVudGlmaWVyOmlkZW50aWZpZXIgc2Vzc2lvbjoqdGhpc10pOworI2lmIEhBVkUoTlNVUkxTRVNT
SU9OX1RBU0tfREVMRUdBVEUpCisgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwor
I2VuZGlmCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RhdGFUYXNrc0ZvckFQSS5hZGQoaWRlbnRp
ZmllciwgdGFzayk7CisgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwor
ICAgIFt0YXNrIHJlc3VtZV07CisgICAgY29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgW21fZGF0YVRhc2tzRm9yQVBJLnRha2UoaWRlbnRp
ZmllcikgY2FuY2VsXTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVEYXRh
VGFzayhEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBtX2RhdGFUYXNrc0Zv
ckFQSS5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6
cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XS1VS
TFNlc3Npb25UYXNrRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0YTU4YzY4NTJhY2U4
YTNkZWQ4MjFjODI1MGUwZjk0OTA2MzA1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmgKQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJEYXRhVGFz
a0lkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBOZXR3b3JrU2Vzc2lv
bkNvY29hOworfQorCitAcHJvdG9jb2wgTlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlOworCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0
ZSA6IE5TT2JqZWN0PE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4KKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aElkZW50aWZpZXI6KFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyKWlkZW50aWZpZXIg
c2Vzc2lvbjooV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hJilzZXNzaW9uOworQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmY5ZTVhNDdlOGRhODAyOGJmODFhOGZjNmY4MDExNzhiZDYyZTYzNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV0tVUkxTZXNzaW9uVGFz
a0RlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUuaCIKKworI2ltcG9ydCAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCisjaW1wb3J0ICJDb25u
ZWN0aW9uLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCisj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNV
UkxTZXNzaW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisK
K0BpbXBsZW1lbnRhdGlvbiBXS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUgeworICAgIFdlYktpdDo6
RGF0YVRhc2tJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hPiBfc2Vzc2lvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SWRlbnRpZmllcjooV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIpaWRlbnRpZmllciBzZXNzaW9u
OihXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2EmKXNlc3Npb24KK3sKKyAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfaWRlbnRpZmllciA9
IGlkZW50aWZpZXI7CisgICAgX3Nlc3Npb24gPSBXZWFrUHRyIHsgc2Vzc2lvbiB9OworICAgIHJl
dHVybiBzZWxmOworfQorCistIChJUEM6OkNvbm5lY3Rpb24qKWNvbm5lY3Rpb24KK3sKKyAgICBp
ZiAoIV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBfc2Vzc2lvbi0+
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCistICh2b2lk
KVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFz
ayAqKXRhc2sgZGlkUmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRl
bnRpYWwpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFtzZWxm
IGNvbm5lY3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3Bh
Y2UsIG5pbCk7CisgICAgY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpEYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKF9pZGVudGlmaWVy
LCBjaGFsbGVuZ2UpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJiBjcmVkZW50aWFsKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZyb21BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRp
c3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgfSk7Cit9CisKKy0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9u
c2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1VSTFJlcXVlc3QgKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBhdXRvKiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYgKCFjb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICBjb25u
ZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OkRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oX2lkZW50aWZpZXIsIHJlc3BvbnNl
LCByZXF1ZXN0KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKSwgcmVxdWVzdCA9IFJldGFpblB0ciB7IHJlcXVlc3QgfV0gKGJvb2wgYWxsb3dlZCkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd2VkID8gcmVxdWVzdC5nZXQoKSA6IG5p
bCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vz
c2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07
CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
TlNVUkxTZXNzaW9uUmVzcG9uc2VDYW5jZWwpOworICAgIGNvbm5lY3Rpb24tPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGF0YVRhc2tEaWRSZWNlaXZl
UmVzcG9uc2UoX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgYWxsb3dlZCkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhbGxvd2VkID8gTlNVUkxTZXNzaW9uUmVzcG9uc2VBbGxvdyA6IE5T
VVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2VsKTsKKyAgICB9KTsKK30KKworLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFz
ayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgYXV0byog
Y29ubmVjdGlvbiA9IFtzZWxmIGNvbm5lY3Rpb25dOworICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoX2lkZW50aWZpZXIsIHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0pLCAwKTsK
K30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5T
VVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZENvbXBsZXRlV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKK3sKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gW3NlbGYgY29ubmVjdGlvbl07CisgICAgaWYg
KCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihf
aWRlbnRpZmllciwgZXJyb3IpLCAwKTsKKyAgICBpZiAoX3Nlc3Npb24pCisgICAgICAgIF9zZXNz
aW9uLT5yZW1vdmVEYXRhVGFzayhfaWRlbnRpZmllcik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDgyYWM3OTAxZDcyMzk5YzMyNGYxZDll
ODg1MDU2ZjhiMmFjYTI0MzMuLjU2MDlkNjc0ZjgwMjMyYWEwYmJlNTVjNGFiNDg1Y2Y2MTBmM2Nl
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzE5LDYg
KzMxOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpEaXNw
bGF5TGlua09ic2VydmVySUQnLAogICAgICAgICAnV2ViS2l0OjpEb3dubG9hZElEJywKICAgICAg
ICAgJ1dlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcicsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJT2JqZWN0LmgKaW5kZXggNTNhZjEwYTg2ZTEyOWExOWVkMTA1MTNhMTYwZDlkYTA5N2ZlNWM1
Yi4uN2Q0ZWU2YjIwYmU0ODY5MmVlYmQzYmM5OGI0OWU5NmRkNjYxZjVjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQ29udGV4dE1lbnVMaXN0ZW5lciwKICAgICAgICAgQ3VzdG9tSGVhZGVyRmllbGRzLAogICAg
ICAgICBJbnRlcm5hbERlYnVnRmVhdHVyZSwKKyAgICAgICAgRGF0YVRhc2ssCiAgICAgICAgIERl
YnVnZ2FibGVJbmZvLAogICAgICAgICBEb3dubG9hZCwKICAgICAgICAgRXhwZXJpbWVudGFsRmVh
dHVyZSwKQEAgLTM2NCw2ICszNjUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQ
STo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZXh0TWVu
dUxpc3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6Q3VzdG9tSGVhZGVyRmllbGRz
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUsCisgICAg
ICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5
cGU6OkRlYnVnZ2FibGVJbmZvLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6RG93bmxvYWQs
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpFeHBlcmltZW50YWxGZWF0dXJlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29j
b2EuaAppbmRleCBmNDkyNThhNGM3MWJiMGM3ZGU5OTBiNDJiZjcyYzRmMzZiOWNjMWVmLi43NDk0
ZDQ0YThiNWViZjIzZGFhMTJiNzQ4ZmQwZGQ1ZmQwZmI3ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaApAQCAt
MzEsNSArMzEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gdG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbik7CitOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24oQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2Ev
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbkNvY29hLm1tCmluZGV4IDQ0NTQ5MWFlYWUxMTYxZjI0M2MxYmE3NjkxYzAyZWJkMmUx
NGI3YTYuLmY3MjlhNTY0MzU5MGNhNTA5NjFiZDEyMjNmYzViMGMwYjM5MDYyZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
Q29jb2EubW0KQEAgLTQzLDQgKzQzLDE5IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24gdG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKE5TVVJMU2VzCiAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIklu
dmFsaWQgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcp
ZGlzcG9zaXRpb25dOwogfQogCitOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZnJvbUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24oQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9u
KSB7CisgICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVk
ZW50aWFsOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRl
bnRpYWw7CisgICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJm
b3JtRGVmYXVsdEhhbmRsaW5nOgorICAgICAgICByZXR1cm4gTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc7CisgICAgY2FzZSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWw6CisgICAgICAgIHJldHVybiBOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2FzZSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZToKKyAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90
ZWN0aW9uU3BhY2U7CisgICAgfQorICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDEwYjgw
OTJhMWIyMjk2MmIyOTA0MDY2NWI3NmVkMzdiNTY1MjEyN2YuLmJmMmVkMmEwNzljODk1MjAyMzlk
YzViZGNhMWQ1NWEyODdjMzVjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KQEAgLTc0LDYgKzc0LDcgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRGF0
YVRhc2tJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFt
ZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIxOSw2ICsyMjAsMTAgQEAgdm9pZCogT2JqZWN0Ojpu
ZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtXS05T
RGF0YSBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpEYXRhVGFzazoK
KyAgICAgICAgd3JhcHBlciA9IFtfV0tEYXRhVGFzayBhbGxvY107CisgICAgICAgIGJyZWFrOwor
CiAgICAgY2FzZSBUeXBlOjpJbnRlcm5hbERlYnVnRmVhdHVyZToKICAgICAgICAgd3JhcHBlciA9
IFtfV0tJbnRlcm5hbERlYnVnRmVhdHVyZSBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9EYXRhVGFza0lkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTFiZjViMmMz
NTZmZjI3NjllZDFkZDJmMzc1YmNmMmMxZGZhNmVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRGF0YVRhc2tJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gRGF0YVRhc2tJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBEYXRhVGFza0lkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPERhdGFUYXNr
SWRlbnRpZmllclR5cGU+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA0ZjM1ZDk0NGQxNjZhZGY3MmI2
NGY4ZWRhMzc2ZjZjNTg1NDg0MGM0Li41ZjZkMDZjMzE3N2UwMWU0NDg3NDUzNzkzZDYzM2EyNDE5
OTJmOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQ3NSw2ICs0NzUsNyBAQCBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdEFjdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHAKIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJRGF0
YVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSURlYnVnZ2FibGVJbmZvLmNwcAogVUlQcm9jZXNz
L0FQSS9BUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUlu
Zm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmM2MDYyY2YwYWFjNGIxOWQ0YmQyZTMx
ODhlYWI5NjliNDkzZWY3OS4uMjViMTEzYjVhNjUzZjQxMzNjNjkwNDhhYWUxMjlhN2RiY2RiNThl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjgsNiArMjgsNyBAQCBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCitOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XS1VSTFNlc3Npb25UYXNrRGVsZWdhdGUubW0KIAog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCiAKQEAgLTI3OSw2ICsyODAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50
UnVsZUxpc3RBY3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVt
ZW50SW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0g
QG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcu
bW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2suY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZmZDk4NjNhNDI4YjQ4M2YyOTcxNjAwMjUxNGE3NDI2YjhhYmQzYjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2suY3BwCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkFQSURhdGFUYXNrLmgiCisKKyNpbmNsdWRlICJBUElEYXRhVGFza0Ns
aWVudC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK0RhdGFUYXNrOjp+RGF0YVRhc2soKSA9
IGRlZmF1bHQ7CisKK3ZvaWQgRGF0YVRhc2s6OnNldENsaWVudChSZWY8RGF0YVRhc2tDbGllbnQ+
JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCit2b2lk
IERhdGFUYXNrOjpjYW5jZWwoKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQorICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5jYW5jZWxEYXRhVGFzayhtX2lkZW50aWZpZXIsIG1fc2Vzc2lv
bklEKTsKK30KKworRGF0YVRhc2s6OkRhdGFUYXNrKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYgcGFnZSwgV1RGOjpV
UkwmJiBvcmlnaW5hbFVSTCkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwg
bV9wYWdlKFdURk1vdmUocGFnZSkpCisgICAgLCBtX29yaWdpbmFsVVJMKFdURk1vdmUob3JpZ2lu
YWxVUkwpKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhtX3BhZ2UtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JrUHJvY2VzcygpKQorICAgICwgbV9zZXNzaW9uSUQobV9wYWdlLT5zZXNzaW9uSUQo
KSkKKyAgICAsIG1fY2xpZW50KERhdGFUYXNrQ2xpZW50OjpjcmVhdGUoKSkgeyB9CisKK30gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGF0YVRhc2suaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MDM1YmYxNTIzZTMxODBiN2UzYmZhY2JlNTYzMzc5ZmE3YTE1NmUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrLmgK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGF0YVRhc2tJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHk7
CitjbGFzcyBXZWJQYWdlUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBEYXRh
VGFza0NsaWVudDsKKworY2xhc3MgRGF0YVRhc2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpEYXRhVGFzaz4geworcHVibGljOgorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxEYXRhVGFzaz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRhc2soc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgfQorICAgIH5EYXRhVGFzaygpOworCisgICAgdm9p
ZCBjYW5jZWwoKTsKKworICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4g
bV9wYWdlLmdldCgpOyB9CisgICAgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW5hbFVSTDsgfQorICAgIGNvbnN0IERhdGFUYXNrQ2xpZW50JiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q2xpZW50
KFJlZjxEYXRhVGFza0NsaWVudD4mJik7CisKK3ByaXZhdGU6CisgICAgRGF0YVRhc2soV2ViS2l0
OjpEYXRhVGFza0lkZW50aWZpZXIsIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYsIFdU
Rjo6VVJMJiYpOworCisgICAgV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZTsKKyAgICBXVEY6OlVS
TCBtX29yaWdpbmFsVVJMOworICAgIFdlYWtQdHI8V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
PiBtX25ldHdvcmtQcm9jZXNzOworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAg
IFJlZjxEYXRhVGFza0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFza0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURhdGFUYXNrQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDJjOWIwNDY0ZWJjOTM4ZDQ4NWU0ODIzOWRlZTllZmUxZjE5MzYwMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEYXRhVGFza0NsaWVu
dC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKKyNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBS
ZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGE7CisKK2NsYXNzIERhdGFU
YXNrQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRhc2tDbGllbnQ+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERhdGFUYXNrQ2xp
ZW50PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUYXNrQ2xpZW50KTsgfQor
ICAgIHZpcnR1YWwgfkRhdGFUYXNrQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShEYXRhVGFzayYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oRGF0YVRhc2sm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dCB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShEYXRhVGFzayYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShE
YXRhVGFzayYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIGNvbnN0IHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihEYXRhVGFzayYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJikgY29uc3QgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb25DbGll
bnQuaAppbmRleCAyZmVlZjYwODJhMDY0NTc2ZTc4NDNhZDYyNjQ2NDE3MzAxZGJiNGQ3Li5lZWNm
Yjc4MWZjMjIzNmUwY2YzYzAxNjg3OTIwNGVjMzIzMjJjZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbkNsaWVudC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgQVBJIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMwMTQzMjA4Mjc4N2Qz
MGU3ODhiZTNlNTBlN2E1OGEyYzZkYmVlNzUuLmYyNGI3MWJhNjBkNTVmMWZlOTljNDdmZDc3NjBl
MjBlNzZjNmViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJBUElEYXRhVGFzay5oIgogI2ltcG9y
dCAiQVBJRm9ybUNsaWVudC5oIgogI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9y
dCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTk5LDYgKzEwMCw3IEBACiAjaW1wb3J0ICJf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tBcHBIaWdobGln
aHREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXBwSGlnaGxpZ2h0SW50ZXJuYWwuaCIKKyNpbXBv
cnQgIl9XS0RhdGFUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0RpYWdub3N0aWNMb2dnaW5n
RGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRnJh
bWVIYW5kbGVJbnRlcm5hbC5oIgpAQCAtMjIyNCwxMiArMjIyNiwxMCBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyhOU0FycmF5PF9XS1RleHRNYW5p
cHVsYXRpb25JdAogI2VuZGlmCiB9CiAKLS0gKHZvaWQpX3JlcXVlc3RSZXNvdXJjZTooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0RhdGEgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kYXRh
VGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKF9XS0RhdGFUYXNrICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgX3BhZ2Ut
PnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYmIGVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
LCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOworICAgIF9wYWdlLT5kYXRhVGFza1dpdGhS
ZXF1ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChSZWY8QVBJOjpEYXRhVGFzaz4mJiB0YXNrKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIodGFzaykpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBm
OGJjMzAzNTExYzVkYjY4MzdjMjM1MjEyNjdhMTkzNjc1MDgxMTNmLi40MzVlZjE2ZDY4NDEzZWZh
MzA0OTY1MWVmYzJmZDc1Y2IzMzQyMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBjbGFzcyBXS0Zy
YW1lSW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBjbGFzcyBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0OworQGNsYXNzIF9XS0RhdGFUYXNrOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxl
OwogQGNsYXNzIF9XS0ZyYW1lVHJlZU5vZGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsKQEAg
LTQyNyw3ICs0MjgsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfc3RhcnRJbWFn
ZUFuYWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLSAodm9pZClfcmVxdWVzdFJlc291cmNl
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0
YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X2RhdGFUYXNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoX1dLRGF0YVRhc2sgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tEaXNwbGF5Q2FwdHVyZVN0YXRlKSB7CiAgICAgV0tEaXNwbGF5
Q2FwdHVyZVN0YXRlTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0RhdGFUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZjZjg2OGE1OTFkZDY3OWY2NzE0ZjljYzRhNWFl
YTk3M2JhOWYxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEYXRhVGFzay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0Bwcm90b2NvbCBfV0tEYXRhVGFza0RlbGVn
YXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLRGF0YVRhc2sg
OiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKysgKGlu
c3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKKy8vIERlbGVnYXRlIGlzIHN0cm9uZ2x5
IHJlZmVyZW5jZWQgdW50aWwgdGhlIHRhc2sgY29tcGxldGVzLCBhZnRlciB3aGljaCBpdCBpcwor
Ly8gcmVzZXQgdG8gYG5pbGAuCitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBpZCA8X1dL
RGF0YVRhc2tEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIHdlYWspIFdLV2ViVmlldyAqd2ViVmlldzsKKy0gKHZvaWQpY2FuY2VsOworCitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0RhdGFUYXNrLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0RhdGFUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZjdmNzJhZWE0MTYwOTg1ZDJhZDNi
MzQwZjRmZWFhYmRhN2VlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2subW0KQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0RhdGFUYXNrSW50ZXJuYWwuaCIK
KworI2ltcG9ydCAiQVBJRGF0YVRhc2suaCIKKyNpbXBvcnQgIkFQSURhdGFUYXNrQ2xpZW50Lmgi
CisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKKyNp
bXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgorI2ltcG9ydCAiX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisK
K2NsYXNzIFdLRGF0YVRhc2tDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEYXRhVGFza0NsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXS0RhdGFUYXNrQ2xpZW50PiBjcmVhdGUoaWQg
PF9XS0RhdGFUYXNrRGVsZWdhdGU+IGRlbGVnYXRlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdL
RGF0YVRhc2tDbGllbnQoZGVsZWdhdGUpKTsgfQorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXS0Rh
dGFUYXNrQ2xpZW50KGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAg
OiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlv
bkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KV0pCisg
ICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZVJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lv
bkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZURhdGEoW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6
KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkQ29tcGxldGVXaXRoRXJyb3IoW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YVRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6KV0pIHsgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKEFQSTo6RGF0YVRhc2sm
IHRhc2ssIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUsIHsgfSk7CisgICAgICAgIGF1dG8gY2hl
Y2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgICAgIFttX2RlbGVnYXRl
IGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Om1hYyhjaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6dG9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgV2ViQ29yZTo6Q3JlZGVudGlh
bChjcmVkZW50aWFsKSk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKEFQSTo6RGF0YVRhc2smIHRhc2ssIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25k
c1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBz
ZWxlY3RvcihkYXRhVGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRl
Y2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0
YXNrKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCkgbmV3UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJD
b3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpIGRlY2lzaW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoX1dLRGF0YVRhc2tSZWRpcmVjdFBv
bGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocG9saWN5ID09IF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3lBbGxv
dyk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShBUEk6OkRhdGFUYXNrJiB0YXNrLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKKyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9y
KGRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAg
IFttX2RlbGVnYXRlIGRhdGFUYXNrOndyYXBwZXIodGFzaykgZGlkUmVjZWl2ZVJlc3BvbnNlOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3kgcG9saWN5KSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBv
bGljeSA9PSBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICB9KS5nZXQo
KV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShBUEk6OkRhdGFUYXNrJiB0YXNr
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVEYXRhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBbbV9kZWxlZ2F0ZSBkYXRhVGFzazp3cmFwcGVyKHRh
c2spIGRpZFJlY2VpdmVEYXRhOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6
ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSkuZ2V0KCldOworICAgIH0KKworICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoQVBJOjpEYXRhVGFzayYgdGFzaywgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmIGVycm9yKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2Rl
bGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgW21fZGVsZWdhdGUgZGF0YVRhc2s6d3JhcHBlcih0YXNrKSBkaWRD
b21wbGV0ZVdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICB3cmFwcGVyKHRhc2sp
LT5fZGVsZWdhdGUgPSBuaWw7CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPF9XS0RhdGFU
YXNrRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb1dp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJl
Y2VpdmVSZXNwb25zZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlRGF0YSA6
IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRDb21wbGV0ZVdpdGhFcnJvciA6IDE7Cit9Owor
CitAaW1wbGVtZW50YXRpb24gX1dLRGF0YVRhc2sKKworLSAodm9pZCljYW5jZWwKK3sKKyAgICBf
ZGF0YVRhc2stPmNhbmNlbCgpOworICAgIF9kZWxlZ2F0ZSA9IG5pbDsKK30KKworLSAoV0tXZWJW
aWV3ICopd2ViVmlldworeworICAgIGF1dG8qIHBhZ2UgPSBfZGF0YVRhc2stPnBhZ2UoKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHBhZ2UtPmNvY29h
VmlldygpLmdldCgpOworfQorCistIChpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUK
K3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpOworfQorCistICh2b2lkKXNldERlbGVnYXRl
OihpZCA8X1dLRGF0YVRhc2tEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBfZGF0YVRhc2stPnNldENsaWVudChXS0RhdGFUYXNrQ2xpZW50OjpjcmVh
dGUoZGVsZWdhdGUpKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVP
YmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluUnVuTG9vcChfV0tEYXRhVGFzay5jbGFzcywgc2Vs
ZikpCisgICAgICAgIHJldHVybjsKKyAgICBfZGF0YVRhc2stPn5EYXRhVGFzaygpOworICAgIFtz
dXBlciBkZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxl
bWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpf
ZGF0YVRhc2s7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEYXRhVGFza0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYzg3YmViZWQ5
YjRjOTEwMjk3NWNjMDEzZTQzYWMzOGY5NGViMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIF9XS0RhdGFUYXNrOwor
Cit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5KSB7
CisgICAgX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUNhbmNlbCwKKyAgICBfV0tEYXRhVGFza1Jl
ZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0RhdGFU
YXNrUmVzcG9uc2VQb2xpY3kpIHsKKyAgICBfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5Q2FuY2Vs
LAorICAgIF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxvdywKK30gV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworQHByb3RvY29sIF9XS0RhdGFUYXNrRGVsZWdhdGUgPE5TT2JqZWN0PgorCitA
b3B0aW9uYWwKKworLSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2Ug
bmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQp
ZGF0YVRhc2s6KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tEYXRhVGFz
a1Jlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKWRhdGFUYXNrOihfV0tE
YXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhOworLSAodm9p
ZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRDb21wbGV0ZVdpdGhFcnJvcjoo
bnVsbGFibGUgTlNFcnJvciAqKWVycm9yOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0RhdGFU
YXNrSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEYXRh
VGFza0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU2NTlmMjg5ZTcyMTBlNDIyOGFjYTlkY2EzMDY4
NWZiZDUzZmZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEYXRhVGFza0ludGVybmFsLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgIkFQSURhdGFUYXNrLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9y
dCAiX1dLRGF0YVRhc2suaCIKKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OkRhdGFU
YXNrPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRGF0YVRhc2s7Cit9OworCit9CisK
K0BpbnRlcmZhY2UgX1dLRGF0YVRhc2sgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQ
STo6T2JqZWN0U3RvcmFnZTxBUEk6OkRhdGFUYXNrPiBfZGF0YVRhc2s7CisgICAgUmV0YWluUHRy
PGlkIDxfV0tEYXRhVGFza0RlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDU3ZGU4YjFmNjU4NjZmYjFmY2Y3YmQxOGJiYjY4ZDIwYzE1YWU5ZmMuLjVmODY1
YjZlZTE4MGRmYmU4ZDVmZDI1YjcyZjE5OWEwMTVhMTQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVk
ZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJRGF0YVRh
c2suaCIKKyNpbmNsdWRlICJBUElEYXRhVGFza0NsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmln
YXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCkBAIC02MSw2ICs2Myw3IEBACiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVu
dE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dy
ZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTMzNywx
NCArMzQwLDYxIEBAIERvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURv
d25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0CiAgICAgcmV0dXJuIG1fZG93bmxv
YWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCBy
ZXNvdXJjZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhVGFzayYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNv
dXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShy
ZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShi
dWZmZXIpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRhdGFUYXNrV2l0aFJlcXVlc3Qo
cGFnZS5pZGVudGlmaWVyKCksIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZShyZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB3ZWFrUGFnZSA9IFdlYWtQdHIgeyBwYWdlIH0sIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9yaWdpbmFsVVJMID0gcmVxdWVzdC51cmwoKV0g
KERhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgTUVTU0FH
RV9DSEVDSyhkZWNsdHlwZShtX2RhdGFUYXNrcyk6OmlzVmFsaWRLZXkoaWRlbnRpZmllcikpOwor
ICAgICAgICBhdXRvIGRhdGFUYXNrID0gQVBJOjpEYXRhVGFzazo6Y3JlYXRlKGlkZW50aWZpZXIs
IFdURk1vdmUod2Vha1BhZ2UpLCBXVEZNb3ZlKG9yaWdpbmFsVVJMKSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGRhdGFUYXNrKTsKKyAgICAgICAgbV9kYXRhVGFza3MuYWRkKGlkZW50aWZp
ZXIsIFdURk1vdmUoZGF0YVRhc2spKTsKICAgICB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKERhdGFUYXNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NB
R0VfQ0hFQ0soZGVjbHR5cGUobV9kYXRhVGFza3MpOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpKTsK
KyAgICBpZiAoYXV0byB0YXNrID0gbV9kYXRhVGFza3MuZ2V0KGlkZW50aWZpZXIpKQorICAgICAg
ICB0YXNrLT5jbGllbnQoKS5kaWRSZWNlaXZlQ2hhbGxlbmdlKCp0YXNrLCBXVEZNb3ZlKGNoYWxs
ZW5nZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVj
dFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlLCB7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oRGF0YVRhc2tJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0
eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYgKGF1dG8g
dGFzayA9IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+Y2xpZW50
KCkud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oKnRhc2ssIFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGF0YVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoRGF0YVRhc2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBNRVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVu
dGlmaWVyKSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVy
KSkKKyAgICAgICAgdGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKCp0YXNrLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoRGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBNRVNTQUdFX0NIRUNL
KGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVyKSk7CisgICAgaWYg
KGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgdGFzay0+
Y2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKnRhc2ssIGRhdGEpOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoRGF0YVRhc2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikKK3sKKyAgICBN
RVNTQUdFX0NIRUNLKGRlY2x0eXBlKG1fZGF0YVRhc2tzKTo6aXNWYWxpZEtleShpZGVudGlmaWVy
KSk7CisgICAgaWYgKGF1dG8gdGFzayA9IG1fZGF0YVRhc2tzLnRha2UoaWRlbnRpZmllcikpCisg
ICAgICAgIHRhc2stPmNsaWVudCgpLmRpZENvbXBsZXRlV2l0aEVycm9yKCp0YXNrLCBXVEZNb3Zl
KGVycm9yKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2FuY2VsRGF0YVRhc2so
RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
K3sKKyAgICBtX2RhdGFUYXNrcy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkNhbmNlbERhdGFUYXNrKGlkZW50aWZpZXIsIHNlc3Npb25JRCks
IDApOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkZldGNoV2Vi
c2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucyksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTM4NCw2ICs0MzQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKFRlcm1pbmF0aW9uUmVhc29uIHJlYXNv
bikKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKCp0aGlz
LCByZWFzb24pOwogICAgIGZvciAoYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA6IGNvcHlUb1ZlY3Rv
ck9mPFJlZjxXZWJzaXRlRGF0YVN0b3JlPj4obV93ZWJzaXRlRGF0YVN0b3JlcykpCiAgICAgICAg
IHdlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKCp0aGlzKTsKKyAg
ICBmb3IgKGF1dG8mIHRhc2sgOiBtX2RhdGFUYXNrcy52YWx1ZXMoKSkKKyAgICAgICAgdGFzay0+
Y2xpZW50KCkuZGlkQ29tcGxldGVXaXRoRXJyb3IodGFzaywgV2ViQ29yZTo6aW50ZXJuYWxFcnJv
cih0YXNrLT5vcmlnaW5hbFVSTCgpKSk7CisgICAgbV9kYXRhVGFza3MuY2xlYXIoKTsKIH0KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggM2Qz
NTQ0ZGNiOTc2MGQ2ZTMzNzI3NWQ2MmE1MzYxYzliMTk1YzRlMC4uYzNlN2FiN2Q2NGMyN2UwNzBl
YThkOTI0MDVlZTQ5ZTI5OTMzMjVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI3LDYgKzI3LDggQEAKIAog
I2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNz
UHJveHkuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRGF0YVRhc2tJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLmgiCkBAIC01OCw2ICs2MCw3IEBAIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudDsKK2NsYXNzIERhdGFUYXNrOwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTEyNiw3ICsx
MjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRl
RG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVBy
b3h5KiBvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYp
OworICAgIHZvaWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJQYWdlUHJveHkmLCBQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
QVBJOjpEYXRhVGFzayYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0
YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMjg5LDYgKzI5MiwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVz
aEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYp
OwogCisgICAgdm9pZCBkYXRhVGFza1JlY2VpdmVkQ2hhbGxlbmdlKERhdGFUYXNrSWRlbnRpZmll
ciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50
aWFsJiYpPiYmKTsKKyAgICB2b2lkIGRhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
RGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIGRhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKERhdGFUYXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIGRhdGFUYXNrRGlkUmVjZWl2ZURhdGEoRGF0YVRhc2tJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRhdGFUYXNrRGlkQ29tcGxldGVX
aXRoRXJyb3IoRGF0YVRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwor
ICAgIHZvaWQgY2FuY2VsRGF0YVRhc2soRGF0YVRhc2tJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCkBA
IC0zOTgsNiArNDA4LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYWtIYXNoU2V0PFdlYnNpdGVEYXRh
U3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZXM7CiAgICAgVW5pcXVlUmVmPFdlYkNvb2tpZU1hbmFn
ZXJQcm94eT4gbV9jb29raWVNYW5hZ2VyOworICAgIEhhc2hNYXA8RGF0YVRhc2tJZGVudGlmaWVy
LCBSZWY8QVBJOjpEYXRhVGFzaz4+IG1fZGF0YVRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTNhYmJiNDY4ZjViM2Fk
MDc3ZWI2NDZhNjkyY2M3YmY5Mjk1NGRmMC4uNTRlNDYzY2E4OWY1ZWE4MTg4NDZiMmJhMDEwMGZl
ZDExOGZlY2NmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtODksNCArODks
MTIgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAj
aWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUlfVVNFU19TQ0VORSkKICAgICBHZXRXaW5kb3dT
Y2VuZUlkZW50aWZpZXJGb3JQYXltZW50UHJlc2VudGF0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJZGVudGlmaWVyKSAtPiAoU3RyaW5nIHNjZW5lSUQpIEFz
eW5jCiAjZW5kaWYKKworICAgIERhdGFUYXNrUmVjZWl2ZWRDaGFsbGVuZ2UoV2ViS2l0OjpEYXRh
VGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgY2hhbGxlbmdlKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50
aWFsKSBBc3luYworICAgIERhdGFUYXNrV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViS2l0
OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpIC0+IChib29sIGFs
bG93ZWQpIEFzeW5jCisgICAgRGF0YVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpEYXRh
VGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSkgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKKyAgICBEYXRhVGFza0RpZFJlY2VpdmVEYXRh
KFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhKQorICAgIERhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpEYXRhVGFz
a0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjU5YWU3
M2VjYjkyMTM1ZjA5YTk2NTAxYjMzZWQyYTQxZDM1MzMxOS4uNWI1NmQwNmVkMGJiMWRlYmUwMmYy
OGUwYjI3Njg4NjI2NGI3Mzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC02NDcwLDkgKzY0NzAsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAg
IGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6
OmRhdGFUYXNrV2l0aFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJl
c291cmNlKGlkZW50aWZpZXIoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1By
b2Nlc3MoKS5kYXRhVGFza1dpdGhSZXF1ZXN0KCp0aGlzLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMmE4YTlmYzgwMDA0NjQzZmU1Yjk3MGM3
OWZjMjVjOGQzOTdmYzQ3Ny4uNzUzNmQ2ZTFkNTA3YzRiODVmODNlZGNkNDY0ZGQwYWUyNWU5ZjIx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwMSw2ICsyMDEs
NyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29y
bGQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudDsKK2NsYXNzIERhdGFUYXNrOwogY2xhc3MgRGVz
dGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwpAQCAt
MTM4Nyw3ICsxMzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0
YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSop
PiYmKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYp
OworICAgIHZvaWQgZGF0YVRhc2tXaXRoUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGFUYXNrJik+JiYpOwogCiAgICAgdm9p
ZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAg
ICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIuaAppbmRleCAzYzI1YzUwYThl
YjBmNDBkNDgzNzQ1MDUzOGQzZmI2MjcxMDE0NTIxLi5jZGJiZDgwMDZjNzUwMDUwYjUxZjE2ZjMy
OTRiODUyMDljMjdjMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tIb3ZlclBsYXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3Zl
clBsYXR0ZXIuaApAQCAtMjcsNiArMjcsMTYgQEAKIAogI2ltcG9ydCAiTmF0aXZlV2ViTW91c2VF
dmVudC5oIgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFJlY3Q7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
Oworc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OworfQorCitAY2xhc3MgVUlW
aWV3OwogQGNsYXNzIFdLSG92ZXJQbGF0dGVyOwogCiBAcHJvdG9jb2wgV0tIb3ZlclBsYXR0ZXJE
ZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQ
bGF0dGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1t
CmluZGV4IDNhYjVjMWQ3ZjMwZmIzYzc5NDkwYzBlYWMwMmVjNDgxMjc4NTQ3NDkuLjQwNDI2MDUx
NjJiNzkxM2I4OTVhNTEzODM1YTMxMjE5ZjBlMTdlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0KQEAgLTI5LDkgKzI5LDExIEBACiAjaWYgSEFW
RShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAKICNpbXBvcnQgIldLSG92ZXJQbGF0dGVyUGFy
YW1ldGVycy5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0
aFV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KIAogc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVCYXNl
QW5pbWF0aW9uKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDUyYjU0NDYwZWQ4ZDNlYTczOTBjYzk1NWU2NjU5NTBkOWYxYjAwZGEu
LjA2ZWE4MTg5ZmEyYmY4NmVlYmZkNzdjNmM1NjBkODA4MjgxMDVlM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyOCw2ICsxMjI4
LDggQEAKIAkJNUMyMEY2NzkyNzZBNkRCNjAwNkNBQzIyIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0Q2MTA0MTNB
N0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgKi87IH07CiAJCTVDMjY5NTg1MjAw
NDMyMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI2OTU4NDIwMDQyRjEyMDA1
QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFG
RSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQu
aCAqLzsgfTsKKwkJNUMyQzZGQTkyN0M5RTVFMjAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzJDNkZBNDI3Qzk1
Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1QzJDNkZBQTI3QzlFNUVCMDBDQ0RBOUUgLyogX1dLRGF0
YVRhc2tEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMyQzZGQTMyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzJENTc0
ODI1N0ZGQTRCMDA2NzlBNzIgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkQ1NzQ3MjU3RkZBMTIwMDY3
OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMkVCREZBMjU2NDM4MEIwMEQ1NUIwNSAvKiBX
S0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMzU5QzBE
MjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0Rl
cHJlY2F0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDkyMSw2ICs0OTIzLDE2IEBACiAJCTVDMkIxQUYzMjIzQUI3MjgwMEI5MUNGNyAvKiBE
b3dubG9hZE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RG93bmxvYWRNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyQjFB
RjQyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMyQjFBRjUyMjNDMUZEMjAwQjkxQ0Y3IC8qIERvd25sb2FkUHJveHlNYXBDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERvd25sb2FkUHJv
eHlNYXBDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGOUUyN0M5
NTIzNTAwQ0NEQTlFIC8qIEFQSURhdGFUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSURhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkM2
RjlGMjdDOTUyMzUwMENDREE5RSAvKiBBUElEYXRhVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBUElEYXRhVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDMkM2RkEwMjdDOTUyMzUwMENDREE5RSAvKiBBUElEYXRhVGFza0NsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElEYXRhVGFza0NsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBMjI3Qzk1Mjk5MDBDQ0RBOUUgLyog
X1dLRGF0YVRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tEYXRhVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTMyN0M5
NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QzJDNkZBNDI3Qzk1Mjk5MDBDQ0RBOUUgLyogX1dLRGF0YVRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRGF0YVRhc2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUMyQzZGQTUyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNr
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRGF0YVRhc2tJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBNjI3Qzk1OEZD
MDBDQ0RBOUUgLyogRGF0YVRhc2tJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGFUYXNrSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzJDNkZBNzI3Qzk2RkY5MDBDQ0RBOUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tVUkxTZXNzaW9u
VGFza0RlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJDNkZBODI3
Qzk2RkY5MDBDQ0RBOUUgLyogV0tVUkxTZXNzaW9uVGFza0RlbGVnYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJENTc0NzI1N0ZGQTEyMDA2NzlBNzIgLyogV0tDb250
ZXh0RG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tD
b250ZXh0RG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMy
RUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzMwNSw2ICs3MzE3LDcgQEAKIAkJCQk1MTA2RDdCRjE4
QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEw
NkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLywKIAkJ
CQk5OUY2NDJEMjFGQUJFMzc4MDA5NjIxRTkgLyogQ29vcmRpbmF0ZVN5c3RlbS5oICovLAorCQkJ
CTVDMkM2RkE2MjdDOTU4RkMwMENDREE5RSAvKiBEYXRhVGFza0lkZW50aWZpZXIuaCAqLywKIAkJ
CQk5OTAzNkFFODIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmNwcCAqLywK
IAkJCQk5OTAzNkFFNzIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmggKi8s
CiAJCQkJMEYxODlDQUIyNDc0OUYyRjAwRTU4RDgxIC8qIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5o
ICovLApAQCAtODg4MCw2ICs4ODkzLDEwIEBACiAJCQkJNUM1RDIzODkyMjdBMTg5MjAwMEI5QkRB
IC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oICovLAogCQkJCTVDNUQyMzg4MjI3QTE4OTIwMDBC
OUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi8sCiAJCQkJNUM1RDIzODcyMjdBMTg5
MTAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmggKi8sCisJCQkJNUMy
QzZGQTQyN0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLmggKi8sCisJCQkJNUMyQzZGQTIy
N0M5NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLm1tICovLAorCQkJCTVDMkM2RkEzMjdDOTUy
OTkwMENDREE5RSAvKiBfV0tEYXRhVGFza0RlbGVnYXRlLmggKi8sCisJCQkJNUMyQzZGQTUyN0M5
NTI5OTAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrSW50ZXJuYWwuaCAqLywKIAkJCQk4Mzg5MUI2ODFB
NjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oICovLAogCQkJ
CUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICovLAogCQkJCUExQTRG
RTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLywKQEAgLTEwNDg1LDYgKzEw
NTAyLDggQEAKIAkJCQk1QzIwQ0I5QjFCQjBEQ0QyMDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb25D
b2NvYS5tbSAqLywKIAkJCQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNFMjYgLyogV2ViU29ja2V0VGFz
a0NvY29hLmggKi8sCiAJCQkJNDEyODdENEIyMjVDMDVDNDAwOUEzRTI2IC8qIFdlYlNvY2tldFRh
c2tDb2NvYS5tbSAqLywKKwkJCQk1QzJDNkZBODI3Qzk2RkY5MDBDQ0RBOUUgLyogV0tVUkxTZXNz
aW9uVGFza0RlbGVnYXRlLmggKi8sCisJCQkJNUMyQzZGQTcyN0M5NkZGOTAwQ0NEQTlFIC8qIFdL
VVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTEzMjcsNiArMTEzNDYsOSBAQAogCQkJCTVD
RTBDMzY3MjI5RjJEM0UwMDM2OTVGMCAvKiBBUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8s
CiAJCQkJNUM1RDIzOEEyMjdBMUQ5QjAwMEI5QkRBIC8qIEFQSUN1c3RvbUhlYWRlckZpZWxkcy5o
ICovLAogCQkJCTdBODIxRjRGMUUyRjdBNUMwMDYwNDU3NyAvKiBBUElDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaCAqLywKKwkJCQk1QzJDNkY5RjI3Qzk1MjM1MDBDQ0RBOUUgLyogQVBJRGF0
YVRhc2suY3BwICovLAorCQkJCTVDMkM2RjlFMjdDOTUyMzUwMENDREE5RSAvKiBBUElEYXRhVGFz
ay5oICovLAorCQkJCTVDMkM2RkEwMjdDOTUyMzUwMENDREE5RSAvKiBBUElEYXRhVGFza0NsaWVu
dC5oICovLAogCQkJCTk5MDM2QUU0MjNBOTU4NzQwMDAwQjA2QSAvKiBBUElEZWJ1Z2dhYmxlSW5m
by5jcHAgKi8sCiAJCQkJOTkwMzZBRTMyM0E5NTg3NDAwMDBCMDZBIC8qIEFQSURlYnVnZ2FibGVJ
bmZvLmggKi8sCiAJCQkJODM4OTFCNjIxQTY4QjM0MjAwMzBGMzg2IC8qIEFQSURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmggKi8sCkBAIC0xMjkyOCw2ICsxMjk1MCw4IEBACiAJCQkJNUM0NjA5RTgy
MjQzMTdCQjAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTU3MDRGODFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1l
bnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1RDIzOEMyMjdBMkNEQTAwMEI5
QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMyQzZG
QTkyN0M5RTVFMjAwQ0NEQTlFIC8qIF9XS0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
QzJDNkZBQTI3QzlFNUVCMDBDQ0RBOUUgLyogX1dLRGF0YVRhc2tEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM4OTFCNjkxQTY4QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dn
aW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4
QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNjExOERENTRBNDAw
QjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ0M2I4ZjJkNDViYjJh
YjdmZGM5MjBkNzczOWYzNDc5YzM1YjA2NzAuLjc4YzliNDYzZTkwNTBlYjdlY2JmZGYyOTA0YWE1
NGJjNmE3ZjhlNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgX1dLRGF0YVRhc2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tOgorICAgICAgICAoLVtUZXN0RGF0
YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REYXRhVGFza0RlbGVnYXRlIGRh
dGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1Rlc3REYXRhVGFza0RlbGVnYXRlIGRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAg
ICAoLVtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBkYXRhVGFzazpkaWRDb21wbGV0ZVdpdGhFcnJvcjpd
KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAzLTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENsaXBib2FyZCBQYXN0ZSBkaWFsb2cgZG9lc24n
dCBzaG93IG9uIGV4dGVybmFsIG1vbml0b3JzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQppbmRleCBiMTFjNjllMjM1
NGNhZjQ0Y2RkYzAwZTFlMzE5MmNlNGY4NjMyOGJkLi4xYzVlZjFiNzZlNWUwMTY0NTQzZjRmMTQ5
YmRjYmQ4YTBlNWU2NzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KQEAgLTMzLDYgKzMzLDggQEAKICNpbXBv
cnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEYXRhVGFzay5oPgorI2ltcG9ydCA8V2ViS2l0L19X
S0RhdGFUYXNrRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CkBAIC0zNTIsNyArMzU0LDU5IEBAIFRFU1QoTmV0d29ya1Byb2Nlc3MsIEJy
b2FkY2FzdENoYW5uZWxDcmFzaFJlY292ZXJ5KQogICAgIEVYUEVDVF9FUSh3ZWJQSUQyLCBbd2Vi
VmlldzIgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiB9CiAKLVRFU1QoTmV0d29ya1Byb2Nlc3Ms
IExvYWRSZXNvdXJjZSkKKyNpZiBIQVZFKE5TVVJMU0VTU0lPTl9UQVNLX0RFTEVHQVRFKQorCitA
aW50ZXJmYWNlIFRlc3REYXRhVGFza0RlbGVnYXRlIDogTlNPYmplY3Q8X1dLRGF0YVRhc2tEZWxl
Z2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQoXmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRGF0YVRhc2sgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqLCB2b2lkKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkKF53
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikoX1dLRGF0YVRhc2sgKiwgTlNIVFRQVVJMUmVzcG9u
c2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQoXikoX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeSkp
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2Up
KF9XS0RhdGFUYXNrICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAoXikoX1dLRGF0YVRhc2tSZXNw
b25zZVBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNl
aXZlRGF0YSkoX1dLRGF0YVRhc2sgKiwgTlNEYXRhICopOworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kaWRDb21wbGV0ZVdpdGhFcnJvcikoX1dLRGF0YVRhc2sgKiwgTlNFcnJv
ciAqKTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdERhdGFUYXNrRGVsZWdhdGUKKwor
LSAodm9pZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVu
Z2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
aWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZGF0YVRhc2ssIGNoYWxsZW5nZSwgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKK30KKworLSAodm9p
ZClkYXRhVGFzazooX1dLRGF0YVRhc2sgKilkYXRhVGFzayB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRGF0YVRhc2tSZWRpcmVj
dFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgaWYgKF93aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbikKKyAgICAgICAgX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGRhdGFUYXNrLCBy
ZXNwb25zZSwgcmVxdWVzdCwgZGVjaXNpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGRl
Y2lzaW9uSGFuZGxlcihfV0tEYXRhVGFza1JlZGlyZWN0UG9saWN5QWxsb3cpOworfQorCistICh2
b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVSZXNwb25zZToo
TlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLRGF0
YVRhc2tSZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVRhc2ssIHJlc3Bv
bnNlLCBkZWNpc2lvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVy
KF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpZGF0YVRhc2s6
KF9XS0RhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sK
KyAgICBpZiAoX2RpZFJlY2VpdmVEYXRhKQorICAgICAgICBfZGlkUmVjZWl2ZURhdGEoZGF0YVRh
c2ssIGRhdGEpOworfQorCistICh2b2lkKWRhdGFUYXNrOihfV0tEYXRhVGFzayAqKWRhdGFUYXNr
IGRpZENvbXBsZXRlV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpZiAoX2RpZENv
bXBsZXRlV2l0aEVycm9yKQorICAgICAgICBfZGlkQ29tcGxldGVXaXRoRXJyb3IoZGF0YVRhc2ss
IGVycm9yKTsKK30KKworQGVuZAorCitURVNUKF9XS0RhdGFUYXNrLCBCYXNpYykKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICAgICBhdXRvIGh0bWwgPSAiPHNjcmlwdD5k
b2N1bWVudC5jb29raWU9J3Rlc3RrZXk9dmFsdWUnPC9zY3JpcHQ+IjsKQEAgLTM3NywyNCArNDMx
LDIzMCBAQCBURVNUKE5ldHdvcmtQcm9jZXNzLCBMb2FkUmVzb3VyY2UpCiAgICAgW3Bvc3RSZXF1
ZXN0IHNldEhUVFBNZXRob2Q6QCJQT1NUIl07CiAgICAgYXV0byByZXF1ZXN0Qm9keSA9ICJyZXF1
ZXN0IGJvZHkiOwogICAgIFtwb3N0UmVxdWVzdCBzZXRIVFRQQm9keTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6cmVxdWVzdEJvZHkgbGVuZ3RoOnN0cmxlbihyZXF1ZXN0Qm9keSldXTsKLSAgICBbd2Vi
VmlldyBfcmVxdWVzdFJlc291cmNlOnBvc3RSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNEYXRhICpkYXRhLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3Ip
IHsKLSAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBwb3N0UmVxdWVzdC5nZXQoKS5VUkwuYWJzb2x1
dGVTdHJpbmcpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgsIHN0cmxlbihzZWNvbmRS
ZXNwb25zZSkpOwotICAgICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGRhdGEuYnl0ZXMsIHNlY29u
ZFJlc3BvbnNlLCBkYXRhLmxlbmd0aCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICBbd2Vi
VmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpwb3N0UmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9
IGRlbGVnYXRlLmdldCgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSA9
IGZhbHNlOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9X
S0RhdGFUYXNrICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5k
bGVyKShfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgcG9zdFJlcXVlc3QuZ2V0KCkuVVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIHJlY2VpdmVkUmVzcG9uc2UgPSB0cnVlOwor
ICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNrUmVzcG9uc2VQb2xpY3lBbGxv
dyk7CisgICAgICAgIH07CisgICAgICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBmYWxz
ZTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0RhdGFUYXNr
ICosIE5TRGF0YSAqZGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRSZXNw
b25zZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgsIHN0cmxlbihzZWNvbmRS
ZXNwb25zZSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBz
ZWNvbmRSZXNwb25zZSwgZGF0YS5sZW5ndGgpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkRGF0YSA9
IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZENvbXBsZXRlV2l0
aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAg
RVhQRUNUX1RSVUUocmVjZWl2ZWREYXRhKTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OwogICAgIH1dOwogICAgIFV0
aWw6OnJ1bigmZG9uZSk7CiAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihzZWNvbmRSZXF1ZXN0LmRh
dGEoKSwgIkNvb2tpZTogdGVzdGtleT12YWx1ZVxyXG4iLCBzZWNvbmRSZXF1ZXN0LnNpemUoKSkp
OwogICAgIEVYUEVDVF9XS19TVFJFUShIVFRQU2VydmVyOjpwYXJzZUJvZHkoc2Vjb25kUmVxdWVz
dCksIHJlcXVlc3RCb2R5KTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfcmVx
dWVzdFJlc291cmNlOltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJibG9iOmJsYW5rIl1dIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgIEVYUEVD
VF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yVW5zdXBwb3J0ZWRVUkwpOwotICAgICAgICBFWFBF
Q1RfTlVMTChkYXRhKTsKLSAgICAgICAgRVhQRUNUX05VTEwocmVzcG9uc2UpOwotICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEYXRhVGFzaz4gcmV0YWluZWRU
YXNrOworICAgIFt3ZWJWaWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJibG9iOmJsYW5rIl1dIGNvbXBsZXRp
b25IYW5kbGVyOl4oX1dLRGF0YVRhc2sgKnRhc2spIHsKKyAgICAgICAgcmV0YWluZWRUYXNrID0g
dGFzazsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFza0RlbGVn
YXRlIG5ld10pOworICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAg
ICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CisgICAgICAgIGRlbGVn
YXRlLmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZSA9IF4oX1dLRGF0YVRhc2sgKiwgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKF9XS0RhdGFUYXNrUmVzcG9u
c2VQb2xpY3kpKSB7CisgICAgICAgICAgICByZWNlaXZlZFJlc3BvbnNlID0gdHJ1ZTsKKyAgICAg
ICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVkRGF0YSA9IGZhbHNlOworICAgICAg
ICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlRGF0YSA9IF4oX1dLRGF0YVRhc2sgKiwgTlNEYXRh
ICpkYXRhKSB7CisgICAgICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAgICB9Owor
ICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRDb21wbGV0ZVdpdGhFcnJvciA9IF4oX1dLRGF0YVRh
c2sgKnRhc2ssIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UocmVj
ZWl2ZWRSZXNwb25zZSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWREYXRhKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21h
aW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JVbnN1cHBv
cnRlZFVSTCk7CisgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwodGFzay5kZWxlZ2F0ZSk7Cisg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworICAgIEVYUEVDVF9OT1RfTlVMTChyZXRhaW5lZFRhc2suZ2V0KCkpOworICAg
IEVYUEVDVF9OVUxMKHJldGFpbmVkVGFzay5nZXQoKS5kZWxlZ2F0ZSk7Cit9CisKK1RFU1QoX1dL
RGF0YVRhc2ssIENoYWxsZW5nZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
STsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihIVFRQU2VydmVyOjpyZXNwb25kV2l0aENoYWxsZW5n
ZVRoZW5PSywgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworCisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRGF0YVRhc2sgKnRhc2spIHsKKyAgICAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFza0RlbGVnYXRlIG5ld10pOworICAgICAg
ICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIF9fYmxvY2sgYm9vbCBy
ZWNlaXZlZFNlcnZlclRydXN0Q2hhbGxlbmdlID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sgYm9v
bCByZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSA9IGZhbHNlOworICAgICAgICBkZWxlZ2F0ZS5n
ZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKF9XS0RhdGFUYXNrICos
IE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqKSkgeworICAgICAgICAgICAgaWYgKFtjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kU2VydmVyVHJ1c3RdKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY2Vp
dmVkQmFzaWNBdXRoQ2hhbGxlbmdlKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UocmVj
ZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZWRTZXJ2
ZXJUcnVzdENoYWxsZW5nZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRp
YWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1
c3RdKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpYyk7CisgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRCYXNpY0F1dGhDaGFsbGVuZ2UpOworICAgICAgICAgICAg
RVhQRUNUX1RSVUUocmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSk7CisgICAgICAgICAgICBy
ZWNlaXZlZEJhc2ljQXV0aENoYWxsZW5nZSA9IHRydWU7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgbmlsKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIHJlY2VpdmVkRGF0YSA9IGZhbHNlOworICAg
ICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlRGF0YSA9IF4oX1dLRGF0YVRhc2sgKiwgTlNE
YXRhICpkYXRhKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZFJlc3BvbnNlID0g
IjxzY3JpcHQ+YWxlcnQoJ3N1Y2Nlc3MhJyk8L3NjcmlwdD4iOworICAgICAgICAgICAgRVhQRUNU
X0VRKGRhdGEubGVuZ3RoLCBzdHJsZW4oZXhwZWN0ZWRSZXNwb25zZSkpOworICAgICAgICAgICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChkYXRhLmJ5dGVzLCBleHBlY3RlZFJlc3BvbnNlLCBkYXRhLmxl
bmd0aCkpOworICAgICAgICAgICAgcmVjZWl2ZWREYXRhID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZ2V0KCkuZGlkQ29tcGxldGVXaXRoRXJyb3IgPSBeKF9XS0RhdGFUYXNr
ICosIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZERh
dGEpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRCYXNpY0F1dGhDaGFsbGVuZ2Up
OworICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTZXJ2ZXJUcnVzdENoYWxsZW5nZSk7
CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfTsKICAgICB9XTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogfQorCit2b2lk
IHNlbmRMb29wKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbiwgYm9vbCYgc2Vu
dFdpdGhFcnJvcikKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMoMTAwMCwgMCk7CisgICAg
Y29ubmVjdGlvbi5zZW5kQW5kUmVwb3J0RXJyb3IoV1RGTW92ZShieXRlcyksIFsmLCBjb25uZWN0
aW9uXSAoYm9vbCBzYXdFcnJvcikgeworICAgICAgICBpZiAoc2F3RXJyb3IpCisgICAgICAgICAg
ICBzZW50V2l0aEVycm9yID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VuZExv
b3AoY29ubmVjdGlvbiwgc2VudFdpdGhFcnJvcik7CisgICAgfSk7Cit9CisKK1RFU1QoX1dLRGF0
YVRhc2ssIENhbmNlbCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAg
ICBib29sIHNlbnRXaXRoRXJyb3IgeyBmYWxzZSB9OworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFsm
XSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhU
VFBSZXF1ZXN0KFsmLCBjb25uZWN0aW9uXSAoVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAg
IGF1dG8qIGhlYWRlciA9ICJIVFRQLzEuMSAyMDAgT0tcclxuXHJcbiI7CisgICAgICAgICAgICBj
b25uZWN0aW9uLnNlbmQoaGVhZGVyLCBbJiwgY29ubmVjdGlvbl0geworICAgICAgICAgICAgICAg
IHNlbmRMb29wKGNvbm5lY3Rpb24sIHNlbnRXaXRoRXJyb3IpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOworICAgIFt3ZWJWaWV3IF9kYXRhVGFza1dpdGhSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEYXRhVGFzayAqdGFzaykgeworICAgICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdERhdGFUYXNrRGVsZWdhdGUgbmV3XSk7CisgICAg
ICAgIHRhc2suZGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0
KCkuZGlkUmVjZWl2ZVJlc3BvbnNlID0gXihfV0tEYXRhVGFzayAqdGFzaywgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UsIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKF9XS0RhdGFUYXNrUmVzcG9uc2VQ
b2xpY3kpKSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLRGF0YVRhc2tSZXNwb25z
ZVBvbGljeUFsbG93KTsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxMKHRhc2suZGVs
ZWdhdGUpOworICAgICAgICAgICAgICAgIFt0YXNrIGNhbmNlbF07CisgICAgICAgICAgICAgICAg
RVhQRUNUX05VTEwodGFzay5kZWxlZ2F0ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJnNlbnRXaXRoRXJyb3IpOworCisgICAgX19ibG9jayBi
b29sIGNvbXBsZXRlZCB7IGZhbHNlIH07CisgICAgW3dlYlZpZXcgX2RhdGFUYXNrV2l0aFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNr
KSB7CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0
ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAg
ICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UgPSBeKF9XS0RhdGFUYXNrICp0YXNr
LCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlcikoX1dLRGF0
YVRhc2tSZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tE
YXRhVGFza1Jlc3BvbnNlUG9saWN5Q2FuY2VsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdh
dGUuZ2V0KCkuZGlkQ29tcGxldGVXaXRoRXJyb3IgPSBeKF9XS0RhdGFUYXNrICosIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VS
TEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVy
cm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIH07
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjb21wbGV0ZWQpOworfQorCitURVNUKF9XS0RhdGFU
YXNrLCBSZWRpcmVjdCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAg
ICBIVFRQU2VydmVyIHNlcnZlciB7IHsKKyAgICAgICAgeyAiLyIsIHsgMzAxLCB7IHsgIkxvY2F0
aW9uIiwgIi9yZWRpcmVjdFRhcmdldCIgfSwgeyAiQ3VzdG9tLU5hbWUiLCAiQ3VzdG9tLVZhbHVl
IiB9IH0gfSB9LAorICAgICAgICB7ICIvcmVkaXJlY3RUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAg
IH0gfTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAg
UmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7
CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkRGF0YSB7IGZhbHNlIH07CisgICAgW3dlYlZpZXcg
X2RhdGFUYXNrV2l0aFJlcXVlc3Q6c2VydmVyUmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgdGFzay5kZWxlZ2F0ZSA9IGRl
bGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS53aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbiA9IF4oX1dLRGF0YVRhc2sgKnRhc2ssIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkKF5kZWNpc2lvbkhhbmRsZXIpKF9XS0RhdGFU
YXNrUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc2VydmVy
UmVxdWVzdC5nZXQoKS5VUkwuYWJzb2x1dGVTdHJpbmcsIHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0
cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3NlcnZlclJlcXVlc3QuZ2V0KCku
VVJMLmFic29sdXRlU3RyaW5nIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAicmVkaXJlY3RUYXJn
ZXQiXSwgcmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKFtyZXNwb25zZSB2YWx1ZUZvckhUVFBIZWFkZXJGaWVsZDpAIkN1c3RvbS1OYW1lIl0s
ICJDdXN0b20tVmFsdWUiKTsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFz
a1JlZGlyZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQo
KS5kaWRSZWNlaXZlRGF0YSA9IF4oX1dLRGF0YVRhc2sgKiwgTlNEYXRhICpkYXRhKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5sZW5ndGgsIHN0cmxlbigiaGkiKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGRhdGEuYnl0ZXMsICJoaSIsIGRhdGEubGVuZ3RoKSk7Cisg
ICAgICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAg
IFV0aWw6OnJ1bigmcmVjZWl2ZWREYXRhKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgY29tcGxl
dGVkIHsgZmFsc2UgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRSZXNwb25zZSB7IGZhbHNl
IH07CisgICAgW3dlYlZpZXcgX2RhdGFUYXNrV2l0aFJlcXVlc3Q6c2VydmVyUmVxdWVzdC5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0RhdGFUYXNrICp0YXNrKSB7CisgICAgICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RGF0YVRhc2tEZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAg
dGFzay5kZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS53
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oX1dLRGF0YVRhc2sgKnRhc2ssIE5TSFRUUFVS
TFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkKF5kZWNpc2lv
bkhhbmRsZXIpKF9XS0RhdGFUYXNrUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoX1dLRGF0YVRhc2tSZWRpcmVjdFBvbGljeUNhbmNlbCk7CisgICAgICAgIH07
CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZSA9IF4oX1dLRGF0YVRh
c2sgKnRhc2ssIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5kbGVy
KShfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5nZXQoKS5VUkwu
YWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKCgoTlNIVFRQVVJMUmVzcG9u
c2UgKilyZXNwb25zZSkuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIHJlY2VpdmVkUmVz
cG9uc2UgPSB0cnVlOworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS0RhdGFUYXNrUmVz
cG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmdldCgpLmRp
ZENvbXBsZXRlV2l0aEVycm9yID0gXihfV0tEYXRhVGFzayAqLCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRSZXNwb25zZSk7CisgICAgICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlOworICAgICAg
ICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY29tcGxldGVkKTsKK30KKworVEVTVChfV0tE
YXRhVGFzaywgQ3Jhc2gpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7Cisg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoSFRUUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZGF0YVRhc2tXaXRoUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRGF0YVRhc2sgKnRhc2spIHsKKyAgICAg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REYXRhVGFza0RlbGVnYXRlIG5ld10pOwor
ICAgICAgICB0YXNrLmRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIGRlbGVnYXRl
LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZSA9IF4oX1dLRGF0YVRhc2sgKnRhc2ssIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShfV0tEYXRhVGFza1Jlc3Bv
bnNlUG9saWN5KSkgeworICAgICAgICAgICAga2lsbCh3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZS5fbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyLCBTSUdLSUxMKTsK
KyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tEYXRhVGFza1Jlc3BvbnNlUG9saWN5QWxs
b3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRDb21wbGV0ZVdpdGhF
cnJvciA9IF4oX1dLRGF0YVRhc2sgKiwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIFdlYktpdEVycm9yRG9tYWluKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCAzMDApOworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworI2VuZGlm
IC8vIEhBVkUoTlNVUkxTRVNTSU9OX1RBU0tfREVMRUdBVEUpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5oCmluZGV4IDc1ZDI4MmVhOWU0MGQyMTE1YWYxOTQ4YWQzZjhlYjhmYzYz
N2NjZDQuLjQ2MDMwMDk0OTExYzMyYmJjZDZhOTdiY2U3N2QyYjQ3ZTgyZDNlNWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIENv
bm5lY3Rpb24gewogcHVibGljOgogICAgIHZvaWQgc2VuZChTdHJpbmcmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdm9pZCBzZW5kKFZlY3Rvcjx1
aW50OF90PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsK
LSAgICB2b2lkIHNlbmQoUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29uc3Q7CisgICAgdm9pZCBzZW5kQW5kUmVwb3J0
RXJyb3IoVmVjdG9yPHVpbnQ4X3Q+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGNvbnN0OwogICAgIHZvaWQgcmVjZWl2ZUJ5dGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPHVpbnQ4X3Q+JiYpPiYmLCBzaXplX3QgbWluaW11bVNpemUgPSAxKSBjb25zdDsKICAgICB2
b2lkIHJlY2VpdmVIVFRQUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFy
PiYmKT4mJiwgVmVjdG9yPGNoYXI+JiYgYnVmZmVyID0geyB9KSBjb25zdDsKICAgICB2b2lkIHdl
YlNvY2tldEhhbmRzaGFrZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSB7IH0pOwpAQCAt
OTAsNiArOTAsOCBAQCBwcml2YXRlOgogICAgIENvbm5lY3Rpb24obndfY29ubmVjdGlvbl90IGNv
bm5lY3Rpb24pCiAgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pIHsgfQogCisgICAg
dm9pZCBzZW5kKFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGNvbnN0OworCiAgICAgUmV0YWluUHRyPG53X2Nvbm5lY3Rpb25fdD4g
bV9jb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9IVFRQU2VydmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
CmluZGV4IDg4ZDg2YmYxZDBjMTlmMGNjZjMwNWZkMDg1ZGFhNGQ3ODczNGQ0OTAuLmE2NWQ5MzEx
ZWQwNGNlY2I1N2I1ZDRiMDg0ZGJjNDdlMmY0MGE2NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIubW0KQEAgLTQxNCwxOSArNDE0LDMwIEBAIHZvaWQgQ29ubmVjdGlvbjo6
cmVjZWl2ZUhUVFBSZXF1ZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+JiYp
PiYmIGNvCiAKIHZvaWQgQ29ubmVjdGlvbjo6c2VuZChTdHJpbmcmJiBtZXNzYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgc2Vu
ZChkYXRhRnJvbVN0cmluZyhXVEZNb3ZlKG1lc3NhZ2UpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIHNlbmQoZGF0YUZyb21TdHJpbmcoV1RGTW92ZShtZXNzYWdlKSksIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8
dWludDhfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgc2VuZChkYXRhRnJvbVZlY3RvcihXVEZNb3ZlKG1lc3Nh
Z2UpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChi
b29sKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpz
ZW5kQW5kUmVwb3J0RXJyb3IoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBzZW5k
KGRhdGFGcm9tVmVjdG9yKFdURk1vdmUobWVzc2FnZSkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6c2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0
YV90PiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgY29uc3QKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0
YV90PiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgbndfY29ubmVjdGlvbl9zZW5kKG1fY29ubmVjdGlvbi5n
ZXQoKSwgbWVzc2FnZS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0VfQ09OVEVY
VCwgdHJ1ZSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNv
bXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCEhZXJyb3IpOwogICAgIH0pLmdldCgpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>