<?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>220974</bug_id>
          
          <creation_ts>2021-01-26 05:54:13 -0800</creation_ts>
          <short_desc>WebGL IPC should use shared memory for synchronous messages</short_desc>
          <delta_ts>2021-03-16 13:59:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local 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>
          <dependson>219641</dependson>
    
    <dependson>222305</dependson>
    
    <dependson>222546</dependson>
          <blocked>217211</blocked>
    
    <blocked>222726</blocked>
    
    <blocked>222722</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722476</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 05:54:13 -0800</bug_when>
    <thetext>WebGL IPC should send synchronised messages through the shared memory.

Also the replies should by default be written to the shared memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724629</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-02 05:55:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73876947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735224</commentid>
    <comment_count>2</comment_count>
      <attachid>422055</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-03 03:31:47 -0800</bug_when>
    <thetext>Created attachment 422055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738229</commentid>
    <comment_count>3</comment_count>
      <attachid>422055</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-10 14:14:01 -0800</bug_when>
    <thetext>Comment on attachment 422055
Patch

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

Nice speedup!

I think I may have spotted a small bug.

Can you re-check EWS (and the small bug) before landing?

&gt; Source/WebKit/Platform/IPC/Connection.h:326
&gt; +    bool pushPendingSyncRequestID(uint64_t syncRequestID = 0);

Can we remove the default 0 argument here? Feels like it might invite mistakes. Seems unused so far.

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:284
&gt; +#if PLATFORM(COCOA)
&gt; +        ClientLimit clientLimit = sharedClientLimit().exchange(ClientLimit::clientIsWaitingTag, std::memory_order_acq_rel);
&gt; +        ClientOffset clientOffset = sharedClientOffset().load(std::memory_order_acquire);
&gt; +#else
&gt; +        ClientLimit clientLimit = sharedClientLimit().load(std::memory_order_acquire);
&gt; +        ClientOffset clientOffset = sharedClientOffset().load(std::memory_order_acquire);
&gt; +#endif
&gt; +        if (!clientLimit &amp;&amp; (clientOffset == ClientOffset::serverIsSleepingTag || !clientOffset))
&gt; +            break;

In the iteration where we break out of the loop, we temporarily set clientIsWaitingTag, but never wait on our semaphore. What happens if the server notices clientIsWaitingTag, and signals our semaphore, before we have a chance to clear clientIsWaitingTag? Does that put our semaphore out of balance?

Perhaps it would be better to just do two loads (removing the cocoa-specific path), and only store clientIsWaitingTag right before we wait.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739387</commentid>
    <comment_count>4</comment_count>
      <attachid>423163</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-15 05:49:51 -0700</bug_when>
    <thetext>Created attachment 423163
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739389</commentid>
    <comment_count>5</comment_count>
      <attachid>423164</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-15 05:51:34 -0700</bug_when>
    <thetext>Created attachment 423164
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739406</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-15 06:11:56 -0700</bug_when>
    <thetext>Thanks for the review!
(In reply to Geoffrey Garen from comment #3)
&gt; In the iteration where we break out of the loop, we temporarily set
&gt; clientIsWaitingTag, but never wait on our semaphore. What happens if the
&gt; server notices clientIsWaitingTag, and signals our semaphore, before we have
&gt; a chance to clear clientIsWaitingTag? Does that put our semaphore out of
&gt; balance?

All the sites expect spurious wakeups from the semaphore waits.
 
&gt; Perhaps it would be better to just do two loads (removing the cocoa-specific
&gt; path), and only store clientIsWaitingTag right before we wait.

That&apos;s what the code tries to avoid with the exchange. It is the race the wait structure always has.

E.g. it would be as follows:

for(;;) {
    clientOffset = sharedClientOffset.load();
    clientLimit = sharedClientLimit.load();
    if (!clientOffset &amp;&amp; !clientLimit)
        break;

    // Race here: what if the server sets clientOffset = clientLimit = 0 here and goes on to wait
    // for next command from the client?

    sharedClientLimit.store(clientIsWaitingTag);
    wait();  // If the above happens, this waits forever.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739407</commentid>
    <comment_count>7</comment_count>
      <attachid>423167</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-15 06:14:51 -0700</bug_when>
    <thetext>Created attachment 423167
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739617</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-15 13:02:08 -0700</bug_when>
    <thetext>Committed r274433: &lt;https://commits.webkit.org/r274433&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423167.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740174</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-16 13:59:35 -0700</bug_when>
    <thetext>&gt; All the sites expect spurious wakeups from the semaphore waits.

Got it. I hadn&apos;t noticed this before. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422055</attachid>
            <date>2021-03-03 03:31:47 -0800</date>
            <delta_ts>2021-03-15 05:49:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220974-20210303133144.patch</filename>
            <type>text/plain</type>
            <size>77530</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4MWU0MWI5MTEzNzMwZGFk
ODlkMDYwYTk0NDFhOGQ1NGJhYTdiYjkuLmQwZTM5MzQwNTRhYzg4YmY3ODA2ZTMxMjVmY2U2Zjk5
NjEyNmVlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIxLTAzLTAzICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgSVBDIHNob3Vs
ZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3Igc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzM4NzY5NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU2VuZCBzeW5jaHJvbm91cyBtZXNzYWdlcyB2aWEgdGhlIHN0cmVhbSBz
aGFyZWQgbWVtb3J5LgorICAgICAgICBJbXByb3ZlcyBNb3Rpb25NYXJrIG9uIGlNYWMxLDEgZnJv
bSA1MDAwIHRvIH41MzAwIHB0cy4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBlbmNvZGFi
bGUgYXMgYSB2YWx1ZSwgdHJ5IHRvIGRvIHNvLgorICAgICAgICBJZiB0aGUgcmVwbHkgaXMgZW5j
b2RhYmxlIGFzIGEgdmFsdWUsIHRyeSB0byBkbyBzby4KKyAgICAgICAgQSBtZXNzYWdlIG9yIGEg
cmVwbHkgaXMgbm90IGVuY29kYWJsZSBpZiBhbiBhcmd1bWVudCBpbiB0aGUgbWVzc2FnZQorICAg
ICAgICBtdXN0IGJlIHBhc3NlZCBieSByZWZlcmVuY2UgdmlhIHRoZSBPUyBzcGVjaWZpYyBtZWNo
YW5pc20KKyAgICAgICAgKGUuZy4gYSBpb3N1cmZhY2Ugb3IgYSBmaWxlIGhhbmRsZSBjYW5ub3Qg
YmUgc2VudCBhcyBhIHZhbHVlKS4KKworICAgICAgICBTaW1pbGFyIHRvIGFzeW5jaHJvbm91cyBt
ZXNzYWdlcywgaWYgdGhlIHN5bmNocm9ub3VzIG1lc3NhZ2UgZml0cyB0bworICAgICAgICB0aGUg
c3RyZWFtIGJ1ZmZlciwgdGhlIG1lc3NhZ2UgaXMgc2VudCB2aWEgdGhlIGJ1ZmZlci4gU2FtZSB3
aXRoIHRoZQorICAgICAgICByZXBseS4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBvciByZXBs
eSBpcyBub3Qgc2VudCB2aWEgdGhlIHN0cmVhbSBidWZmZXIsIGl0IGlzIHNlbnQgdmlhCisgICAg
ICAgIHRoZSBub3JtYWwgSVBDLgorCisgICAgICAgIFRoZSBjbGllbnQgcHJvdG9jb2wgaXM6Cisg
ICAgICAgIDEpIFdyaXRlIHRoZSBtZXNzYWdlIHRvIHRoZSBidWZmZXIgYW5kIHJlbGVhc2UgaXQu
CisgICAgICAgIDIpIFdhaXQgdW50aWwgdGhlIHNlcnZlciByZWxlYXNlcyB0aGUgd2hvbGUgYnVm
ZmVyIGJhY2sgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgMykgUmVhZCB0aGUgcmVwbHkgZnJvbSBp
bmRleCAwLgorICAgICAgICA0KSBDb250aW51ZSBzZW5kaW5nIG5leHQgbWVzc2FnZSBmcm9tIGlu
ZGV4IDAuCisKKyAgICAgICAgVGhlIHNlcnZlciBwcm90b2NvbCBpcyB1cG9uIHJlY2VpdmluZyBh
IG1lc3NhZ2UgdGhhdCBpcyBzeW5jaHJvbm91czoKKyAgICAgICAgMSkgUmVhZCB0aGUgbWVzc2Fn
ZSBmcm9tIHRoZSBtZXNzYWdlIHBvc2l0aW9uLCBkaXNwYXRjaCBpdC4KKyAgICAgICAgMikgV3Jp
dGUgdGhlIHJlcGx5IHRvIGluZGV4IDAuCisgICAgICAgIDMpIFJlbGVhc2UgdGhlIHdob2xlIGJ1
ZmZlciBiYWNrIHRvIHRoZSBjbGllbnQuCisgICAgICAgIDQpIENvbnRpbnVlIHJlYWRpbmcgbmV4
dCBtZXNzYWdlIGZyb20gaW5kZXggMC4KKworICAgICAgICBUaGUgY2xpZW50IHdpbGwgbm90IGtu
b3cgYXQgdGhlIHNlbmQgdGltZSB3aGV0aGVyIHRoZSBzZXJ2ZXIgd2lsbCByZXBseQorICAgICAg
ICB2aWEgdGhlIHN0cmVhbSBvciB2aWEgbm9ybWFsIElQQyBtZXNzYWdlLiBUaGUgY2xpZW50IHdp
bGwgcmVzZXJ2ZQorICAgICAgICBhIElQQyBzeW5jIHJlcXVlc3QgSUQgZm9yIG5vcm1hbCBJUEMg
cmVwbHkgcHVycG9zZXMuCisKKyAgICAgICAgSW4gY2FzZSBhIG1lc3NhZ2Ugb3IgYSByZXBseSBk
b2VzIG5vdCBmaXQgdG8gdGhlIHN0cmVhbSBidWZmZXIsIHRoZQorICAgICAgICBQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyIGluc3RlYWQu
CisgICAgICAgIFRoaXMgd2lsbCBtYWtlIHRoZSByZWFkZXIgdG8gd2FpdCBmb3IgdGhlIG5vcm1h
bCBJUEMgbWVzc2FnZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjptYWtlU3luY1JlcXVlc3RJRCk6CisgICAgICAgIE1vdmUg
dGhlIGNvZGUgZnJvbSBzZW5kU3luY01lc3NhZ2UgdG8gaW5kaXZpZHVhbCBmdW5jdGlvbnMgc28K
KyAgICAgICAgdGhhdCB0aGUgY2xpZW50IGNhbiByZXNlcnZlIGEgc3luYyByZXF1ZXN0IElEIGZv
ciByZXBseSBwdXJwb3Nlcy4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQp
OgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kU3RyZWFtKToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbSk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmVBbGwpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWNxdWlyZUFsbCk6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2VBbGwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KToKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBY3F1aXJlKToK
KyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNo
U3RyZWFtTWVzc2FnZXMpOgorICAgICAgICBGaXggYSB0eXBvIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjp0cnlBcXVpcmUKKworICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
PFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKToKKyAgICAgICAgSWYgdGhlIG1lc3Nh
Z2UgY29tZXMgaW4gYXMgbm9ybWFsIElQQyBtZXNzYWdlLCBpdCBtdXN0IGJlIHJlcGxpZWQKKyAg
ICAgICAgdmlhIG5vcm1hbCBJUEMuCisKKyAgICAgICAgQWRkIGEgZmxhZyBtX2lzRGlzcGF0Y2hp
bmdTdHJlYW1NZXNzYWdlIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCisgICAgICAgIG1lc3NhZ2Ug
YmVpbmcgcHJvY2Vzc2VkIGNvbWVzIGFzIGEgbm9ybWFsIElQQyBtZXNzYWdlIG9yIGEKKyAgICAg
ICAgc3RyZWFtIG1lc3NhZ2UuIFRoaXMgaW5mb3JtYXRpb24gbXVzdCBiZSBzdGF0ZWZ1bCBpbiB0
aGUgY29ubmVjdGlvbgorICAgICAgICBjbGFzcywgYXMgaXQgaXMgbm90IHBhc3NhYmxlIGFzIGFy
Z3VtZW50cyB3aGVuIHRoZSBleGVjdXRpb24gZ29lcyB0aHJvdWdoOgorICAgICAgICAgICAgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2FnZSgpCisg
ICAgICAgICAgICBSZWNlaXZlcjo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKQorICAgICAgICAg
ICAgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKCkKKyAgICAgICAgICAgIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzZW5kU3luY1JlcGx5KCkKKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICBBZGQgcHJvcGVydGllcyBOb3RTdHJlYW1FbmNv
ZGFibGUsIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CisgICAgICAgIHRoYXQgaW5kaWNhdGUgaWYg
dGhlIG1lc3NhZ2UgcGFyYW1ldGVycyBhcmUgc3VjaCB0aGF0IHRoZXkKKyAgICAgICAgY2Fubm90
IGJlIGVuY29kZWQgaW50byBwbGFpbiBkYXRhIGJ1ZmZlciBhcyB2YWx1ZXMuCisgICAgICAgIFRo
aXMgaXMgZW5jb2RlZCBhcyAnY29uc3RleHByIGJvb2wgaXNTdHJlYW1FbmNvZGFibGUnIGFuZAor
ICAgICAgICAnY29uc3RleHByIGJvb2wgaXNTdHJlYW1FbmNvZGFibGVSZXBseScgZm9yIHRoZSBz
dHJlYW0gbWVzc2FnZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
QXJndW1lbnREZXNjcmlwdGlvbnMuY3BwOgorICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yQXJndW1l
bnRzKToKKyAgICAgICAgKElQQzo6bWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwOgorICAgICAgICAoSVBD
OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChJUEM6OnJlY2VpdmVyTmFtZSk6CisgICAgICAgIChJ
UEM6OmlzVmFsaWRNZXNzYWdlTmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJ
Zk1lc3NhZ2VNZXNzYWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoSW1hZ2VEYXRhTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmg6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdl
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2Vz
Lmg6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRNYWNoU2VuZFJpZ2h0
OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hTZW5k
UmlnaHQ6OlNlbmRNYWNoU2VuZFJpZ2h0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW06OlJlY2VpdmVNYWNoU2VuZFJpZ2h0OjpuYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6OmFyZ3Vt
ZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRBbmRS
ZWNlaXZlTWFjaFNlbmRSaWdodDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW06OlNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodDo6U2VuZEFuZFJlY2VpdmVNYWNoU2Vu
ZFJpZ2h0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2Vp
dmVNYWNoU2VuZFJpZ2h0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmg6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaDoKKyAgICAgICAg
VGVzdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gTm90U3RyZWFtRW5jb2RhYmxlLCBOb3RTdHJlYW1FbmNv
ZGFibGVSZXBseS4KKworICAgICAgICBPdGhlciBjaGFuZ2VzIGluZGljYXRlIGFuIGF1eGlsaWFy
eSBjaGFuZ2UgdG8gbWVzc2FnZSBzdHJ1Y3RzOgorICAgICAgICBjaGFuZ2luZyAnY29uc3QgYm9v
bCBpc1N5bmMnIHRvICdjb25zdGV4cHIgYm9vbCBpc1N5bmMnLgorICAgICAgICBUaGlzIGlzIGRv
bmUgZm9yIGNvbnNpc3RlbmN5LCBzaW5jZSAnaXNTdHJlYW1FbmNvZGFibGUqJyBwcm9wZXJ0aWVz
CisgICAgICAgIGFyZSBhbHNvIGFkZGVkIGFzIGNvbnN0ZXhwci4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgTWFrZSB0eXBlcyB0aGF0IGFyZSBXZWJHTCBzeW5jIG1l
c3NhZ2UgcGFyYW1ldGVycyBvciByZXBseSBwYXJhbWV0ZXJzCisgICAgICAgIG5vdyBlbmNvZGFi
bGUgdG8gYSBzdHJlYW0gYnkgbWFraW5nIHRoZSBlbmNvZGVyIHBhcnQgYSB0ZW1wbGF0ZS4KKyAg
ICAgICAgUHJldmlvdXNseSB0aGVzZSB3ZXJlIHNlbnQgb25seSBieSBub3JtYWwgSVBDLCBhbmQg
ZGlkIG5vdCBuZWVkCisgICAgICAgIHRvIGJlIHBvbHltb3JwaGljIHRvIHRoZSBlbmNvZGVyLgor
CiAyMDIxLTAzLTAyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViR0wgYXNzZXJ0cyBhZnRlciBHUFUgcHJvY2VzcyB0aW1lcyBvdXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBjNWY3MjcyOTZlMTA0MGMzMjZm
MzU3MGQ0ZjEzOTg5NGVjNDAxMjBjLi4xMTgyOTM3MmNjM2NhNjI0NDNhNjczZmYzNTUyZDYzMzZi
Mjg0ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0y
Nyw3ICsyNyw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZD
b3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXko
KSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5j
aHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDUzMzUwZjlmN2M4
YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQuLjNhYjlmY2M1ZWQxMDM1NTliMWI2ZWIzYjRl
ZDEwNmY1YmJkMjY5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSSA9
IFQ+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyIDogZGVjbHR5cGUoRGV0YWlsOjoKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzTW9k
ZXJuRGVjb2RlclYgPSBIYXNNb2Rlcm5EZWNvZGVyPFQsIEk+Ojp2YWx1ZTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2RlciB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZjg1
Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNi4uZTQ4ZTgzMjZhMmE3MzVlZjky
NGY4NzM3MmRjNzg2MzlkODIzOTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBJUEMgewogCiAvLyBB
biBhcmd1bWVudCBjb2RlciB3b3JrcyBvbiBQT0QgdHlwZXMKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUJiB0
KQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA4NmVjZGRkN2Y2ZTNi
MWFkN2NjN2IxZDBiYWRiNDNiZGZjMjMyM2JiLi5iMDMyMjRmNWI4MzAyYmJmZDhjMTdlNjc0YjI4
YjE1OTc3ZmNiYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cApAQCAtNDIwLDcgKzQyMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9u
OjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnCiAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7
CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KLSAgICBzeW5jUmVxdWVzdElE
ID0gKyttX3N5bmNSZXF1ZXN0SUQ7CisgICAgc3luY1JlcXVlc3RJRCA9IG1ha2VTeW5jUmVxdWVz
dElEKCk7CiAgICAgKmVuY29kZXIgPDwgc3luY1JlcXVlc3RJRDsKIAogICAgIHJldHVybiBlbmNv
ZGVyOwpAQCAtNTY0LDI4ICs1NjQsNDAgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW4KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBDb25uZWN0aW9uOjpwdXNoUGVuZGluZ1N5bmNSZXF1
ZXN0SUQodWludDY0X3Qgc3luY1JlcXVlc3RJRCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CisgICAgICAgIGlmICghbV9zaG91bGRX
YWl0Rm9yU3luY1JlcGxpZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1f
cGVuZGluZ1N5bmNSZXBsaWVzLmFwcGVuZChQZW5kaW5nU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQp
KTsKKyAgICB9CisgICAgKyttX2luU2VuZFN5bmNDb3VudDsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBDb25uZWN0aW9uOjpwb3BQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5j
UmVxdWVzdElEKQoreworICAgIC0tbV9pblNlbmRTeW5jQ291bnQ7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKKyAgICBBU1NFUlRfVU5VU0VEKHN5bmNSZXF1
ZXN0SUQsIG1fcGVuZGluZ1N5bmNSZXBsaWVzLmxhc3QoKS5zeW5jUmVxdWVzdElEID09IHN5bmNS
ZXF1ZXN0SUQpOworICAgIG1fcGVuZGluZ1N5bmNSZXBsaWVzLnJlbW92ZUxhc3QoKTsKK30KKwog
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciwgVGlt
ZW91dCB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykK
IHsKKyAgICBBU1NFUlQoc3luY1JlcXVlc3RJRCk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGRpZEZhaWxUb1NlbmRTeW5j
TWVzc2FnZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0KLSAgICAvLyBQdXNo
IHRoZSBwZW5kaW5nIHN5bmMgcmVwbHkgaW5mb3JtYXRpb24gb24gb3VyIHN0YWNrLgotICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKLSAgICAg
ICAgaWYgKCFtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcykgewotICAgICAgICAgICAgZGlkRmFp
bFRvU2VuZFN5bmNNZXNzYWdlKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1fcGVuZGluZ1N5bmNSZXBsaWVzLmFwcGVuZChQZW5kaW5nU3luY1Jl
cGx5KHN5bmNSZXF1ZXN0SUQpKTsKKyAgICBpZiAoIXB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRChz
eW5jUmVxdWVzdElEKSkgeworICAgICAgICBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgKyttX2luU2VuZFN5bmNDb3VudDsK
LQogICAgIC8vIEZpcnN0IHNlbmQgdGhlIG1lc3NhZ2UuCiAgICAgT3B0aW9uU2V0PFNlbmRPcHRp
b24+IHNlbmRPcHRpb25zID0gSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHk7CiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhT
ZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVu
Ym91bmRlZFN5bmNSZXBseSkpCkBAIC01OTksMTQgKzYxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgc3RkCiAgICAgUmVmPENvbm5lY3Rpb24+IHByb3RlY3QoKnRoaXMpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiByZXBseSA9IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwg
bWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAKLSAgICAtLW1faW5TZW5k
U3luY0NvdW50OwotCi0gICAgLy8gRmluYWxseSwgcG9wIHRoZSBwZW5kaW5nIHN5bmMgcmVwbHkg
aW5mb3JtYXRpb24uCi0gICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNSZXBs
eVN0YXRlTXV0ZXgpOwotICAgICAgICBBU1NFUlQobV9wZW5kaW5nU3luY1JlcGxpZXMubGFzdCgp
LnN5bmNSZXF1ZXN0SUQgPT0gc3luY1JlcXVlc3RJRCk7Ci0gICAgICAgIG1fcGVuZGluZ1N5bmNS
ZXBsaWVzLnJlbW92ZUxhc3QoKTsKLSAgICB9CisgICAgcG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQo
c3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoIXJlcGx5KQogICAgICAgICBkaWRGYWlsVG9TZW5k
U3luY01lc3NhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRl
eCAwZDg1ZDhkN2NlOGY0ZDE3NWQ0YTA0MzQyNzljMTViMGUzOGZjMWY3Li5lMjgwM2E0MjE5MGI4
MmU0YTRkNGI0OTk1MDVjNjUzYmY0NDI2NzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCkBAIC0zMjIsNyArMzIyLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSW5j
b21pbmdNZXNzYWdlc1Rocm90dGxpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luY29t
aW5nTWVzc2FnZXNUaHJvdHRsZXI7IH0KICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRp
bWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPik7Ci0gICAgCisgICAgdWludDY0X3QgbWFr
ZVN5bmNSZXF1ZXN0SUQoKSB7IHJldHVybiArK21fc3luY1JlcXVlc3RJRDsgfQorICAgIGJvb2wg
cHVzaFBlbmRpbmdTeW5jUmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwKTsKKyAg
ICB2b2lkIHBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBUaW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRp
b24+KTsKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlLgpAQCAt
NDk1LDYgKzQ5Nyw3IEBAIHByaXZhdGU6CiAgICAgRXZlbnRMaXN0ZW5lciBtX3dyaXRlTGlzdGVu
ZXI7CiAgICAgSEFORExFIG1fY29ubmVjdGlvblBpcGUgeyBJTlZBTElEX0hBTkRMRV9WQUxVRSB9
OwogI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rpb247CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oCmluZGV4IDkyOTYzZTIxZTFkNzE3ZjY0YTgyMTljNTI4OWJhZjA1M2YwOTk0ODQu
LmMzZDhlNzFlNGNjYmU0MTNmYmQ4YjMyYmYzMTJkODA3Y2ViNmZkNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lk
IGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29u
bmVjdGlvbiwgRGVjb2RlciYgZAogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBs
eSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElELCBjb25uZWN0aW9uID0gbWFrZVJl
Zihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgY29ubmVj
dGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBhcmdzLi4uKTsKKyAgICAgICAgY29u
bmVjdGlvbi0+c2VuZFN5bmNSZXBseTxUPihzeW5jUmVxdWVzdElELCBhcmdzLi4uKTsKICAgICB9
OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMDg4NjQ5
NDM5OWEwZTVmNmEzOTg1MDViNDE5ZDhiZjUyMWI1YjhiZC4uZTMyODQxNzllMDgzOWExNzdiNjlm
Yjc3MWIxZjczMGQ1NGI5ZGI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtNjcsMTAgKzY3LDE2IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUg
PSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGJv
b2wgdHJ5U2VuZFN0cmVhbShUJiBtZXNzYWdlLCBTcGFuJik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBPcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gdHJ5U2VuZFN5bmNTdHJlYW0oVCYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmLCBUaW1lb3V0LCBTcGFuJik7CiAgICAgYm9vbCB0
cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVv
dXQpOwogICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKIAog
ICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoVGltZW91dCk7CisgICAgT3B0aW9uYWw8U3Bh
bj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0KTsKKwogICAgIGVudW0gY2xhc3MgV2FrZVVwU2VydmVy
IDogYm9vbCB7CiAgICAgICAgIE5vLAogICAgICAgICBZZXMKQEAgLTExMCwxNCArMTE2LDkgQEAg
Ym9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQKICAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKHRpbWVv
dXQpOwogICAgIGlmICghc3BhbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHsKLSAgICAg
ICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNw
YW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKLSAgICAgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1l
c3NhZ2UuYXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVs
ZWFzZShtZXNzYWdlRW5jb2Rlci5zaXplKCkpOwotICAgICAgICAgICAgaWYgKHdha2V1cFJlc3Vs
dCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXI6OlllcykKLSAgICAgICAg
ICAgICAgICB3YWtlVXBTZXJ2ZXIoKTsKKyAgICBpZiBjb25zdGV4cHIoVDo6aXNTdHJlYW1FbmNv
ZGFibGUpIHsKKyAgICAgICAgaWYgKHRyeVNlbmRTdHJlYW0obWVzc2FnZSwgKnNwYW4pKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgc2VuZFByb2Nlc3NP
dXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwogICAgIGlmICghbV9jb25uZWN0aW9u
LnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQpAQCAtMTI1LDYgKzEy
NiwxOSBAQCBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRAogICAgIHJldHVybiB0cnVlOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5k
U3RyZWFtKFQmIG1lc3NhZ2UsIFNwYW4mIHNwYW4pCit7CisgICAgU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07
CisgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKKyAgICAg
ICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1lc3NhZ2VFbmNvZGVyLnNpemUoKSk7Cisg
ICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVw
U2VydmVyOjpZZXMpCisgICAgICAgICAgICB3YWtlVXBTZXJ2ZXIoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQg
dGltZW91dCkKIHsKQEAgLTEzNCwxMiArMTQ4LDU3IEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNz
CiAgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAgICBpZiAoIXNwYW4pCiAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kIHRocm91Z2gg
c3RyZWFtLgotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgcmVjZWl2ZSB0aHJvdWdoIHN0cmVhbS4K
KyAgICBpZiBjb25zdGV4cHIoVDo6aXNTdHJlYW1FbmNvZGFibGUpIHsKKyAgICAgICAgYXV0byBt
YXliZVNlbmRSZXN1bHQgPSB0cnlTZW5kU3luY1N0cmVhbShtZXNzYWdlLCByZXBseSwgdGltZW91
dCwgKnNwYW4pOworICAgICAgICBpZiAobWF5YmVTZW5kUmVzdWx0KQorICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUoKm1heWJlU2VuZFJlc3VsdCk7CisgICAgfQogICAgIHNlbmRQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKICAgICByZXR1cm4gbV9jb25uZWN0aW9u
LnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHRpbWVvdXQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorT3B0aW9u
YWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENv
bm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiByZXBseSwgVGltZW91dCB0aW1lb3V0LCBTcGFuJiBzcGFuKQoreworICAgIC8vIEluIHRoaXMg
ZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJvciBoYXBwZW5lZCBhbmQgY2Fs
bGVyIHNob3VsZCBzdG9wIHByb2Nlc3NpbmcuCisgICAgLy8gV1RGOjpudWxsb3B0IG1lYW5zIHdl
IGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Yg
c3RyZWFtLgorICAgIGF1dG8gc3luY1JlcXVlc3RJRCA9IG1fY29ubmVjdGlvbi5tYWtlU3luY1Jl
cXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0aW9uLnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJ
RChzeW5jUmVxdWVzdElEKSkKKyAgICAgICAgcmV0dXJuIFNlbmRTeW5jUmVzdWx0IHsgfTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4gT3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHsKKyAg
ICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCks
IHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgICAgIGlmICghKG1lc3NhZ2VFbmNvZGVyIDw8
IHN5bmNSZXF1ZXN0SUQgPDwgbWVzc2FnZS5hcmd1bWVudHMoKSkpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVz
c2FnZUVuY29kZXIuc2l6ZSgpKTsKKworICAgICAgICBpZiAod2FrZXVwUmVzdWx0ID09IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246Oldha2VVcFNlcnZlcjo6WWVzKQorICAgICAgICAgICAgd2FrZVVw
U2VydmVyKCk7CisgICAgICAgIGlmIGNvbnN0ZXhwcihUOjppc1JlcGx5U3RyZWFtRW5jb2RhYmxl
KSB7CisgICAgICAgICAgICBhdXRvIHJlcGx5U3BhbiA9IHRyeUFjcXVpcmVBbGwodGltZW91dCk7
CisgICAgICAgICAgICBpZiAoIXJlcGx5U3BhbikKKyAgICAgICAgICAgICAgICByZXR1cm4gU2Vu
ZFN5bmNSZXN1bHQgeyB9OworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IHsgbmV3IERlY29kZXIocmVwbHlTcGFuLT5kYXRhLCByZXBseVNwYW4tPnNp
emUsIG1fY3VycmVudERlc3RpbmF0aW9uSUQpIH07CisgICAgICAgICAgICBpZiAoZGVjb2Rlci0+
bWVzc2FnZU5hbWUoKSAhPSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVChkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2Rl
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2NsaWVudE9m
ZnNldCA9IDA7CisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2FpdEZvclN5bmNSZXBseShz
eW5jUmVxdWVzdElELCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7CisgICAgfSgpOworICAgIG1f
Y29ubmVjdGlvbi5wb3BQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKTsKKyAgICBp
ZiAocmVzdWx0ICYmICpyZXN1bHQpIHsKKyAgICAgICAgYXV0byYgZGVjb2RlciA9ICoqcmVzdWx0
OworICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3VtZW50cz4gcmVwbHlBcmd1
bWVudHM7CisgICAgICAgIGRlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7CisgICAgICAgIGlmICgh
cmVwbHlBcmd1bWVudHMpCisgICAgICAgICAgICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9Owor
ICAgICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMpLCByZXBseSk7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGlubGluZSBib29sIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25J
RCwgVGltZW91dCB0aW1lb3V0KQogewogICAgIGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVu
dERlc3RpbmF0aW9uSUQpCkBAIC0yMDEsNiArMjYwLDQ1IEBAIGlubGluZSBPcHRpb25hbDxTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1
aXJlCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAoraW5saW5lIE9wdGlvbmFsPFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVp
cmVBbGwoVGltZW91dCB0aW1lb3V0KQoreworICAgIC8vIFRoaXMgd291bGQgbWVhbiB3ZSB0cnkg
dG8gc2VuZCBtZXNzYWdlcyBhZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJy
b3IuCisgICAgLy8gU2luY2UgdGhlIHZhbHVlIGlzIHRydXN0ZWQsIHdlIG9ubHkgYXNzZXJ0Lgor
ICAgIEFTU0VSVChzaGFyZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNx
dWlyZSkgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7CisKKyAgICAvLyBUaGUg
c2VydmVyIGFja25vd2xlZGdlcyB0aGF0IHN5bmMgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQg
Ynkgc2V0dGluZyBjbGllbnRPZmZzZXQgPT0gY2xpZW50TGltaXQgPT0gMC4KKyAgICAvLyBXYWl0
IGZvciB0aGlzIGNvbmRpdGlvbiwgb3IgdGhlbiB0aGUgY29uZGl0aW9uIHdoZXJlIHNlcnZlciBz
YXlzIHRoYXQgaXQgc3RhcnRlZCB0byBzbGVlcCBhZnRlciBzZXR0aW5nIHRoYXQgY29uZGl0aW9u
LgorICAgIC8vIFRoZSB3YWl0IHNlcXVlbmNlIGludm9sdmVzIHR3byB2YXJpYWJsZXMsIHNvIGZv
cm0gYSB0cmFuc2FjdGlvbiBieSBzZXR0aW5nIGNsaWVudExpbWl0ID09IGNsaWVudElzV2FpdGlu
Z1RhZy4KKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gaXMgY2FuY2VsbGVkIGlmIHRoZSBzZXJ2ZXIg
aGFzIGFscmVhZHkgc2V0IGNsaWVudE9mZnNldCA9PSBjbGllbnRMaW1pdCA9PSAwLCBvdGhlcndp
c2UgaXQgY29tbWl0cy4KKyAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gY29tbWl0cywgc2VydmVy
IGlzIGd1YXJhbnRlZWQgdG8gc2lnbmFsLgorCisgICAgZm9yICg7OykgeworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgICAgICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExp
bWl0KCkuZXhjaGFuZ2UoQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZywgc3RkOjptZW1v
cnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIENsaWVudE9mZnNldCBjbGllbnRPZmZzZXQgPSBz
aGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworI2Vs
c2UKKyAgICAgICAgQ2xpZW50TGltaXQgY2xpZW50TGltaXQgPSBzaGFyZWRDbGllbnRMaW1pdCgp
LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgICAgIENsaWVudE9mZnNldCBj
bGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUpOworI2VuZGlmCisgICAgICAgIGlmICghY2xpZW50TGltaXQgJiYgKGNsaWVudE9m
ZnNldCA9PSBDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcgfHwgIWNsaWVudE9mZnNl
dCkpCisgICAgICAgICAgICBicmVhazsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBt
X2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKKyNlbHNlCisg
ICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICBpZiAodGltZW91dC5kaWRU
aW1lT3V0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAvLyBJbiBjYXNlIHRoZSB0cmFuc2FjdGlvbiB3YXMgY2FuY2Vs
bGVkLCB1bmRvIHRoZSB0cmFuc2FjdGlvbiBtYXJrZXIuCisgICAgc2hhcmVkQ2xpZW50TGltaXQo
KS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGVhc2UpOworI2VuZGlmCisgICAgbV9jbGllbnRPZmZzZXQgPSAwOworICAgIHJldHVybiBhbGln
bmVkU3BhbihtX2NsaWVudE9mZnNldCwgMCk7Cit9CisKIGlubGluZSBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpXYWtlVXBTZXJ2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6cmVsZWFzZShzaXpl
X3Qgc2l6ZSkKIHsKICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWluaW11bU1lc3NhZ2VTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaAppbmRleCA1MmIzZDc5ZWFhMzY4NzQwYzEyZDViYzU0NTI3ZTk1N2VmNGE2OTgzLi5l
NTJjYWIyOTg4ZGQ4YjM5ZmYzMzgwNWY0ZDM2OWIxYjU0ZGUxMWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCkBAIC00OSwx
MCArNDksMjAgQEAgbmFtZXNwYWNlIElQQyB7CiAvLyBhbmQgdGhlbiB1cG9uIHRoZSBzZWNvbmQg
YWNxdWlyZSAxNjYgYnl0ZXMuIER1ZSB0byBob3cgYWxpZ25tZW50IGFuZCBtaW5pbXVtIGxlbmd0
aCBhZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZQogLy8gbWVtb3J5IGNhbiBiZSByZWZl
cnJlZCB0bywgdGhlIHNlcnZlciBjYW5ub3QgInJlYWQgdHdvIHRpbWVzIHNpbXVsdGFuZW91c2x5
IiBhbmQgcmVsZWFzZSAxNzQgYnl0ZXMuCiAvLworLy8gVGhlIGJ1ZmZlciBhbHNvIHN1cHBvcnRz
IHN5bmNocm9ub3VzIHJlcGxpZXMgdmlhICJyZWxlYXNlQWxsL2FjcXVpcmVBbGwiIGNhbGwgcGF0
dGVybi4gVGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgY2FuCisvLyBlc3RhYmxpc2ggY2FzZXMg
d2hlcmUgdGhlIGNsaWVudCB0cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBkYXRhIHRvIHRoZSBz
ZXJ2ZXIuIEluIHRoZXNlIGNhc2VzIHRoZSBzZXJ2ZXIgd2lsbAorLy8gYWNrbm93bGVkZ2UgdGhl
IHJlYWQgd2l0aCAicmVsZWFzZUFsbCIgb3BlcmF0aW9uLiBUaGUgY2xpZW50IHdpbGwgdGhlbiBy
ZWFkIHRoZSByZXBseSB2aWEgImFjcXVpcmVBbGwiIG9wZXJhdGlvbi4gVGhlCisvLyByZXBseSB3
aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLiBUaGlzIG1hbmRh
dGVzIHRoYXQgaW4tcGxhY2UgZGF0YSByZWZlcmVuY2VzIGluIHRoZSBidWZmZXIKKy8vIGNhbm5v
dCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5IGZvciBtZXNzYWdlIGRhdGEgYW5kIHRoZSByZXBseSBk
YXRhLiBJbiBjdXJyZW50IElQQyBpbXBsZW1lbnRhdGlvbiwgdGhlIG1lc3NhZ2UKKy8vIHByb2Nl
c3NpbmcgdXNlcyB0aGUgaW4tcGxhY2UgZGF0YSByZWZlcmVuY2VzLCB3aGlsZSB0aGUgcmVwbHkg
ZGF0YSBpcyBmaXJzdCBjb25zdHJ1Y3RlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGFuZCB0aGVuCisv
LyBjb3BpZWQgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyLgorLy8KIC8vIFRoZSBjaXJjdWxhciBidWZm
ZXIgaGFzIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbjoKIC8vICogVGhlIGNsaWVudCBvd25zIHRo
ZSBkYXRhIGJldHdlZW4gW2NsaWVudE9mZnNldCwgc2VydmVyT2Zmc2V0Wy4gV2hlbiBjbGllbnRP
ZmZzZXQgPT0gc2VydmVyT2Zmc2V0LCB0aGUgY2xpZW50IG93bnMKIC8vICAgYWxsIHRoZSBkYXRh
LgogLy8gKiBUaGUgc2VydmVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2VydmVyT2Zmc2V0LCBj
bGllbnRPZmZzZXRbLgorLy8gKiBUaGUgZXhjZXB0aW9uIHRvIHRoZSBhYm92ZSBpcyB3aGVuIGNv
bW11bmljYXRpb24gcHJvdG9jb2wgY2FuIGNvbnRhaW4gbWVzc2FnZXMgdGhhdCBkZW5vdGUgdGhh
dCB0aGUgc2VydmVyIHdpbGwgb3duCisvLyAgIGFsbCB0aGUgZGF0YS4KIC8vICogVGhlIGJ1ZmZl
ciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMg
cmVzZXJ2ZWQgZm9yIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwuCiAvLyAgIEZJ
WE1FOiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmIGl0IHdvdWxkIHVz
ZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBhcyB0aGUgaW5kaWNhdG9yLgog
Ly8gICBUaGlzIHdvdWxkIG1vdmUgdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRo
ZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA4ZTQ5MjY2NDRhODA4NjM2
OWVmN2NjODlhNDAyYjI4Yjk2MDE3YTAyLi42MzVhZjg5YjZhOWEyMGQyNTBkYzVjNWY4YTM0Njcx
NWFhMDFiYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVf
cHRyPERlYwogICAgIG1fd29ya1F1ZXVlLndha2VVcCgpOwogfQogCi1PcHRpb25hbDxTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRy
eUFxdWlyZSgpCitPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcmUoKQogewogICAgIFNlcnZlckxpbWl0
IHNlcnZlckxpbWl0ID0gc2hhcmVkU2VydmVyTGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUpOwogICAgIGlmIChzZXJ2ZXJMaW1pdCA9PSBTZXJ2ZXJMaW1pdDo6c2VydmVySXNT
bGVlcGluZ1RhZykKQEAgLTc3LDYgKzc3LDExIEBAIE9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4g
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFjcXVpcmVBbGwoKQoreworICAgIHJldHVybiBh
bGlnbmVkU3BhbigwLCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKIHZvaWQgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogewogICAgIEFTU0VSVChyZWFk
U2l6ZSk7CkBAIC04NSw3ICs5MCw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2Vy
dmVyT2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmV4Y2hhbmdl
KHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Ci0gICAgLy8gSWYgdGhl
IHNlbmRlciB3cm90ZSBvdmVyIHNlcnZlck9mZnNldCwgaXQgbWVhbnMgdGhlIHNlbmRlciBpcyB3
YWl0aW5nLgorICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0
IG1lYW5zIHRoZSBjbGllbnQgaXMgd2FpdGluZy4KICAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09
IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQogICAgICAgICBtX2J1ZmZlci5jbGll
bnRXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CiAgICAgZWxzZQpAQCAtOTgsNiArMTAzLDIzIEBA
IHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXpl
KQogICAgIG1fc2VydmVyT2Zmc2V0ID0gc2VydmVyT2Zmc2V0OwogfQogCit2b2lkIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlQWxsKCkKK3sKKyAgICBzaGFyZWRTZXJ2ZXJMaW1p
dCgpLnN0b3JlKHN0YXRpY19jYXN0PFNlcnZlckxpbWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJf
cmVsZWFzZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2VydmVyT2Zmc2V0IG9sZFNlcnZl
ck9mZnNldCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmV4Y2hhbmdlKHN0YXRpY19jYXN0PFNlcnZl
ck9mZnNldD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8vIElmIHRoZSBj
bGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQgaXMgd2Fp
dGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNX
YWl0aW5nVGFnKQorICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkuc2lnbmFs
KCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIShvbGRTZXJ2ZXJPZmZzZXQgJiBTZXJ2ZXJP
ZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykpOworI2Vsc2UKKyAgICBzaGFyZWRTZXJ2ZXJPZmZz
ZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAvLyBJUEM6OlNl
bWFwaG9yZSBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9ybS4gQ2xpZW50IHdpbGwgcG9s
bCBhbmQgeWllbGQuCisjZW5kaWYKKyAgICBtX3NlcnZlck9mZnNldCA9IDA7Cit9CisKIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjph
bGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCiB7CiAgICAgQVNTRVJUKG9m
ZnNldCA8IGRhdGFTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDQ5NWFmZmQwM2M2ZjU0ZDcyODlmYzEwMWQ2
ZDZkZDg4NmUzYjc3MGQuLjM5NDg1NWY1Y2M2ZDk4ZGVjNTQ2OTdkZDE0M2Y4Njc4YThjMGZhODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCBE
aXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQp
ID0gMDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgdm9pZCBzZW5kU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKIAogcHJvdGVjdGVk
OgpAQCAtNjcsOSArNjcsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB1aW50OF90KiBkYXRhOwog
ICAgICAgICBzaXplX3Qgc2l6ZTsKICAgICB9OwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWly
ZSgpOworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKKyAgICBTcGFuIGFjcXVpcmVB
bGwoKTsKIAogICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOworICAgIHZvaWQgcmVs
ZWFzZUFsbCgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6
ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxpbWl0KTsKQEAgLTkyLDE1ICs5NCwyNiBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBMb2NrIG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CiAgICAgRGVxdWU8c3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisgICAgYm9vbCBtX2lzRGlzcGF0
Y2hpbmdTdHJlYW1NZXNzYWdlIHsgZmFsc2UgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogdm9pZCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dCBzZW5kaW5nIHRvIGJ1ZmZlci4KLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6
RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJ
RCk7CisgICAgaWYgY29uc3RleHByKFQ6OmlzUmVwbHlTdHJlYW1FbmNvZGFibGUpIHsKKyAgICAg
ICAgaWYgKG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGF1dG8g
c3BhbiA9IGFjcXVpcmVBbGwoKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTdHJl
YW1Db25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5LCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgICAgICAgICAgICAgIGlmICgo
bWVzc2FnZUVuY29kZXIgPDwgLi4uIDw8IGFyZ3VtZW50cykpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyIG91dE9mU3RyZWFtRW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1N
ZXNzYWdlLCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgICAgICB9CisgICAgfQorICAgIGF1
dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdl
UmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRz
KTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9
CkBAIC0xNDIsOCArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fcmVjZWl2ZXJzTG9jazsK
ICAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50
NjRfdD4sIFJlZjxSZWNlaXZlcj4+OwogICAgIFJlY2VpdmVyc01hcCBtX3JlY2VpdmVyczsKLQot
ICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSAwOworICAgIHVpbnQ2NF90IG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNl
aXZlcj4KQEAgLTE3Niw3ICsxODgsNyBAQCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6RGlz
cGF0Y2hSZXN1bHQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpcwogICAgIHVp
bnQ4X3QgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFJlY2VpdmVy
TmFtZTo6SW52YWxpZCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VMaW1p
dDsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3BhbiA9IHRyeUFxdWlyZSgpOworICAgICAgICBhdXRv
IHNwYW4gPSB0cnlBY3F1aXJlKCk7CiAgICAgICAgIGlmICghc3BhbikKICAgICAgICAgICAgIHJl
dHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKICAgICAgICAgSVBDOjpEZWNvZGVy
IGRlY29kZXIgeyBzcGFuLT5kYXRhLCBzcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlvbklE
IH07CkBAIC0yNDIsMTIgKzI1NCwxOCBAQCBib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVj
ZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYgZAogdGVtcGxh
dGU8dHlwZW5hbWUgUmVjZWl2ZXI+CiBib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2
ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIsIFJlY2VpdmVyJiBy
ZWNlaXZlcikKIHsKKyAgICBBU1NFUlQoIW1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UpOwor
ICAgIG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UgPSB0cnVlOwogICAgIHJlY2VpdmVyLmRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKKyAgICBtX2lzRGlzcGF0Y2hp
bmdTdHJlYW1NZXNzYWdlID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgewog
ICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
cmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICBpZiAoZGVjb2Rl
ci5pc1N5bmNNZXNzYWdlKCkpCisgICAgICAgIHJlbGVhc2VBbGwoKTsKKyAgICBlbHNlCisgICAg
ICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDA3ZWE0NjVlOGE4N2NiYWZmZGIyZGQ4OTEzYmI0ZGI1M2RlNTUxZWUuLmZiMTk1ZjViOWM4OTI3
NWVlODQxMGU4OTE3NTI3ZTc0YzA1NTllY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtNTcsNiArNTcsOCBAQCBXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FU
VFJJQlVURSA9ICdXYW50c0Rpc3BhdGNoTWVzc2FnZScKIFdBTlRTX0FTWU5DX0RJU1BBVENIX01F
U1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzQXN5bmNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVD
RUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlW
RVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQnCitOT1RfU1RSRUFNX0VOQ09EQUJMRV9BVFRS
SUJVVEUgPSAnTm90U3RyZWFtRW5jb2RhYmxlJworTk9UX1NUUkVBTV9FTkNPREFCTEVfUkVQTFlf
QVRUUklCVVRFID0gJ05vdFN0cmVhbUVuY29kYWJsZVJlcGx5JwogCiBkZWYgcmVjZWl2ZXJfZW51
bWVyYXRvcl9vcmRlcl9rZXkocmVjZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9
PSAnSVBDJzoKQEAgLTE5NCw3ICsxOTYsMTIgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xh
cmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcg
QXJndW1lbnRzID0gJXM7XG4nICUgYXJndW1lbnRzX3R5cGUobWVzc2FnZSkpCiAgICAgcmVzdWx0
LmFwcGVuZCgnXG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXM7IH1cbicgJSAocmVj
ZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gJXM7XG4nICUgKCdmYWxzZScsICd0cnVlJylbbWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzICE9IE5vbmUgYW5kIG5vdCBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZ
TkNfQVRUUklCVVRFKV0pCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1N5bmMgPSAlcztcbicgJSAoJ2ZhbHNlJywgJ3RydWUnKVttZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnMgaXMgbm90IE5vbmUgYW5kIG5vdCBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNf
QVRUUklCVVRFKV0pCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklC
VVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1N0cmVhbUVuY29kYWJsZSA9ICVzO1xuJyAlICgndHJ1ZScsICdmYWxzZScpW21lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShOT1RfU1RSRUFNX0VOQ09EQUJMRV9BVFRSSUJVVEUpXSkKKyAgICAgICAgaWYg
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1JlcGx5U3RyZWFtRW5jb2RhYmxl
ID0gJXM7XG4nICUgKCd0cnVlJywgJ2ZhbHNlJylbbWVzc2FnZS5oYXNfYXR0cmlidXRlKE5PVF9T
VFJFQU1fRU5DT0RBQkxFX1JFUExZX0FUVFJJQlVURSldKQorCiAgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQogICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lOgogICAgICAgICBz
ZW5kX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5k
KSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2Ny
aXB0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VB
cmd1bWVudERlc2NyaXB0aW9ucy5jcHAKaW5kZXggM2U4NGFlMWUzOWM3ZTdkN2NkZjg5NWE0MjQ5
Mjc3MTMxMmFhYTA2MC4uY2FmNzY3OTcyODc5ZWE5NTZmZjlkYWFjZmJiYWI0NzEwZGNiYmFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcApAQCAtNjcsNiArNjcsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYv
TWFjaFNlbmRSaWdodC5oPgorI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KICNlbmRpZgpAQCAtMjM2LDYgKzIzOSwxNCBAQCBPcHRpb25hbDxKU0M6
OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBNZQogICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpBcmd1bWVudHM+KGdsb2JhbE9iamVj
dCwgZGVjb2Rlcik7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0
cmluZ1N5bmNocm9uaXplZDoKICAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1l
bnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZDo6QXJn
dW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJpZ2h0OgorICAg
ICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRo
U3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29k
ZXIpOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2Vu
ZFJpZ2h0OgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNlbmRSaWdodDo6QXJndW1lbnRzPihnbG9i
YWxPYmplY3QsIGRlY29kZXIpOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFt
X1NlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVN
YWNoU2VuZFJpZ2h0OjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisjZW5kaWYK
ICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVm
ZmVyOgogICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpBcmd1bWVudHM+KGdsb2Jh
bE9iamVjdCwgZGVjb2Rlcik7CiAgICAgZGVmYXVsdDoKQEAgLTU1OSw2ICs1NzAsMTggQEAgT3B0
aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlw
dGlvbnMoTWVzc2FnZU5hbWUgbmEKICAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2Ny
aXB0aW9uPiB7CiAgICAgICAgICAgICB7InVybCIsICJTdHJpbmciLCBudWxscHRyLCBmYWxzZX0s
CiAgICAgICAgIH07CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiBWZWN0b3I8
QXJndW1lbnREZXNjcmlwdGlvbj4geworICAgICAgICAgICAgeyJhMSIsICJNYWNoU2VuZFJpZ2h0
IiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAgICAgICByZXR1cm4gVmVjdG9y
PEFyZ3VtZW50RGVzY3JpcHRpb24+IHsgfTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0
aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiBWZWN0
b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geworICAgICAgICAgICAgeyJhMSIsICJNYWNoU2VuZFJp
Z2h0IiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworI2VuZGlmCiAgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjoKICAgICAgICAg
cmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7CiAgICAgICAgICAgICB7InN0cmVh
bSIsICJJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIiLCBudWxscHRyLCBmYWxzZX0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAK
aW5kZXggZjc2NTA3Y2RkZjE3MDMxMzZiMTBhMGYzMDY4NGMzZmNkMTQ0YTYxMy4uMDk0MTE4YTk4
YmVmM2I3YWZlZDQ3ODk5OTc1YzNkYjMyMjg1ZDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApAQCAtODIsNiArODIsMTIg
QEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAgICAgICAgcmV0
dXJuICJUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlIjsKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOgogICAgICAgICByZXR1
cm4gIlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXIiOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAgICAgICBy
ZXR1cm4gIlRlc3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0IjsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6Cisg
ICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0
IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdo
dDoKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdodCI7CiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZzoKICAgICAgICAg
cmV0dXJuICJUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgpAQCAtMjA3LDYgKzIxMyw5
IEBAIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAg
ICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoU2VtYXBob3JlOwogICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI6CiAgICAg
ICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdo
dDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdo
dDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nOgogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6
CiAgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOwpAQCAtMzQwLDYg
KzM0OSwxOCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXIpCiAgICAgICAg
IHJldHVybiB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZEFu
ZFJlY2VpdmVNYWNoU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisjZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdHJlYW1fU2VuZFN0cmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5j
aHJvbml6ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuaAppbmRleCBmYTkzMTc4ODdjZjU5MzFiZDEzYmNiNjI4ZGM4MGMzMGU0OThmZTA4
Li41OThkZTg2Mzk3MjAwMjMxOWJiZWZhYjliODI3MzJmNDI4ZWZlNWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKQEAgLTY5LDYg
KzY5LDkgQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAgICAsIFRlc3RX
aXRoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhvcmUKICAgICAsIFRlc3RXaXRoU2VtYXBob3JlX1Nl
bmRTZW1hcGhvcmUKICAgICAsIFRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXIK
KyAgICAsIFRlc3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0CisgICAgLCBUZXN0V2l0
aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQKKyAgICAsIFRlc3RXaXRoU3RyZWFt
X1NlbmRNYWNoU2VuZFJpZ2h0CiAgICAgLCBUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nCiAgICAg
LCBUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkCiAgICAgLCBUZXN0V2l0aFN1
cGVyY2xhc3NfTG9hZFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZXMuaAppbmRleCA0MDdkMzM4
NzcxOWUzOWUyNzgzY2I0ODFlMDc2YWI0OWQ2MGM5NDk4Li5iOGZmNjExNjEwYTRjODE2YzA5M2Yz
NzRlZDZmYTgyMjFjMGI5YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZXMuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25z
dCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aElmTWVzc2FnZV9Mb2FkVVJMOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVy
bCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyYsIGludDY0X3Q+
OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRoSWZNZXNzYWdlX0xvYWRVUkw7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
ZmFsc2U7CiAKICAgICBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQ2NF90IHZhbHVlKQog
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCwgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdl
cy5oCmluZGV4IGY0MmU4ZjdhMGIwODFmMjkxNWU1N2NjMmFkNDIwNmFiMmFiZDZkMjguLjEwY2Y0
M2QyYWU4NzM4NThjZmUxMmVlYTk0MGZlOGE3MWRkZmFjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFN
ZXNzYWdlcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Jj47CiAKICAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
VGVzdFdpdGhJbWFnZURhdGFfU2VuZEltYWdlRGF0YTsgfQotICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKIAogICAgIGV4cGxpY2l0IFNlbmRJbWFnZURhdGEoY29uc3QgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlRGF0YT4mIHMwKQogICAgICAgICA6IG1fYXJndW1lbnRzKHMwKQpAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogCiAgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRl
c3RXaXRoSW1hZ2VEYXRhX1JlY2VpdmVJbWFnZURhdGE7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVl
OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21w
bGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4mPjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNl
aXZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oCmluZGV4IDNiZTBhMGIwZTljNzhhNDI5NGNlNmYy
OWI2NmQyYTI1ZmJkZDA5MzYuLmVjODJjZDljNmVmMTg0NmFmYWMwMjJiZjZjOWQ2MTA3MGU5YTBm
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaApAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJp
bmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0xvYWRVUkw7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Mb2FkU29tZXRoaW5nOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9
IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2
ZW50Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50OyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJL
aXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQpA
QCAtMTM2LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfQWRkRXZlbnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBs
aWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAg
ICA6IG1fYXJndW1lbnRzKGV2ZW50KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJfTG9hZFNvbWV0aGluZ0Vsc2U7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
ZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVy
bCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1
aW50MzJfdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9EaWRSZWNlaXZlUG9saWN5
RGVjaXNpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMy
X3QgcG9saWN5QWN0aW9uKQogICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVy
SUQsIHBvbGljeUFjdGlvbikKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJf
Q2xvc2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CiAgICAgewpAQCAtMjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfUHJlZmVyZW5jZXNEaWRD
aGFuZ2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBQcmVmZXJl
bmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQog
ICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+OwogCiAgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfU2VuZERvdWJsZUFuZEZsb2F0OyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
U3luYyA9IGZhbHNlOwogCiAgICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBm
KQogICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfU2VuZEludHM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBT
ZW5kSW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9y
PHVpbnQ2NF90Pj4mIGludFZlY3RvcnMpCiAgICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50
VmVjdG9ycykKQEAgLTI4MSw3ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRz
ID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMm
PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1l
c3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0NyZWF0ZVBsdWdpbjsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJl
YWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFk
OwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJj47CkBAIC0zMDUsNyArMzA1LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIGNv
bnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfUnVuSmF2YVNjcmlw
dEFsZXJ0OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpD
b25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CkBAIC0z
MjksNyArMzI5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
Ym9vbD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9HZXRQbHVnaW5zOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1Ro
cmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJl
YWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiY+OwpAQCAtMzUzLDcgKzM1Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXJfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwog
CiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKQEAgLTM3
OSw3ICszNzksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+
OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdE11bHRpcGxlQXR0cmlidXRlczsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25z
dHJ1Y3Rpb25UaHJlYWQ7CkBAIC00MDAsNyArNDAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFy
Z3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPjsKIAogICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IGZhbHNlOwogCiAgICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXModWludDY0X3Qg
Zm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQogICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywg
YmFyLCBiYXopCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVp
bnQ2NF90Pj4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RlbXBsYXRlVGVzdDsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChj
b25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKICAg
ICAgICAgOiBtX2FyZ3VtZW50cyhhKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfU2V0Vmlk
ZW9MYXllcklEOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgU2V0
VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCYgdmlkZW9MYXllcklEKQogICAgICAgICA6IG1fYXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKQEAg
LTQ2NCw3ICs0NjQsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBJUEM6Ok1hY2hQb3J0JiwgY29uc3QgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9u
RmxhZ3M+Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9EaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIERpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4mIGZsYWdzKQog
ICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmbGFncykKQEAgLTQ4
Nyw3ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1
aW50MzJfdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9JbnRlcnByZXRLZXlFdmVu
dDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3Ry
dWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29y
ZTo6S2V5cHJlc3NDb21tYW5kPiY+OwpAQCAtNTEzLDcgKzUxMyw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj47CiAKICAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9EZXByZWNhdGVkT3BlcmF0aW9uOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25z
dCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCiAgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCkBA
IC01MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
X0V4cGVyaW1lbnRhbE9wZXJhdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAg
IGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVt
bXkpCiAgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdl
cy5oCmluZGV4IDMyZmFkNWIwYWFjNGU1ZDUzNDkxMzRkNjI1MDUxYTFiOWEwNTU3ZDEuLmZhOTg4
Y2Y3MTVjZGJjMjM5NWVmYjhhMWFkYTFlZjQ1OTkwOGJjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVN
ZXNzYWdlcy5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U2VtYXBob3JlJj47CiAKICAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTZW1h
cGhvcmVfU2VuZFNlbWFwaG9yZTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4
cGxpY2l0IFNlbmRTZW1hcGhvcmUoY29uc3QgSVBDOjpTZW1hcGhvcmUmIHMwKQogICAgICAgICA6
IG1fYXJndW1lbnRzKHMwKQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJn
dW1lbnRzID0gc3RkOjp0dXBsZTw+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1JlY2VpdmVT
ZW1hcGhvcmU7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6
OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpT
ZW1hcGhvcmUmPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluCmluZGV4IGZkMGY1MjhjNjljZGVm
ZGRhOWM0ODY3OTEzOGM2MzhiOGFjMGNiMzIuLjg2OTVmNTg2MzUyN2JmYTFjMWRlODUxYzIzYjI5
MzIyZDIxM2Y0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMjMsNSArMjMsMTAg
QEAKICMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KIG1lc3NhZ2VzIC0+IFRlc3RX
aXRoU3RyZWFtIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFNlbmRTdHJpbmcoU3Ry
aW5nIHVybCkKLSAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVybCkgLT4g
KGludDY0X3QgcmV0dXJuKQorICAgIHZvaWQgU2VuZFN0cmluZ1N5bmNocm9uaXplZChTdHJpbmcg
dXJsKSAtPiAoaW50NjRfdCByZXR1cm5WYWx1ZSkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2
b2lkIFNlbmRNYWNoU2VuZFJpZ2h0KE1hY2hTZW5kUmlnaHQgYTEpIE5vdFN0cmVhbUVuY29kYWJs
ZQorICAgIHZvaWQgUmVjZWl2ZU1hY2hTZW5kUmlnaHQoKSAtPiAoTWFjaFNlbmRSaWdodCByMSkg
Tm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKKyAgICB2b2lkIFNlbmRBbmRSZWNlaXZlTWFjaFNlbmRS
aWdodChNYWNoU2VuZFJpZ2h0IGExKSAtPiAoTWFjaFNlbmRSaWdodCByMSkgTm90U3RyZWFtRW5j
b2RhYmxlIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNz
YWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VzLmgKaW5kZXggNmEyNGViZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFi
ZDUzYjI4Ny4uNDEyN2VmNWE0YzJhZjc2YWYwZGMwYzk0YzZkM2UwNzM4ZGFmMmJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1
ZmZlck1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZl
cjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFNlbmRTdHJlYW1C
dWZmZXIoY29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCiAgICAgICAg
IDogbV9hcmd1bWVudHMoc3RyZWFtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcAppbmRleCA4Mzk4ODU1YWQ1NmU5NTE5OTdjOWQyYWIzZjg4ODA5NGM4ODkyMzI2Li5kMDRj
NTU1YWZlNzBlYzE3OWQyMzNiODE2YmZhN2ZmMjk5ZjUzYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMjksNiArMjksOSBAQAogI2luY2x1ZGUgIkRlY29k
ZXIuaCIKICNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhTdHJl
YW1NZXNzYWdlcy5oIgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9NYWNoU2Vu
ZFJpZ2h0Lmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0zOSwxMCArNDIsMjggQEAgdm9pZCBUZXN0V2l0aFN0cmVhbTo6
ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYg
Y28KICAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6
U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hT
ZW5kUmlnaHQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodD4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRoU3RyZWFtOjpzZW5kTWFjaFNlbmRSaWdodCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZDo6bmFtZSgpKSB7CiAgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJv
bml6ZWQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9u
aXplZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlJl
Y2VpdmVNYWNoU2VuZFJpZ2h0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6cmVjZWl2ZU1hY2hTZW5kUmlnaHQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRBbmRSZWNl
aXZlTWFjaFNlbmRSaWdodDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodD4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGRlY29k
ZXIpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKaW5kZXggYzQyYTQ3MjRjNjJjNzdkNmZiYTk5NTUz
ZGNjZWRkMDkxNjAyMjhhMi4uMGFhYmNkMjU0N2QwZDY0ODRlNjdlMDM3YWVmNmVkZTQ3Y2I5Mjk4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJN
ZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsNyArNDcsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0
cmVhbV9TZW5kU3RyaW5nOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZSA9IHRydWU7CiAKICAgICBleHBsaWNpdCBT
ZW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
QEAgLTY3LDcgKzY5LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNo
cm9uaXplZDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3RyZWFtRW5jb2RhYmxlID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNSZXBseVN0cmVhbUVuY29kYWJsZSA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29u
c3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90Jj47
CkBAIC04Niw1ICs5MCw4MCBAQCBwcml2YXRlOgogICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
IH07CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNlbmRNYWNoU2VuZFJpZ2h0IHsKK3B1
YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IE1hY2hTZW5kUmln
aHQmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdodDsgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNTdHJlYW1FbmNvZGFibGUgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRNYWNo
U2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIGExKQorICAgICAgICA6IG1fYXJndW1lbnRz
KGExKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorY2xhc3MgUmVjZWl2ZU1hY2hTZW5kUmlnaHQgeworcHVibGljOgorICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNlaXZl
TWFjaFNlbmRSaWdodDsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZSA9IHRydWU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVwbHlTdHJlYW1FbmNvZGFibGUgPSBmYWxzZTsK
KworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CisgICAgdXNpbmcgUmVw
bHkgPSBzdGQ6OnR1cGxlPE1hY2hTZW5kUmlnaHQmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8TWFjaFNlbmRSaWdodD47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNp
ZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBNYWNoU2VuZFJp
Z2h0Jj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0
OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5jb2RhYmxlID0gZmFsc2U7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzUmVwbHlTdHJlYW1FbmNvZGFibGUgPSBmYWxzZTsKKworICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJD
YWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1
cGxlPE1hY2hTZW5kUmlnaHQmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8TWFjaFNlbmRSaWdodD47CisgICAgZXhwbGljaXQgU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJp
Z2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIGExKQorICAgICAgICA6IG1fYXJndW1lbnRzKGExKQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdpdGhTdHJlYW0KIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VzLmgKaW5kZXggYmM3M2M5OGMzMDg2NTBmNzY2MWFmNzgwMTdlYjY2Nzg4MTQwN2Y0NC4u
NjgyZDkxNmJlNjZkNWQzMTdjYWNmMmYxYjIyNmM5Mjc1ZGY4YTAyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBl
cmNsYXNzTWVzc2FnZXMuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJn
dW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVy
Y2xhc3NfTG9hZFVSTDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0
IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDogbV9hcmd1bWVudHModXJsKQpA
QCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgc3RhdGlj
IHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QmJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QmJik+JiYpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNs
YXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
ZmFsc2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNs
YXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNT
eW5jID0gZmFsc2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKICAgICBzdGF0
aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0
X3QmJik+JiYpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPGNvbnN0IGludCY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7
CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sJiYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+JiYpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQzMl90PjsKIAogICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN1cGVyY2xhc3NfVGVzdFN5bmNNZXNzYWdlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1
ZTsKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBs
eTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpAQCAtMjEyLDcgKzIx
Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+Owog
CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0U3luY2hyb25vdXNNZXNzYWdlOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jaHJv
bm91c01lc3NhZ2VEZWxheWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxi
YWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlv
blRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaAppbmRleCA3NjYyMzJi
ODBlZmUxNjI5ODkzMzU5Njc5MzAyZDBhNjE0ZWY2OTVhLi5kY2JhNWMzZjBkOTgwNmI5M2EzNDkw
YTcwYTk0NmJiZTNlNWE4NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5o
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19Mb2FkVVJM
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFVSTChjb25z
dCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC05MCw3ICs5MCw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmlu
ZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19Mb2FkU29tZXRoaW5nOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBT
dHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZl
bnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBUb3VjaEV2ZW50
KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIDogbV9hcmd1bWVu
dHMoZXZlbnQpCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzX0FkZEV2ZW50OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwog
CiAgICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVu
dCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAog
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfTG9hZFNvbWV0aGluZ0Vsc2U7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBT
dHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC0xODEsNyArMTgxLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIHVp
bnQ2NF90LCB1aW50MzJfdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0RpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIERpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklE
LCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCiAgICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwg
bGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzX0Nsb3NlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAogICAgIHsKQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfUHJlZmVyZW5j
ZXNEaWRDaGFuZ2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBQ
cmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQogICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+Owog
CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19TZW5kRG91YmxlQW5kRmxvYXQ7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZs
b2F0IGYpCiAgICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKQEAgLTI2MCw3ICsyNjAsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj47CiAKICAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzX1NlbmRJbnRzOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAg
ICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZl
Y3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQogICAgICAgICA6IG1fYXJndW1lbnRzKGludHMs
IGludFZlY3RvcnMpCkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0
ZXJzJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0NyZWF0ZVBsdWdpbjsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tU
aHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhy
ZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJj47CkBAIC0zMDUsNyArMzA1
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3Qs
IGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19SdW5KYXZhU2Ny
aXB0QWxlcnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6
OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKQEAg
LTMyOSw3ICszMjksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxib29sPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfR2V0UGx1Z2luczsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tU
aHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhy
ZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4mPjsKQEAgLTM1Myw3ICszNTMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXNfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwog
CiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKQEAgLTM3
OSw3ICszNzksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+
OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RN
dWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0
cnVjdGlvblRocmVhZDsKQEAgLTQwMCw3ICs0MDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJn
dW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91YmxlLCBkb3VibGU+OwogCiAgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRl
c3RXaXRob3V0QXR0cmlidXRlc19UZXN0UGFyYW1ldGVyQXR0cmlidXRlczsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKIAogICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZv
bywgZG91YmxlIGJhciwgZG91YmxlIGJheikKICAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJh
ciwgYmF6KQpAQCAtNDIxLDcgKzQyMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RlbXBsYXRlVGVzdDsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChjb25z
dCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKICAgICAg
ICAgOiBtX2FyZ3VtZW50cyhhKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRCY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19TZXRWaWRlb0xh
eWVySUQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBTZXRWaWRl
b0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2
aWRlb0xheWVySUQpCiAgICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQpAQCAtNDY0
LDcgKzQ2NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6TWFjaFBvcnQmLCBjb25zdCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFn
cz4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+JiBmbGFncykKICAgICAg
ICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllciwgZmxhZ3MpCkBAIC00ODcsNyAr
NDg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDMy
X3Q+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19JbnRlcnByZXRLZXlFdmVudDsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJh
Y2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9u
VGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5
cHJlc3NDb21tYW5kPiY+OwpAQCAtNTEzLDcgKzUxMyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzX0RlcHJlY2F0ZWRPcGVyYXRpb247IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5j
ID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6
RHVtbXlUeXBlJiBkdW1teSkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKQEAgLTUzNiw3
ICs1MzYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25z
dCBJUEM6OkR1bW15VHlwZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19FeHBlcmlt
ZW50YWxPcGVyYXRpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNp
dCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQogICAg
ICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjExZjQ2MjRkYmI4OTYxYTlhYWQxNzNlNTZlNzU1
YWFmNDM5MDE5NS4uZGI4YjlkMjUyNDViNTg5Y2ZmZDk3NTNkYTg5ZDZkNWJlMDYyMjg4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CkBAIC03NDEsMTEgKzc0MiwxNyBAQCBPcHRpb25h
bDxJbnRSZWN0PiBBcmd1bWVudENvZGVyPEludFJlY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICByZXR1cm4gcmVjdDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZv
aWQgQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEludFNpemUmIGludFNpemUpCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6
ZW5jb2RlKGVuY29kZXIsIGludFNpemUpOwogfQogCit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENv
ZGVyPEludFNpemU+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IEludFNpemUmKTsK
K3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8SW50U2l6ZT46OmVuY29kZTxTdHJlYW1Db25u
ZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBJbnRTaXplJik7
CisKIGJvb2wgQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IEludFNpemUmIGludFNpemUpCiB7CiAgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8SW50
U2l6ZT46OmRlY29kZShkZWNvZGVyLCBpbnRTaXplKTsKQEAgLTMwOTYsNiArMzEwMyw3IEBAIE9w
dGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNECiB9CiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8
V2ViQ29yZTo6SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhKQogewogICAgIGVuY29kZXIgPDwgaW1hZ2VE
YXRhLT5zaXplKCk7CkBAIC0zMTA1LDYgKzMxMTMsMTEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZjwKICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyYXdEYXRhLT5kYXRhKCksIHJh
d0RhdGEtPmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNv
bnN0IFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpJbWFnZURh
dGE+Jik7CisKIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgT3B0aW9uYWw8SW50U2l6ZT4gaW1hZ2VEYXRhU2l6ZTsKQEAgLTMxMjgsNiArMzE0MSw3IEBA
IE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlCiAgICAgcmV0dXJuIHsgaW1hZ2VEYXRhLnJlbGVhc2VO
b25OdWxsKCkgfTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhKQogewogICAg
IGlmICghaW1hZ2VEYXRhKSB7CkBAIC0zMTM5LDYgKzMxNTMsMTIgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFIKICAgICBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5j
b2RlKGVuY29kZXIsIGltYWdlRGF0YS5jb3B5UmVmKCkucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
K3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+
OjplbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7CisK
K3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+
OjplbmNvZGUoU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPiYpOworCiBPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIGJvb2wgaXNFbmdhZ2VkOwpAQCAtMzIxMSw2ICszMjMxLDcgQEAgT3B0
aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkdyYXBoaWNzQ28KICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYgYWN0aXZlSW5mbykKIHsKICAg
ICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8ubmFtZTsKQEAgLTMyMTgsNiArMzIzOSwxMSBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jbwogICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5zaXplOwogfQog
Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVJbmZvPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZTxTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOworCiBPcHRpb25hbDxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDM2
YTFkZjM3OWU0ZDNkNDZhNWIzYmUxYzM0MzM1MGQzNGM2OGFlNDIuLjA4YmM5OTIxMWViYjA5M2M4
ZDFkNTM4ZGM3ZjQyYmY2YTBmNTI0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0zNDcsNiArMzQ3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbnRSZWN0PiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkludFNpemU+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OkludFNpemUmKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6SW50U2l6ZT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTgxNSwxMSArODE2LDEzIEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3I+IHsKICNlbmRpZgogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZURhdGE+Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPiYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29y
ZTo6SW1hZ2VEYXRhPj4gZGVjb2RlKERlY29kZXImKTsKIH07CkBAIC04MzksNiArODQyLDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXM+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8mKTsKICAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGMyMDczZTc1YjIxNzk4NTI0NzVhM2E1NjBjOGVmZmRiMjg0MmY4ZDUuLjQ2MjEyMGMxMWZm
OWQ3MjgyNDVhOTk4MWExY2FkZDBkNDFkNGZhMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIElQQyBz
aG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzczODc2OTQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1hcmsgUHJlcGFyZUZvckRpc3BsYXkoKSBhcyAibm90IHJlcGx5
YWJsZSB0aHJvdWdoIHRoZSBzdHJlYW0iCisgICAgICAgIHNpbmNlIGl0IHJlcGxpZXMgd2l0aCBN
YWNoU2VuZFJpZ2h0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
CiAyMDIxLTAzLTAyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkaW5nIG5ldyB0ZXN0IGNvbmRpdGlvbnMgZm9yIFdlYkdMIHNob3VsZCBiZSBzaW1w
bGVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggYWE4NTE2YmM0OWIwNjc1MWFkMDAw
NTQ0ZDJkZGUzNjZhYzUxMjc3Ny4uODBiNDJhYzhlZmY5Njc4NGQ1YTczYzJjYzJhZGQ5ZTNhNDNl
ZGRmNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtOTIsNyArOTIsNyBAQCBjb250
ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAogbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9u
b3VzCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3Bs
YXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CiAjZW5kaWYKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5
bmNocm9ub3VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423163</attachid>
            <date>2021-03-15 05:49:51 -0700</date>
            <delta_ts>2021-03-15 05:51:29 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-220974-20210315144949.patch</filename>
            <type>text/plain</type>
            <size>79254</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5MTBhYjA1ZjZkMzUwNzZh
NzYyZmYxZGM2NjM3N2Q2YjhkZTEwMjYuLmEwZWFjOWMyZTFhMWM2YjU2MWIzZGY3MDYzNjM4YWYz
YzI5ZDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTAzLTE1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgSVBDIHNob3Vs
ZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3Igc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzM4NzY5NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCisKKyAgICAgICAgU2VuZCBzeW5jaHJvbm91cyBtZXNzYWdlcyB2aWEgdGhlIHN0cmVhbSBz
aGFyZWQgbWVtb3J5LgorICAgICAgICBJbXByb3ZlcyBNb3Rpb25NYXJrIG9uIGlNYWMxLDEgZnJv
bSA1MDAwIHRvIH41MzAwIHB0cy4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBlbmNvZGFi
bGUgYXMgYSB2YWx1ZSwgdHJ5IHRvIGRvIHNvLgorICAgICAgICBJZiB0aGUgcmVwbHkgaXMgZW5j
b2RhYmxlIGFzIGEgdmFsdWUsIHRyeSB0byBkbyBzby4KKyAgICAgICAgQSBtZXNzYWdlIG9yIGEg
cmVwbHkgaXMgbm90IGVuY29kYWJsZSBpZiBhbiBhcmd1bWVudCBpbiB0aGUgbWVzc2FnZQorICAg
ICAgICBtdXN0IGJlIHBhc3NlZCBieSByZWZlcmVuY2UgdmlhIHRoZSBPUyBzcGVjaWZpYyBtZWNo
YW5pc20KKyAgICAgICAgKGUuZy4gYSBpb3N1cmZhY2Ugb3IgYSBmaWxlIGhhbmRsZSBjYW5ub3Qg
YmUgc2VudCBhcyBhIHZhbHVlKS4KKworICAgICAgICBTaW1pbGFyIHRvIGFzeW5jaHJvbm91cyBt
ZXNzYWdlcywgaWYgdGhlIHN5bmNocm9ub3VzIG1lc3NhZ2UgZml0cyB0bworICAgICAgICB0aGUg
c3RyZWFtIGJ1ZmZlciwgdGhlIG1lc3NhZ2UgaXMgc2VudCB2aWEgdGhlIGJ1ZmZlci4gU2FtZSB3
aXRoIHRoZQorICAgICAgICByZXBseS4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBvciByZXBs
eSBpcyBub3Qgc2VudCB2aWEgdGhlIHN0cmVhbSBidWZmZXIsIGl0IGlzIHNlbnQgdmlhCisgICAg
ICAgIHRoZSBub3JtYWwgSVBDLgorCisgICAgICAgIFRoZSBjbGllbnQgcHJvdG9jb2wgaXM6Cisg
ICAgICAgIDEpIFdyaXRlIHRoZSBtZXNzYWdlIHRvIHRoZSBidWZmZXIgYW5kIHJlbGVhc2UgaXQu
CisgICAgICAgIDIpIFdhaXQgdW50aWwgdGhlIHNlcnZlciByZWxlYXNlcyB0aGUgd2hvbGUgYnVm
ZmVyIGJhY2sgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgMykgUmVhZCB0aGUgcmVwbHkgZnJvbSBp
bmRleCAwLgorICAgICAgICA0KSBDb250aW51ZSBzZW5kaW5nIG5leHQgbWVzc2FnZSBmcm9tIGlu
ZGV4IDAuCisKKyAgICAgICAgVGhlIHNlcnZlciBwcm90b2NvbCBpcyB1cG9uIHJlY2VpdmluZyBh
IG1lc3NhZ2UgdGhhdCBpcyBzeW5jaHJvbm91czoKKyAgICAgICAgMSkgUmVhZCB0aGUgbWVzc2Fn
ZSBmcm9tIHRoZSBtZXNzYWdlIHBvc2l0aW9uLCBkaXNwYXRjaCBpdC4KKyAgICAgICAgMikgV3Jp
dGUgdGhlIHJlcGx5IHRvIGluZGV4IDAuCisgICAgICAgIDMpIFJlbGVhc2UgdGhlIHdob2xlIGJ1
ZmZlciBiYWNrIHRvIHRoZSBjbGllbnQuCisgICAgICAgIDQpIENvbnRpbnVlIHJlYWRpbmcgbmV4
dCBtZXNzYWdlIGZyb20gaW5kZXggMC4KKworICAgICAgICBUaGUgY2xpZW50IHdpbGwgbm90IGtu
b3cgYXQgdGhlIHNlbmQgdGltZSB3aGV0aGVyIHRoZSBzZXJ2ZXIgd2lsbCByZXBseQorICAgICAg
ICB2aWEgdGhlIHN0cmVhbSBvciB2aWEgbm9ybWFsIElQQyBtZXNzYWdlLiBUaGUgY2xpZW50IHdp
bGwgcmVzZXJ2ZQorICAgICAgICBhIElQQyBzeW5jIHJlcXVlc3QgSUQgZm9yIG5vcm1hbCBJUEMg
cmVwbHkgcHVycG9zZXMuCisKKyAgICAgICAgSW4gY2FzZSBhIG1lc3NhZ2Ugb3IgYSByZXBseSBk
b2VzIG5vdCBmaXQgdG8gdGhlIHN0cmVhbSBidWZmZXIsIHRoZQorICAgICAgICBQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyIGluc3RlYWQu
CisgICAgICAgIFRoaXMgd2lsbCBtYWtlIHRoZSByZWFkZXIgdG8gd2FpdCBmb3IgdGhlIG5vcm1h
bCBJUEMgbWVzc2FnZS4KKworICAgICAgICBDaGFuZ2VzIHRlbXBvcmFyaWx5IHNvIHRoYXQgdGhl
IGNyZWF0aW9uIG9mIHRoZSBjb250ZXh0IHdhaXRzIGZvciB0aGUKKyAgICAgICAgY29uZmlybWF0
aW9uIHRoYXQgdGhlIGNyZWF0aW9uIHdhcyBkb25lLiBUaGlzIGlzIGR1ZSB0byBzeW5jaHJvbm9u
b3VzCisgICAgICAgIHN0cmVhbSBzZW5kIHVuYWJsZSB0byBkZWxpdmVyIHRoZSBXYXNDcmVhdGVk
IG1lc3NhZ2UgZHVyaW5nCisgICAgICAgIHdhaXQgZm9yIHJlcGx5LCBhdCB0aGUgbW9tZW50Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHVzaFBlbmRpbmdT
eW5jUmVxdWVzdElEKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cG9wUGVuZGluZ1N5bmNS
ZXF1ZXN0SUQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246Om1ha2VTeW5jUmVxdWVzdElEKToKKyAgICAgICAgTW92ZSB0aGUgY29kZSBmcm9tIHNl
bmRTeW5jTWVzc2FnZSB0byBpbmRpdmlkdWFsIGZ1bmN0aW9ucyBzbworICAgICAgICB0aGF0IHRo
ZSBjbGllbnQgY2FuIHJlc2VydmUgYSBzeW5jIHJlcXVlc3QgSUQgZm9yIHJlcGx5IHB1cnBvc2Vz
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTdHJlYW0pOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjphY3F1aXJlQWxsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZUFsbCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIEZpeCBhIHR5cG8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWly
ZQorCisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNw
YXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICBJZiB0aGUgbWVzc2FnZSBjb21lcyBpbiBhcyBu
b3JtYWwgSVBDIG1lc3NhZ2UsIGl0IG11c3QgYmUgcmVwbGllZAorICAgICAgICB2aWEgbm9ybWFs
IElQQy4KKworICAgICAgICBBZGQgYSBmbGFnIG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2Ug
dG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKyAgICAgICAgbWVzc2FnZSBiZWluZyBwcm9jZXNzZWQg
Y29tZXMgYXMgYSBub3JtYWwgSVBDIG1lc3NhZ2Ugb3IgYQorICAgICAgICBzdHJlYW0gbWVzc2Fn
ZS4gVGhpcyBpbmZvcm1hdGlvbiBtdXN0IGJlIHN0YXRlZnVsIGluIHRoZSBjb25uZWN0aW9uCisg
ICAgICAgIGNsYXNzLCBhcyBpdCBpcyBub3QgcGFzc2FibGUgYXMgYXJndW1lbnRzIHdoZW4gdGhl
IGV4ZWN1dGlvbiBnb2VzIHRocm91Z2g6CisgICAgICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKCkKKyAgICAgICAgICAgIFJlY2Vp
dmVyOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgpCisgICAgICAgICAgICBoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXMoKQorICAgICAgICAgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZl
cj46OnNlbmRTeW5jUmVwbHkoKQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgIEFkZCBwcm9wZXJ0aWVzIE5vdFN0cmVhbUVuY29kYWJsZSwgTm90U3RyZWFt
RW5jb2RhYmxlUmVwbHkKKyAgICAgICAgdGhhdCBpbmRpY2F0ZSBpZiB0aGUgbWVzc2FnZSBwYXJh
bWV0ZXJzIGFyZSBzdWNoIHRoYXQgdGhleQorICAgICAgICBjYW5ub3QgYmUgZW5jb2RlZCBpbnRv
IHBsYWluIGRhdGEgYnVmZmVyIGFzIHZhbHVlcy4KKyAgICAgICAgVGhpcyBpcyBlbmNvZGVkIGFz
ICdjb25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZScgYW5kCisgICAgICAgICdjb25zdGV4
cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZVJlcGx5JyBmb3IgdGhlIHN0cmVhbSBtZXNzYWdlcy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JBcmd1bWVudHMpOgorICAgICAgICAo
SVBDOjptZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToK
KyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3Nh
Z2VOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2Vz
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNz
YWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U2VtYXBob3JlTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaDoKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodDo6U2VuZE1hY2hT
ZW5kUmlnaHQpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNl
bmRSaWdodDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNlbmRSaWdodDo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJp
Z2h0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJl
Y2VpdmVNYWNoU2VuZFJpZ2h0OjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oOgorICAgICAgICBUZXN0IGNoYW5nZXMgcmVs
YXRlZCB0byBOb3RTdHJlYW1FbmNvZGFibGUsIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5LgorCisg
ICAgICAgIE90aGVyIGNoYW5nZXMgaW5kaWNhdGUgYW4gYXV4aWxpYXJ5IGNoYW5nZSB0byBtZXNz
YWdlIHN0cnVjdHM6CisgICAgICAgIGNoYW5naW5nICdjb25zdCBib29sIGlzU3luYycgdG8gJ2Nv
bnN0ZXhwciBib29sIGlzU3luYycuCisgICAgICAgIFRoaXMgaXMgZG9uZSBmb3IgY29uc2lzdGVu
Y3ksIHNpbmNlICdpc1N0cmVhbUVuY29kYWJsZSonIHByb3BlcnRpZXMKKyAgICAgICAgYXJlIGFs
c28gYWRkZWQgYXMgY29uc3RleHByLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICBNYWtlIHR5cGVzIHRoYXQgYXJlIFdlYkdMIHN5bmMgbWVzc2FnZSBwYXJhbWV0ZXJz
IG9yIHJlcGx5IHBhcmFtZXRlcnMKKyAgICAgICAgbm93IGVuY29kYWJsZSB0byBhIHN0cmVhbSBi
eSBtYWtpbmcgdGhlIGVuY29kZXIgcGFydCBhIHRlbXBsYXRlLgorICAgICAgICBQcmV2aW91c2x5
IHRoZXNlIHdlcmUgc2VudCBvbmx5IGJ5IG5vcm1hbCBJUEMsIGFuZCBkaWQgbm90IG5lZWQKKyAg
ICAgICAgdG8gYmUgcG9seW1vcnBoaWMgdG8gdGhlIGVuY29kZXIuCisKIDIwMjEtMDMtMTMgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF1bTVNFXSBNZWRp
YVNvdXJjZTo6YnVmZmVyZWQgYW5kIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZmZXJzIGRv
IG5vdCB1cGRhdGUgaW4gdGhlIHNhbWUgcnVuIGxvb3AgYXMgTWVkaWFTb3VyY2U6OmVuZE9mU3Ry
ZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA2YTA4
MzllMmRhM2Q2NThjZTc1ZGU0YTQzMWQ3YmU5MWU0MDRmZmE4Li4zNTc0NWE1NmY5YzA4MGMyZmUz
YmE0ZTdhOThhZmRiMjcxM2ZmNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmlu
ZGV4IDUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQuLjNhYjlmY2M1ZWQx
MDM1NTliMWI2ZWIzYjRlZDEwNmY1YmJkMjY5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyIDogZGVjbHR5cGUoRGV0
YWlsOjoKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgSGFzTW9kZXJuRGVjb2RlclYgPSBIYXNNb2Rlcm5EZWNvZGVyPFQsIEk+Ojp2YWx1
ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIHQu
ZW5jb2RlKGVuY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNi4uZTQ4
ZTgzMjZhMmE3MzVlZjkyNGY4NzM3MmRjNzg2MzlkODIzOTMzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFj
ZSBJUEMgewogCiAvLyBBbiBhcmd1bWVudCBjb2RlciB3b3JrcyBvbiBQT0QgdHlwZXMKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnQpLCBzaXplb2YoVCksIGFs
aWdub2YoVCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCA4ZDhlYzkyZjhlYzA5MGQ4YTdhYTAzMzUwNDRiMDAyYzk5ODI2MjM1Li40NDA2YjhhODdjNGUw
NzhmNGQ3N2YxNzMzY2Q1NzRjMzVjOWMwYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFVuaXF1ZVJlZjxFbmNvZGVyPiBD
b25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsCiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihtZXNzYWdlTmFt
ZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4K
LSAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7CisgICAgc3luY1JlcXVlc3RJ
RCA9IG1ha2VTeW5jUmVxdWVzdElEKCk7CiAgICAgZW5jb2Rlci5nZXQoKSA8PCBzeW5jUmVxdWVz
dElEOwogCiAgICAgcmV0dXJuIGVuY29kZXI7CkBAIC01NjQsMjggKzU2NCw0MCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUg
bWVzc2FnZU5hbWUsIHVpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIENvbm5lY3Rp
b246OnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5jUmVxdWVzdElEKQorewor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsK
KyAgICAgICAgaWYgKCFtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgbV9wZW5kaW5nU3luY1JlcGxpZXMuYXBwZW5kKFBlbmRpbmdT
eW5jUmVwbHkoc3luY1JlcXVlc3RJRCkpOworICAgIH0KKyAgICArK21faW5TZW5kU3luY0NvdW50
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbm5lY3Rpb246OnBvcFBlbmRpbmdTeW5j
UmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQpCit7CisgICAgLS1tX2luU2VuZFN5bmND
b3VudDsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAg
IEFTU0VSVF9VTlVTRUQoc3luY1JlcXVlc3RJRCwgbV9wZW5kaW5nU3luY1JlcGxpZXMubGFzdCgp
LnN5bmNSZXF1ZXN0SUQgPT0gc3luY1JlcXVlc3RJRCk7CisgICAgbV9wZW5kaW5nU3luY1JlcGxp
ZXMucmVtb3ZlTGFzdCgpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNv
ZGVyPiYmIGVuY29kZXIsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCiB7CisgICAgQVNTRVJUKHN5bmNSZXF1ZXN0SUQpOwogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotCi0gICAgLy8gUHVzaCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uIG9u
IG91ciBzdGFjay4KLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY1JlcGx5
U3RhdGVNdXRleCk7Ci0gICAgICAgIGlmICghbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXMpIHsK
LSAgICAgICAgICAgIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5h
cHBlbmQoUGVuZGluZ1N5bmNSZXBseShzeW5jUmVxdWVzdElEKSk7CisgICAgaWYgKCFwdXNoUGVu
ZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpIHsKKyAgICAgICAgZGlkRmFpbFRvU2Vu
ZFN5bmNNZXNzYWdlKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgICsr
bV9pblNlbmRTeW5jQ291bnQ7Ci0KICAgICAvLyBGaXJzdCBzZW5kIHRoZSBtZXNzYWdlLgogICAg
IE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5OwogICAgIGlmIChzZW5kU3lu
Y09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hXaGVuRGVzdGlu
YXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpKQpAQCAtNTk5LDE0ICs2MTEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVp
bnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaQogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0
aGlzKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1Jl
cGx5KHN5bmNSZXF1ZXN0SUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMp
OwogCi0gICAgLS1tX2luU2VuZFN5bmNDb3VudDsKLQotICAgIC8vIEZpbmFsbHksIHBvcCB0aGUg
cGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uLgotICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKLSAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z1N5bmNSZXBsaWVzLmxhc3QoKS5zeW5jUmVxdWVzdElEID09IHN5bmNSZXF1ZXN0SUQpOwotICAg
ICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5yZW1vdmVMYXN0KCk7Ci0gICAgfQorICAgIHBvcFBl
bmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFyZXBseSkKICAg
ICAgICAgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKaW5kZXggZDliNTMwMzM1OGQ2NDc4NjZjOWFiNmE1N2NjMTdiZGVhOTQy
ZjhkZi4uNDdlMjM1NmYxOTVhNTViZmJjOTQ2YjFiMDU4OGEyZDA4YmU5ZGUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzIzLDcgKzMyMyw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOwotICAg
IAorICAgIHVpbnQ2NF90IG1ha2VTeW5jUmVxdWVzdElEKCkgeyByZXR1cm4gKyttX3N5bmNSZXF1
ZXN0SUQ7IH0KKyAgICBib29sIHB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5j
UmVxdWVzdElEID0gMCk7CisgICAgdm9pZCBwb3BQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRf
dCBzeW5jUmVxdWVzdElEKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5
bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgVGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rp
b24gd29yayBxdWV1ZS4KQEAgLTQ5Niw2ICs0OTgsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50TGlz
dGVuZXIgbV93cml0ZUxpc3RlbmVyOwogICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlIHsgSU5W
QUxJRF9IQU5ETEVfVkFMVUUgfTsKICNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA3NTE1OTM4ZDQyZGUzNjU1NDUwZGIw
NGQyZmUyMDlmNWRlZjAxYTY4Li5lNzUzZDExMmE0NzE5YzcyZjlmNzBhYTc5MmM1YzA0MmViN2Qw
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0x
ODQsNyArMTg0LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGQKICAgICB9CiAKICAgICB0eXBl
bmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1JlcXVlc3RJRCwg
Y29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJs
ZSB7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgYXJn
cy4uLik7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJ
RCwgYXJncy4uLik7CiAgICAgfTsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJn
dW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5oCmluZGV4IDA4ODY0OTQzOTlhMGU1ZjZhMzk4NTA1YjQxOWQ4YmY1MjFiNWI4YmQuLmUz
Mjg0MTc5ZTA4MzlhMTc3YjY5ZmI3NzFiMWY3MzBkNTRiOWRiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTY3LDEw
ICs2NywxNiBAQCBwcml2YXRlOgogICAgIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNz
YWdlU2l6ZTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0g
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIHRyeVNlbmRTdHJlYW0oVCYgbWVzc2FnZSwgU3BhbiYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgT3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHRy
eVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiwgVGltZW91dCwg
U3BhbiYpOwogICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBUaW1lb3V0KTsKICAgICB2b2lkIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1N
ZXNzYWdlKFNwYW4mJik7CiAKICAgICBPcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKFRpbWVvdXQp
OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmVBbGwoVGltZW91dCk7CisKICAgICBlbnVt
IGNsYXNzIFdha2VVcFNlcnZlciA6IGJvb2wgewogICAgICAgICBObywKICAgICAgICAgWWVzCkBA
IC0xMTAsMTQgKzExNiw5IEBAIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChUJiYg
bWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklECiAgICAgYXV0byBzcGFu
ID0gdHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAgICBpZiAoIXNwYW4pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB7Ci0gICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNv
ZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07Ci0gICAgICAgIGlmICht
ZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICBhdXRv
IHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKLSAgICAgICAg
ICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwU2Vy
dmVyOjpZZXMpCi0gICAgICAgICAgICAgICAgd2FrZVVwU2VydmVyKCk7CisgICAgaWYgY29uc3Rl
eHByKFQ6OmlzU3RyZWFtRW5jb2RhYmxlKSB7CisgICAgICAgIGlmICh0cnlTZW5kU3RyZWFtKG1l
c3NhZ2UsICpzcGFuKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAg
fQogICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKICAg
ICBpZiAoIW1fY29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KSkKQEAgLTEyNSw2ICsxMjYsMTkgQEAgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Jvb2wgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHJ5U2VuZFN0cmVhbShUJiBtZXNzYWdlLCBTcGFuJiBzcGFuKQoreworICAg
IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFu
LmRhdGEsIHNwYW4uc2l6ZSB9OworICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFy
Z3VtZW50cygpKSB7CisgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdl
RW5jb2Rlci5zaXplKCkpOworICAgICAgICBpZiAod2FrZXVwUmVzdWx0ID09IFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246Oldha2VVcFNlcnZlcjo6WWVzKQorICAgICAgICAgICAgd2FrZVVwU2VydmVy
KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0
aW5hdGlvbklELCBUaW1lb3V0IHRpbWVvdXQpCiB7CkBAIC0xMzQsMTIgKzE0OCw1NyBAQCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kU3luYyhUJiYgbWVzcwogICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUodGltZW91dCk7
CiAgICAgaWYgKCFzcGFuKQogICAgICAgICByZXR1cm4geyB9OwotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2Vp
dmUgdGhyb3VnaCBzdHJlYW0uCisgICAgaWYgY29uc3RleHByKFQ6OmlzU3RyZWFtRW5jb2RhYmxl
KSB7CisgICAgICAgIGF1dG8gbWF5YmVTZW5kUmVzdWx0ID0gdHJ5U2VuZFN5bmNTdHJlYW0obWVz
c2FnZSwgcmVwbHksIHRpbWVvdXQsICpzcGFuKTsKKyAgICAgICAgaWYgKG1heWJlU2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCptYXliZVNlbmRSZXN1bHQpOworICAgIH0K
ICAgICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CiAgICAg
cmV0dXJuIG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK09wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVz
dWx0PiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbShUJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHksIFRpbWVvdXQgdGltZW91dCwgU3BhbiYgc3BhbikK
K3sKKyAgICAvLyBJbiB0aGlzIGZ1bmN0aW9uLCBTZW5kU3luY1Jlc3VsdCB7IH0gbWVhbnMgZXJy
b3IgaGFwcGVuZWQgYW5kIGNhbGxlciBzaG91bGQgc3RvcCBwcm9jZXNzaW5nLgorICAgIC8vIFdU
Rjo6bnVsbG9wdCBtZWFucyB3ZSBjb3VsZG4ndCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28g
dHJ5IHNlbmRpbmcgb3V0IG9mIHN0cmVhbS4KKyAgICBhdXRvIHN5bmNSZXF1ZXN0SUQgPSBtX2Nv
bm5lY3Rpb24ubWFrZVN5bmNSZXF1ZXN0SUQoKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbi5wdXNo
UGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCisgICAgICAgIHJldHVybiBTZW5k
U3luY1Jlc3VsdCB7IH07CisKKyAgICBhdXRvIHJlc3VsdCA9IFsmXSgpIC0+IE9wdGlvbmFsPFNl
bmRTeW5jUmVzdWx0PiB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VF
bmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgICAgICBpZiAo
IShtZXNzYWdlRW5jb2RlciA8PCBzeW5jUmVxdWVzdElEIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkp
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgYXV0byB3YWtldXBS
ZXN1bHQgPSByZWxlYXNlKG1lc3NhZ2VFbmNvZGVyLnNpemUoKSk7CisKKyAgICAgICAgaWYgKHdh
a2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXI6OlllcykK
KyAgICAgICAgICAgIHdha2VVcFNlcnZlcigpOworICAgICAgICBpZiBjb25zdGV4cHIoVDo6aXNS
ZXBseVN0cmVhbUVuY29kYWJsZSkgeworICAgICAgICAgICAgYXV0byByZXBseVNwYW4gPSB0cnlB
Y3F1aXJlQWxsKHRpbWVvdXQpOworICAgICAgICAgICAgaWYgKCFyZXBseVNwYW4pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFNlbmRTeW5jUmVzdWx0IHsgfTsKKyAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB7IG5ldyBEZWNvZGVyKHJlcGx5U3Bhbi0+
ZGF0YSwgcmVwbHlTcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEKSB9OworICAgICAg
ICAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgIT0gTWVzc2FnZU5hbWU6OlByb2Nlc3NP
dXRPZlN0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGVjb2Rlci0+bWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGRlY29kZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9jbGllbnRPZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9u
LndhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgVDo6bmFtZSgpLCB0aW1lb3V0LCB7IH0p
OworICAgIH0oKTsKKyAgICBtX2Nvbm5lY3Rpb24ucG9wUGVuZGluZ1N5bmNSZXF1ZXN0SUQoc3lu
Y1JlcXVlc3RJRCk7CisgICAgaWYgKHJlc3VsdCAmJiAqcmVzdWx0KSB7CisgICAgICAgIGF1dG8m
IGRlY29kZXIgPSAqKnJlc3VsdDsKKyAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgVDo6UmVwbHlB
cmd1bWVudHM+IHJlcGx5QXJndW1lbnRzOworICAgICAgICBkZWNvZGVyID4+IHJlcGx5QXJndW1l
bnRzOworICAgICAgICBpZiAoIXJlcGx5QXJndW1lbnRzKQorICAgICAgICAgICAgcmV0dXJuIFNl
bmRTeW5jUmVzdWx0IHsgfTsKKyAgICAgICAgbW92ZVR1cGxlKFdURk1vdmUoKnJlcGx5QXJndW1l
bnRzKSwgcmVwbHkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBpbmxpbmUgYm9v
bCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKICAgICBpZiAoZGVzdGlu
YXRpb25JRCA9PSBtX2N1cnJlbnREZXN0aW5hdGlvbklEKQpAQCAtMjAxLDYgKzI2MCw0NSBAQCBp
bmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK2lu
bGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlBY3F1aXJlQWxsKFRpbWVvdXQgdGltZW91dCkKK3sKKyAgICAvLyBUaGlz
IHdvdWxkIG1lYW4gd2UgdHJ5IHRvIHNlbmQgbWVzc2FnZXMgYWZ0ZXIgYSB0aW1lb3V0LiBJdCBp
cyBhIHByb2dyYW1taW5nIGVycm9yLgorICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBpcyB0cnVzdGVk
LCB3ZSBvbmx5IGFzc2VydC4KKyAgICBBU1NFUlQoc2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpICE9IENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdU
YWcpOworCisgICAgLy8gVGhlIHNlcnZlciBhY2tub3dsZWRnZXMgdGhhdCBzeW5jIG1lc3NhZ2Ug
aGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHNldHRpbmcgY2xpZW50T2Zmc2V0ID09IGNsaWVudExpbWl0
ID09IDAuCisgICAgLy8gV2FpdCBmb3IgdGhpcyBjb25kaXRpb24sIG9yIHRoZW4gdGhlIGNvbmRp
dGlvbiB3aGVyZSBzZXJ2ZXIgc2F5cyB0aGF0IGl0IHN0YXJ0ZWQgdG8gc2xlZXAgYWZ0ZXIgc2V0
dGluZyB0aGF0IGNvbmRpdGlvbi4KKyAgICAvLyBUaGUgd2FpdCBzZXF1ZW5jZSBpbnZvbHZlcyB0
d28gdmFyaWFibGVzLCBzbyBmb3JtIGEgdHJhbnNhY3Rpb24gYnkgc2V0dGluZyBjbGllbnRMaW1p
dCA9PSBjbGllbnRJc1dhaXRpbmdUYWcuCisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIGlzIGNhbmNl
bGxlZCBpZiB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHNldCBjbGllbnRPZmZzZXQgPT0gY2xpZW50
TGltaXQgPT0gMCwgb3RoZXJ3aXNlIGl0IGNvbW1pdHMuCisgICAgLy8gSWYgdGhlIHRyYW5zYWN0
aW9uIGNvbW1pdHMsIHNlcnZlciBpcyBndWFyYW50ZWVkIHRvIHNpZ25hbC4KKworICAgIGZvciAo
OzspIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgQ2xpZW50TGltaXQgY2xpZW50TGlt
aXQgPSBzaGFyZWRDbGllbnRMaW1pdCgpLmV4Y2hhbmdlKENsaWVudExpbWl0OjpjbGllbnRJc1dh
aXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBDbGllbnRPZmZz
ZXQgY2xpZW50T2Zmc2V0ID0gc2hhcmVkQ2xpZW50T2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9hY3F1aXJlKTsKKyNlbHNlCisgICAgICAgIENsaWVudExpbWl0IGNsaWVudExpbWl0ID0g
c2hhcmVkQ2xpZW50TGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAg
ICAgICBDbGllbnRPZmZzZXQgY2xpZW50T2Zmc2V0ID0gc2hhcmVkQ2xpZW50T2Zmc2V0KCkubG9h
ZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyNlbmRpZgorICAgICAgICBpZiAoIWNsaWVu
dExpbWl0ICYmIChjbGllbnRPZmZzZXQgPT0gQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5n
VGFnIHx8ICFjbGllbnRPZmZzZXQpKQorICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgbV9idWZmZXIuY2xpZW50V2FpdFNlbWFwaG9yZSgpLndhaXRGb3Io
dGltZW91dCk7CisjZWxzZQorICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAgICAg
ICAgaWYgKHRpbWVvdXQuZGlkVGltZU91dCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gSW4gY2FzZSB0aGUgdHJh
bnNhY3Rpb24gd2FzIGNhbmNlbGxlZCwgdW5kbyB0aGUgdHJhbnNhY3Rpb24gbWFya2VyLgorICAg
IHNoYXJlZENsaWVudExpbWl0KCkuc3RvcmUoc3RhdGljX2Nhc3Q8Q2xpZW50TGltaXQ+KDApLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyNlbmRpZgorICAgIG1fY2xpZW50T2Zmc2V0ID0g
MDsKKyAgICByZXR1cm4gYWxpZ25lZFNwYW4obV9jbGllbnRPZmZzZXQsIDApOworfQorCiBpbmxp
bmUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwU2VydmVyIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUs
IG1pbmltdW1NZXNzYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKaW5kZXggNTJiM2Q3OWVhYTM2ODc0MGMxMmQ1YmM1
NDUyN2U5NTdlZjRhNjk4My4uZTUyY2FiMjk4OGRkOGIzOWZmMzM4MDVmNGQzNjliMWI1NGRlMTFi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaApAQCAtNDksMTAgKzQ5LDIwIEBAIG5hbWVzcGFjZSBJUEMgewogLy8gYW5kIHRo
ZW4gdXBvbiB0aGUgc2Vjb25kIGFjcXVpcmUgMTY2IGJ5dGVzLiBEdWUgdG8gaG93IGFsaWdubWVu
dCBhbmQgbWluaW11bSBsZW5ndGggYWZmZWN0IHRoZSBwb3NpdGlvbiBhdCB3aGljaCB0aGUKIC8v
IG1lbW9yeSBjYW4gYmUgcmVmZXJyZWQgdG8sIHRoZSBzZXJ2ZXIgY2Fubm90ICJyZWFkIHR3byB0
aW1lcyBzaW11bHRhbmVvdXNseSIgYW5kIHJlbGVhc2UgMTc0IGJ5dGVzLgogLy8KKy8vIFRoZSBi
dWZmZXIgYWxzbyBzdXBwb3J0cyBzeW5jaHJvbm91cyByZXBsaWVzIHZpYSAicmVsZWFzZUFsbC9h
Y3F1aXJlQWxsIiBjYWxsIHBhdHRlcm4uIFRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGNhbgor
Ly8gZXN0YWJsaXNoIGNhc2VzIHdoZXJlIHRoZSBjbGllbnQgdHJhbnNmZXJzIG93bmVyc2hpcCBv
ZiB0aGUgZGF0YSB0byB0aGUgc2VydmVyLiBJbiB0aGVzZSBjYXNlcyB0aGUgc2VydmVyIHdpbGwK
Ky8vIGFja25vd2xlZGdlIHRoZSByZWFkIHdpdGggInJlbGVhc2VBbGwiIG9wZXJhdGlvbi4gVGhl
IGNsaWVudCB3aWxsIHRoZW4gcmVhZCB0aGUgcmVwbHkgdmlhICJhY3F1aXJlQWxsIiBvcGVyYXRp
b24uIFRoZQorLy8gcmVwbHkgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGJ1ZmZlci4gVGhpcyBtYW5kYXRlcyB0aGF0IGluLXBsYWNlIGRhdGEgcmVmZXJlbmNlcyBpbiB0
aGUgYnVmZmVyCisvLyBjYW5ub3QgYmUgdXNlZCBzaW11bHRhbmVvdXNseSBmb3IgbWVzc2FnZSBk
YXRhIGFuZCB0aGUgcmVwbHkgZGF0YS4gSW4gY3VycmVudCBJUEMgaW1wbGVtZW50YXRpb24sIHRo
ZSBtZXNzYWdlCisvLyBwcm9jZXNzaW5nIHVzZXMgdGhlIGluLXBsYWNlIGRhdGEgcmVmZXJlbmNl
cywgd2hpbGUgdGhlIHJlcGx5IGRhdGEgaXMgZmlyc3QgY29uc3RydWN0ZWQgdG8gYWxsb2NhdGVk
IG1lbW9yeSBhbmQgdGhlbgorLy8gY29waWVkIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4KKy8vCiAv
LyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb246CiAvLyAq
IFRoZSBjbGllbnQgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtjbGllbnRPZmZzZXQsIHNlcnZlck9m
ZnNldFsuIFdoZW4gY2xpZW50T2Zmc2V0ID09IHNlcnZlck9mZnNldCwgdGhlIGNsaWVudCBvd25z
CiAvLyAgIGFsbCB0aGUgZGF0YS4KIC8vICogVGhlIHNlcnZlciBvd25zIHRoZSBkYXRhIGJldHdl
ZW4gW3NlcnZlck9mZnNldCwgY2xpZW50T2Zmc2V0Wy4KKy8vICogVGhlIGV4Y2VwdGlvbiB0byB0
aGUgYWJvdmUgaXMgd2hlbiBjb21tdW5pY2F0aW9uIHByb3RvY29sIGNhbiBjb250YWluIG1lc3Nh
Z2VzIHRoYXQgZGVub3RlIHRoYXQgdGhlIHNlcnZlciB3aWxsIG93bgorLy8gICBhbGwgdGhlIGRh
dGEuCiAvLyAqIFRoZSBidWZmZXIgY2FuIGhvbGQgbWF4aW11bSBvZiBzaXplIC0gMSB2YWx1ZXMu
IFRoZSBsYXN0IHZhbHVlIGlzIHJlc2VydmVkIGZvciBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBmdWxsLgogLy8gICBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRh
dGlvbiBpZiBpdCB3b3VsZCB1c2UgdGhlICJ3cmFwIiBmbGFnIGluc3RlYWQgb2YgdGhlIGhvbGUg
YXMgdGhlIGluZGljYXRvci4KIC8vICAgVGhpcyB3b3VsZCBtb3ZlIHRoZSBhbGlnbmVkU3BhbiBp
bXBsZW1lbnRhdGlvbiB0byB0aGUgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOGU0OTI2NjQ0YTgwODYzNjllZjdjYzg5YTQwMmIyOGI5NjAxN2EwMi4uNjM1YWY4OWI2YTlh
MjBkMjUwZGM1YzVmOGEzNDY3MTVhYTAxYmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVj
dGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWMKICAgICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKIH0K
IAotT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQorT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBY3F1aXJlKCkK
IHsKICAgICBTZXJ2ZXJMaW1pdCBzZXJ2ZXJMaW1pdCA9IHNoYXJlZFNlcnZlckxpbWl0KCkubG9h
ZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKICAgICBpZiAoc2VydmVyTGltaXQgPT0gU2Vy
dmVyTGltaXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcpCkBAIC03Nyw2ICs3NywxMSBAQCBPcHRpb25h
bDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnRyeUFxdWlyZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1N0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphY3F1aXJlQWxs
KCkKK3sKKyAgICByZXR1cm4gYWxpZ25lZFNwYW4oMCwgZGF0YVNpemUoKSAtIDEpOworfQorCiB2
b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkK
IHsKICAgICBBU1NFUlQocmVhZFNpemUpOwpAQCAtODUsNyArOTAsNyBAQCB2b2lkIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFNlcnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2
ZXJPZmZzZXQoKS5leGNoYW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwpOwotICAgIC8vIElmIHRoZSBzZW5kZXIgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1l
YW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4KKyAgICAvLyBJZiB0aGUgY2xpZW50IHdyb3RlIG92
ZXIgc2VydmVyT2Zmc2V0LCBpdCBtZWFucyB0aGUgY2xpZW50IGlzIHdhaXRpbmcuCiAgICAgaWYg
KG9sZFNlcnZlck9mZnNldCA9PSBTZXJ2ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykKICAg
ICAgICAgbV9idWZmZXIuY2xpZW50V2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOwogICAgIGVsc2UK
QEAgLTk4LDYgKzEwMywyMyBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxl
YXNlKHNpemVfdCByZWFkU2l6ZSkKICAgICBtX3NlcnZlck9mZnNldCA9IHNlcnZlck9mZnNldDsK
IH0KIAordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZUFsbCgpCit7Cisg
ICAgc2hhcmVkU2VydmVyTGltaXQoKS5zdG9yZShzdGF0aWNfY2FzdDxTZXJ2ZXJMaW1pdD4oMCks
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNl
cnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5leGNoYW5n
ZShzdGF0aWNfY2FzdDxTZXJ2ZXJPZmZzZXQ+KDApLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVs
KTsKKyAgICAvLyBJZiB0aGUgY2xpZW50IHdyb3RlIG92ZXIgc2VydmVyT2Zmc2V0LCBpdCBtZWFu
cyB0aGUgY2xpZW50IGlzIHdhaXRpbmcuCisgICAgaWYgKG9sZFNlcnZlck9mZnNldCA9PSBTZXJ2
ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykKKyAgICAgICAgbV9idWZmZXIuY2xpZW50V2Fp
dFNlbWFwaG9yZSgpLnNpZ25hbCgpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCEob2xkU2Vy
dmVyT2Zmc2V0ICYgU2VydmVyT2Zmc2V0OjpjbGllbnRJc1dhaXRpbmdUYWcpKTsKKyNlbHNlCisg
ICAgc2hhcmVkU2VydmVyT2Zmc2V0KCkuc3RvcmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFz
ZSk7CisgICAgLy8gSVBDOjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxhdGZv
cm0uIENsaWVudCB3aWxsIHBvbGwgYW5kIHlpZWxkLgorI2VuZGlmCisgICAgbV9zZXJ2ZXJPZmZz
ZXQgPSAwOworfQorCiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3BhbiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KQogewogICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAppbmRleCAxZGRhZWM0
NjJlYmRjZjJhNjg1NWI5NGE5YmY2NzFhZDRiZmM1YTM1Li4yNmFhNDNiZmE5YTk5Mzk4MzNjZTcz
ZjM1MzRlZDQxZTM4MWRlNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB9OwogICAgIHZpcnR1YWwgRGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhz
aXplX3QgbWVzc2FnZUxpbWl0KSA9IDA7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgog
ICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMm
Ji4uLik7CiAKIHByb3RlY3RlZDoKQEAgLTY3LDkgKzY3LDExIEBAIHByb3RlY3RlZDoKICAgICAg
ICAgdWludDhfdCogZGF0YTsKICAgICAgICAgc2l6ZV90IHNpemU7CiAgICAgfTsKLSAgICBPcHRp
b25hbDxTcGFuPiB0cnlBcXVpcmUoKTsKKyAgICBPcHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKCk7
CisgICAgU3BhbiBhY3F1aXJlQWxsKCk7CiAKICAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRT
aXplKTsKKyAgICB2b2lkIHJlbGVhc2VBbGwoKTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1l
c3NhZ2VTaXplOwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQg
PSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKICAgICBTcGFuIGFs
aWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CkBAIC05MiwxNSArOTQsMjcg
QEAgcHJvdGVjdGVkOgogCiAgICAgTG9jayBtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrOwogICAg
IERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzOwor
ICAgIGJvb2wgbV9pc0Rpc3BhdGNoaW5nU3RyZWFtTWVzc2FnZSB7IGZhbHNlIH07CiAKICAgICBm
cmllbmQgY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKIH07CiAKLXRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHko
dWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCi0gICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworICAgIGlmIGNvbnN0ZXhwcihUOjppc1JlcGx5U3Ry
ZWFtRW5jb2RhYmxlKSB7CisgICAgICAgIGlmIChtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdl
KSB7CisgICAgICAgICAgICBhdXRvIHNwYW4gPSBhY3F1aXJlQWxsKCk7CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIg
eyBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsK
KyAgICAgICAgICAgICAgICBpZiAoKG1lc3NhZ2VFbmNvZGVyIDw8IC4uLiA8PCBhcmd1bWVudHMp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBvdXRPZlN0cmVhbUVuY29kZXIgeyBNZXNzYWdlTmFt
ZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+
KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKwogICAgIChl
bmNvZGVyLmdldCgpIDw8IC4uLiA8PCBhcmd1bWVudHMpOwogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KQEAgLTE0Miw4ICsxNTYsNyBAQCBwcml2
YXRlOgogICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOwogICAgIHVzaW5nIFJlY2VpdmVyc01hcCA9
IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmPFJlY2VpdmVyPj47CiAg
ICAgUmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzOwotCi0gICAgdWludDY0X3QgbV9jdXJyZW50RGVz
dGluYXRpb25JRCA9IDA7CisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAg
fTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgpAQCAtMTc2LDcgKzE4OSw3IEBA
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpEaXNwYXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzCiAgICAgdWludDhfdCBjdXJyZW50UmVjZWl2ZXJOYW1l
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oUmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZUxpbWl0OyArK2kpIHsKLSAgICAgICAgYXV0byBz
cGFuID0gdHJ5QXF1aXJlKCk7CisgICAgICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoKTsKICAg
ICAgICAgaWYgKCFzcGFuKQogICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNO
b01lc3NhZ2VzOwogICAgICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNw
YW4tPnNpemUsIG1fY3VycmVudERlc3RpbmF0aW9uSUQgfTsKQEAgLTI0MiwxMiArMjU1LDE4IEBA
IGJvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnByb2Nlc3NTZXRTdHJlYW1E
ZXN0aW5hdGlvbklEKERlY29kZXImJiBkCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KIGJv
b2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2Fn
ZShEZWNvZGVyJiYgZGVjb2RlciwgUmVjZWl2ZXImIHJlY2VpdmVyKQogeworICAgIEFTU0VSVCgh
bV9pc0Rpc3BhdGNoaW5nU3RyZWFtTWVzc2FnZSk7CisgICAgbV9pc0Rpc3BhdGNoaW5nU3RyZWFt
TWVzc2FnZSA9IHRydWU7CiAgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRo
aXMsIGRlY29kZXIpOworICAgIG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UgPSBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1
ZmZlclBvc2l0aW9uKCkpOworICAgIGlmIChkZWNvZGVyLmlzU3luY01lc3NhZ2UoKSkKKyAgICAg
ICAgcmVsZWFzZUFsbCgpOworICAgIGVsc2UKKyAgICAgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJl
bnRCdWZmZXJQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMDMzNWIyYmQ1NWYwMTNjZjNmMzM5YzI0
NjJlNWE0ZThlMjY4NzQ0ZS4uNjQ4NzE2NDgxM2Y1MWU0NGIxZjIxM2ZlYjA3MDdmN2JmM2U0NmEx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01Nyw2ICs1
Nyw4IEBAIFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hN
ZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNB
c3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5
UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291
bnRlZCcKK05PVF9TVFJFQU1fRU5DT0RBQkxFX0FUVFJJQlVURSA9ICdOb3RTdHJlYW1FbmNvZGFi
bGUnCitOT1RfU1RSRUFNX0VOQ09EQUJMRV9SRVBMWV9BVFRSSUJVVEUgPSAnTm90U3RyZWFtRW5j
b2RhYmxlUmVwbHknCiAKIGRlZiByZWNlaXZlcl9lbnVtZXJhdG9yX29yZGVyX2tleShyZWNlaXZl
cl9uYW1lKToKICAgICBpZiByZWNlaXZlcl9uYW1lID09ICdJUEMnOgpAQCAtMTk0LDcgKzE5Niwx
MiBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2Up
OgogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBBcmd1bWVudHMgPSAlcztcbicgJSBhcmd1
bWVudHNfdHlwZShtZXNzYWdlKSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjolc18lczsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUp
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSAlcztc
bicgJSAoJ2ZhbHNlJywgJ3RydWUnKVttZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBh
bmQgbm90IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpXSkKKyAgICByZXN1
bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9ICVzO1xuJyAlICgn
ZmFsc2UnLCAndHJ1ZScpW21lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyBpcyBub3QgTm9uZSBhbmQg
bm90IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpXSkKKyAgICBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5jb2RhYmxlID0gJXM7XG4n
ICUgKCd0cnVlJywgJ2ZhbHNlJylbbWVzc2FnZS5oYXNfYXR0cmlidXRlKE5PVF9TVFJFQU1fRU5D
T0RBQkxFX0FUVFJJQlVURSldKQorICAgICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzUmVwbHlTdHJlYW1FbmNvZGFibGUgPSAlcztcbicgJSAoJ3RydWUnLCAnZmFs
c2UnKVttZXNzYWdlLmhhc19hdHRyaWJ1dGUoTk9UX1NUUkVBTV9FTkNPREFCTEVfUkVQTFlfQVRU
UklCVVRFKV0pCisKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgaWYgbWVzc2FnZS5yZXBs
eV9wYXJhbWV0ZXJzICE9IE5vbmU6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rp
b25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVyc10KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcApp
bmRleCAzZTg0YWUxZTM5YzdlN2Q3Y2RmODk1YTQyNDkyNzcxMzEyYWFhMDYwLi5jYWY3Njc5NzI4
NzllYTk1NmZmOWRhYWNmYmJhYjQ3MTBkY2JiYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNj
cmlwdGlvbnMuY3BwCkBAIC02Nyw2ICs2Nyw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjZW5kaWYK
ICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2VuZGlmCkBA
IC0yMzYsNiArMjM5LDE0IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFyZ3Vt
ZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lCiAgICAgICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmc6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKICAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgogICAgICAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVj
b2Rlcik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVj
b2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRNYWNoU2VuZFJpZ2h0
OjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTdHJlYW1fUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlJlY2Vp
dmVNYWNoU2VuZFJpZ2h0OjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJp
Z2h0OgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtOjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6OkFyZ3VtZW50cz4o
Z2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyNlbmRpZgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI6CiAgICAgICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNl
bmRTdHJlYW1CdWZmZXI6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKICAgICBk
ZWZhdWx0OgpAQCAtNTU5LDYgKzU3MCwxOCBAQCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNj
cmlwdGlvbj4+IG1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYQogICAg
ICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKICAgICAgICAgICAgIHsi
dXJsIiwgIlN0cmluZyIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgfTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNl
bmRSaWdodDoKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7Cisg
ICAgICAgICAgICB7ImExIiwgIk1hY2hTZW5kUmlnaHQiLCBudWxscHRyLCBmYWxzZX0sCisgICAg
ICAgIH07CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fUmVjZWl2ZU1hY2hT
ZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geyB9
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRBbmRSZWNlaXZlTWFj
aFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7
CisgICAgICAgICAgICB7ImExIiwgIk1hY2hTZW5kUmlnaHQiLCBudWxscHRyLCBmYWxzZX0sCisg
ICAgICAgIH07CisjZW5kaWYKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1
ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOgogICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVz
Y3JpcHRpb24+IHsKICAgICAgICAgICAgIHsic3RyZWFtIiwgIklQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciIsIG51bGxwdHIsIGZhbHNlfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCBmNzY1MDdjZGRmMTcwMzEzNmIx
MGEwZjMwNjg0YzNmY2QxNDRhNjEzLi4wOTQxMThhOThiZWYzYjdhZmVkNDc4OTk5NzVjM2RiMzIy
ODVkNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlTmFtZXMuY3BwCkBAIC04Miw2ICs4MiwxMiBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlv
bihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1cm4gIlRlc3RXaXRoU2VtYXBob3JlX1Nl
bmRTZW1hcGhvcmUiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVy
X1NlbmRTdHJlYW1CdWZmZXI6CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1CdWZmZXJf
U2VuZFN0cmVhbUJ1ZmZlciI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1f
UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1fUmVj
ZWl2ZU1hY2hTZW5kUmlnaHQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFt
X1NlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aFN0
cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJpZ2h0OgorICAgICAgICByZXR1cm4gIlRlc3RX
aXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJpZ2h0IjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0
V2l0aFN0cmVhbV9TZW5kU3RyaW5nOgogICAgICAgICByZXR1cm4gIlRlc3RXaXRoU3RyZWFtX1Nl
bmRTdHJpbmciOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6CkBAIC0yMDcsNiArMjEzLDkgQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFt
ZTo6VGVzdFdpdGhTZW1hcGhvcmU7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJl
YW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6
VGVzdFdpdGhTdHJlYW1CdWZmZXI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJl
YW1fUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJpZ2h0OgogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDoKICAgICAgICAgcmV0dXJuIFJlY2VpdmVy
TmFtZTo6VGVzdFdpdGhTdHJlYW07CkBAIC0zNDAsNiArMzQ5LDE4IEBAIGJvb2wgaXNWYWxpZE1l
c3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1C
dWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNo
U2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IGZhOTMxNzg4
N2NmNTkzMWJkMTNiY2I2MjhkYzgwYzMwZTQ5OGZlMDguLjU5OGRlODYzOTcyMDAyMzE5YmJlZmFi
OWI4MjczMmY0MjhlZmU1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtNjksNiArNjksOSBAQCBlbnVtIGNsYXNzIE1lc3Nh
Z2VOYW1lIDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFw
aG9yZQogICAgICwgVGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZQogICAgICwgVGVzdFdp
dGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcgorICAgICwgVGVzdFdpdGhTdHJlYW1fUmVj
ZWl2ZU1hY2hTZW5kUmlnaHQKKyAgICAsIFRlc3RXaXRoU3RyZWFtX1NlbmRBbmRSZWNlaXZlTWFj
aFNlbmRSaWdodAorICAgICwgVGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQKICAgICAs
IFRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmcKICAgICAsIFRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmdTeW5jaHJvbml6ZWQKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdl
TWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJ
Zk1lc3NhZ2VNZXNzYWdlcy5oCmluZGV4IDQwN2QzMzg3NzE5ZTM5ZTI3ODNjYjQ4MWUwNzZhYjQ5
ZDYwYzk0OTguLmI4ZmY2MTE2MTBhNGM4MTZjMDkzZjM3NGVkNmZhODIyMWMwYjlhNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJZk1lc3Nh
Z2VNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhJZk1lc3NhZ2VNZXNzYWdlcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoSWZNZXNzYWdlX0xvYWRVUkw7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBl
eHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRz
KHVybCkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJiwgaW50NjRfdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3Nh
Z2VfTG9hZFVSTDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIExvYWRVUkwoY29u
c3QgU3RyaW5nJiB1cmwsIGludDY0X3QgdmFsdWUpCiAgICAgICAgIDogbV9hcmd1bWVudHModXJs
LCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VzLmgKaW5kZXggZjQyZThmN2EwYjA4MWYy
OTE1ZTU3Y2MyYWQ0MjA2YWIyYWJkNmQyOC4uMTBjZjQzZDJhZTg3Mzg1OGNmZTEyZWVhOTQwZmU4
YTcxZGRmYWNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VzLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgUmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aEltYWdlRGF0YV9TZW5kSW1h
Z2VEYXRhOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgU2VuZElt
YWdlRGF0YShjb25zdCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiYgczApCiAgICAgICAgIDog
bV9hcmd1bWVudHMoczApCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhJbWFnZURhdGFfUmVjZWl2ZUlt
YWdlRGF0YTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6
Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VEYXRhPiY+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2Vz
LmgKaW5kZXggYWNhYzI4MzVjNmM0MDViNDI2NmQ4OGM1NjcwMDY3ZDA5ZWE5NGM1MC4uNmYyYmY3
MTlmYjk0MmMzMjk3OWViMTI0YTg4MjY2ZjNjYmQwYWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJNZXNzYWdlcy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfTG9hZFVSTDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4
cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDogbV9hcmd1bWVudHMo
dXJsKQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0xv
YWRTb21ldGhpbmc7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBM
b2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRzKHVy
bCkKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPjsKIAogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAg
ICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQp
CiAgICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9BZGRFdmVudDsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdlYktp
dDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCkBA
IC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Mb2FkU29t
ZXRoaW5nRWxzZTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IExv
YWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRz
KHVybCkKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PjsKIAogICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKIAogICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCiAgICAgICAg
IDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQpAQCAtMjAy
LDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47
CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNz
YWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9DbG9zZTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKIAogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKICAgICB7
CkBAIC0yMTgsNyArMjE4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj47CiAKICAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcl9QcmVmZXJlbmNlc0RpZENoYW5nZTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgICAgIDogbV9hcmd1bWVudHMoc3Rv
cmUpCkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9T
ZW5kRG91YmxlQW5kRmxvYXQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBTZW5k
RG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCiAgICAgICAgIDogbV9hcmd1bWVudHMo
ZCwgZikKQEAgLTI2MCw3ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1
aW50NjRfdD4+Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9TZW5kSW50czsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQpAQCAtMjgxLDcgKzI4MSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfQ3JlYXRlUGx1Z2luOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
dHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6
OnR1cGxlPGJvb2wmPjsKQEAgLTMwNSw3ICszMDUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJn
dW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcl9SdW5KYXZhU2NyaXB0QWxlcnQ7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMg
PSB0cnVlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKQEAgLTMyOSw3ICszMjksNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKIAogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyX0dldFBsdWdpbnM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47CkBAIC0zNTMsNyArMzUzLDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkg
PSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRo
cmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcl9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsK
IAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVk
UmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKQEAgLTQwMCw3
ICs0MDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50
NjRfdCwgZG91YmxlLCBkb3VibGU+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVz
dFBhcmFtZXRlckF0dHJpYnV0ZXM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBU
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRvdWJsZSBi
YXopCiAgICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJheikKQEAgLTQyMSw3ICs0MjEs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBIYXNo
TWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+OwogCiAgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJfVGVtcGxhdGVUZXN0OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNl
OwogCiAgICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6
OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQogICAgICAgICA6IG1fYXJndW1lbnRzKGEpCkBA
IC00NDIsNyArNDQyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj47CiAKICAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9TZXRWaWRlb0xheWVySUQ7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNT
eW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRlb0xheWVySUQpCiAgICAgICAg
IDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmLCBj
b25zdCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4mPjsKIAogICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IGZhbHNlOwogCiAgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgSVBDOjpNYWNoUG9ydCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IE9wdGlvblNldDxX
ZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiYgZmxhZ3MpCiAgICAgICAgIDogbV9hcmd1bWVudHMoY29u
bmVjdGlvbklkZW50aWZpZXIsIGZsYWdzKQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQzMl90PjsKIAogICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyX0ludGVycHJldEtleUV2ZW50OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1
ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29t
cGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47CkBA
IC01MTMsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
X0RlcHJlY2F0ZWRPcGVyYXRpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBl
eHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKQEAgLTUzNiw3ICs1MzYsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+
OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfRXhwZXJpbWVudGFsT3BlcmF0aW9uOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3Bl
cmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKICAgICAgICAgOiBtX2FyZ3VtZW50
cyhkdW1teSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgKaW5kZXggMzJmYWQ1YjBhYWM0ZTVk
NTM0OTEzNGQ2MjUwNTFhMWI5YTA1NTdkMS4uZmE5ODhjZjcxNWNkYmMyMzk1ZWZiOGExYWRhMWVm
NDU5OTA4YmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpT
ZW1hcGhvcmUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgU2VuZFNlbWFwaG9yZShjb25z
dCBJUEM6OlNlbWFwaG9yZSYgczApCiAgICAgICAgIDogbV9hcmd1bWVudHMoczApCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAK
ICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9yZTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3lu
YyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OlNlbWFwaG9yZSY+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0u
bWVzc2FnZXMuaW4KaW5kZXggZmQwZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2Iz
Mi4uODY5NWY1ODYzNTI3YmZhMWMxZGU4NTFjMjNiMjkzMjJkMjEzZjRiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtLm1lc3NhZ2VzLmluCkBAIC0yMyw1ICsyMywxMCBAQAogIyBUZXN0cyBTdHJlYW0gcmVjZWl2
ZXIgYXR0cmlidXRlLgogbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW0gTm90UmVmQ291bnRlZCBT
dHJlYW0gewogICAgIHZvaWQgU2VuZFN0cmluZyhTdHJpbmcgdXJsKQotICAgIHZvaWQgU2VuZFN0
cmluZ1N5bmNocm9uaXplZChTdHJpbmcgdXJsKSAtPiAoaW50NjRfdCByZXR1cm4pCisgICAgdm9p
ZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVyblZh
bHVlKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgU2VuZE1hY2hTZW5kUmlnaHQoTWFj
aFNlbmRSaWdodCBhMSkgTm90U3RyZWFtRW5jb2RhYmxlCisgICAgdm9pZCBSZWNlaXZlTWFjaFNl
bmRSaWdodCgpIC0+IChNYWNoU2VuZFJpZ2h0IHIxKSBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQor
ICAgIHZvaWQgU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0KE1hY2hTZW5kUmlnaHQgYTEpIC0+
IChNYWNoU2VuZFJpZ2h0IHIxKSBOb3RTdHJlYW1FbmNvZGFibGUgTm90U3RyZWFtRW5jb2RhYmxl
UmVwbHkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaAppbmRleCA2
YTI0ZWJkZDIwMGYzMzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Li40MTI3ZWY1YTRjMmFmNzZh
ZjBkYzBjOTRjNmQzZTA3MzhkYWYyYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXMuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTxjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImPjsKIAogICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0
V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgZXhwbGljaXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImIHN0cmVhbSkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhzdHJlYW0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IGUwMDdlYzRkNjhlYmNm
ZTQ0N2Q4NDc3MDEwOTI1MWU0NTI5OWY1NmMuLjAwMWMwMGE3ZWQyMTNhNTNlMmMyZmRlMDY3YTky
N2YzMWYzZDM0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBA
IC0yOSw2ICsyOSw5IEBACiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkhhbmRsZU1l
c3NhZ2UuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM3LDgg
KzQwLDIwIEBAIHZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvCiB7CiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUo
KSkKICAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW06OlNlbmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0
cmluZyk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRNYWNoU2VuZFJpZ2h0OjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kTWFjaFNlbmRSaWdodD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpz
ZW5kTWFjaFNlbmRSaWdodCk7CisjZW5kaWYKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZDo6bmFt
ZSgpKQogICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
U3RyZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6
UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlJlY2VpdmVNYWNoU2VuZFJpZ2h0Pihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnJlY2VpdmVNYWNoU2VuZFJpZ2h0KTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6
Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW06OlNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoU3RyZWFtOjpzZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQpOworI2VuZGlmCiAg
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKaW5kZXggYzQy
YTQ3MjRjNjJjNzdkNmZiYTk5NTUzZGNjZWRkMDkxNjAyMjhhMi4uMGFhYmNkMjU0N2QwZDY0ODRl
NjdlMDM3YWVmNmVkZTQ3Y2I5Mjk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsNyArNDcsOCBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcm
PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZSA9IHRy
dWU7CiAKICAgICBleHBsaWNpdCBTZW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAg
ICA6IG1fYXJndW1lbnRzKHVybCkKQEAgLTY3LDcgKzY5LDkgQEAgcHVibGljOgogICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5jb2RhYmxlID0gdHJ1ZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNSZXBseVN0cmVhbUVuY29kYWJsZSA9IHRydWU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTxpbnQ2NF90Jj47CkBAIC04Niw1ICs5MCw4MCBAQCBwcml2YXRlOgogICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKIH07CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNl
bmRNYWNoU2VuZFJpZ2h0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IE1hY2hTZW5kUmlnaHQmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFj
aFNlbmRSaWdodDsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTdHJlYW1FbmNvZGFibGUgPSBmYWxzZTsKKwor
ICAgIGV4cGxpY2l0IFNlbmRNYWNoU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIGExKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKGExKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgUmVjZWl2ZU1hY2hTZW5kUmlnaHQg
eworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodDsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N0cmVh
bUVuY29kYWJsZSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVwbHlTdHJl
YW1FbmNvZGFibGUgPSBmYWxzZTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFj
a1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25U
aHJlYWQ7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE1hY2hTZW5kUmlnaHQmPjsKKyAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8TWFjaFNlbmRSaWdodD47CisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIFNlbmRBbmRSZWNl
aXZlTWFjaFNlbmRSaWdodCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTxjb25zdCBNYWNoU2VuZFJpZ2h0Jj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZEFu
ZFJlY2VpdmVNYWNoU2VuZFJpZ2h0OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3lu
YyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5jb2RhYmxlID0g
ZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVwbHlTdHJlYW1FbmNvZGFibGUg
PSBmYWxzZTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CisgICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE1hY2hTZW5kUmlnaHQmPjsKKyAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8TWFjaFNlbmRSaWdodD47CisgICAgZXhwbGljaXQgU2Vu
ZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIGExKQorICAgICAg
ICA6IG1fYXJndW1lbnRzKGExKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3VwZXJjbGFzc01lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgKaW5kZXggYzFhZThkNWZhMzE4ZDQ1NjNlOTEw
ODZjY2E1M2VhMGZjZjMzZWZkMy4uM2RmMWM2OGU5NzZiMTkyNTViM2ZkMmI4M2Q3MWJiODcxZTBh
ZDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsK
IAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTDsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKIAogICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAg
IDogbV9hcmd1bWVudHModXJsKQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+OwogCiAgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9
IGZhbHNlOwogCiAgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNl
bFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwpAQCAtMTA0LDcg
KzEwNCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAK
ICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHko
SVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMwLDcg
KzEzMCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAK
ICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxs
UmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2
NF90JiYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IGludCY+OwogCiAgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb247IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpE
ZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYpPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+JiYpOwpAQCAt
MTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PHVpbnQzMl90PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdFN5bmNNZXNzYWdlOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RT
eW5jTWVzc2FnZURlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJh
Y2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9u
VGhyZWFkOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGJvb2w+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0U3luY2hy
b25vdXNNZXNzYWdlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHVzaW5nIERlbGF5
ZWRSZXBseSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNh
bGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVz
c2FnZXMuaAppbmRleCA2NzZmNmNjMDU1ZGIxZGFmM2Q0MTc3ZTdiYjFjZDgyMGQ2MzQxZGJiLi5l
NzJkNGE1NDNjMzQ3MGMxMDA1NmM4MDBiYjUzMzkyNGExMmVkNjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3Nh
Z2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91
dEF0dHJpYnV0ZXNNZXNzYWdlcy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
b3V0QXR0cmlidXRlc19Mb2FkVVJMOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAg
ZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50
cyh1cmwpCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19M
b2FkU29tZXRoaW5nOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQg
TG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1
cmwpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj47CiAKICAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhv
dXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAg
ICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQp
CiAgICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0FkZEV2ZW50OyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAg
LTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfTG9hZFNvbWV0
aGluZ0Vsc2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2Fk
U29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1
cmwpCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD47CiAKICAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhv
dXRBdHRyaWJ1dGVzX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKIAogICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCiAgICAgICAgIDog
bV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQpAQCAtMjAyLDcg
KzIwMiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAK
ICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0Nsb3NlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAogICAgIHsKQEAg
LTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPjsKIAogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXNfUHJlZmVyZW5jZXNEaWRDaGFuZ2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFs
c2U7CiAKICAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQpA
QCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGRvdWJsZSwgZmxvYXQ+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19TZW5kRG91
YmxlQW5kRmxvYXQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBTZW5kRG91Ymxl
QW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCiAgICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikK
QEAgLTI2MCw3ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRf
dD4+Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1NlbmRJbnRzOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IGZhbHNlOwogCiAgICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
aW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQogICAgICAg
ICA6IG1fYXJndW1lbnRzKGludHMsIGludFZlY3RvcnMpCkBAIC0yODEsNyArMjgxLDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdl
YktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
X0NyZWF0ZVBsdWdpbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRo
cmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxi
b29sJj47CkBAIC0zMDUsNyArMzA1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0
QXR0cmlidXRlc19SdW5KYXZhU2NyaXB0QWxlcnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0
aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8PjsKQEAgLTMyOSw3ICszMjksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXNfR2V0UGx1Z2luczsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRo
cmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKQEAgLTM1Myw3ICszNTMsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0
cnVjdGlvblRocmVhZDsKQEAgLTM3OSw3ICszNzksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJn
dW1lbnRzID0gc3RkOjp0dXBsZTw+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19UZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHVzaW5n
IERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKQEAgLTQwMCw3ICs0MDAsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91Ymxl
LCBkb3VibGU+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19UZXN0UGFyYW1ldGVyQXR0
cmlidXRlczsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIFRlc3RQYXJhbWV0ZXJB
dHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJheikKICAgICAgICAg
OiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQpAQCAtNDIxLDcgKzQyMSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzX1RlbXBsYXRlVGVzdDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxp
Y2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywg
dWludDY0X3Q+PiYgYSkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQpAQCAtNDQyLDcgKzQ0Miw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCY+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0
QXR0cmlidXRlc19TZXRWaWRlb0xheWVySUQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAK
ICAgICBleHBsaWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEJiB2aWRlb0xheWVySUQpCiAgICAgICAgIDogbV9hcmd1bWVudHMo
dmlkZW9MYXllcklEKQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmLCBjb25zdCBPcHRpb25TZXQ8
V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNf
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7
CiAKICAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0
JiBjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9u
RmxhZ3M+JiBmbGFncykKICAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmll
ciwgZmxhZ3MpCkBAIC00ODcsNyArNDg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8dWludDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19J
bnRlcnByZXRLZXlFdmVudDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+OwpAQCAtNTEzLDcgKzUxMyw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVt
bXlUeXBlJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0RlcHJlY2F0ZWRPcGVyYXRp
b247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBEZXByZWNhdGVk
T3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKICAgICAgICAgOiBtX2FyZ3Vt
ZW50cyhkdW1teSkKQEAgLTUzNiw3ICs1MzYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1l
bnRzID0gc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+OwogCiAgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
b3V0QXR0cmlidXRlc19FeHBlcmltZW50YWxPcGVyYXRpb247IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
ZmFsc2U7CiAKICAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpE
dW1teVR5cGUmIGR1bW15KQogICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzhkZDlkMzFl
NmM3Y2Y3OTQ5NTZlNzczMGIxMDdkZTQ5NDdhNGI4Ny4uMWQzYWI4ODI1NDM0NmFhMTFhZDljNjZm
MzRlYWVjNzI3OWExMjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CkBAIC03NDEs
MTEgKzc0MiwxNyBAQCBPcHRpb25hbDxJbnRSZWN0PiBBcmd1bWVudENvZGVyPEludFJlY3Q+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICByZXR1cm4gcmVjdDsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEludFNpemUmIGludFNpemUpCiB7CiAgICAgU2ltcGxlQXJn
dW1lbnRDb2RlcjxJbnRTaXplPjo6ZW5jb2RlKGVuY29kZXIsIGludFNpemUpOwogfQogCit0ZW1w
bGF0ZQordm9pZCBBcmd1bWVudENvZGVyPEludFNpemU+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2Rl
ciYsIGNvbnN0IEludFNpemUmKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8SW50U2l6
ZT46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXImLCBjb25zdCBJbnRTaXplJik7CisKIGJvb2wgQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIEludFNpemUmIGludFNpemUpCiB7CiAgICAgcmV0dXJuIFNp
bXBsZUFyZ3VtZW50Q29kZXI8SW50U2l6ZT46OmRlY29kZShkZWNvZGVyLCBpbnRTaXplKTsKQEAg
LTMwOTYsNiArMzEwMyw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNECiB9CiAjZW5kaWYgLy8g
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZv
aWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhKQogewog
ICAgIGVuY29kZXIgPDwgaW1hZ2VEYXRhLT5zaXplKCk7CkBAIC0zMTA1LDYgKzMxMTMsMTEgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlZjwKICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAKK3RlbXBs
YXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGU8
RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7Cit0ZW1w
bGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2Rl
PFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0
IFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7CisKIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFn
ZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgT3B0aW9uYWw8SW50U2l6ZT4gaW1hZ2VEYXRhU2l6ZTsK
QEAgLTMxMjgsNiArMzE0MSw3IEBAIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlCiAgICAgcmV0dXJu
IHsgaW1hZ2VEYXRhLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRh
PiYgaW1hZ2VEYXRhKQogewogICAgIGlmICghaW1hZ2VEYXRhKSB7CkBAIC0zMTM5LDYgKzMxNTMs
MTIgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKICAgICBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlKGVuY29kZXIsIGltYWdlRGF0YS5jb3B5UmVmKCkucmVs
ZWFzZU5vbk51bGwoKSk7CiB9CiAKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+Jik7CisKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUoU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiYpOworCiBPcHRpb25hbDxSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRh
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGJvb2wgaXNFbmdhZ2VkOwpAQCAt
MzIxMSw2ICszMjMxLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ28KICAgICByZXR1cm4gYXR0
cmlidXRlczsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
byYgYWN0aXZlSW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGFjdGl2ZUluZm8ubmFtZTsKQEAgLTMy
MTgsNiArMzIzOSwxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jbwogICAgIGVuY29kZXIgPDwg
YWN0aXZlSW5mby5zaXplOwogfQogCit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOwordGVt
cGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlSW5mbz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYp
OworCiBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvIGFjdGl2ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IDkyOGRhNzU2MGMzZTg5YmQ0MWQ1MThhNmI2MmU1NGU4YTRlZWY1
YTguLmJkM2Q5ZTFiOTNiZmRjZTg5MmM4Y2EwNzIxZWEyNGY1ZmUyOWFiZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zNDcsNiArMzQ3LDcg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbnRSZWN0PiB7CiB9
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkludFNpemU+IHsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkludFNpemUmKTsKICAgICBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6SW50U2l6ZT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTgx
NSwxMSArODE2LDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IHsKICNlbmRpZgogCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+PiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7CiAgICAgc3RhdGljIE9w
dGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRh
Pj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPiYpOwogICAgIHN0YXRp
YyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gZGVjb2RlKERlY29kZXImKTsKIH07
CkBAIC04MzksNiArODQyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8m
KTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8+IGRlY29kZShEZWNvZGVyJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAKaW5kZXggMDFiOTk5MmJlZGEwNGQ3YWI3OTYxODk1OWIwNDliZmQ1MjA5
ZjZjMy4uNDRiMjIyODM5ZmZkMDE3NjZmYTNlNWQ1NzgwZTNiNzlhNTkwMDRmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC01OSw2ICs1OSw5IEBAIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1
dGVzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgbV9z
dHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIC8vIFRPRE86IFdl
IG11c3Qgd2FpdCB1bnRpbCBpbml0aWFsaXplZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHdlIGNh
bm5vdCByZWNlaXZlIElQQyBtZXNzYWdlcworICAgIC8vIGR1cmluZyB3YWl0IHdoaWxlIGluIHN5
bmNocm9ub3VzIHN0cmVhbSBzZW5kLiBTaG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjExLgorICAgIHdhaXRVbnRpbElu
aXRpYWxpemVkKCk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5MjUxN2Q2ZDBlMmJhYmZmM2Y3ZjE1MDIxMWJiMzkyYjYzZWNl
MzNlLi5lMTUyYWIxYjBhZWRhMWZhODdlNmE0N2ZlMzAzMzhiYjhjODJlYTNmIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjEtMDMtMTUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWJHTCBJUEMgc2hvdWxkIHVzZSBzaGFyZWQgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBt
ZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwOTc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Mzg3Njk0Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBNYXJrIFByZXBhcmVGb3JEaXNwbGF5
KCkgYXMgIm5vdCByZXBseWFibGUgdGhyb3VnaCB0aGUgc3RyZWFtIgorICAgICAgICBzaW5jZSBp
dCByZXBsaWVzIHdpdGggTWFjaFNlbmRSaWdodC4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0wMy0xNCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5G
dWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luXVtXSzFdIEFkZCBhIG5ldyBBUEkgSVdlYlBy
ZWZlcmVuY2VzOjpzdGFydEJhdGNoaW5nVXBkYXRlcyB0byBkZWZlciBXZWJQcmVmZXJlbmNlc0No
YW5nZWROb3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCA5ODllODcw
Y2QxZjhjOTk2MDg4ODhmZWQ3NDM5NTUxNjlhYjMzMjE0Li42ZjhmNzAzYTJmNWJkZWQ0MzA5YmVm
Nzk0ZGYwMzM3MGE3YTJiMWViIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05Miw3
ICs5Miw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiBtZXNzYWdlcyAtPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUmVz
aGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1
ZmZlcikgU3luY2hyb25vdXMKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hT
ZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVw
bHkKICNlbmRpZgogI2lmICFQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNw
bGF5KCkgLT4gKCkgU3luY2hyb25vdXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423164</attachid>
            <date>2021-03-15 05:51:34 -0700</date>
            <delta_ts>2021-03-15 06:14:45 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-220974-20210315145132.patch</filename>
            <type>text/plain</type>
            <size>79250</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5MTBhYjA1ZjZkMzUwNzZh
NzYyZmYxZGM2NjM3N2Q2YjhkZTEwMjYuLmEwZWFjOWMyZTFhMWM2YjU2MWIzZGY3MDYzNjM4YWYz
YzI5ZDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTAzLTE1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgSVBDIHNob3Vs
ZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3Igc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzM4NzY5NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCisKKyAgICAgICAgU2VuZCBzeW5jaHJvbm91cyBtZXNzYWdlcyB2aWEgdGhlIHN0cmVhbSBz
aGFyZWQgbWVtb3J5LgorICAgICAgICBJbXByb3ZlcyBNb3Rpb25NYXJrIG9uIGlNYWMxLDEgZnJv
bSA1MDAwIHRvIH41MzAwIHB0cy4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBlbmNvZGFi
bGUgYXMgYSB2YWx1ZSwgdHJ5IHRvIGRvIHNvLgorICAgICAgICBJZiB0aGUgcmVwbHkgaXMgZW5j
b2RhYmxlIGFzIGEgdmFsdWUsIHRyeSB0byBkbyBzby4KKyAgICAgICAgQSBtZXNzYWdlIG9yIGEg
cmVwbHkgaXMgbm90IGVuY29kYWJsZSBpZiBhbiBhcmd1bWVudCBpbiB0aGUgbWVzc2FnZQorICAg
ICAgICBtdXN0IGJlIHBhc3NlZCBieSByZWZlcmVuY2UgdmlhIHRoZSBPUyBzcGVjaWZpYyBtZWNo
YW5pc20KKyAgICAgICAgKGUuZy4gYSBpb3N1cmZhY2Ugb3IgYSBmaWxlIGhhbmRsZSBjYW5ub3Qg
YmUgc2VudCBhcyBhIHZhbHVlKS4KKworICAgICAgICBTaW1pbGFyIHRvIGFzeW5jaHJvbm91cyBt
ZXNzYWdlcywgaWYgdGhlIHN5bmNocm9ub3VzIG1lc3NhZ2UgZml0cyB0bworICAgICAgICB0aGUg
c3RyZWFtIGJ1ZmZlciwgdGhlIG1lc3NhZ2UgaXMgc2VudCB2aWEgdGhlIGJ1ZmZlci4gU2FtZSB3
aXRoIHRoZQorICAgICAgICByZXBseS4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBvciByZXBs
eSBpcyBub3Qgc2VudCB2aWEgdGhlIHN0cmVhbSBidWZmZXIsIGl0IGlzIHNlbnQgdmlhCisgICAg
ICAgIHRoZSBub3JtYWwgSVBDLgorCisgICAgICAgIFRoZSBjbGllbnQgcHJvdG9jb2wgaXM6Cisg
ICAgICAgIDEpIFdyaXRlIHRoZSBtZXNzYWdlIHRvIHRoZSBidWZmZXIgYW5kIHJlbGVhc2UgaXQu
CisgICAgICAgIDIpIFdhaXQgdW50aWwgdGhlIHNlcnZlciByZWxlYXNlcyB0aGUgd2hvbGUgYnVm
ZmVyIGJhY2sgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgMykgUmVhZCB0aGUgcmVwbHkgZnJvbSBp
bmRleCAwLgorICAgICAgICA0KSBDb250aW51ZSBzZW5kaW5nIG5leHQgbWVzc2FnZSBmcm9tIGlu
ZGV4IDAuCisKKyAgICAgICAgVGhlIHNlcnZlciBwcm90b2NvbCBpcyB1cG9uIHJlY2VpdmluZyBh
IG1lc3NhZ2UgdGhhdCBpcyBzeW5jaHJvbm91czoKKyAgICAgICAgMSkgUmVhZCB0aGUgbWVzc2Fn
ZSBmcm9tIHRoZSBtZXNzYWdlIHBvc2l0aW9uLCBkaXNwYXRjaCBpdC4KKyAgICAgICAgMikgV3Jp
dGUgdGhlIHJlcGx5IHRvIGluZGV4IDAuCisgICAgICAgIDMpIFJlbGVhc2UgdGhlIHdob2xlIGJ1
ZmZlciBiYWNrIHRvIHRoZSBjbGllbnQuCisgICAgICAgIDQpIENvbnRpbnVlIHJlYWRpbmcgbmV4
dCBtZXNzYWdlIGZyb20gaW5kZXggMC4KKworICAgICAgICBUaGUgY2xpZW50IHdpbGwgbm90IGtu
b3cgYXQgdGhlIHNlbmQgdGltZSB3aGV0aGVyIHRoZSBzZXJ2ZXIgd2lsbCByZXBseQorICAgICAg
ICB2aWEgdGhlIHN0cmVhbSBvciB2aWEgbm9ybWFsIElQQyBtZXNzYWdlLiBUaGUgY2xpZW50IHdp
bGwgcmVzZXJ2ZQorICAgICAgICBhIElQQyBzeW5jIHJlcXVlc3QgSUQgZm9yIG5vcm1hbCBJUEMg
cmVwbHkgcHVycG9zZXMuCisKKyAgICAgICAgSW4gY2FzZSBhIG1lc3NhZ2Ugb3IgYSByZXBseSBk
b2VzIG5vdCBmaXQgdG8gdGhlIHN0cmVhbSBidWZmZXIsIHRoZQorICAgICAgICBQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyIGluc3RlYWQu
CisgICAgICAgIFRoaXMgd2lsbCBtYWtlIHRoZSByZWFkZXIgdG8gd2FpdCBmb3IgdGhlIG5vcm1h
bCBJUEMgbWVzc2FnZS4KKworICAgICAgICBDaGFuZ2VzIHRlbXBvcmFyaWx5IHNvIHRoYXQgdGhl
IGNyZWF0aW9uIG9mIHRoZSBjb250ZXh0IHdhaXRzIGZvciB0aGUKKyAgICAgICAgY29uZmlybWF0
aW9uIHRoYXQgdGhlIGNyZWF0aW9uIHdhcyBkb25lLiBUaGlzIGlzIGR1ZSB0byBzeW5jaHJvbm9u
b3VzCisgICAgICAgIHN0cmVhbSBzZW5kIHVuYWJsZSB0byBkZWxpdmVyIHRoZSBXYXNDcmVhdGVk
IG1lc3NhZ2UgZHVyaW5nCisgICAgICAgIHdhaXQgZm9yIHJlcGx5LCBhdCB0aGUgbW9tZW50Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHVzaFBlbmRpbmdT
eW5jUmVxdWVzdElEKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cG9wUGVuZGluZ1N5bmNS
ZXF1ZXN0SUQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246Om1ha2VTeW5jUmVxdWVzdElEKToKKyAgICAgICAgTW92ZSB0aGUgY29kZSBmcm9tIHNl
bmRTeW5jTWVzc2FnZSB0byBpbmRpdmlkdWFsIGZ1bmN0aW9ucyBzbworICAgICAgICB0aGF0IHRo
ZSBjbGllbnQgY2FuIHJlc2VydmUgYSBzeW5jIHJlcXVlc3QgSUQgZm9yIHJlcGx5IHB1cnBvc2Vz
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTdHJlYW0pOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjphY3F1aXJlQWxsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZUFsbCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIEZpeCBhIHR5cG8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWly
ZQorCisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNw
YXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICBJZiB0aGUgbWVzc2FnZSBjb21lcyBpbiBhcyBu
b3JtYWwgSVBDIG1lc3NhZ2UsIGl0IG11c3QgYmUgcmVwbGllZAorICAgICAgICB2aWEgbm9ybWFs
IElQQy4KKworICAgICAgICBBZGQgYSBmbGFnIG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2Ug
dG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKyAgICAgICAgbWVzc2FnZSBiZWluZyBwcm9jZXNzZWQg
Y29tZXMgYXMgYSBub3JtYWwgSVBDIG1lc3NhZ2Ugb3IgYQorICAgICAgICBzdHJlYW0gbWVzc2Fn
ZS4gVGhpcyBpbmZvcm1hdGlvbiBtdXN0IGJlIHN0YXRlZnVsIGluIHRoZSBjb25uZWN0aW9uCisg
ICAgICAgIGNsYXNzLCBhcyBpdCBpcyBub3QgcGFzc2FibGUgYXMgYXJndW1lbnRzIHdoZW4gdGhl
IGV4ZWN1dGlvbiBnb2VzIHRocm91Z2g6CisgICAgICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKCkKKyAgICAgICAgICAgIFJlY2Vp
dmVyOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgpCisgICAgICAgICAgICBoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXMoKQorICAgICAgICAgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZl
cj46OnNlbmRTeW5jUmVwbHkoKQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgIEFkZCBwcm9wZXJ0aWVzIE5vdFN0cmVhbUVuY29kYWJsZSwgTm90U3RyZWFt
RW5jb2RhYmxlUmVwbHkKKyAgICAgICAgdGhhdCBpbmRpY2F0ZSBpZiB0aGUgbWVzc2FnZSBwYXJh
bWV0ZXJzIGFyZSBzdWNoIHRoYXQgdGhleQorICAgICAgICBjYW5ub3QgYmUgZW5jb2RlZCBpbnRv
IHBsYWluIGRhdGEgYnVmZmVyIGFzIHZhbHVlcy4KKyAgICAgICAgVGhpcyBpcyBlbmNvZGVkIGFz
ICdjb25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZScgYW5kCisgICAgICAgICdjb25zdGV4
cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZVJlcGx5JyBmb3IgdGhlIHN0cmVhbSBtZXNzYWdlcy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JBcmd1bWVudHMpOgorICAgICAgICAo
SVBDOjptZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToK
KyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3Nh
Z2VOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2Vz
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNz
YWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U2VtYXBob3JlTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaDoKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodDo6U2VuZE1hY2hT
ZW5kUmlnaHQpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNl
bmRSaWdodDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNlbmRSaWdodDo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJp
Z2h0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJl
Y2VpdmVNYWNoU2VuZFJpZ2h0OjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oOgorICAgICAgICBUZXN0IGNoYW5nZXMgcmVs
YXRlZCB0byBOb3RTdHJlYW1FbmNvZGFibGUsIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5LgorCisg
ICAgICAgIE90aGVyIGNoYW5nZXMgaW5kaWNhdGUgYW4gYXV4aWxpYXJ5IGNoYW5nZSB0byBtZXNz
YWdlIHN0cnVjdHM6CisgICAgICAgIGNoYW5naW5nICdjb25zdCBib29sIGlzU3luYycgdG8gJ2Nv
bnN0ZXhwciBib29sIGlzU3luYycuCisgICAgICAgIFRoaXMgaXMgZG9uZSBmb3IgY29uc2lzdGVu
Y3ksIHNpbmNlICdpc1N0cmVhbUVuY29kYWJsZSonIHByb3BlcnRpZXMKKyAgICAgICAgYXJlIGFs
c28gYWRkZWQgYXMgY29uc3RleHByLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICBNYWtlIHR5cGVzIHRoYXQgYXJlIFdlYkdMIHN5bmMgbWVzc2FnZSBwYXJhbWV0ZXJz
IG9yIHJlcGx5IHBhcmFtZXRlcnMKKyAgICAgICAgbm93IGVuY29kYWJsZSB0byBhIHN0cmVhbSBi
eSBtYWtpbmcgdGhlIGVuY29kZXIgcGFydCBhIHRlbXBsYXRlLgorICAgICAgICBQcmV2aW91c2x5
IHRoZXNlIHdlcmUgc2VudCBvbmx5IGJ5IG5vcm1hbCBJUEMsIGFuZCBkaWQgbm90IG5lZWQKKyAg
ICAgICAgdG8gYmUgcG9seW1vcnBoaWMgdG8gdGhlIGVuY29kZXIuCisKIDIwMjEtMDMtMTMgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF1bTVNFXSBNZWRp
YVNvdXJjZTo6YnVmZmVyZWQgYW5kIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZmZXJzIGRv
IG5vdCB1cGRhdGUgaW4gdGhlIHNhbWUgcnVuIGxvb3AgYXMgTWVkaWFTb3VyY2U6OmVuZE9mU3Ry
ZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA2YTA4
MzllMmRhM2Q2NThjZTc1ZGU0YTQzMWQ3YmU5MWU0MDRmZmE4Li4zNTc0NWE1NmY5YzA4MGMyZmUz
YmE0ZTdhOThhZmRiMjcxM2ZmNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmlu
ZGV4IDUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQuLjNhYjlmY2M1ZWQx
MDM1NTliMWI2ZWIzYjRlZDEwNmY1YmJkMjY5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyIDogZGVjbHR5cGUoRGV0
YWlsOjoKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgSGFzTW9kZXJuRGVjb2RlclYgPSBIYXNNb2Rlcm5EZWNvZGVyPFQsIEk+Ojp2YWx1
ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIHQu
ZW5jb2RlKGVuY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNi4uZTQ4
ZTgzMjZhMmE3MzVlZjkyNGY4NzM3MmRjNzg2MzlkODIzOTMzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFj
ZSBJUEMgewogCiAvLyBBbiBhcmd1bWVudCBjb2RlciB3b3JrcyBvbiBQT0QgdHlwZXMKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnQpLCBzaXplb2YoVCksIGFs
aWdub2YoVCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCA4ZDhlYzkyZjhlYzA5MGQ4YTdhYTAzMzUwNDRiMDAyYzk5ODI2MjM1Li40NDA2YjhhODdjNGUw
NzhmNGQ3N2YxNzMzY2Q1NzRjMzVjOWMwYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFVuaXF1ZVJlZjxFbmNvZGVyPiBD
b25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsCiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihtZXNzYWdlTmFt
ZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4K
LSAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7CisgICAgc3luY1JlcXVlc3RJ
RCA9IG1ha2VTeW5jUmVxdWVzdElEKCk7CiAgICAgZW5jb2Rlci5nZXQoKSA8PCBzeW5jUmVxdWVz
dElEOwogCiAgICAgcmV0dXJuIGVuY29kZXI7CkBAIC01NjQsMjggKzU2NCw0MCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUg
bWVzc2FnZU5hbWUsIHVpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIENvbm5lY3Rp
b246OnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5jUmVxdWVzdElEKQorewor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsK
KyAgICAgICAgaWYgKCFtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgbV9wZW5kaW5nU3luY1JlcGxpZXMuYXBwZW5kKFBlbmRpbmdT
eW5jUmVwbHkoc3luY1JlcXVlc3RJRCkpOworICAgIH0KKyAgICArK21faW5TZW5kU3luY0NvdW50
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbm5lY3Rpb246OnBvcFBlbmRpbmdTeW5j
UmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQpCit7CisgICAgLS1tX2luU2VuZFN5bmND
b3VudDsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAg
IEFTU0VSVF9VTlVTRUQoc3luY1JlcXVlc3RJRCwgbV9wZW5kaW5nU3luY1JlcGxpZXMubGFzdCgp
LnN5bmNSZXF1ZXN0SUQgPT0gc3luY1JlcXVlc3RJRCk7CisgICAgbV9wZW5kaW5nU3luY1JlcGxp
ZXMucmVtb3ZlTGFzdCgpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNv
ZGVyPiYmIGVuY29kZXIsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCiB7CisgICAgQVNTRVJUKHN5bmNSZXF1ZXN0SUQpOwogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotCi0gICAgLy8gUHVzaCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uIG9u
IG91ciBzdGFjay4KLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY1JlcGx5
U3RhdGVNdXRleCk7Ci0gICAgICAgIGlmICghbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXMpIHsK
LSAgICAgICAgICAgIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5h
cHBlbmQoUGVuZGluZ1N5bmNSZXBseShzeW5jUmVxdWVzdElEKSk7CisgICAgaWYgKCFwdXNoUGVu
ZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpIHsKKyAgICAgICAgZGlkRmFpbFRvU2Vu
ZFN5bmNNZXNzYWdlKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgICsr
bV9pblNlbmRTeW5jQ291bnQ7Ci0KICAgICAvLyBGaXJzdCBzZW5kIHRoZSBtZXNzYWdlLgogICAg
IE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5OwogICAgIGlmIChzZW5kU3lu
Y09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hXaGVuRGVzdGlu
YXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpKQpAQCAtNTk5LDE0ICs2MTEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVp
bnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaQogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0
aGlzKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1Jl
cGx5KHN5bmNSZXF1ZXN0SUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMp
OwogCi0gICAgLS1tX2luU2VuZFN5bmNDb3VudDsKLQotICAgIC8vIEZpbmFsbHksIHBvcCB0aGUg
cGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uLgotICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKLSAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z1N5bmNSZXBsaWVzLmxhc3QoKS5zeW5jUmVxdWVzdElEID09IHN5bmNSZXF1ZXN0SUQpOwotICAg
ICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5yZW1vdmVMYXN0KCk7Ci0gICAgfQorICAgIHBvcFBl
bmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFyZXBseSkKICAg
ICAgICAgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKaW5kZXggZDliNTMwMzM1OGQ2NDc4NjZjOWFiNmE1N2NjMTdiZGVhOTQy
ZjhkZi4uMzA3NDBiNWMwOWFhYjNhNmFhNjI4ZjVkMjIzNmExYjBjMGNlZDlhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzIzLDcgKzMyMyw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOwotICAg
IAorICAgIHVpbnQ2NF90IG1ha2VTeW5jUmVxdWVzdElEKCkgeyByZXR1cm4gKyttX3N5bmNSZXF1
ZXN0SUQ7IH0KKyAgICBib29sIHB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5j
UmVxdWVzdElEKTsKKyAgICB2b2lkIHBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBUaW1lb3V0LCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiB3
b3JrIHF1ZXVlLgpAQCAtNDk2LDYgKzQ5OCw3IEBAIHByaXZhdGU6CiAgICAgRXZlbnRMaXN0ZW5l
ciBtX3dyaXRlTGlzdGVuZXI7CiAgICAgSEFORExFIG1fY29ubmVjdGlvblBpcGUgeyBJTlZBTElE
X0hBTkRMRV9WQUxVRSB9OwogI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNsaWVudENv
bm5lY3Rpb247CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDc1MTU5MzhkNDJkZTM2NTU0NTBkYjA0ZDJm
ZTIwOWY1ZGVmMDFhNjguLmU3NTNkMTEyYTQ3MTljNzJmOWY3MGFhNzkyYzVjMDQyZWI3ZDA4YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4NCw3
ICsxODQsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZAogICAgIH0KIAogICAgIHR5cGVuYW1l
IFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElELCBjb25u
ZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsK
LSAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBhcmdzLi4u
KTsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseTxUPihzeW5jUmVxdWVzdElELCBh
cmdzLi4uKTsKICAgICB9OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmgKaW5kZXggMDg4NjQ5NDM5OWEwZTVmNmEzOTg1MDViNDE5ZDhiZjUyMWI1YjhiZC4uZTMyODQx
NzllMDgzOWExNzdiNjlmYjc3MWIxZjczMGQ1NGI5ZGI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtNjcsMTAgKzY3
LDE2IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5p
bXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VT
aXplOwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIGJvb2wgdHJ5U2VuZFN0cmVhbShUJiBtZXNzYWdlLCBTcGFuJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBPcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gdHJ5U2Vu
ZFN5bmNTdHJlYW0oVCYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmLCBUaW1lb3V0LCBTcGFu
Jik7CiAgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFRpbWVvdXQpOwogICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3Nh
Z2UoU3BhbiYmKTsKIAogICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoVGltZW91dCk7Cisg
ICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0KTsKKwogICAgIGVudW0gY2xh
c3MgV2FrZVVwU2VydmVyIDogYm9vbCB7CiAgICAgICAgIE5vLAogICAgICAgICBZZXMKQEAgLTEx
MCwxNCArMTE2LDkgQEAgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQKICAgICBhdXRvIHNwYW4gPSB0
cnlBY3F1aXJlKHRpbWVvdXQpOwogICAgIGlmICghc3BhbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHsKLSAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIg
eyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKLSAgICAgICAgaWYgKG1lc3Nh
Z2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gd2Fr
ZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rlci5zaXplKCkpOwotICAgICAgICAgICAg
aWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXI6
OlllcykKLSAgICAgICAgICAgICAgICB3YWtlVXBTZXJ2ZXIoKTsKKyAgICBpZiBjb25zdGV4cHIo
VDo6aXNTdHJlYW1FbmNvZGFibGUpIHsKKyAgICAgICAgaWYgKHRyeVNlbmRTdHJlYW0obWVzc2Fn
ZSwgKnNwYW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICB9CiAg
ICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwogICAgIGlm
ICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
KQpAQCAtMTI1LDYgKzEyNiwxOSBAQCBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQo
VCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRAogICAgIHJldHVy
biB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kU3RyZWFtKFQmIG1lc3NhZ2UsIFNwYW4mIHNwYW4pCit7CisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0
YSwgc3Bhbi5zaXplIH07CisgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1l
bnRzKCkpIHsKKyAgICAgICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1lc3NhZ2VFbmNv
ZGVyLnNpemUoKSk7CisgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6V2FrZVVwU2VydmVyOjpZZXMpCisgICAgICAgICAgICB3YWtlVXBTZXJ2ZXIoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNl
bmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKQEAgLTEzNCwxMiArMTQ4LDU3IEBAIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNl
bmRTeW5jKFQmJiBtZXNzCiAgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAg
ICBpZiAoIXNwYW4pCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dCBzZW5kIHRocm91Z2ggc3RyZWFtLgotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgcmVjZWl2ZSB0
aHJvdWdoIHN0cmVhbS4KKyAgICBpZiBjb25zdGV4cHIoVDo6aXNTdHJlYW1FbmNvZGFibGUpIHsK
KyAgICAgICAgYXV0byBtYXliZVNlbmRSZXN1bHQgPSB0cnlTZW5kU3luY1N0cmVhbShtZXNzYWdl
LCByZXBseSwgdGltZW91dCwgKnNwYW4pOworICAgICAgICBpZiAobWF5YmVTZW5kUmVzdWx0KQor
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKm1heWJlU2VuZFJlc3VsdCk7CisgICAgfQogICAg
IHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKICAgICByZXR1
cm4gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwgVGltZW91dCB0aW1lb3V0LCBTcGFuJiBzcGFuKQorewor
ICAgIC8vIEluIHRoaXMgZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJvciBo
YXBwZW5lZCBhbmQgY2FsbGVyIHNob3VsZCBzdG9wIHByb2Nlc3NpbmcuCisgICAgLy8gV1RGOjpu
dWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkg
c2VuZGluZyBvdXQgb2Ygc3RyZWFtLgorICAgIGF1dG8gc3luY1JlcXVlc3RJRCA9IG1fY29ubmVj
dGlvbi5tYWtlU3luY1JlcXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0aW9uLnB1c2hQZW5k
aW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKSkKKyAgICAgICAgcmV0dXJuIFNlbmRTeW5j
UmVzdWx0IHsgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4gT3B0aW9uYWw8U2VuZFN5
bmNSZXN1bHQ+IHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29k
ZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgICAgIGlmICghKG1l
c3NhZ2VFbmNvZGVyIDw8IHN5bmNSZXF1ZXN0SUQgPDwgbWVzc2FnZS5hcmd1bWVudHMoKSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIHdha2V1cFJlc3Vs
dCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKworICAgICAgICBpZiAod2FrZXVw
UmVzdWx0ID09IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFNlcnZlcjo6WWVzKQorICAg
ICAgICAgICAgd2FrZVVwU2VydmVyKCk7CisgICAgICAgIGlmIGNvbnN0ZXhwcihUOjppc1JlcGx5
U3RyZWFtRW5jb2RhYmxlKSB7CisgICAgICAgICAgICBhdXRvIHJlcGx5U3BhbiA9IHRyeUFjcXVp
cmVBbGwodGltZW91dCk7CisgICAgICAgICAgICBpZiAoIXJlcGx5U3BhbikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9OworICAgICAgICAgICAgYXV0byBkZWNvZGVy
ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHsgbmV3IERlY29kZXIocmVwbHlTcGFuLT5kYXRh
LCByZXBseVNwYW4tPnNpemUsIG1fY3VycmVudERlc3RpbmF0aW9uSUQpIH07CisgICAgICAgICAg
ICBpZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSAhPSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChkZWNvZGVyLT5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZGVjb2RlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX2NsaWVudE9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2Fp
dEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7Cisg
ICAgfSgpOworICAgIG1fY29ubmVjdGlvbi5wb3BQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVx
dWVzdElEKTsKKyAgICBpZiAocmVzdWx0ICYmICpyZXN1bHQpIHsKKyAgICAgICAgYXV0byYgZGVj
b2RlciA9ICoqcmVzdWx0OworICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3Vt
ZW50cz4gcmVwbHlBcmd1bWVudHM7CisgICAgICAgIGRlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7
CisgICAgICAgIGlmICghcmVwbHlBcmd1bWVudHMpCisgICAgICAgICAgICByZXR1cm4gU2VuZFN5
bmNSZXN1bHQgeyB9OworICAgICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMp
LCByZXBseSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGlubGluZSBib29sIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0
X3QgZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0KQogewogICAgIGlmIChkZXN0aW5hdGlv
bklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCkBAIC0yMDEsNiArMjYwLDQ1IEBAIGlubGlu
ZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlBY3F1aXJlCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAoraW5saW5l
IE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeUFjcXVpcmVBbGwoVGltZW91dCB0aW1lb3V0KQoreworICAgIC8vIFRoaXMgd291
bGQgbWVhbiB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBhZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEg
cHJvZ3JhbW1pbmcgZXJyb3IuCisgICAgLy8gU2luY2UgdGhlIHZhbHVlIGlzIHRydXN0ZWQsIHdl
IG9ubHkgYXNzZXJ0LgorICAgIEFTU0VSVChzaGFyZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxdWlyZSkgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7
CisKKyAgICAvLyBUaGUgc2VydmVyIGFja25vd2xlZGdlcyB0aGF0IHN5bmMgbWVzc2FnZSBoYXMg
YmVlbiBwcm9jZXNzZWQgYnkgc2V0dGluZyBjbGllbnRPZmZzZXQgPT0gY2xpZW50TGltaXQgPT0g
MC4KKyAgICAvLyBXYWl0IGZvciB0aGlzIGNvbmRpdGlvbiwgb3IgdGhlbiB0aGUgY29uZGl0aW9u
IHdoZXJlIHNlcnZlciBzYXlzIHRoYXQgaXQgc3RhcnRlZCB0byBzbGVlcCBhZnRlciBzZXR0aW5n
IHRoYXQgY29uZGl0aW9uLgorICAgIC8vIFRoZSB3YWl0IHNlcXVlbmNlIGludm9sdmVzIHR3byB2
YXJpYWJsZXMsIHNvIGZvcm0gYSB0cmFuc2FjdGlvbiBieSBzZXR0aW5nIGNsaWVudExpbWl0ID09
IGNsaWVudElzV2FpdGluZ1RhZy4KKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gaXMgY2FuY2VsbGVk
IGlmIHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgc2V0IGNsaWVudE9mZnNldCA9PSBjbGllbnRMaW1p
dCA9PSAwLCBvdGhlcndpc2UgaXQgY29tbWl0cy4KKyAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24g
Y29tbWl0cywgc2VydmVyIGlzIGd1YXJhbnRlZWQgdG8gc2lnbmFsLgorCisgICAgZm9yICg7Oykg
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9
IHNoYXJlZENsaWVudExpbWl0KCkuZXhjaGFuZ2UoQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIENsaWVudE9mZnNldCBj
bGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUpOworI2Vsc2UKKyAgICAgICAgQ2xpZW50TGltaXQgY2xpZW50TGltaXQgPSBzaGFy
ZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgICAg
IENsaWVudE9mZnNldCBjbGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworI2VuZGlmCisgICAgICAgIGlmICghY2xpZW50TGlt
aXQgJiYgKGNsaWVudE9mZnNldCA9PSBDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcg
fHwgIWNsaWVudE9mZnNldCkpCisgICAgICAgICAgICBicmVhazsKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1l
b3V0KTsKKyNlbHNlCisgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICBp
ZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJbiBjYXNlIHRoZSB0cmFuc2Fj
dGlvbiB3YXMgY2FuY2VsbGVkLCB1bmRvIHRoZSB0cmFuc2FjdGlvbiBtYXJrZXIuCisgICAgc2hh
cmVkQ2xpZW50TGltaXQoKS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGVhc2UpOworI2VuZGlmCisgICAgbV9jbGllbnRPZmZzZXQgPSAwOwor
ICAgIHJldHVybiBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgMCk7Cit9CisKIGlubGluZSBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWlu
aW11bU1lc3NhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaAppbmRleCA1MmIzZDc5ZWFhMzY4NzQwYzEyZDViYzU0NTI3
ZTk1N2VmNGE2OTgzLi5lNTJjYWIyOTg4ZGQ4YjM5ZmYzMzgwNWY0ZDM2OWIxYjU0ZGUxMWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oCkBAIC00OSwxMCArNDksMjAgQEAgbmFtZXNwYWNlIElQQyB7CiAvLyBhbmQgdGhlbiB1
cG9uIHRoZSBzZWNvbmQgYWNxdWlyZSAxNjYgYnl0ZXMuIER1ZSB0byBob3cgYWxpZ25tZW50IGFu
ZCBtaW5pbXVtIGxlbmd0aCBhZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZQogLy8gbWVt
b3J5IGNhbiBiZSByZWZlcnJlZCB0bywgdGhlIHNlcnZlciBjYW5ub3QgInJlYWQgdHdvIHRpbWVz
IHNpbXVsdGFuZW91c2x5IiBhbmQgcmVsZWFzZSAxNzQgYnl0ZXMuCiAvLworLy8gVGhlIGJ1ZmZl
ciBhbHNvIHN1cHBvcnRzIHN5bmNocm9ub3VzIHJlcGxpZXMgdmlhICJyZWxlYXNlQWxsL2FjcXVp
cmVBbGwiIGNhbGwgcGF0dGVybi4gVGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgY2FuCisvLyBl
c3RhYmxpc2ggY2FzZXMgd2hlcmUgdGhlIGNsaWVudCB0cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRo
ZSBkYXRhIHRvIHRoZSBzZXJ2ZXIuIEluIHRoZXNlIGNhc2VzIHRoZSBzZXJ2ZXIgd2lsbAorLy8g
YWNrbm93bGVkZ2UgdGhlIHJlYWQgd2l0aCAicmVsZWFzZUFsbCIgb3BlcmF0aW9uLiBUaGUgY2xp
ZW50IHdpbGwgdGhlbiByZWFkIHRoZSByZXBseSB2aWEgImFjcXVpcmVBbGwiIG9wZXJhdGlvbi4g
VGhlCisvLyByZXBseSB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVm
ZmVyLiBUaGlzIG1hbmRhdGVzIHRoYXQgaW4tcGxhY2UgZGF0YSByZWZlcmVuY2VzIGluIHRoZSBi
dWZmZXIKKy8vIGNhbm5vdCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5IGZvciBtZXNzYWdlIGRhdGEg
YW5kIHRoZSByZXBseSBkYXRhLiBJbiBjdXJyZW50IElQQyBpbXBsZW1lbnRhdGlvbiwgdGhlIG1l
c3NhZ2UKKy8vIHByb2Nlc3NpbmcgdXNlcyB0aGUgaW4tcGxhY2UgZGF0YSByZWZlcmVuY2VzLCB3
aGlsZSB0aGUgcmVwbHkgZGF0YSBpcyBmaXJzdCBjb25zdHJ1Y3RlZCB0byBhbGxvY2F0ZWQgbWVt
b3J5IGFuZCB0aGVuCisvLyBjb3BpZWQgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyLgorLy8KIC8vIFRo
ZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbjoKIC8vICogVGhl
IGNsaWVudCBvd25zIHRoZSBkYXRhIGJldHdlZW4gW2NsaWVudE9mZnNldCwgc2VydmVyT2Zmc2V0
Wy4gV2hlbiBjbGllbnRPZmZzZXQgPT0gc2VydmVyT2Zmc2V0LCB0aGUgY2xpZW50IG93bnMKIC8v
ICAgYWxsIHRoZSBkYXRhLgogLy8gKiBUaGUgc2VydmVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBb
c2VydmVyT2Zmc2V0LCBjbGllbnRPZmZzZXRbLgorLy8gKiBUaGUgZXhjZXB0aW9uIHRvIHRoZSBh
Ym92ZSBpcyB3aGVuIGNvbW11bmljYXRpb24gcHJvdG9jb2wgY2FuIGNvbnRhaW4gbWVzc2FnZXMg
dGhhdCBkZW5vdGUgdGhhdCB0aGUgc2VydmVyIHdpbGwgb3duCisvLyAgIGFsbCB0aGUgZGF0YS4K
IC8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhl
IGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlz
IGZ1bGwuCiAvLyAgIEZJWE1FOiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9u
IGlmIGl0IHdvdWxkIHVzZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBhcyB0
aGUgaW5kaWNhdG9yLgogLy8gICBUaGlzIHdvdWxkIG1vdmUgdGhlIGFsaWduZWRTcGFuIGltcGxl
bWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA4
ZTQ5MjY2NDRhODA4NjM2OWVmN2NjODlhNDAyYjI4Yjk2MDE3YTAyLi42MzVhZjg5YjZhOWEyMGQy
NTBkYzVjNWY4YTM0NjcxNWFhMDFiYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNTksNyArNTksNyBAQCB2
b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9u
Jiwgc3RkOjp1bmlxdWVfcHRyPERlYwogICAgIG1fd29ya1F1ZXVlLndha2VVcCgpOwogfQogCi1P
cHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnRyeUFxdWlyZSgpCitPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcmUoKQogewog
ICAgIFNlcnZlckxpbWl0IHNlcnZlckxpbWl0ID0gc2hhcmVkU2VydmVyTGltaXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogICAgIGlmIChzZXJ2ZXJMaW1pdCA9PSBTZXJ2ZXJM
aW1pdDo6c2VydmVySXNTbGVlcGluZ1RhZykKQEAgLTc3LDYgKzc3LDExIEBAIE9wdGlvbmFsPFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6dHJ5QXF1aXJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFjcXVpcmVBbGwoKQor
eworICAgIHJldHVybiBhbGlnbmVkU3BhbigwLCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKIHZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogewog
ICAgIEFTU0VSVChyZWFkU2l6ZSk7CkBAIC04NSw3ICs5MCw3IEBAIHZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgU2VydmVyT2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZlck9m
ZnNldCgpLmV4Y2hhbmdlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7
Ci0gICAgLy8gSWYgdGhlIHNlbmRlciB3cm90ZSBvdmVyIHNlcnZlck9mZnNldCwgaXQgbWVhbnMg
dGhlIHNlbmRlciBpcyB3YWl0aW5nLgorICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBz
ZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQgaXMgd2FpdGluZy4KICAgICBpZiAob2xk
U2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQogICAgICAg
ICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CiAgICAgZWxzZQpAQCAt
OTgsNiArMTAzLDIzIEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uo
c2l6ZV90IHJlYWRTaXplKQogICAgIG1fc2VydmVyT2Zmc2V0ID0gc2VydmVyT2Zmc2V0OwogfQog
Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlQWxsKCkKK3sKKyAgICBz
aGFyZWRTZXJ2ZXJMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PFNlcnZlckxpbWl0PigwKSwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2VydmVy
T2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmV4Y2hhbmdlKHN0
YXRpY19jYXN0PFNlcnZlck9mZnNldD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwor
ICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRo
ZSBjbGllbnQgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9m
ZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQorICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2Vt
YXBob3JlKCkuc2lnbmFsKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIShvbGRTZXJ2ZXJP
ZmZzZXQgJiBTZXJ2ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykpOworI2Vsc2UKKyAgICBz
aGFyZWRTZXJ2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsK
KyAgICAvLyBJUEM6OlNlbWFwaG9yZSBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9ybS4g
Q2xpZW50IHdpbGwgcG9sbCBhbmQgeWllbGQuCisjZW5kaWYKKyAgICBtX3NlcnZlck9mZnNldCA9
IDA7Cit9CisKIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCiB7
CiAgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDFkZGFlYzQ2MmVi
ZGNmMmE2ODU1Yjk0YTliZjY3MWFkNGJmYzVhMzUuLjI2YWE0M2JmYTlhOTkzOTgzM2NlNzNmMzUz
NGVkNDFlMzgxZGU3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIH07
CiAgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVf
dCBtZXNzYWdlTGltaXQpID0gMDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAg
dm9pZCBzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4u
KTsKIAogcHJvdGVjdGVkOgpAQCAtNjcsOSArNjcsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB1
aW50OF90KiBkYXRhOwogICAgICAgICBzaXplX3Qgc2l6ZTsKICAgICB9OwotICAgIE9wdGlvbmFs
PFNwYW4+IHRyeUFxdWlyZSgpOworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKKyAg
ICBTcGFuIGFjcXVpcmVBbGwoKTsKIAogICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUp
OworICAgIHZvaWQgcmVsZWFzZUFsbCgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
bmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2Fn
ZVNpemU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25l
ZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKQEAgLTkyLDE1ICs5NCwyNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBMb2NrIG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CiAgICAgRGVx
dWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisgICAg
Ym9vbCBtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdlIHsgZmFsc2UgfTsKIAogICAgIGZyaWVu
ZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1l
bnRzPgogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBseSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiB7Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4KLSAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VS
ZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgaWYgY29uc3RleHByKFQ6OmlzUmVwbHlTdHJlYW1F
bmNvZGFibGUpIHsKKyAgICAgICAgaWYgKG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UpIHsK
KyAgICAgICAgICAgIGF1dG8gc3BhbiA9IGFjcXVpcmVBbGwoKTsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IE1l
c3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAg
ICAgICAgICAgICAgIGlmICgobWVzc2FnZUVuY29kZXIgPDwgLi4uIDw8IGFyZ3VtZW50cykpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG91dE9mU3RyZWFtRW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlLCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgICAg
ICB9CisgICAgfQorICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oTWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworCiAgICAgKGVuY29k
ZXIuZ2V0KCkgPDwgLi4uIDw8IGFyZ3VtZW50cyk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3lu
Y1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpAQCAtMTQyLDggKzE1Niw3IEBAIHByaXZhdGU6
CiAgICAgTG9jayBtX3JlY2VpdmVyc0xvY2s7CiAgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFz
aE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKICAgICBS
ZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnM7Ci0KLSAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5h
dGlvbklEID0gMDsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9Owog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+CkBAIC0xNzYsNyArMTg5LDcgQEAgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpkaXMKICAgICB1aW50OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5hbWU6OkludmFsaWQpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7ICsraSkgewotICAgICAgICBhdXRvIHNwYW4g
PSB0cnlBcXVpcmUoKTsKKyAgICAgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZSgpOwogICAgICAg
ICBpZiAoIXNwYW4pCiAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVz
c2FnZXM7CiAgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVyIHsgc3Bhbi0+ZGF0YSwgc3Bhbi0+
c2l6ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9OwpAQCAtMjQyLDEyICsyNTUsMTggQEAgYm9v
bCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6cHJvY2Vzc1NldFN0cmVhbURlc3Rp
bmF0aW9uSUQoRGVjb2RlciYmIGQKIHRlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgogYm9vbCBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERl
Y29kZXImJiBkZWNvZGVyLCBSZWNlaXZlciYgcmVjZWl2ZXIpCiB7CisgICAgQVNTRVJUKCFtX2lz
RGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdlKTsKKyAgICBtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNz
YWdlID0gdHJ1ZTsKICAgICByZWNlaXZlci5kaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywg
ZGVjb2Rlcik7CisgICAgbV9pc0Rpc3BhdGNoaW5nU3RyZWFtTWVzc2FnZSA9IGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRj
aERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVy
UG9zaXRpb24oKSk7CisgICAgaWYgKGRlY29kZXIuaXNTeW5jTWVzc2FnZSgpKQorICAgICAgICBy
ZWxlYXNlQWxsKCk7CisgICAgZWxzZQorICAgICAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1
ZmZlclBvc2l0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAwMzM1YjJiZDU1ZjAxM2NmM2YzMzljMjQ2MmU1
YTRlOGUyNjg3NDRlLi42NDg3MTY0ODEzZjUxZTQ0YjFmMjEzZmViMDcwN2Y3YmYzZTQ2YTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTU3LDYgKzU3LDgg
QEAgV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNEaXNwYXRjaE1lc3Nh
Z2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0FzeW5j
RGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNl
aXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVk
JworTk9UX1NUUkVBTV9FTkNPREFCTEVfQVRUUklCVVRFID0gJ05vdFN0cmVhbUVuY29kYWJsZScK
K05PVF9TVFJFQU1fRU5DT0RBQkxFX1JFUExZX0FUVFJJQlVURSA9ICdOb3RTdHJlYW1FbmNvZGFi
bGVSZXBseScKIAogZGVmIHJlY2VpdmVyX2VudW1lcmF0b3Jfb3JkZXJfa2V5KHJlY2VpdmVyX25h
bWUpOgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0gJ0lQQyc6CkBAIC0xOTQsNyArMTk2LDEyIEBA
IGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIEFyZ3VtZW50cyA9ICVzO1xuJyAlIGFyZ3VtZW50
c190eXBlKG1lc3NhZ2UpKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OiVzXyVzOyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0g
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9ICVzO1xuJyAl
ICgnZmFsc2UnLCAndHJ1ZScpW21lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCBu
b3QgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSldKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gJXM7XG4nICUgKCdmYWxz
ZScsICd0cnVlJylbbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzIGlzIG5vdCBOb25lIGFuZCBub3Qg
bWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSldKQorICAgIGlmIHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTdHJlYW1FbmNvZGFibGUgPSAlcztcbicgJSAo
J3RydWUnLCAnZmFsc2UnKVttZXNzYWdlLmhhc19hdHRyaWJ1dGUoTk9UX1NUUkVBTV9FTkNPREFC
TEVfQVRUUklCVVRFKV0pCisgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNSZXBseVN0cmVhbUVuY29kYWJsZSA9ICVzO1xuJyAlICgndHJ1ZScsICdmYWxzZScp
W21lc3NhZ2UuaGFzX2F0dHJpYnV0ZShOT1RfU1RSRUFNX0VOQ09EQUJMRV9SRVBMWV9BVFRSSUJV
VEUpXSkKKwogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICBpZiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnMgIT0gTm9uZToKICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9w
YXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCmluZGV4
IDNlODRhZTFlMzljN2U3ZDdjZGY4OTVhNDI0OTI3NzEzMTJhYWEwNjAuLmNhZjc2Nzk3Mjg3OWVh
OTU2ZmY5ZGFhY2ZiYmFiNDcxMGRjYmJhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucy5jcHAKQEAgLTY3LDYgKzY3LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKyNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjZW5kaWYKQEAgLTIz
Niw2ICsyMzksMTQgQEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRz
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWUKICAgICAgICAgcmV0dXJuIGpz
VmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0
cmluZzo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6CiAgICAgICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06
OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVy
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0
cmVhbV9TZW5kTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVk
QXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6OkFy
Z3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuIGpzVmFs
dWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1h
Y2hTZW5kUmlnaHQ6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6
CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW06OlNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodDo6QXJndW1lbnRzPihnbG9i
YWxPYmplY3QsIGRlY29kZXIpOworI2VuZGlmCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGpzVmFsdWVG
b3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogICAgIGRlZmF1
bHQ6CkBAIC01NTksNiArNTcwLDE4IEBAIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0
aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hCiAgICAgICAg
IHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4gewogICAgICAgICAgICAgeyJ1cmwi
LCAiU3RyaW5nIiwgbnVsbHB0ciwgZmFsc2V9LAogICAgICAgICB9OworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJp
Z2h0OgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKKyAgICAg
ICAgICAgIHsiYTEiLCAiTWFjaFNlbmRSaWdodCIsIG51bGxwdHIsIGZhbHNlfSwKKyAgICAgICAg
fTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRS
aWdodDoKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPiB7IH07Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2Vu
ZFJpZ2h0OgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKKyAg
ICAgICAgICAgIHsiYTEiLCAiTWFjaFNlbmRSaWdodCIsIG51bGxwdHIsIGZhbHNlfSwKKyAgICAg
ICAgfTsKKyNlbmRpZgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVy
X1NlbmRTdHJlYW1CdWZmZXI6CiAgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlw
dGlvbj4gewogICAgICAgICAgICAgeyJzdHJlYW0iLCAiSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIiwgbnVsbHB0ciwgZmFsc2V9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IGY3NjUwN2NkZGYxNzAzMTM2YjEwYTBm
MzA2ODRjM2ZjZDE0NGE2MTMuLjA5NDExOGE5OGJlZjNiN2FmZWQ0Nzg5OTk3NWMzZGIzMjI4NWQ1
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5jcHAKQEAgLTgyLDYgKzgyLDEyIEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1l
c3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNl
bWFwaG9yZSI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2Vu
ZFN0cmVhbUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5k
U3RyZWFtQnVmZmVyIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNl
aXZlTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aFN0cmVhbV9SZWNlaXZl
TWFjaFNlbmRSaWdodCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2Vu
ZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAgICAgICByZXR1cm4gIlRlc3RXaXRoU3RyZWFt
X1NlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhT
dHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtX1NlbmRTdHJpbmc6CiAgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1fU2VuZFN0
cmluZyI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5
bmNocm9uaXplZDoKQEAgLTIwNyw2ICsyMTMsOSBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1l
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpU
ZXN0V2l0aFNlbWFwaG9yZTsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1
ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0
V2l0aFN0cmVhbUJ1ZmZlcjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9S
ZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVh
bV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdHJlYW1fU2VuZFN0cmluZzoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0
cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1l
OjpUZXN0V2l0aFN0cmVhbTsKQEAgLTM0MCw2ICszNDksMTggQEAgYm9vbCBpc1ZhbGlkTWVzc2Fn
ZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZl
cl9TZW5kU3RyZWFtQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1fUmVjZWl2ZU1hY2hTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5k
UmlnaHQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1l
ID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmcpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggZmE5MzE3ODg3Y2Y1
OTMxYmQxM2JjYjYyOGRjODBjMzBlNDk4ZmUwOC4uNTk4ZGU4NjM5NzIwMDIzMTliYmVmYWI5Yjgy
NzMyZjQyOGVmZTViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oCkBAIC02OSw2ICs2OSw5IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5h
bWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3Jl
CiAgICAgLCBUZXN0V2l0aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlCiAgICAgLCBUZXN0V2l0aFN0
cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyCisgICAgLCBUZXN0V2l0aFN0cmVhbV9SZWNlaXZl
TWFjaFNlbmRSaWdodAorICAgICwgVGVzdFdpdGhTdHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2Vu
ZFJpZ2h0CisgICAgLCBUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdodAogICAgICwgVGVz
dFdpdGhTdHJlYW1fU2VuZFN0cmluZwogICAgICwgVGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5
bmNocm9uaXplZAogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJZk1lc3NhZ2VNZXNz
YWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVz
c2FnZU1lc3NhZ2VzLmgKaW5kZXggNDA3ZDMzODc3MTllMzllMjc4M2NiNDgxZTA3NmFiNDlkNjBj
OTQ5OC4uYjhmZjYxMTYxMGE0YzgxNmMwOTNmMzc0ZWQ2ZmE4MjIxYzBiOWE0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1l
c3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aElmTWVzc2FnZU1lc3NhZ2VzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhJ
Zk1lc3NhZ2VfTG9hZFVSTDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxp
Y2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDogbV9hcmd1bWVudHModXJs
KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTxjb25zdCBTdHJpbmcmLCBpbnQ2NF90PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aElmTWVzc2FnZV9M
b2FkVVJMOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgTG9hZFVSTChjb25zdCBT
dHJpbmcmIHVybCwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwsIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aEltYWdlRGF0YU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZXMuaAppbmRleCBmNDJlOGY3YTBiMDgxZjI5MTVl
NTdjYzJhZDQyMDZhYjJhYmQ2ZDI4Li4xMGNmNDNkMmFlODczODU4Y2ZlMTJlZWE5NDBmZThhNzFk
ZGZhY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoSW1hZ2VEYXRhTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZXMuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoSW1hZ2VEYXRhX1NlbmRJbWFnZURh
dGE7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBTZW5kSW1hZ2VE
YXRhKGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+JiBzMCkKICAgICAgICAgOiBtX2Fy
Z3VtZW50cyhzMCkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aEltYWdlRGF0YV9SZWNlaXZlSW1hZ2VE
YXRhOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25z
dHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+Jj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaApp
bmRleCBhY2FjMjgzNWM2YzQwNWI0MjY2ZDg4YzU2NzAwNjdkMDllYTk0YzUwLi42ZjJiZjcxOWZi
OTQyYzMyOTc5ZWIxMjRhODgyNjZmM2NiZDBhYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNl
aXZlck1lc3NhZ2VzLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcl9Mb2FkVVJMOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGlj
aXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwp
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfTG9hZFNv
bWV0aGluZzsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IExvYWRT
b21ldGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDogbV9hcmd1bWVudHModXJsKQpA
QCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfVG91Y2hFdmVudDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4
cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKICAg
ICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0FkZEV2ZW50OyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAgLTE1
OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0xvYWRTb21ldGhp
bmdFbHNlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFNv
bWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDogbV9hcmd1bWVudHModXJs
KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9
IGZhbHNlOwogCiAgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKICAgICAgICAgOiBt
X2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pCkBAIC0yMDIsNyAr
MjAyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAog
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0Nsb3NlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAogICAgIHsKQEAg
LTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPjsKIAogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkK
QEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTxkb3VibGUsIGZsb2F0PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1NlbmRE
b3VibGVBbmRGbG9hdDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIFNlbmREb3Vi
bGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKICAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBm
KQpAQCAtMjYwLDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2
NF90Pj4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1NlbmRJbnRzOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQogICAg
ICAgICA6IG1fYXJndW1lbnRzKGludHMsIGludFZlY3RvcnMpCkBAIC0yODEsNyArMjgxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0
IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcl9DcmVhdGVQbHVnaW47IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNh
bGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVw
bGU8Ym9vbCY+OwpAQCAtMzA1LDcgKzMwNSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyX1J1bkphdmFTY3JpcHRBbGVydDsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRy
dWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5n
IFJlcGx5ID0gc3RkOjp0dXBsZTw+OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJfR2V0UGx1Z2luczsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
Q2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0
dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKQEAgLTM1Myw3ICszNTMsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsK
IAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFk
OjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CkBAIC0zNzksNyArMzc5LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAg
ICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBs
eTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpAQCAtNDAwLDcgKzQw
MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90
LCBkb3VibGUsIGRvdWJsZT47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFy
YW1ldGVyQXR0cmlidXRlczsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIFRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJheikK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQpAQCAtNDIxLDcgKzQyMSw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj47CiAKICAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcl9UZW1wbGF0ZVRlc3Q7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAK
ICAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFp
cjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCiAgICAgICAgIDogbV9hcmd1bWVudHMoYSkKQEAgLTQ0
Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPjsKIAogICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1NldFZpZGVvTGF5ZXJJRDsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKICAgICAgICAgOiBt
X2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCkBAIC00NjQsNyArNDY0LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCYsIGNvbnN0
IE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiY+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNT
eW5jID0gZmFsc2U7CiAKICAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJ
UEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+JiBmbGFncykKICAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0
aW9uSWRlbnRpZmllciwgZmxhZ3MpCkBAIC00ODcsNyArNDg3LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfSW50ZXJwcmV0S2V5RXZlbnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0
aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKICAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsKQEAgLTUx
Myw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxj
b25zdCBJUEM6OkR1bW15VHlwZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfRGVw
cmVjYXRlZE9wZXJhdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxp
Y2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQogICAg
ICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQpAQCAtNTM2LDcgKzUzNiw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj47CiAK
ICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9FeHBlcmltZW50YWxPcGVyYXRpb247IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRp
b24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQogICAgICAgICA6IG1fYXJndW1lbnRzKGR1
bW15KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaAppbmRleCAzMmZhZDViMGFhYzRlNWQ1MzQ5
MTM0ZDYyNTA1MWExYjlhMDU1N2QxLi5mYTk4OGNmNzE1Y2RiYzIzOTVlZmI4YTFhZGExZWY0NTk5
MDhiYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBJUEM6OlNlbWFw
aG9yZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IElQ
Qzo6U2VtYXBob3JlJiBzMCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhzMCkKQEAgLTY3LDcgKzY3
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
dHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6U2VtYXBob3JlJj47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNz
YWdlcy5pbgppbmRleCBmZDBmNTI4YzY5Y2RlZmRkYTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyLi44
Njk1ZjU4NjM1MjdiZmExYzFkZTg1MWMyM2IyOTMyMmQyMTNmNGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0u
bWVzc2FnZXMuaW4KQEAgLTIzLDUgKzIzLDEwIEBACiAjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBh
dHRyaWJ1dGUuCiBtZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVh
bSB7CiAgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1cmwpCi0gICAgdm9pZCBTZW5kU3RyaW5n
U3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVybikKKyAgICB2b2lkIFNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUp
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBTZW5kTWFjaFNlbmRSaWdodChNYWNoU2Vu
ZFJpZ2h0IGExKSBOb3RTdHJlYW1FbmNvZGFibGUKKyAgICB2b2lkIFJlY2VpdmVNYWNoU2VuZFJp
Z2h0KCkgLT4gKE1hY2hTZW5kUmlnaHQgcjEpIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CisgICAg
dm9pZCBTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQoTWFjaFNlbmRSaWdodCBhMSkgLT4gKE1h
Y2hTZW5kUmlnaHQgcjEpIE5vdFN0cmVhbUVuY29kYWJsZSBOb3RTdHJlYW1FbmNvZGFibGVSZXBs
eQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCmluZGV4IDZhMjRl
YmRkMjAwZjMzOTA0NzdkZmFmN2NkODU3MTkxYmQ1M2IyODcuLjQxMjdlZjVhNGMyYWY3NmFmMGRj
MGM5NGM2ZDNlMDczOGRhZjJiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5o
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciY+OwogCiAgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7
CiAKICAgICBleHBsaWNpdCBTZW5kU3RyZWFtQnVmZmVyKGNvbnN0IElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgc3RyZWFtKQogICAgICAgICA6IG1fYXJndW1lbnRzKHN0cmVhbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggZTAwN2VjNGQ2OGViY2ZlNDQ3
ZDg0NzcwMTA5MjUxZTQ1Mjk5ZjU2Yy4uMDAxYzAwYTdlZDIxM2E1M2UyYzJmZGUwNjdhOTI3ZjMx
ZjNkMzRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTI5
LDYgKzI5LDkgQEAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSGFuZGxlTWVzc2Fn
ZS5oIgogI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzcsOCArNDAs
MjAgQEAgdm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY28KIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKQog
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bTo6U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5n
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6Om5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06
OlNlbmRNYWNoU2VuZFJpZ2h0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRN
YWNoU2VuZFJpZ2h0KTsKKyNlbmRpZgogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkp
CiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJl
YW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpSZWNl
aXZlTWFjaFNlbmRSaWdodDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6cmVjZWl2ZU1hY2hTZW5kUmlnaHQpOworI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodDo6bmFt
ZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0PihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhTdHJlYW06OnNlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodCk7CisjZW5kaWYKICAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaAppbmRleCBjNDJhNDcy
NGM2MmM3N2Q2ZmJhOTk1NTNkY2NlZGQwOTE2MDIyOGEyLi4wYWFiY2QyNTQ3ZDBkNjQ4NGU2N2Uw
MzdhZWY2ZWRlNDdjYjkyOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTWFjaFNlbmRSaWdodC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Niw3ICs0Nyw4IEBAIHB1
YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+Owog
CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFs
c2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5jb2RhYmxlID0gdHJ1ZTsK
IAogICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDog
bV9hcmd1bWVudHModXJsKQpAQCAtNjcsNyArNjksOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJn
dW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVh
bV9TZW5kU3RyaW5nU3luY2hyb25pemVkOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTdHJlYW1FbmNvZGFibGUgPSB0cnVlOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc1JlcGx5U3RyZWFtRW5jb2RhYmxlID0gdHJ1ZTsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6
OnR1cGxlPGludDY0X3QmPjsKQEAgLTg2LDUgKzkwLDgwIEBAIHByaXZhdGU6CiAgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOwogfTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgU2VuZE1h
Y2hTZW5kUmlnaHQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
Y29uc3QgTWFjaFNlbmRSaWdodCY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNoU2Vu
ZFJpZ2h0OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZSA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgU2VuZE1hY2hTZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYgYTEpCisgICAg
ICAgIDogbV9hcmd1bWVudHMoYTEpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFzcyBSZWNlaXZlTWFjaFNlbmRSaWdodCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5j
b2RhYmxlID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZXBseVN0cmVhbUVu
Y29kYWJsZSA9IGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhy
ZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVh
ZDsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8TWFjaFNlbmRSaWdodCY+OworICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxNYWNoU2VuZFJpZ2h0PjsKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgU2VuZEFuZFJlY2VpdmVN
YWNoU2VuZFJpZ2h0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PGNvbnN0IE1hY2hTZW5kUmlnaHQmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kQW5kUmVj
ZWl2ZU1hY2hTZW5kUmlnaHQ7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
dHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTdHJlYW1FbmNvZGFibGUgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZXBseVN0cmVhbUVuY29kYWJsZSA9IGZh
bHNlOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKKyAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8TWFjaFNlbmRSaWdodCY+OworICAgIHVzaW5nIFJlcGx5QXJn
dW1lbnRzID0gc3RkOjp0dXBsZTxNYWNoU2VuZFJpZ2h0PjsKKyAgICBleHBsaWNpdCBTZW5kQW5k
UmVjZWl2ZU1hY2hTZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYgYTEpCisgICAgICAgIDog
bV9hcmd1bWVudHMoYTEpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBl
cmNsYXNzTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaAppbmRleCBjMWFlOGQ1ZmEzMThkNDU2M2U5MTA4NmNj
YTUzZWEwZmNmMzNlZmQzLi4zZGYxYzY4ZTk3NmIxOTI1NWIzZmQyYjgzZDcxYmI4NzFlMGFkNWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3VwZXJjbGFzc01lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNl
OwogCiAgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBt
X2FyZ3VtZW50cyh1cmwpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bT47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFs
c2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVw
bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7CkBAIC0xMDQsNyArMTA0
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6
OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHN0YXRpYyB2b2lk
IGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xMzAsNyArMTMw
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
czsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBs
eShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3Qm
Jik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7CkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgaW50Jj47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29k
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+JiYpOwogICAgIHN0YXRpYyB2b2lk
IGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmKT4mJik7CkBAIC0xODYs
NyArMTg2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWlu
dDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0U3luY01lc3NhZ2U7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNN
ZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1Ro
cmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJl
YWQ7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8Ym9vbD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RTeW5jaHJvbm91
c01lc3NhZ2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgdXNpbmcgRGVsYXllZFJl
cGx5ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRo
cmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdl
cy5oCmluZGV4IDY3NmY2Y2MwNTVkYjFkYWYzZDQxNzdlN2JiMWNkODIwZDYzNDFkYmIuLmU3MmQ0
YTU0M2MzNDcwYzEwMDU2YzgwMGJiNTMzOTI0YTEyZWQ2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0
cmlidXRlc01lc3NhZ2VzLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFy
Z3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzX0xvYWRVUkw7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBs
aWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRzKHVy
bCkKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0xvYWRT
b21ldGhpbmc7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2Fk
U29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
QEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXNfVG91Y2hFdmVudDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4
cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKICAg
ICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfQWRkRXZlbnQ7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQpAQCAtMTU5
LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNv
bnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19Mb2FkU29tZXRoaW5n
RWxzZTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IExvYWRTb21l
dGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
QEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXNfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKICAgICAgICAgOiBtX2Fy
Z3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pCkBAIC0yMDIsNyArMjAy
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfQ2xvc2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7
CiAKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CiAgICAgewpAQCAtMjE4
LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNv
bnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0
cmlidXRlc19QcmVmZXJlbmNlc0RpZENoYW5nZTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
IAogICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgICAgIDogbV9hcmd1bWVudHMoc3RvcmUpCkBAIC0y
MzksNyArMjM5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
ZG91YmxlLCBmbG9hdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1NlbmREb3VibGVB
bmRGbG9hdDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIFNlbmREb3VibGVBbmRG
bG9hdChkb3VibGUgZCwgZmxvYXQgZikKICAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBmKQpAQCAt
MjYwLDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4m
PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1l
c3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfU2VuZEludHM7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNT
eW5jID0gZmFsc2U7CiAKICAgICBTZW5kSW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRz
LCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZlY3RvcnMpCiAgICAgICAgIDog
bV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykKQEAgLTI4MSw3ICsyODEsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnMmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfQ3Jl
YXRlUGx1Z2luOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFk
OjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wm
PjsKQEAgLTMwNSw3ICszMDUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzX1J1bkphdmFTY3JpcHRBbGVydDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTw+OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19H
ZXRQbHVnaW5zOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFk
OjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OwpAQCAtMzUzLDcgKzM1Myw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRl
c3RXaXRob3V0QXR0cmlidXRlc19HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IHRydWU7CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2Fs
bGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0
aW9uVGhyZWFkOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1Rlc3RNdWx0
aXBsZUF0dHJpYnV0ZXM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
Q2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRv
dWJsZT47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQogICAgICAgICA6IG1f
YXJndW1lbnRzKGZvbywgYmFyLCBiYXopCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNf
VGVtcGxhdGVUZXN0OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQg
VGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+JiBhKQogICAgICAgICA6IG1fYXJndW1lbnRzKGEpCkBAIC00NDIsNyArNDQyLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzX1NldFZpZGVvTGF5ZXJJRDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAg
IGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRl
b0xheWVySUQpCkBAIC00NjQsNyArNDY0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCYsIGNvbnN0IE9wdGlvblNldDxXZWJL
aXQ6OlNlbGVjdGlvbkZsYWdzPiY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19EaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAog
ICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFn
cz4mIGZsYWdzKQogICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBm
bGFncykKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTx1aW50MzJfdD47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0ludGVy
cHJldEtleUV2ZW50OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhy
ZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZl
Y3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47CkBAIC01MTMsNyArNTEzLDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5
cGUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfRGVwcmVjYXRlZE9wZXJhdGlvbjsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVy
YXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQogICAgICAgICA6IG1fYXJndW1lbnRz
KGR1bW15KQpAQCAtNTM2LDcgKzUzNiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj47CiAKICAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKIAogICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15
VHlwZSYgZHVtbXkpCiAgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzOGRkOWQzMWU2Yzdj
Zjc5NDk1NmU3NzMwYjEwN2RlNDk0N2E0Yjg3Li4xZDNhYjg4MjU0MzQ2YWExMWFkOWM2NmYzNGVh
ZWM3Mjc5YTEyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KQEAgLTc0MSwxMSAr
NzQyLDE3IEBAIE9wdGlvbmFsPEludFJlY3Q+IEFyZ3VtZW50Q29kZXI8SW50UmVjdD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiByZWN0OwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPEludFNpemU+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgSW50U2l6ZSYgaW50U2l6ZSkKIHsKICAgICBTaW1wbGVBcmd1bWVu
dENvZGVyPEludFNpemU+OjplbmNvZGUoZW5jb2RlciwgaW50U2l6ZSk7CiB9CiAKK3RlbXBsYXRl
Cit2b2lkIEFyZ3VtZW50Q29kZXI8SW50U2l6ZT46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwg
Y29uc3QgSW50U2l6ZSYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6
ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYs
IGNvbnN0IEludFNpemUmKTsKKwogYm9vbCBBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgSW50U2l6ZSYgaW50U2l6ZSkKIHsKICAgICByZXR1cm4gU2ltcGxl
QXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVjb2RlKGRlY29kZXIsIGludFNpemUpOwpAQCAtMzA5
Niw2ICszMTAzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3I+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0QKIH0KICNlbmRpZiAvLyBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+JiBpbWFnZURhdGEpCiB7CiAgICAg
ZW5jb2RlciA8PCBpbWFnZURhdGEtPnNpemUoKTsKQEAgLTMxMDUsNiArMzExMywxMSBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmPAogICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJh
d0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKIH0KIAordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZTxFbmNv
ZGVyPihFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkltYWdlRGF0YT4mKTsKK3RlbXBsYXRl
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGU8U3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgUmVm
PFdlYkNvcmU6OkltYWdlRGF0YT4mKTsKKwogT3B0aW9uYWw8UmVmPFdlYkNvcmU6OkltYWdlRGF0
YT4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBPcHRpb25hbDxJbnRTaXplPiBpbWFnZURhdGFTaXplOwpAQCAt
MzEyOCw2ICszMTQxLDcgQEAgT3B0aW9uYWw8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjpkZWNvZGUKICAgICByZXR1cm4geyBp
bWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+JiBp
bWFnZURhdGEpCiB7CiAgICAgaWYgKCFpbWFnZURhdGEpIHsKQEAgLTMxMzksNiArMzE1MywxMiBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogICAgIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkltYWdlRGF0YT4+OjplbmNvZGUoZW5jb2RlciwgaW1hZ2VEYXRhLmNvcHlSZWYoKS5yZWxlYXNl
Tm9uTnVsbCgpKTsKIH0KIAordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4mKTsKKwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7CisKIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYm9vbCBpc0VuZ2FnZWQ7CkBAIC0zMjEx
LDYgKzMyMzEsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDbwogICAgIHJldHVybiBhdHRyaWJ1
dGVzOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBh
Y3RpdmVJbmZvKQogewogICAgIGVuY29kZXIgPDwgYWN0aXZlSW5mby5uYW1lOwpAQCAtMzIxOCw2
ICszMjM5LDExIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6QWN0aXZlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8PCBhY3Rp
dmVJbmZvLnNpemU7CiB9CiAKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7Cit0ZW1wbGF0
ZQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJ
bmZvPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJik7CisK
IE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2
ZUluZm8gYWN0aXZlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggOTI4ZGE3NTYwYzNlODliZDQxZDUxOGE2YjYyZTU0ZThhNGVlZjVhOC4u
YmQzZDllMWI5M2JmZGNlODkyYzhjYTA3MjFlYTI0ZjVmZTI5YWJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0Nyw2ICszNDcsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkludFJlY3Q+IHsKIH07CiAK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW50U2l6ZT4geworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtODE1LDEx
ICs4MTYsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gewogI2VuZGlmCiAKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IHsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4mKTsKICAgICBzdGF0aWMgT3B0aW9u
YWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7CiAgICAgc3RhdGljIE9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKQEAg
LTgzOSw2ICs4NDIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOwog
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
bz4gZGVjb2RlKERlY29kZXImKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcAppbmRleCAwMWI5OTkyYmVkYTA0ZDdhYjc5NjE4OTU5YjA0OWJmZDUyMDlmNmMz
Li40NGIyMjI4MzlmZmQwMTc2NmZhM2U1ZDU3ODBlM2I3OWE1OTAwNGY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDkgQEAgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQo
KnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMs
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVh
bUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgLy8gVE9ETzogV2UgbXVz
dCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgd2UgY2Fubm90
IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCisgICAgLy8gZHVyaW5nIHdhaXQgd2hpbGUgaW4gc3luY2hy
b25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBiZSBmaXhlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEuCisgICAgd2FpdFVudGlsSW5pdGlh
bGl6ZWQoKTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDkyNTE3ZDZkMGUyYmFiZmYzZjdmMTUwMjExYmIzOTJiNjNlY2UzM2Uu
LmUxNTJhYjFiMGFlZGExZmE4N2U2YTQ3ZmUzMDMzOGJiOGM4MmVhM2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
MS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkdMIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIG1lc3Nh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5
NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODc2OTQ3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIE1hcmsgUHJlcGFyZUZvckRpc3BsYXkoKSBh
cyAibm90IHJlcGx5YWJsZSB0aHJvdWdoIHRoZSBzdHJlYW0iCisgICAgICAgIHNpbmNlIGl0IHJl
cGxpZXMgd2l0aCBNYWNoU2VuZFJpZ2h0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsOgorCiAyMDIxLTAzLTE0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW1dLMV0gQWRkIGEgbmV3IEFQSSBJV2ViUHJlZmVy
ZW5jZXM6OnN0YXJ0QmF0Y2hpbmdVcGRhdGVzIHRvIGRlZmVyIFdlYlByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdl
YmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IDk4OWU4NzBjZDFm
OGM5OTYwODg4OGZlZDc0Mzk1NTE2OWFiMzMyMTQuLjZmOGY3MDNhMmY1YmRlZDQzMDliZWY3OTRk
ZjAzMzcwYTdhMmIxZWIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTkyLDcgKzky
LDcgQEAgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBl
KGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVy
KSBTeW5jaHJvbm91cworICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRS
aWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQog
I2VuZGlmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXko
KSAtPiAoKSBTeW5jaHJvbm91cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423167</attachid>
            <date>2021-03-15 06:14:51 -0700</date>
            <delta_ts>2021-03-15 13:02:09 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-220974-20210315151449.patch</filename>
            <type>text/plain</type>
            <size>79277</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5MTBhYjA1ZjZkMzUwNzZh
NzYyZmYxZGM2NjM3N2Q2YjhkZTEwMjYuLmEwZWFjOWMyZTFhMWM2YjU2MWIzZGY3MDYzNjM4YWYz
YzI5ZDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTAzLTE1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgSVBDIHNob3Vs
ZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3Igc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzM4NzY5NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCisKKyAgICAgICAgU2VuZCBzeW5jaHJvbm91cyBtZXNzYWdlcyB2aWEgdGhlIHN0cmVhbSBz
aGFyZWQgbWVtb3J5LgorICAgICAgICBJbXByb3ZlcyBNb3Rpb25NYXJrIG9uIGlNYWMxLDEgZnJv
bSA1MDAwIHRvIH41MzAwIHB0cy4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBlbmNvZGFi
bGUgYXMgYSB2YWx1ZSwgdHJ5IHRvIGRvIHNvLgorICAgICAgICBJZiB0aGUgcmVwbHkgaXMgZW5j
b2RhYmxlIGFzIGEgdmFsdWUsIHRyeSB0byBkbyBzby4KKyAgICAgICAgQSBtZXNzYWdlIG9yIGEg
cmVwbHkgaXMgbm90IGVuY29kYWJsZSBpZiBhbiBhcmd1bWVudCBpbiB0aGUgbWVzc2FnZQorICAg
ICAgICBtdXN0IGJlIHBhc3NlZCBieSByZWZlcmVuY2UgdmlhIHRoZSBPUyBzcGVjaWZpYyBtZWNo
YW5pc20KKyAgICAgICAgKGUuZy4gYSBpb3N1cmZhY2Ugb3IgYSBmaWxlIGhhbmRsZSBjYW5ub3Qg
YmUgc2VudCBhcyBhIHZhbHVlKS4KKworICAgICAgICBTaW1pbGFyIHRvIGFzeW5jaHJvbm91cyBt
ZXNzYWdlcywgaWYgdGhlIHN5bmNocm9ub3VzIG1lc3NhZ2UgZml0cyB0bworICAgICAgICB0aGUg
c3RyZWFtIGJ1ZmZlciwgdGhlIG1lc3NhZ2UgaXMgc2VudCB2aWEgdGhlIGJ1ZmZlci4gU2FtZSB3
aXRoIHRoZQorICAgICAgICByZXBseS4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBvciByZXBs
eSBpcyBub3Qgc2VudCB2aWEgdGhlIHN0cmVhbSBidWZmZXIsIGl0IGlzIHNlbnQgdmlhCisgICAg
ICAgIHRoZSBub3JtYWwgSVBDLgorCisgICAgICAgIFRoZSBjbGllbnQgcHJvdG9jb2wgaXM6Cisg
ICAgICAgIDEpIFdyaXRlIHRoZSBtZXNzYWdlIHRvIHRoZSBidWZmZXIgYW5kIHJlbGVhc2UgaXQu
CisgICAgICAgIDIpIFdhaXQgdW50aWwgdGhlIHNlcnZlciByZWxlYXNlcyB0aGUgd2hvbGUgYnVm
ZmVyIGJhY2sgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgMykgUmVhZCB0aGUgcmVwbHkgZnJvbSBp
bmRleCAwLgorICAgICAgICA0KSBDb250aW51ZSBzZW5kaW5nIG5leHQgbWVzc2FnZSBmcm9tIGlu
ZGV4IDAuCisKKyAgICAgICAgVGhlIHNlcnZlciBwcm90b2NvbCBpcyB1cG9uIHJlY2VpdmluZyBh
IG1lc3NhZ2UgdGhhdCBpcyBzeW5jaHJvbm91czoKKyAgICAgICAgMSkgUmVhZCB0aGUgbWVzc2Fn
ZSBmcm9tIHRoZSBtZXNzYWdlIHBvc2l0aW9uLCBkaXNwYXRjaCBpdC4KKyAgICAgICAgMikgV3Jp
dGUgdGhlIHJlcGx5IHRvIGluZGV4IDAuCisgICAgICAgIDMpIFJlbGVhc2UgdGhlIHdob2xlIGJ1
ZmZlciBiYWNrIHRvIHRoZSBjbGllbnQuCisgICAgICAgIDQpIENvbnRpbnVlIHJlYWRpbmcgbmV4
dCBtZXNzYWdlIGZyb20gaW5kZXggMC4KKworICAgICAgICBUaGUgY2xpZW50IHdpbGwgbm90IGtu
b3cgYXQgdGhlIHNlbmQgdGltZSB3aGV0aGVyIHRoZSBzZXJ2ZXIgd2lsbCByZXBseQorICAgICAg
ICB2aWEgdGhlIHN0cmVhbSBvciB2aWEgbm9ybWFsIElQQyBtZXNzYWdlLiBUaGUgY2xpZW50IHdp
bGwgcmVzZXJ2ZQorICAgICAgICBhIElQQyBzeW5jIHJlcXVlc3QgSUQgZm9yIG5vcm1hbCBJUEMg
cmVwbHkgcHVycG9zZXMuCisKKyAgICAgICAgSW4gY2FzZSBhIG1lc3NhZ2Ugb3IgYSByZXBseSBk
b2VzIG5vdCBmaXQgdG8gdGhlIHN0cmVhbSBidWZmZXIsIHRoZQorICAgICAgICBQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyIGluc3RlYWQu
CisgICAgICAgIFRoaXMgd2lsbCBtYWtlIHRoZSByZWFkZXIgdG8gd2FpdCBmb3IgdGhlIG5vcm1h
bCBJUEMgbWVzc2FnZS4KKworICAgICAgICBDaGFuZ2VzIHRlbXBvcmFyaWx5IHNvIHRoYXQgdGhl
IGNyZWF0aW9uIG9mIHRoZSBjb250ZXh0IHdhaXRzIGZvciB0aGUKKyAgICAgICAgY29uZmlybWF0
aW9uIHRoYXQgdGhlIGNyZWF0aW9uIHdhcyBkb25lLiBUaGlzIGlzIGR1ZSB0byBzeW5jaHJvbm9u
b3VzCisgICAgICAgIHN0cmVhbSBzZW5kIHVuYWJsZSB0byBkZWxpdmVyIHRoZSBXYXNDcmVhdGVk
IG1lc3NhZ2UgZHVyaW5nCisgICAgICAgIHdhaXQgZm9yIHJlcGx5LCBhdCB0aGUgbW9tZW50Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHVzaFBlbmRpbmdT
eW5jUmVxdWVzdElEKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cG9wUGVuZGluZ1N5bmNS
ZXF1ZXN0SUQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246Om1ha2VTeW5jUmVxdWVzdElEKToKKyAgICAgICAgTW92ZSB0aGUgY29kZSBmcm9tIHNl
bmRTeW5jTWVzc2FnZSB0byBpbmRpdmlkdWFsIGZ1bmN0aW9ucyBzbworICAgICAgICB0aGF0IHRo
ZSBjbGllbnQgY2FuIHJlc2VydmUgYSBzeW5jIHJlcXVlc3QgSUQgZm9yIHJlcGx5IHB1cnBvc2Vz
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6
OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTdHJlYW0pOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjphY3F1aXJlQWxsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZUFsbCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIEZpeCBhIHR5cG8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWly
ZQorCisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNw
YXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICBJZiB0aGUgbWVzc2FnZSBjb21lcyBpbiBhcyBu
b3JtYWwgSVBDIG1lc3NhZ2UsIGl0IG11c3QgYmUgcmVwbGllZAorICAgICAgICB2aWEgbm9ybWFs
IElQQy4KKworICAgICAgICBBZGQgYSBmbGFnIG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2Ug
dG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKyAgICAgICAgbWVzc2FnZSBiZWluZyBwcm9jZXNzZWQg
Y29tZXMgYXMgYSBub3JtYWwgSVBDIG1lc3NhZ2Ugb3IgYQorICAgICAgICBzdHJlYW0gbWVzc2Fn
ZS4gVGhpcyBpbmZvcm1hdGlvbiBtdXN0IGJlIHN0YXRlZnVsIGluIHRoZSBjb25uZWN0aW9uCisg
ICAgICAgIGNsYXNzLCBhcyBpdCBpcyBub3QgcGFzc2FibGUgYXMgYXJndW1lbnRzIHdoZW4gdGhl
IGV4ZWN1dGlvbiBnb2VzIHRocm91Z2g6CisgICAgICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKCkKKyAgICAgICAgICAgIFJlY2Vp
dmVyOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgpCisgICAgICAgICAgICBoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXMoKQorICAgICAgICAgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZl
cj46OnNlbmRTeW5jUmVwbHkoKQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgIEFkZCBwcm9wZXJ0aWVzIE5vdFN0cmVhbUVuY29kYWJsZSwgTm90U3RyZWFt
RW5jb2RhYmxlUmVwbHkKKyAgICAgICAgdGhhdCBpbmRpY2F0ZSBpZiB0aGUgbWVzc2FnZSBwYXJh
bWV0ZXJzIGFyZSBzdWNoIHRoYXQgdGhleQorICAgICAgICBjYW5ub3QgYmUgZW5jb2RlZCBpbnRv
IHBsYWluIGRhdGEgYnVmZmVyIGFzIHZhbHVlcy4KKyAgICAgICAgVGhpcyBpcyBlbmNvZGVkIGFz
ICdjb25zdGV4cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZScgYW5kCisgICAgICAgICdjb25zdGV4
cHIgYm9vbCBpc1N0cmVhbUVuY29kYWJsZVJlcGx5JyBmb3IgdGhlIHN0cmVhbSBtZXNzYWdlcy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucy5jcHA6CisgICAgICAgIChJUEM6OmpzVmFsdWVGb3JBcmd1bWVudHMpOgorICAgICAgICAo
SVBDOjptZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToK
KyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3Nh
Z2VOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2Vz
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNz
YWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U2VtYXBob3JlTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaDoKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNlbmRSaWdodDo6U2VuZE1hY2hT
ZW5kUmlnaHQpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kTWFjaFNl
bmRSaWdodDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNlbmRSaWdodDo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJp
Z2h0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJl
Y2VpdmVNYWNoU2VuZFJpZ2h0OjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXMuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oOgorICAgICAgICBUZXN0IGNoYW5nZXMgcmVs
YXRlZCB0byBOb3RTdHJlYW1FbmNvZGFibGUsIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5LgorCisg
ICAgICAgIE90aGVyIGNoYW5nZXMgaW5kaWNhdGUgYW4gYXV4aWxpYXJ5IGNoYW5nZSB0byBtZXNz
YWdlIHN0cnVjdHM6CisgICAgICAgIGNoYW5naW5nICdjb25zdCBib29sIGlzU3luYycgdG8gJ2Nv
bnN0ZXhwciBib29sIGlzU3luYycuCisgICAgICAgIFRoaXMgaXMgZG9uZSBmb3IgY29uc2lzdGVu
Y3ksIHNpbmNlICdpc1N0cmVhbUVuY29kYWJsZSonIHByb3BlcnRpZXMKKyAgICAgICAgYXJlIGFs
c28gYWRkZWQgYXMgY29uc3RleHByLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICBNYWtlIHR5cGVzIHRoYXQgYXJlIFdlYkdMIHN5bmMgbWVzc2FnZSBwYXJhbWV0ZXJz
IG9yIHJlcGx5IHBhcmFtZXRlcnMKKyAgICAgICAgbm93IGVuY29kYWJsZSB0byBhIHN0cmVhbSBi
eSBtYWtpbmcgdGhlIGVuY29kZXIgcGFydCBhIHRlbXBsYXRlLgorICAgICAgICBQcmV2aW91c2x5
IHRoZXNlIHdlcmUgc2VudCBvbmx5IGJ5IG5vcm1hbCBJUEMsIGFuZCBkaWQgbm90IG5lZWQKKyAg
ICAgICAgdG8gYmUgcG9seW1vcnBoaWMgdG8gdGhlIGVuY29kZXIuCisKIDIwMjEtMDMtMTMgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF1bTVNFXSBNZWRp
YVNvdXJjZTo6YnVmZmVyZWQgYW5kIE1lZGlhU291cmNlOjphY3RpdmVTb3VyY2VCdWZmZXJzIGRv
IG5vdCB1cGRhdGUgaW4gdGhlIHNhbWUgcnVuIGxvb3AgYXMgTWVkaWFTb3VyY2U6OmVuZE9mU3Ry
ZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA2YTA4
MzllMmRhM2Q2NThjZTc1ZGU0YTQzMWQ3YmU5MWU0MDRmZmE4Li4zNTc0NWE1NmY5YzA4MGMyZmUz
YmE0ZTdhOThhZmRiMjcxM2ZmNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJv
bm91cworICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmlu
ZGV4IDUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQuLjNhYjlmY2M1ZWQx
MDM1NTliMWI2ZWIzYjRlZDEwNmY1YmJkMjY5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSSA9IFQ+IHN0cnVjdCBIYXNNb2Rlcm5EZWNvZGVyIDogZGVjbHR5cGUoRGV0
YWlsOjoKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEkgPSBUPiBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgSGFzTW9kZXJuRGVjb2RlclYgPSBIYXNNb2Rlcm5EZWNvZGVyPFQsIEk+Ojp2YWx1
ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIHQu
ZW5jb2RlKGVuY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNi4uZTQ4
ZTgzMjZhMmE3MzVlZjkyNGY4NzM3MmRjNzg2MzlkODIzOTMzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFj
ZSBJUEMgewogCiAvLyBBbiBhcmd1bWVudCBjb2RlciB3b3JrcyBvbiBQT0QgdHlwZXMKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnQpLCBzaXplb2YoVCksIGFs
aWdub2YoVCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCA4ZDhlYzkyZjhlYzA5MGQ4YTdhYTAzMzUwNDRiMDAyYzk5ODI2MjM1Li40NDA2YjhhODdjNGUw
NzhmNGQ3N2YxNzMzY2Q1NzRjMzVjOWMwYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFVuaXF1ZVJlZjxFbmNvZGVyPiBD
b25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsCiAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihtZXNzYWdlTmFt
ZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4K
LSAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7CisgICAgc3luY1JlcXVlc3RJ
RCA9IG1ha2VTeW5jUmVxdWVzdElEKCk7CiAgICAgZW5jb2Rlci5nZXQoKSA8PCBzeW5jUmVxdWVz
dElEOwogCiAgICAgcmV0dXJuIGVuY29kZXI7CkBAIC01NjQsMjggKzU2NCw0MCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUg
bWVzc2FnZU5hbWUsIHVpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIENvbm5lY3Rp
b246OnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5jUmVxdWVzdElEKQorewor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsK
KyAgICAgICAgaWYgKCFtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgbV9wZW5kaW5nU3luY1JlcGxpZXMuYXBwZW5kKFBlbmRpbmdT
eW5jUmVwbHkoc3luY1JlcXVlc3RJRCkpOworICAgIH0KKyAgICArK21faW5TZW5kU3luY0NvdW50
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbm5lY3Rpb246OnBvcFBlbmRpbmdTeW5j
UmVxdWVzdElEKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQpCit7CisgICAgLS1tX2luU2VuZFN5bmND
b3VudDsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAg
IEFTU0VSVF9VTlVTRUQoc3luY1JlcXVlc3RJRCwgbV9wZW5kaW5nU3luY1JlcGxpZXMubGFzdCgp
LnN5bmNSZXF1ZXN0SUQgPT0gc3luY1JlcXVlc3RJRCk7CisgICAgbV9wZW5kaW5nU3luY1JlcGxp
ZXMucmVtb3ZlTGFzdCgpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNv
ZGVyPiYmIGVuY29kZXIsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCiB7CisgICAgQVNTRVJUKHN5bmNSZXF1ZXN0SUQpOwogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotCi0gICAgLy8gUHVzaCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uIG9u
IG91ciBzdGFjay4KLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY1JlcGx5
U3RhdGVNdXRleCk7Ci0gICAgICAgIGlmICghbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXMpIHsK
LSAgICAgICAgICAgIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5h
cHBlbmQoUGVuZGluZ1N5bmNSZXBseShzeW5jUmVxdWVzdElEKSk7CisgICAgaWYgKCFwdXNoUGVu
ZGluZ1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpIHsKKyAgICAgICAgZGlkRmFpbFRvU2Vu
ZFN5bmNNZXNzYWdlKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgICsr
bV9pblNlbmRTeW5jQ291bnQ7Ci0KICAgICAvLyBGaXJzdCBzZW5kIHRoZSBtZXNzYWdlLgogICAg
IE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5OwogICAgIGlmIChzZW5kU3lu
Y09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hXaGVuRGVzdGlu
YXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpKQpAQCAtNTk5LDE0ICs2MTEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVp
bnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaQogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0
aGlzKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1Jl
cGx5KHN5bmNSZXF1ZXN0SUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMp
OwogCi0gICAgLS1tX2luU2VuZFN5bmNDb3VudDsKLQotICAgIC8vIEZpbmFsbHksIHBvcCB0aGUg
cGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uLgotICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKLSAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z1N5bmNSZXBsaWVzLmxhc3QoKS5zeW5jUmVxdWVzdElEID09IHN5bmNSZXF1ZXN0SUQpOwotICAg
ICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5yZW1vdmVMYXN0KCk7Ci0gICAgfQorICAgIHBvcFBl
bmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKCFyZXBseSkKICAg
ICAgICAgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKaW5kZXggZDliNTMwMzM1OGQ2NDc4NjZjOWFiNmE1N2NjMTdiZGVhOTQy
ZjhkZi4uMzA3NDBiNWMwOWFhYjNhNmFhNjI4ZjVkMjIzNmExYjBjMGNlZDlhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzIzLDcgKzMyMyw5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBUaW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOwotICAg
IAorICAgIHVpbnQ2NF90IG1ha2VTeW5jUmVxdWVzdElEKCkgeyByZXR1cm4gKyttX3N5bmNSZXF1
ZXN0SUQ7IH0KKyAgICBib29sIHB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRCh1aW50NjRfdCBzeW5j
UmVxdWVzdElEKTsKKyAgICB2b2lkIHBvcFBlbmRpbmdTeW5jUmVxdWVzdElEKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBUaW1lb3V0LCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiB3
b3JrIHF1ZXVlLgpAQCAtNDk2LDYgKzQ5OCw3IEBAIHByaXZhdGU6CiAgICAgRXZlbnRMaXN0ZW5l
ciBtX3dyaXRlTGlzdGVuZXI7CiAgICAgSEFORExFIG1fY29ubmVjdGlvblBpcGUgeyBJTlZBTElE
X0hBTkRMRV9WQUxVRSB9OwogI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNsaWVudENv
bm5lY3Rpb247CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDc1MTU5MzhkNDJkZTM2NTU0NTBkYjA0ZDJm
ZTIwOWY1ZGVmMDFhNjguLmU3NTNkMTEyYTQ3MTljNzJmOWY3MGFhNzkyYzVjMDQyZWI3ZDA4YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4NCw3
ICsxODQsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZAogICAgIH0KIAogICAgIHR5cGVuYW1l
IFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElELCBjb25u
ZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsK
LSAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBhcmdzLi4u
KTsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseTxUPihzeW5jUmVxdWVzdElELCBh
cmdzLi4uKTsKICAgICB9OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmgKaW5kZXggMDg4NjQ5NDM5OWEwZTVmNmEzOTg1MDViNDE5ZDhiZjUyMWI1YjhiZC4uZTMyODQx
NzllMDgzOWExNzdiNjlmYjc3MWIxZjczMGQ1NGI5ZGI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtNjcsMTAgKzY3
LDE2IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5p
bXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VT
aXplOwogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIGJvb2wgdHJ5U2VuZFN0cmVhbShUJiBtZXNzYWdlLCBTcGFuJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBPcHRpb25hbDxTZW5kU3luY1Jlc3VsdD4gdHJ5U2Vu
ZFN5bmNTdHJlYW0oVCYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmLCBUaW1lb3V0LCBTcGFu
Jik7CiAgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFRpbWVvdXQpOwogICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3Nh
Z2UoU3BhbiYmKTsKIAogICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoVGltZW91dCk7Cisg
ICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZUFsbChUaW1lb3V0KTsKKwogICAgIGVudW0gY2xh
c3MgV2FrZVVwU2VydmVyIDogYm9vbCB7CiAgICAgICAgIE5vLAogICAgICAgICBZZXMKQEAgLTEx
MCwxNCArMTE2LDkgQEAgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQKICAgICBhdXRvIHNwYW4gPSB0
cnlBY3F1aXJlKHRpbWVvdXQpOwogICAgIGlmICghc3BhbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHsKLSAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIg
eyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKLSAgICAgICAgaWYgKG1lc3Nh
Z2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gd2Fr
ZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rlci5zaXplKCkpOwotICAgICAgICAgICAg
aWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXI6
OlllcykKLSAgICAgICAgICAgICAgICB3YWtlVXBTZXJ2ZXIoKTsKKyAgICBpZiBjb25zdGV4cHIo
VDo6aXNTdHJlYW1FbmNvZGFibGUpIHsKKyAgICAgICAgaWYgKHRyeVNlbmRTdHJlYW0obWVzc2Fn
ZSwgKnNwYW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICB9CiAg
ICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOwogICAgIGlm
ICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
KQpAQCAtMTI1LDYgKzEyNiwxOSBAQCBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQo
VCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRAogICAgIHJldHVy
biB0cnVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kU3RyZWFtKFQmIG1lc3NhZ2UsIFNwYW4mIHNwYW4pCit7CisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0
YSwgc3Bhbi5zaXplIH07CisgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1l
bnRzKCkpIHsKKyAgICAgICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1lc3NhZ2VFbmNv
ZGVyLnNpemUoKSk7CisgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6V2FrZVVwU2VydmVyOjpZZXMpCisgICAgICAgICAgICB3YWtlVXBTZXJ2ZXIoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNl
bmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFRpbWVvdXQgdGltZW91dCkKIHsKQEAgLTEzNCwxMiArMTQ4LDU3IEBAIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNl
bmRTeW5jKFQmJiBtZXNzCiAgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZSh0aW1lb3V0KTsKICAg
ICBpZiAoIXNwYW4pCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dCBzZW5kIHRocm91Z2ggc3RyZWFtLgotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgcmVjZWl2ZSB0
aHJvdWdoIHN0cmVhbS4KKyAgICBpZiBjb25zdGV4cHIoVDo6aXNTdHJlYW1FbmNvZGFibGUpIHsK
KyAgICAgICAgYXV0byBtYXliZVNlbmRSZXN1bHQgPSB0cnlTZW5kU3luY1N0cmVhbShtZXNzYWdl
LCByZXBseSwgdGltZW91dCwgKnNwYW4pOworICAgICAgICBpZiAobWF5YmVTZW5kUmVzdWx0KQor
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKm1heWJlU2VuZFJlc3VsdCk7CisgICAgfQogICAg
IHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKICAgICByZXR1
cm4gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ+
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3RyZWFtKFQmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwgVGltZW91dCB0aW1lb3V0LCBTcGFuJiBzcGFuKQorewor
ICAgIC8vIEluIHRoaXMgZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0IHsgfSBtZWFucyBlcnJvciBo
YXBwZW5lZCBhbmQgY2FsbGVyIHNob3VsZCBzdG9wIHByb2Nlc3NpbmcuCisgICAgLy8gV1RGOjpu
dWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkg
c2VuZGluZyBvdXQgb2Ygc3RyZWFtLgorICAgIGF1dG8gc3luY1JlcXVlc3RJRCA9IG1fY29ubmVj
dGlvbi5tYWtlU3luY1JlcXVlc3RJRCgpOworICAgIGlmICghbV9jb25uZWN0aW9uLnB1c2hQZW5k
aW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKSkKKyAgICAgICAgcmV0dXJuIFNlbmRTeW5j
UmVzdWx0IHsgfTsKKworICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4gT3B0aW9uYWw8U2VuZFN5
bmNSZXN1bHQ+IHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVuY29k
ZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgICAgIGlmICghKG1l
c3NhZ2VFbmNvZGVyIDw8IHN5bmNSZXF1ZXN0SUQgPDwgbWVzc2FnZS5hcmd1bWVudHMoKSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIHdha2V1cFJlc3Vs
dCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKworICAgICAgICBpZiAod2FrZXVw
UmVzdWx0ID09IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFNlcnZlcjo6WWVzKQorICAg
ICAgICAgICAgd2FrZVVwU2VydmVyKCk7CisgICAgICAgIGlmIGNvbnN0ZXhwcihUOjppc1JlcGx5
U3RyZWFtRW5jb2RhYmxlKSB7CisgICAgICAgICAgICBhdXRvIHJlcGx5U3BhbiA9IHRyeUFjcXVp
cmVBbGwodGltZW91dCk7CisgICAgICAgICAgICBpZiAoIXJlcGx5U3BhbikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9OworICAgICAgICAgICAgYXV0byBkZWNvZGVy
ID0gc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHsgbmV3IERlY29kZXIocmVwbHlTcGFuLT5kYXRh
LCByZXBseVNwYW4tPnNpemUsIG1fY3VycmVudERlc3RpbmF0aW9uSUQpIH07CisgICAgICAgICAg
ICBpZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSAhPSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChkZWNvZGVyLT5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZGVjb2RlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX2NsaWVudE9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24ud2Fp
dEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBUOjpuYW1lKCksIHRpbWVvdXQsIHsgfSk7Cisg
ICAgfSgpOworICAgIG1fY29ubmVjdGlvbi5wb3BQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVx
dWVzdElEKTsKKyAgICBpZiAocmVzdWx0ICYmICpyZXN1bHQpIHsKKyAgICAgICAgYXV0byYgZGVj
b2RlciA9ICoqcmVzdWx0OworICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBUOjpSZXBseUFyZ3Vt
ZW50cz4gcmVwbHlBcmd1bWVudHM7CisgICAgICAgIGRlY29kZXIgPj4gcmVwbHlBcmd1bWVudHM7
CisgICAgICAgIGlmICghcmVwbHlBcmd1bWVudHMpCisgICAgICAgICAgICByZXR1cm4gU2VuZFN5
bmNSZXN1bHQgeyB9OworICAgICAgICBtb3ZlVHVwbGUoV1RGTW92ZSgqcmVwbHlBcmd1bWVudHMp
LCByZXBseSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGlubGluZSBib29sIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0
X3QgZGVzdGluYXRpb25JRCwgVGltZW91dCB0aW1lb3V0KQogewogICAgIGlmIChkZXN0aW5hdGlv
bklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCkBAIC0yMDEsNiArMjYwLDQ1IEBAIGlubGlu
ZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlBY3F1aXJlCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAoraW5saW5l
IE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeUFjcXVpcmVBbGwoVGltZW91dCB0aW1lb3V0KQoreworICAgIC8vIFRoaXMgd291
bGQgbWVhbiB3ZSB0cnkgdG8gc2VuZCBtZXNzYWdlcyBhZnRlciBhIHRpbWVvdXQuIEl0IGlzIGEg
cHJvZ3JhbW1pbmcgZXJyb3IuCisgICAgLy8gU2luY2UgdGhlIHZhbHVlIGlzIHRydXN0ZWQsIHdl
IG9ubHkgYXNzZXJ0LgorICAgIEFTU0VSVChzaGFyZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxdWlyZSkgIT0gQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGluZ1RhZyk7
CisKKyAgICAvLyBUaGUgc2VydmVyIGFja25vd2xlZGdlcyB0aGF0IHN5bmMgbWVzc2FnZSBoYXMg
YmVlbiBwcm9jZXNzZWQgYnkgc2V0dGluZyBjbGllbnRPZmZzZXQgPT0gY2xpZW50TGltaXQgPT0g
MC4KKyAgICAvLyBXYWl0IGZvciB0aGlzIGNvbmRpdGlvbiwgb3IgdGhlbiB0aGUgY29uZGl0aW9u
IHdoZXJlIHNlcnZlciBzYXlzIHRoYXQgaXQgc3RhcnRlZCB0byBzbGVlcCBhZnRlciBzZXR0aW5n
IHRoYXQgY29uZGl0aW9uLgorICAgIC8vIFRoZSB3YWl0IHNlcXVlbmNlIGludm9sdmVzIHR3byB2
YXJpYWJsZXMsIHNvIGZvcm0gYSB0cmFuc2FjdGlvbiBieSBzZXR0aW5nIGNsaWVudExpbWl0ID09
IGNsaWVudElzV2FpdGluZ1RhZy4KKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gaXMgY2FuY2VsbGVk
IGlmIHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgc2V0IGNsaWVudE9mZnNldCA9PSBjbGllbnRMaW1p
dCA9PSAwLCBvdGhlcndpc2UgaXQgY29tbWl0cy4KKyAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24g
Y29tbWl0cywgc2VydmVyIGlzIGd1YXJhbnRlZWQgdG8gc2lnbmFsLgorCisgICAgZm9yICg7Oykg
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBDbGllbnRMaW1pdCBjbGllbnRMaW1pdCA9
IHNoYXJlZENsaWVudExpbWl0KCkuZXhjaGFuZ2UoQ2xpZW50TGltaXQ6OmNsaWVudElzV2FpdGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIENsaWVudE9mZnNldCBj
bGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUpOworI2Vsc2UKKyAgICAgICAgQ2xpZW50TGltaXQgY2xpZW50TGltaXQgPSBzaGFy
ZWRDbGllbnRMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgICAg
IENsaWVudE9mZnNldCBjbGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworI2VuZGlmCisgICAgICAgIGlmICghY2xpZW50TGlt
aXQgJiYgKGNsaWVudE9mZnNldCA9PSBDbGllbnRPZmZzZXQ6OnNlcnZlcklzU2xlZXBpbmdUYWcg
fHwgIWNsaWVudE9mZnNldCkpCisgICAgICAgICAgICBicmVhazsKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1l
b3V0KTsKKyNlbHNlCisgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICBp
ZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJbiBjYXNlIHRoZSB0cmFuc2Fj
dGlvbiB3YXMgY2FuY2VsbGVkLCB1bmRvIHRoZSB0cmFuc2FjdGlvbiBtYXJrZXIuCisgICAgc2hh
cmVkQ2xpZW50TGltaXQoKS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGVhc2UpOworI2VuZGlmCisgICAgbV9jbGllbnRPZmZzZXQgPSAwOwor
ICAgIHJldHVybiBhbGlnbmVkU3BhbihtX2NsaWVudE9mZnNldCwgMCk7Cit9CisKIGlubGluZSBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWlu
aW11bU1lc3NhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaAppbmRleCA1MmIzZDc5ZWFhMzY4NzQwYzEyZDViYzU0NTI3
ZTk1N2VmNGE2OTgzLi5lNTJjYWIyOTg4ZGQ4YjM5ZmYzMzgwNWY0ZDM2OWIxYjU0ZGUxMWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oCkBAIC00OSwxMCArNDksMjAgQEAgbmFtZXNwYWNlIElQQyB7CiAvLyBhbmQgdGhlbiB1
cG9uIHRoZSBzZWNvbmQgYWNxdWlyZSAxNjYgYnl0ZXMuIER1ZSB0byBob3cgYWxpZ25tZW50IGFu
ZCBtaW5pbXVtIGxlbmd0aCBhZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZQogLy8gbWVt
b3J5IGNhbiBiZSByZWZlcnJlZCB0bywgdGhlIHNlcnZlciBjYW5ub3QgInJlYWQgdHdvIHRpbWVz
IHNpbXVsdGFuZW91c2x5IiBhbmQgcmVsZWFzZSAxNzQgYnl0ZXMuCiAvLworLy8gVGhlIGJ1ZmZl
ciBhbHNvIHN1cHBvcnRzIHN5bmNocm9ub3VzIHJlcGxpZXMgdmlhICJyZWxlYXNlQWxsL2FjcXVp
cmVBbGwiIGNhbGwgcGF0dGVybi4gVGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgY2FuCisvLyBl
c3RhYmxpc2ggY2FzZXMgd2hlcmUgdGhlIGNsaWVudCB0cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRo
ZSBkYXRhIHRvIHRoZSBzZXJ2ZXIuIEluIHRoZXNlIGNhc2VzIHRoZSBzZXJ2ZXIgd2lsbAorLy8g
YWNrbm93bGVkZ2UgdGhlIHJlYWQgd2l0aCAicmVsZWFzZUFsbCIgb3BlcmF0aW9uLiBUaGUgY2xp
ZW50IHdpbGwgdGhlbiByZWFkIHRoZSByZXBseSB2aWEgImFjcXVpcmVBbGwiIG9wZXJhdGlvbi4g
VGhlCisvLyByZXBseSB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVm
ZmVyLiBUaGlzIG1hbmRhdGVzIHRoYXQgaW4tcGxhY2UgZGF0YSByZWZlcmVuY2VzIGluIHRoZSBi
dWZmZXIKKy8vIGNhbm5vdCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5IGZvciBtZXNzYWdlIGRhdGEg
YW5kIHRoZSByZXBseSBkYXRhLiBJbiBjdXJyZW50IElQQyBpbXBsZW1lbnRhdGlvbiwgdGhlIG1l
c3NhZ2UKKy8vIHByb2Nlc3NpbmcgdXNlcyB0aGUgaW4tcGxhY2UgZGF0YSByZWZlcmVuY2VzLCB3
aGlsZSB0aGUgcmVwbHkgZGF0YSBpcyBmaXJzdCBjb25zdHJ1Y3RlZCB0byBhbGxvY2F0ZWQgbWVt
b3J5IGFuZCB0aGVuCisvLyBjb3BpZWQgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyLgorLy8KIC8vIFRo
ZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbjoKIC8vICogVGhl
IGNsaWVudCBvd25zIHRoZSBkYXRhIGJldHdlZW4gW2NsaWVudE9mZnNldCwgc2VydmVyT2Zmc2V0
Wy4gV2hlbiBjbGllbnRPZmZzZXQgPT0gc2VydmVyT2Zmc2V0LCB0aGUgY2xpZW50IG93bnMKIC8v
ICAgYWxsIHRoZSBkYXRhLgogLy8gKiBUaGUgc2VydmVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBb
c2VydmVyT2Zmc2V0LCBjbGllbnRPZmZzZXRbLgorLy8gKiBUaGUgZXhjZXB0aW9uIHRvIHRoZSBh
Ym92ZSBpcyB3aGVuIGNvbW11bmljYXRpb24gcHJvdG9jb2wgY2FuIGNvbnRhaW4gbWVzc2FnZXMg
dGhhdCBkZW5vdGUgdGhhdCB0aGUgc2VydmVyIHdpbGwgb3duCisvLyAgIGFsbCB0aGUgZGF0YS4K
IC8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhl
IGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlz
IGZ1bGwuCiAvLyAgIEZJWE1FOiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9u
IGlmIGl0IHdvdWxkIHVzZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBhcyB0
aGUgaW5kaWNhdG9yLgogLy8gICBUaGlzIHdvdWxkIG1vdmUgdGhlIGFsaWduZWRTcGFuIGltcGxl
bWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA4
ZTQ5MjY2NDRhODA4NjM2OWVmN2NjODlhNDAyYjI4Yjk2MDE3YTAyLi41MDdlY2I0ZmRkZmJjOGNm
ODRhZDA0YjgzMDEyOGVkNDE1M2U3NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNTksNyArNTksNyBAQCB2
b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9u
Jiwgc3RkOjp1bmlxdWVfcHRyPERlYwogICAgIG1fd29ya1F1ZXVlLndha2VVcCgpOwogfQogCi1P
cHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnRyeUFxdWlyZSgpCitPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcmUoKQogewog
ICAgIFNlcnZlckxpbWl0IHNlcnZlckxpbWl0ID0gc2hhcmVkU2VydmVyTGltaXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogICAgIGlmIChzZXJ2ZXJMaW1pdCA9PSBTZXJ2ZXJM
aW1pdDo6c2VydmVySXNTbGVlcGluZ1RhZykKQEAgLTc3LDYgKzc3LDExIEBAIE9wdGlvbmFsPFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6dHJ5QXF1aXJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFjcXVpcmVBbGwoKQor
eworICAgIHJldHVybiBhbGlnbmVkU3BhbigwLCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKIHZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogewog
ICAgIEFTU0VSVChyZWFkU2l6ZSk7CkBAIC04NSw3ICs5MCw3IEBAIHZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgU2VydmVyT2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZlck9m
ZnNldCgpLmV4Y2hhbmdlKHNlcnZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7
Ci0gICAgLy8gSWYgdGhlIHNlbmRlciB3cm90ZSBvdmVyIHNlcnZlck9mZnNldCwgaXQgbWVhbnMg
dGhlIHNlbmRlciBpcyB3YWl0aW5nLgorICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBz
ZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQgaXMgd2FpdGluZy4KICAgICBpZiAob2xk
U2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQogICAgICAg
ICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CiAgICAgZWxzZQpAQCAt
OTgsNiArMTAzLDIzIEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uo
c2l6ZV90IHJlYWRTaXplKQogICAgIG1fc2VydmVyT2Zmc2V0ID0gc2VydmVyT2Zmc2V0OwogfQog
Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlQWxsKCkKK3sKKyAgICBz
aGFyZWRTZXJ2ZXJMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PFNlcnZlckxpbWl0PigwKSwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2VydmVy
T2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmV4Y2hhbmdlKHN0
YXRpY19jYXN0PFNlcnZlck9mZnNldD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwor
ICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRo
ZSBjbGllbnQgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9m
ZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQorICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0U2Vt
YXBob3JlKCkuc2lnbmFsKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIShvbGRTZXJ2ZXJP
ZmZzZXQgJiBTZXJ2ZXJPZmZzZXQ6OmNsaWVudElzV2FpdGluZ1RhZykpOworI2Vsc2UKKyAgICBz
aGFyZWRTZXJ2ZXJPZmZzZXQoKS5zdG9yZShzdGF0aWNfY2FzdDxTZXJ2ZXJPZmZzZXQ+KDApLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAvLyBJUEM6OlNlbWFwaG9yZSBub3QgaW1w
bGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9ybS4gQ2xpZW50IHdpbGwgcG9sbCBhbmQgeWllbGQuCisj
ZW5kaWYKKyAgICBtX3NlcnZlck9mZnNldCA9IDA7Cit9CisKIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IDFkZGFlYzQ2MmViZGNmMmE2ODU1Yjk0YTliZjY3MWFkNGJmYzVhMzUu
LjI2YWE0M2JmYTlhOTkzOTgzM2NlNzNmMzUzNGVkNDFlMzgxZGU3ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBk
aXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpID0gMDsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgdm9pZCBzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKIAogcHJvdGVjdGVkOgpAQCAtNjcsOSArNjcs
MTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB1aW50OF90KiBkYXRhOwogICAgICAgICBzaXplX3Qg
c2l6ZTsKICAgICB9OwotICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworICAgIE9wdGlv
bmFsPFNwYW4+IHRyeUFjcXVpcmUoKTsKKyAgICBTcGFuIGFjcXVpcmVBbGwoKTsKIAogICAgIHZv
aWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOworICAgIHZvaWQgcmVsZWFzZUFsbCgpOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdl
QWxpZ25tZW50OwogICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxp
bWl0KTsKQEAgLTkyLDE1ICs5NCwyNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBMb2NrIG1fb3V0T2ZT
dHJlYW1NZXNzYWdlc0xvY2s7CiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBt
X291dE9mU3RyZWFtTWVzc2FnZXM7CisgICAgYm9vbCBtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNz
YWdlIHsgZmFsc2UgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1
ZmZlci4KLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oSVBD
OjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgaWYg
Y29uc3RleHByKFQ6OmlzUmVwbHlTdHJlYW1FbmNvZGFibGUpIHsKKyAgICAgICAgaWYgKG1faXNE
aXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGF1dG8gc3BhbiA9IGFjcXVp
cmVBbGwoKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTdHJlYW1Db25uZWN0aW9u
RW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBz
cGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgICAgICAgICAgICAgIGlmICgobWVzc2FnZUVuY29k
ZXIgPDwgLi4uIDw8IGFyZ3VtZW50cykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG91dE9mU3Ry
ZWFtRW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlLCBzcGFu
LmRhdGEsIHNwYW4uc2l6ZSB9OworICAgICAgICB9CisgICAgfQorICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5
bmNSZXF1ZXN0SUQpOworCiAgICAgKGVuY29kZXIuZ2V0KCkgPDwgLi4uIDw8IGFyZ3VtZW50cyk7
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpA
QCAtMTQyLDggKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX3JlY2VpdmVyc0xvY2s7CiAg
ICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0
X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKICAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnM7Ci0KLSAg
ICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKKyAgICB1aW50NjRfdCBtX2N1
cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2
ZXI+CkBAIC0xNzYsNyArMTg5LDcgQEAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3Bh
dGNoUmVzdWx0IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXMKICAgICB1aW50
OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5h
bWU6OkludmFsaWQpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7
ICsraSkgewotICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgYXV0byBz
cGFuID0gdHJ5QWNxdWlyZSgpOwogICAgICAgICBpZiAoIXNwYW4pCiAgICAgICAgICAgICByZXR1
cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CiAgICAgICAgIElQQzo6RGVjb2RlciBk
ZWNvZGVyIHsgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9
OwpAQCAtMjQyLDEyICsyNTUsMTggQEAgYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmIGQKIHRlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgogYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyLCBSZWNlaXZlciYgcmVj
ZWl2ZXIpCiB7CisgICAgQVNTRVJUKCFtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdlKTsKKyAg
ICBtX2lzRGlzcGF0Y2hpbmdTdHJlYW1NZXNzYWdlID0gdHJ1ZTsKICAgICByZWNlaXZlci5kaWRS
ZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywgZGVjb2Rlcik7CisgICAgbV9pc0Rpc3BhdGNoaW5n
U3RyZWFtTWVzc2FnZSA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJl
bGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgaWYgKGRlY29kZXIu
aXNTeW5jTWVzc2FnZSgpKQorICAgICAgICByZWxlYXNlQWxsKCk7CisgICAgZWxzZQorICAgICAg
ICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAw
MzM1YjJiZDU1ZjAxM2NmM2YzMzljMjQ2MmU1YTRlOGUyNjg3NDRlLi42NDg3MTY0ODEzZjUxZTQ0
YjFmMjEzZmViMDcwN2Y3YmYzZTQ2YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTU3LDYgKzU3LDggQEAgV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRS
SUJVVEUgPSAnV2FudHNEaXNwYXRjaE1lc3NhZ2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSA9ICdXYW50c0FzeW5jRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JFQ0VJ
VkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVS
X0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJworTk9UX1NUUkVBTV9FTkNPREFCTEVfQVRUUklC
VVRFID0gJ05vdFN0cmVhbUVuY29kYWJsZScKK05PVF9TVFJFQU1fRU5DT0RBQkxFX1JFUExZX0FU
VFJJQlVURSA9ICdOb3RTdHJlYW1FbmNvZGFibGVSZXBseScKIAogZGVmIHJlY2VpdmVyX2VudW1l
cmF0b3Jfb3JkZXJfa2V5KHJlY2VpdmVyX25hbWUpOgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0g
J0lQQyc6CkBAIC0xOTQsNyArMTk2LDEyIEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIEFy
Z3VtZW50cyA9ICVzO1xuJyAlIGFyZ3VtZW50c190eXBlKG1lc3NhZ2UpKQogICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzOyB9XG4nICUgKHJlY2Vp
dmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9ICVzO1xuJyAlICgnZmFsc2UnLCAndHJ1ZScpW21lc3NhZ2UucmVw
bHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCBub3QgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5D
X0FUVFJJQlVURSldKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNTeW5jID0gJXM7XG4nICUgKCdmYWxzZScsICd0cnVlJylbbWVzc2FnZS5yZXBseV9wYXJh
bWV0ZXJzIGlzIG5vdCBOb25lIGFuZCBub3QgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FU
VFJJQlVURSldKQorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVU
RSk6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNT
dHJlYW1FbmNvZGFibGUgPSAlcztcbicgJSAoJ3RydWUnLCAnZmFsc2UnKVttZXNzYWdlLmhhc19h
dHRyaWJ1dGUoTk9UX1NUUkVBTV9FTkNPREFCTEVfQVRUUklCVVRFKV0pCisgICAgICAgIGlmIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZXBseVN0cmVhbUVuY29kYWJsZSA9
ICVzO1xuJyAlICgndHJ1ZScsICdmYWxzZScpW21lc3NhZ2UuaGFzX2F0dHJpYnV0ZShOT1RfU1RS
RUFNX0VOQ09EQUJMRV9SRVBMWV9BVFRSSUJVVEUpXSkKKwogICAgIHJlc3VsdC5hcHBlbmQoJ1xu
JykKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKICAgICAgICAgc2Vu
ZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCks
IHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlw
dGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuY3BwCmluZGV4IDNlODRhZTFlMzljN2U3ZDdjZGY4OTVhNDI0OTI3
NzEzMTJhYWEwNjAuLmNhZjc2Nzk3Mjg3OWVhOTU2ZmY5ZGFhY2ZiYmFiNDcxMGRjYmJhYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3Vt
ZW50RGVzY3JpcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKQEAgLTY3LDYgKzY3LDkgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL01h
Y2hTZW5kUmlnaHQuaD4KKyNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CiAjZW5kaWYKQEAgLTIzNiw2ICsyMzksMTQgQEAgT3B0aW9uYWw8SlNDOjpK
U1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgTWUKICAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3Nh
Z2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6QXJndW1lbnRzPihnbG9iYWxPYmplY3Qs
IGRlY29kZXIpOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6OkFyZ3Vt
ZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kTWFjaFNlbmRSaWdodDoKKyAgICAg
ICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6U2VuZE1hY2hTZW5kUmlnaHQ6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVy
KTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRS
aWdodDoKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbTo6UmVjZWl2ZU1hY2hTZW5kUmlnaHQ6OkFyZ3VtZW50cz4oZ2xvYmFs
T2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9T
ZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVj
b2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRBbmRSZWNlaXZlTWFj
aFNlbmRSaWdodDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOworI2VuZGlmCiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZl
cjoKICAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpU
ZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6QXJndW1lbnRzPihnbG9iYWxP
YmplY3QsIGRlY29kZXIpOwogICAgIGRlZmF1bHQ6CkBAIC01NTksNiArNTcwLDE4IEBAIE9wdGlv
bmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRp
b25zKE1lc3NhZ2VOYW1lIG5hCiAgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlw
dGlvbj4gewogICAgICAgICAgICAgeyJ1cmwiLCAiU3RyaW5nIiwgbnVsbHB0ciwgZmFsc2V9LAog
ICAgICAgICB9OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJpZ2h0OgorICAgICAgICByZXR1cm4gVmVjdG9yPEFy
Z3VtZW50RGVzY3JpcHRpb24+IHsKKyAgICAgICAgICAgIHsiYTEiLCAiTWFjaFNlbmRSaWdodCIs
IG51bGxwdHIsIGZhbHNlfSwKKyAgICAgICAgfTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0
V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxB
cmd1bWVudERlc2NyaXB0aW9uPiB7IH07CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAgICAgICByZXR1cm4gVmVjdG9y
PEFyZ3VtZW50RGVzY3JpcHRpb24+IHsKKyAgICAgICAgICAgIHsiYTEiLCAiTWFjaFNlbmRSaWdo
dCIsIG51bGxwdHIsIGZhbHNlfSwKKyAgICAgICAgfTsKKyNlbmRpZgogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI6CiAgICAgICAgIHJl
dHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4gewogICAgICAgICAgICAgeyJzdHJlYW0i
LCAiSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIiwgbnVsbHB0ciwgZmFsc2V9LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3Bw
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmlu
ZGV4IGY3NjUwN2NkZGYxNzAzMTM2YjEwYTBmMzA2ODRjM2ZjZDE0NGE2MTMuLjA5NDExOGE5OGJl
ZjNiN2FmZWQ0Nzg5OTk3NWMzZGIzMjI4NWQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKQEAgLTgyLDYgKzgyLDEyIEBA
IGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVy
biAiVGVzdFdpdGhTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSI7CiAgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjoKICAgICAgICAgcmV0dXJu
ICJUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICAgICAgcmV0
dXJuICJUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodCI7CisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0OgorICAg
ICAgICByZXR1cm4gIlRlc3RXaXRoU3RyZWFtX1NlbmRBbmRSZWNlaXZlTWFjaFNlbmRSaWdodCI7
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQ6
CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQiOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc6CiAgICAgICAgIHJl
dHVybiAiVGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZyI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDoKQEAgLTIwNyw2ICsyMTMsOSBA
QCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAg
ICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZTsKICAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOgogICAgICAg
ICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodDoKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ6
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQ6
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZzoKICAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgog
ICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbTsKQEAgLTM0MCw2ICsz
NDksMTggQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fUmVjZWl2ZU1hY2hTZW5kUmlnaHQpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRBbmRS
ZWNlaXZlTWFjaFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdHJlYW1fU2VuZE1hY2hTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtX1NlbmRTdHJpbmcpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hy
b25pemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmgKaW5kZXggZmE5MzE3ODg3Y2Y1OTMxYmQxM2JjYjYyOGRjODBjMzBlNDk4ZmUwOC4u
NTk4ZGU4NjM5NzIwMDIzMTliYmVmYWI5YjgyNzMyZjQyOGVmZTViOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC02OSw2ICs2
OSw5IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0
aFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlCiAgICAgLCBUZXN0V2l0aFNlbWFwaG9yZV9TZW5k
U2VtYXBob3JlCiAgICAgLCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyCisg
ICAgLCBUZXN0V2l0aFN0cmVhbV9SZWNlaXZlTWFjaFNlbmRSaWdodAorICAgICwgVGVzdFdpdGhT
dHJlYW1fU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0CisgICAgLCBUZXN0V2l0aFN0cmVhbV9T
ZW5kTWFjaFNlbmRSaWdodAogICAgICwgVGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZwogICAgICwg
VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZAogICAgICwgVGVzdFdpdGhTdXBl
cmNsYXNzX0xvYWRVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgKaW5kZXggNDA3ZDMzODc3
MTllMzllMjc4M2NiNDgxZTA3NmFiNDlkNjBjOTQ5OC4uYjhmZjYxMTYxMGE0YzgxNmMwOTNmMzc0
ZWQ2ZmE4MjIxYzBiOWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3Qg
U3RyaW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3NhZ2VfTG9hZFVSTDsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgICAgIDogbV9hcmd1bWVudHModXJsKQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmLCBpbnQ2NF90PjsK
IAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aElmTWVzc2FnZV9Mb2FkVVJMOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgaW50NjRfdCB2YWx1ZSkKICAg
ICAgICAgOiBtX2FyZ3VtZW50cyh1cmwsIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZXMu
aAppbmRleCBmNDJlOGY3YTBiMDgxZjI5MTVlNTdjYzJhZDQyMDZhYjJhYmQ2ZDI4Li4xMGNmNDNk
MmFlODczODU4Y2ZlMTJlZWE5NDBmZThhNzFkZGZhY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVz
c2FnZXMuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTxjb25zdCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiY+OwogCiAgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRl
c3RXaXRoSW1hZ2VEYXRhX1NlbmRJbWFnZURhdGE7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7
CiAKICAgICBleHBsaWNpdCBTZW5kSW1hZ2VEYXRhKGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+JiBzMCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhzMCkKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0
V2l0aEltYWdlRGF0YV9SZWNlaXZlSW1hZ2VEYXRhOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVw
bHkgPSBzdGQ6OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Jj47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2
ZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaAppbmRleCBhY2FjMjgzNWM2YzQwNWI0MjY2ZDg4YzU2
NzAwNjdkMDllYTk0YzUwLi42ZjJiZjcxOWZiOTQyYzMyOTc5ZWIxMjRhODgyNjZmM2NiZDBhYWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
TGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgKQEAgLTY4LDcgKzY4LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Mb2FkVVJMOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
U3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXJfTG9hZFNvbWV0aGluZzsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKIAogICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCiAg
ICAgICAgIDogbV9hcmd1bWVudHModXJsKQpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVu
dCY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAg
LTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyX0FkZEV2ZW50OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGlj
aXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAg
OiBtX2FyZ3VtZW50cyhldmVudCkKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyX0xvYWRTb21ldGhpbmdFbHNlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZh
bHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgICAgIDogbV9hcmd1bWVudHModXJsKQpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWlu
dDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfRGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbikKICAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklE
LCBwb2xpY3lBY3Rpb24pCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFy
Z3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX0Ns
b3NlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAogICAgIHsKQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1ByZWZlcmVuY2VzRGlkQ2hh
bmdlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgUHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAg
ICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkKQEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxkb3VibGUsIGZsb2F0PjsKIAogICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1NlbmREb3VibGVBbmRGbG9hdDsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKIAogICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBmKQpAQCAtMjYwLDcgKzI2MCw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
LCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1NlbmRJbnRzOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgU2Vu
ZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1
aW50NjRfdD4+JiBpbnRWZWN0b3JzKQogICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGludFZl
Y3RvcnMpCkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj47
CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNz
YWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9DcmVhdGVQbHVnaW47IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1N5bmMgPSB0cnVlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFk
ID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsK
ICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwpAQCAtMzA1LDcgKzMwNSw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25z
dCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1J1bkphdmFTY3JpcHRB
bGVydDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29u
c3RydWN0aW9uVGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwpAQCAtMzI5
LDcgKzMyOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJv
b2w+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfR2V0UGx1Z2luczsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJl
YWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFk
OwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4mPjsKQEAgLTM1Myw3ICszNTMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
X0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAog
ICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXll
ZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CkBAIC0zNzks
NyArMzc5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsK
IAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdE11
bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3Ry
dWN0aW9uVGhyZWFkOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKIAogICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZv
bywgZG91YmxlIGJhciwgZG91YmxlIGJheikKICAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJh
ciwgYmF6KQpAQCAtNDIxLDcgKzQyMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZW1wbGF0ZVRlc3Q7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29u
c3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCiAgICAg
ICAgIDogbV9hcmd1bWVudHMoYSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1NldFZpZGVv
TGF5ZXJJRDsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFNldFZp
ZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQm
IHZpZGVvTGF5ZXJJRCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCkBAIC00
NjQsNyArNDY0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
Y29uc3QgSVBDOjpNYWNoUG9ydCYsIGNvbnN0IE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZs
YWdzPiY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfRGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+JiBmbGFncykKICAg
ICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllciwgZmxhZ3MpCkBAIC00ODcs
NyArNDg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWlu
dDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfSW50ZXJwcmV0S2V5RXZlbnQ7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNh
bGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVj
dGlvblRocmVhZDsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6
OktleXByZXNzQ29tbWFuZD4mPjsKQEAgLTUxMyw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+OwogCiAgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfRGVwcmVjYXRlZE9wZXJhdGlvbjsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3Qg
SVBDOjpEdW1teVR5cGUmIGR1bW15KQogICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQpAQCAt
NTM2LDcgKzUzNiw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PGNvbnN0IElQQzo6RHVtbXlUeXBlJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9F
eHBlcmltZW50YWxPcGVyYXRpb247IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBl
eHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15
KQogICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMu
aAppbmRleCAzMmZhZDViMGFhYzRlNWQ1MzQ5MTM0ZDYyNTA1MWExYjlhMDU1N2QxLi5mYTk4OGNm
NzE1Y2RiYzIzOTVlZmI4YTFhZGExZWY0NTk5MDhiYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVz
c2FnZXMuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTxjb25zdCBJUEM6OlNlbWFwaG9yZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU2VtYXBo
b3JlX1NlbmRTZW1hcGhvcmU7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBs
aWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IElQQzo6U2VtYXBob3JlJiBzMCkKICAgICAgICAgOiBt
X2FyZ3VtZW50cyhzMCkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFNlbWFwaG9yZV9SZWNlaXZlU2Vt
YXBob3JlOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpD
b25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6U2Vt
YXBob3JlJj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgppbmRleCBmZDBmNTI4YzY5Y2RlZmRk
YTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyLi44Njk1ZjU4NjM1MjdiZmExYzFkZTg1MWMyM2IyOTMy
MmQyMTNmNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAgLTIzLDUgKzIzLDEwIEBA
CiAjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCiBtZXNzYWdlcyAtPiBUZXN0V2l0
aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmlu
ZyB1cmwpCi0gICAgdm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChp
bnQ2NF90IHJldHVybikKKyAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVy
bCkgLT4gKGludDY0X3QgcmV0dXJuVmFsdWUpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9p
ZCBTZW5kTWFjaFNlbmRSaWdodChNYWNoU2VuZFJpZ2h0IGExKSBOb3RTdHJlYW1FbmNvZGFibGUK
KyAgICB2b2lkIFJlY2VpdmVNYWNoU2VuZFJpZ2h0KCkgLT4gKE1hY2hTZW5kUmlnaHQgcjEpIE5v
dFN0cmVhbUVuY29kYWJsZVJlcGx5CisgICAgdm9pZCBTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmln
aHQoTWFjaFNlbmRSaWdodCBhMSkgLT4gKE1hY2hTZW5kUmlnaHQgcjEpIE5vdFN0cmVhbUVuY29k
YWJsZSBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1C
dWZmZXJNZXNzYWdlcy5oCmluZGV4IDZhMjRlYmRkMjAwZjMzOTA0NzdkZmFmN2NkODU3MTkxYmQ1
M2IyODcuLjQxMjdlZjVhNGMyYWY3NmFmMGRjMGM5NGM2ZDNlMDczOGRhZjJiYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXJNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBTZW5kU3RyZWFtQnVm
ZmVyKGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtKQogICAgICAgICA6
IG1fYXJndW1lbnRzKHN0cmVhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHAKaW5kZXggZTAwN2VjNGQ2OGViY2ZlNDQ3ZDg0NzcwMTA5MjUxZTQ1Mjk5ZjU2Yy4uMDAxYzAw
YTdlZDIxM2E1M2UyYzJmZGUwNjdhOTI3ZjMxZjNkMzRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFt
TWVzc2FnZXMuaCIKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRS
aWdodC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMzcsOCArNDAsMjAgQEAgdm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlk
UmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY28K
IHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKQogICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2Vu
ZE1hY2hTZW5kUmlnaHQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRNYWNoU2VuZFJpZ2h0PihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRNYWNoU2VuZFJpZ2h0KTsKKyNlbmRpZgogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5k
U3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpCiAgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpSZWNlaXZlTWFjaFNlbmRSaWdodDo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6
UmVjZWl2ZU1hY2hTZW5kUmlnaHQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6cmVj
ZWl2ZU1hY2hTZW5kUmlnaHQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRB
bmRSZWNlaXZlTWFjaFNlbmRSaWdodDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZEFuZFJlY2VpdmVNYWNoU2Vu
ZFJpZ2h0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRBbmRSZWNlaXZlTWFj
aFNlbmRSaWdodCk7CisjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1l
c3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZXMuaAppbmRleCBjNDJhNDcyNGM2MmM3N2Q2ZmJhOTk1NTNkY2NlZGQwOTE2MDIy
OGEyLi4wYWFiY2QyNTQ3ZDBkNjQ4NGU2N2UwMzdhZWY2ZWRlNDdjYjkyOTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZXMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5o
IgogI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC00Niw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmc7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzU3RyZWFtRW5jb2RhYmxlID0gdHJ1ZTsKIAogICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIDogbV9hcmd1bWVudHModXJsKQpAQCAtNjcsNyArNjks
OSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJp
bmcmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTdHJlYW1F
bmNvZGFibGUgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1JlcGx5U3RyZWFt
RW5jb2RhYmxlID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1Ro
cmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJl
YWQ7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGludDY0X3QmPjsKQEAgLTg2LDUgKzkw
LDgwIEBAIHByaXZhdGU6CiAgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwogfTsKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorY2xhc3MgU2VuZE1hY2hTZW5kUmlnaHQgeworcHVibGljOgorICAgIHVz
aW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgTWFjaFNlbmRSaWdodCY+OworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3RyZWFtX1NlbmRNYWNoU2VuZFJpZ2h0OyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N0cmVh
bUVuY29kYWJsZSA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZE1hY2hTZW5kUmlnaHQoY29u
c3QgTWFjaFNlbmRSaWdodCYgYTEpCisgICAgICAgIDogbV9hcmd1bWVudHMoYTEpCisgICAgewor
ICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCitjbGFz
cyBSZWNlaXZlTWFjaFNlbmRSaWdodCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTw+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1JlY2VpdmVNYWNoU2VuZFJpZ2h0
OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3RyZWFtRW5jb2RhYmxlID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNSZXBseVN0cmVhbUVuY29kYWJsZSA9IGZhbHNlOworCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNh
bGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVw
bGU8TWFjaFNlbmRSaWdodCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxNYWNoU2VuZFJpZ2h0PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorY2xhc3MgU2VuZEFuZFJlY2VpdmVNYWNoU2VuZFJpZ2h0IHsKK3B1YmxpYzoKKyAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IE1hY2hTZW5kUmlnaHQmPjsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN0cmVhbV9TZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQ7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNTdHJlYW1FbmNvZGFibGUgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNSZXBseVN0cmVhbUVuY29kYWJsZSA9IGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNv
bnN0cnVjdGlvblRocmVhZDsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8TWFjaFNlbmRS
aWdodCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxNYWNoU2VuZFJp
Z2h0PjsKKyAgICBleHBsaWNpdCBTZW5kQW5kUmVjZWl2ZU1hY2hTZW5kUmlnaHQoY29uc3QgTWFj
aFNlbmRSaWdodCYgYTEpCisgICAgICAgIDogbV9hcmd1bWVudHMoYTEpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQog
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaAppbmRl
eCBjMWFlOGQ1ZmEzMThkNDU2M2U5MTA4NmNjYTUzZWEwZmNmMzNlZmQzLi4zZGYxYzY4ZTk3NmIx
OTI1NWIzZmQyYjgzZDcxYmI4NzFlMGFkNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdl
cy5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJM
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgTG9hZFVSTChjb25z
dCBTdHJpbmcmIHVybCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCkBAIC03Myw3ICs3Myw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFdlYktpdDo6VGVz
dFR3b1N0YXRlRW51bT47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3Nh
Z2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVw
bHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7
CiAgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCYmKT4mJik7CkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAg
IHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
IAogICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNl
bFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7CkBA
IC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgaW50Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoQ29ubmVjdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIHN0YXRp
YyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wmJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCYmKT4mJik7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDMyX3Q+OwogCiAgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJj
bGFzc19UZXN0U3luY01lc3NhZ2U7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0
cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0cnVlOwogCiAgICAgdXNp
bmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJD
YWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47CiAKICAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdXBlcmNsYXNzX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSB0
cnVlOwogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURl
bGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0
dHJpYnV0ZXNNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oCmluZGV4IDY3NmY2Y2MwNTVkYjFkYWYzZDQx
NzdlN2JiMWNkODIwZDYzNDFkYmIuLmU3MmQ0YTU0M2MzNDcwYzEwMDU2YzgwMGJiNTMzOTI0YTEy
ZWQ2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VzLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3Ry
aW5nJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0xvYWRVUkw7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CiAKICAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0xvYWRTb21ldGhpbmc7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
ZmFsc2U7CiAKICAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hFdmVudDsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKQEAg
LTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXNfQWRkRXZlbnQ7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBleHBsaWNp
dCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICA6
IG1fYXJndW1lbnRzKGV2ZW50KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
b3V0QXR0cmlidXRlc19Mb2FkU29tZXRoaW5nRWxzZTsgfQotICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKIAogICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQog
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQz
Ml90PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNlOwogCiAgICAgRGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBv
bGljeUFjdGlvbikKICAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBw
b2xpY3lBY3Rpb24pCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfQ2xvc2U7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CiAgICAgewpAQCAtMjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19QcmVmZXJlbmNlc0RpZENoYW5nZTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlk
Q2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgICAg
IDogbV9hcmd1bWVudHMoc3RvcmUpCkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAgIHVz
aW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD47CiAKICAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzX1NlbmREb3VibGVBbmRGbG9hdDsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKIAogICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKICAgICAg
ICAgOiBtX2FyZ3VtZW50cyhkLCBmKQpAQCAtMjYwLDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25z
dCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXNfU2VuZEludHM7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKICAgICBTZW5kSW50cyhj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90
Pj4mIGludFZlY3RvcnMpCiAgICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykK
QEAgLTI4MSw3ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmPjsKIAogICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfQ3JlYXRlUGx1Z2luOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
dHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKQEAgLTMwNSw3ICszMDUsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5n
Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1J1bkphdmFTY3JpcHRBbGVydDsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJh
Y2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9u
VGhyZWFkOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwpAQCAtMzI5LDcgKzMyOSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwogCiAg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19HZXRQbHVnaW5zOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5jID0g
dHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OwpAQCAt
MzUzLDcgKzM1Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PGNvbnN0IFN0cmluZyY+OwogCiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlc19HZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IHRydWU7CiAKICAgICB1c2luZyBE
ZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwpAQCAtMzc5LDcgKzM3OSw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAKICAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5
bmMgPSB0cnVlOwogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmli
dXRlc0RlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJl
YWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFk
OwpAQCAtNDAwLDcgKzQwMCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3luYyA9IGZhbHNl
OwogCiAgICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFy
LCBkb3VibGUgYmF6KQogICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCkBAIC00
MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPjsKIAog
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVGVtcGxhdGVUZXN0OyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU3lu
YyA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQogICAgICAgICA6IG1fYXJndW1l
bnRzKGEpCkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
Jj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1NldFZpZGVvTGF5ZXJJRDsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkK
ICAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCkBAIC00NjQsNyArNDY0LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNo
UG9ydCYsIGNvbnN0IE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiY+OwogCiAgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRob3V0QXR0cmlidXRlc19EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBPcHRp
b25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4mIGZsYWdzKQogICAgICAgICA6IG1fYXJndW1l
bnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmbGFncykKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50MzJfdD47CiAKICAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0ludGVycHJldEtleUV2ZW50OyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTeW5j
ID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7CiAgICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+
Jj47CkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPjsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXNfRGVwcmVjYXRlZE9wZXJhdGlvbjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAog
ICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1
bW15KQogICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQpAQCAtNTM2LDcgKzUzNiw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlU
eXBlJj47CiAKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX0V4cGVyaW1lbnRhbE9wZXJhdGlv
bjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAogICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRh
bE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCiAgICAgICAgIDogbV9hcmd1
bWVudHMoZHVtbXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCAzOGRkOWQzMWU2YzdjZjc5NDk1NmU3NzMwYjEwN2RlNDk0N2E0Yjg3Li4x
ZDNhYjg4MjU0MzQ2YWExMWFkOWM2NmYzNGVhZWM3Mjc5YTEyMjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KQEAgLTc0MSwxMSArNzQyLDE3IEBAIE9wdGlvbmFsPEludFJlY3Q+IEFy
Z3VtZW50Q29kZXI8SW50UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVy
biByZWN0OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENv
ZGVyPEludFNpemU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSW50U2l6ZSYgaW50
U2l6ZSkKIHsKICAgICBTaW1wbGVBcmd1bWVudENvZGVyPEludFNpemU+OjplbmNvZGUoZW5jb2Rl
ciwgaW50U2l6ZSk7CiB9CiAKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8SW50U2l6ZT46
OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgSW50U2l6ZSYpOwordGVtcGxhdGUKK3Zv
aWQgQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
PihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IEludFNpemUmKTsKKwogYm9vbCBBcmd1
bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW50U2l6ZSYgaW50
U2l6ZSkKIHsKICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVjb2Rl
KGRlY29kZXIsIGludFNpemUpOwpAQCAtMzA5Niw2ICszMTAzLDcgQEAgT3B0aW9uYWw8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q0QKIH0KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpJbWFn
ZURhdGE+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpJbWFn
ZURhdGE+JiBpbWFnZURhdGEpCiB7CiAgICAgZW5jb2RlciA8PCBpbWFnZURhdGEtPnNpemUoKTsK
QEAgLTMxMDUsNiArMzExMywxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6Oklt
YWdlRGF0YT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPAogICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+Ynl0ZUxl
bmd0aCgpLCAxKTsKIH0KIAordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6SW1hZ2VEYXRhPj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNv
cmU6OkltYWdlRGF0YT4mKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkltYWdlRGF0YT4+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkltYWdlRGF0YT4mKTsKKwogT3B0
aW9uYWw8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkltYWdlRGF0YT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBPcHRpb25hbDxJ
bnRTaXplPiBpbWFnZURhdGFTaXplOwpAQCAtMzEyOCw2ICszMTQxLDcgQEAgT3B0aW9uYWw8UmVm
PFdlYkNvcmU6OkltYWdlRGF0YT4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0
YT4+OjpkZWNvZGUKICAgICByZXR1cm4geyBpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSB9Owog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+JiBpbWFnZURhdGEpCiB7CiAgICAgaWYgKCFpbWFnZURh
dGEpIHsKQEAgLTMxMzksNiArMzE1MywxMiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogICAg
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkltYWdlRGF0YT4+OjplbmNvZGUoZW5jb2Rlciwg
aW1hZ2VEYXRhLmNvcHlSZWYoKS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAordGVtcGxhdGUKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShFbmNv
ZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4mKTsKKwordGVtcGxhdGUKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29kZShTdHJl
YW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Jik7
CisKIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgYm9vbCBpc0VuZ2FnZWQ7CkBAIC0zMjExLDYgKzMyMzEsNyBAQCBPcHRpb25hbDxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3Jh
cGhpY3NDbwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpB
Y3RpdmVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvJiBhY3RpdmVJbmZvKQogewogICAgIGVuY29kZXIgPDwg
YWN0aXZlSW5mby5uYW1lOwpAQCAtMzIxOCw2ICszMjM5LDExIEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz46OmVuY29kZShFbmNvZGVy
JiBlbmNvCiAgICAgZW5jb2RlciA8PCBhY3RpdmVJbmZvLnNpemU7CiB9CiAKK3RlbXBsYXRlCit2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+
OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpBY3RpdmVJbmZvJik7CisKIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpBY3RpdmVJbmZvPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpBY3RpdmVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTI4ZGE3NTYwYzNlODli
ZDQxZDUxOGE2YjYyZTU0ZThhNGVlZjVhOC4uYmQzZDllMWI5M2JmZGNlODkyYzhjYTA3MjFlYTI0
ZjVmZTI5YWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTM0Nyw2ICszNDcsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkludFJlY3Q+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6SW50U2l6ZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
Q29yZTo6SW50U2l6ZSYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpJbnRTaXplPiBk
ZWNvZGUoRGVjb2RlciYpOwpAQCAtODE1LDExICs4MTYsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
cj4gewogI2VuZGlmCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpJ
bWFnZURhdGE+Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKQEAgLTgzOSw2ICs4NDIsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4g
ewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbz4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6QWN0aXZlSW5mbyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCAwMWI5OTkyYmVkYTA0
ZDdhYjc5NjE4OTU5YjA0OWJmZDUyMDlmNmMzLi40NGIyMjI4MzlmZmQwMTc2NmZhM2U1ZDU3ODBl
M2I3OWE1OTAwNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKQEAgLTU5LDYgKzU5LDkgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYKICAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBiZWNh
dXNlIGF0IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCisgICAgLy8g
ZHVyaW5nIHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBiZSBm
aXhlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTcyMTEuCisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKIH0KIAogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkyNTE3ZDZkMGUyYmFi
ZmYzZjdmMTUwMjExYmIzOTJiNjNlY2UzM2UuLmUxNTJhYjFiMGFlZGExZmE4N2U2YTQ3ZmUzMDMz
OGJiOGM4MmVhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lu
bnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIElQQyBzaG91bGQgdXNlIHNoYXJlZCBt
ZW1vcnkgZm9yIHN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcz
ODc2OTQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAg
IE1hcmsgUHJlcGFyZUZvckRpc3BsYXkoKSBhcyAibm90IHJlcGx5YWJsZSB0aHJvdWdoIHRoZSBz
dHJlYW0iCisgICAgICAgIHNpbmNlIGl0IHJlcGxpZXMgd2l0aCBNYWNoU2VuZFJpZ2h0LgorCisg
ICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAzLTE0ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW1dL
MV0gQWRkIGEgbmV3IEFQSSBJV2ViUHJlZmVyZW5jZXM6OnN0YXJ0QmF0Y2hpbmdVcGRhdGVzIHRv
IGRlZmVyIFdlYlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsCmluZGV4IDk4OWU4NzBjZDFmOGM5OTYwODg4OGZlZDc0Mzk1NTE2OWFiMzMyMTQu
LjZmOGY3MDNhMmY1YmRlZDQzMDliZWY3OTRkZjAzMzcwYTdhMmIxZWIgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKQEAgLTkyLDcgKzkyLDcgQEAgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0
ZSA9ICgKIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQg
U3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0
KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
TWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUHJlcGFy
ZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91
cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>