<?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>108093</bug_id>
          
          <creation_ts>2013-01-28 11:02:39 -0800</creation_ts>
          <short_desc>Static size inference for JavaScript objects</short_desc>
          <delta_ts>2013-01-29 13:34:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>alecflett</cc>
    
    <cc>buildbot</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jsbell</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>817881</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 11:02:39 -0800</bug_when>
    <thetext>Static size inference for JavaScript objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818015</commentid>
    <comment_count>1</comment_count>
      <attachid>185041</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 13:02:29 -0800</bug_when>
    <thetext>Created attachment 185041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818024</commentid>
    <comment_count>2</comment_count>
      <attachid>185041</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-28 13:11:38 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

Attachment 185041 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16165688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818025</commentid>
    <comment_count>3</comment_count>
      <attachid>185041</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-28 13:12:11 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

Attachment 185041 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16165687</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818028</commentid>
    <comment_count>4</comment_count>
      <attachid>185041</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-28 13:16:09 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:128
&gt; +        (JSC::DFG::AbstractState::execute): Upated for rename.

Typo &quot;Upated&quot;

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:757
&gt; +UnlinkedValueProfile BytecodeGenerator::emitProfiledOpcode(int dst, OpcodeID opcodeID)
&gt;  {
&gt; +    m_staticPropertyAnalyzer.kill(dst);

Seems like it would be good to change the name of emitProfiledOpcode, since it does things to staticPropertyAnalyzer now.  Not sure what a good name would be.

&gt; Source/JavaScriptCore/bytecompiler/StaticPropertyAnalyzer.h:38
&gt; +// Used for flow-insensitive static analysis of the number of properties assigned to an object.
&gt; +class StaticPropertyAnalyzer {
&gt; +public:
&gt; +    StaticPropertyAnalyzer(Vector&lt;UnlinkedInstruction&gt;*);
&gt; +

Is it the case that this analysis can be wrong, and even if it is, the program will execute &quot;correctly&quot; albeit possibly less efficiently?

If so, then you should add a comment about this.  It&apos;s useful to be able to remember which analyses have to be sound at any cost (DFG::AbstractState) and which can be wrong (this one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818043</commentid>
    <comment_count>5</comment_count>
      <attachid>185041</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 13:28:47 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

Attachment 185041 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16155740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818088</commentid>
    <comment_count>6</comment_count>
      <attachid>185041</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 14:13:14 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

Attachment 185041 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16180219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818150</commentid>
    <comment_count>7</comment_count>
      <attachid>185041</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-28 14:59:36 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

Attachment 185041 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16180241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818293</commentid>
    <comment_count>8</comment_count>
      <attachid>185041</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 17:10:33 -0800</bug_when>
    <thetext>Comment on attachment 185041
Patch

Attachment 185041 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16184074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818317</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 17:47:23 -0800</bug_when>
    <thetext>&gt; Typo &quot;Upated&quot;

Fixed.

&gt; Seems like it would be good to change the name of emitProfiledOpcode, since it does things to staticPropertyAnalyzer now.  Not sure what a good name would be.

This convinced me that I should just use a separate helper function instead. The fact that it corresponds to place where we call emitProfiledOpcode is just a coincidence, I guess.

&gt; Is it the case that this analysis can be wrong, and even if it is, the program will execute &quot;correctly&quot; albeit possibly less efficiently?

Yes.

&gt; If so, then you should add a comment about this.

Okeedokee.

Looking at the EWS failures now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818323</commentid>
    <comment_count>10</comment_count>
      <attachid>185119</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 17:55:50 -0800</bug_when>
    <thetext>Created attachment 185119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818353</commentid>
    <comment_count>11</comment_count>
      <attachid>185119</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 18:23:20 -0800</bug_when>
    <thetext>Comment on attachment 185119
Patch

Attachment 185119 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16182227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818413</commentid>
    <comment_count>12</comment_count>
      <attachid>185134</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 19:47:27 -0800</bug_when>
    <thetext>Created attachment 185134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818467</commentid>
    <comment_count>13</comment_count>
      <attachid>185134</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 21:19:49 -0800</bug_when>
    <thetext>Comment on attachment 185134
Patch

Attachment 185134 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16156963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818485</commentid>
    <comment_count>14</comment_count>
      <attachid>185149</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 21:35:58 -0800</bug_when>
    <thetext>Created attachment 185149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818499</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-28 21:49:24 -0800</bug_when>
    <thetext>Committed r141050: &lt;http://trac.webkit.org/changeset/141050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819286</commentid>
    <comment_count>16</comment_count>
      <attachid>185149</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-29 13:33:49 -0800</bug_when>
    <thetext>Comment on attachment 185149
Patch

Phil Pizlo reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819288</commentid>
    <comment_count>17</comment_count>
      <attachid>185298</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-29 13:34:14 -0800</bug_when>
    <thetext>Created attachment 185298
Benchmark results</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185041</attachid>
            <date>2013-01-28 13:02:29 -0800</date>
            <delta_ts>2013-01-28 17:55:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108093-20130128125916.patch</filename>
            <type>text/plain</type>
            <size>154132</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBA
QAorMjAxMy0wMS0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN0YXRpYyBzaXplIGluZmVyZW5jZSBmb3IgSmF2YVNjcmlwdCBvYmplY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwOTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUub3JkZXI6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUGF5IHRoZSB0YXggbWFuLgorCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBvcF9uZXdfb2JqZWN0IGFuZCBvcF9jcmVhdGVfdGhpcyBub3cKKyAg
ICAgICAgaGF2ZSBhbiBleHRyYSBpbmZlcnJlZElubGluZUNhcGFjaXR5IGFyZ3VtZW50LiBUaGlz
IGlzIHRoZSBzdGF0aWNhbGx5CisgICAgICAgIGluZmVycmVkIGlubGluZSBjYXBhY2l0eSwganVz
dCBmcm9tIGFuYWx5emluZyBzb3VyY2UgdGV4dC4gb3BfbmV3X29iamVjdAorICAgICAgICBhbHNv
IGdldHMgYSBwb2ludGVyIHRvIGFuIGFsbG9jYXRpb24gcHJvZmlsZS4gKEZvciBvcF9jcmVhdGVf
dGhpcywgdGhlCisgICAgICAgIHByb2ZpbGUgaXMgaW4gdGhlIGNvbnN0cnV0b3IgZnVuY3Rpb24u
KQorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogTGluayBvcF9uZXdfb2Jq
ZWN0LgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
ZW5jZXMpOiBNYXJrIG91ciBwcm9maWxlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoQ29kZUJsb2NrKTogUmVtb3ZlZCBzb21lIGRlYWQgY29kZS4gQWRkZWQg
b2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVj
dGlvbi5oOgorICAgICAgICAoSlNDKTogTmV3IHVuaW9uIHR5cGUsIHNpbmNlIGFuIGluc3RydWN0
aW9uIG9wZXJhbmQgbWF5IHBvaW50IHRvIGFuCisgICAgICAgIG9iamVjdCBhbGxvY2F0aW9uIHBy
b2ZpbGUgbm93LgorCisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmlubGluZUNhcGFjaXR5
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmNsZWFyKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQpOiBOZXcgY2xhc3MKKyAgICAgICAgZm9yIHRyYWNraW5nIGEgcHJlZGljdGlvbiBhYm91
dCBvYmplY3QgYWxsb2NhdGlvbjogc3RydWN0dXJlLCBpbmxpbmUKKyAgICAgICAgY2FwYWNpdHks
IGFsbG9jYXRvciB0byB1c2UuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOiBVcGRhdGVkIGluc3RydWN0
aW9uIHNpemVzLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZXMpOgorICAgICAgICAoVW5saW5rZWRDb2RlQmxvY2spOiBVbmxpbmtlZCBzdXBw
b3J0IGZvciBhbGxvY2F0aW9uIHByb2ZpbGVzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKTogS2lsbCBhbGwgcmVtYWluaW5nIGFuYWx5c2VzIGF0IHRoZQorICAgICAgICBlbmQg
b2YgY29kZWdlbiwgc2luY2UgdGhpcyBpcyBvdXIgbGFzdCBvcHBvcnR1bml0eS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOiBBZGRlZCBhIHN0
YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciB0byBieXRlY29kZSBnZW5lcmF0aW9uLiBJ
dCB0cmFja3MgaW5pdGlhbGl6aW5nIGFzc2lnbm1lbnRzIGFuZAorICAgICAgICBtYWtlcyBhIGd1
ZXNzIGFib3V0IGhvdyBtYW55IHdpbGwgaGFwcGVuLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZXR0
ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3Vt
ZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFs
KTogQWRkZWQgaG9va3MgdG8gdGhlIHN0YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciwg
c28gaXQgY2FuIG9ic2VydmUgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOiBGYWN0b3JlZCB0aGlzIGludG8g
YSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24gYmVjYXVzZSBpdCB3YXMgYSBzaWduaWZpY2FudCBh
bW91bnQgb2YgbG9naWMsIGFuZCBJIHdhbnRlZCB0bworICAgICAgICBhZGQgdG8gaXQuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KTogQWRkZWQgYSBob29rIHRvIHByb2ZpbGVkIG9w
Y29kZXMKKyAgICAgICAgdG8gdHJhY2sgdGhlaXIgc3RvcmVzLCBpbiBjYXNlIGEgc3RvcmUga2ls
bHMgYSBwcm9maWxlZCBhbGxvY2F0aW9uLiBTaW5jZQorICAgICAgICBwcm9maWxlZCBvcGNvZGVz
IGFyZSBiYXNpY2FsbHkgdGhlIG9ubHkgaW50ZXJlc3Rpbmcgc3RvcmVzIHdlIGRvLCB0aGlzCisg
ICAgICAgIGlzIGEgY29udmVuaWVudCBwbGFjZSB0byBub3RpY2UgYW55IHN0b3JlIHRoYXQgbWln
aHQga2lsbCBhbiBhbGxvY2F0aW9uLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6IEFzIGFib3ZlLgorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoU3RhdGljUHJvcGVydHlBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0
YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmFkZFByb3BlcnR5SW5kZXgpOgorICAgICAgICAoSlNDOjpT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzOjpwcm9wZXJ0eUluZGV4Q291bnQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKTogU2ltcGxlIGhlbHBlcgor
ICAgICAgICBjbGFzcyBmb3IgdHJhY2tpbmcgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAg
ICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6IEFkZGVkLgorICAg
ICAgICAoU3RhdGljUHJvcGVydHlBbmFseXplcik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXI6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJv
cGVydHlBbmFseXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlB
bmFseXplcjo6cHV0QnlJZCk6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6
Om1vdik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmtpbGwpOiBIZWxw
ZXIgY2xhc3MgZm9yIG9ic2VydmluZyBhbGxvY2F0aW9ucworICAgICAgICBhbmQgc3RvcmVzIGFu
ZCBtYWtpbmcgYW4gaW5saW5lIGNhcGFjaXR5IGd1ZXNzLiBUaGUgaGV1cmlzdGljcyBoZXJlIGFy
ZQorICAgICAgICBpbnRlbnRpb25hbGx5IG1pbmltYWwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRo
aXMgb25lIGNsYXNzIHRvIHRyeSB0bworICAgICAgICByZS1jcmVhdGUgc29tZXRoaW5nIGxpa2Ug
YSBERkcgb3IgYSBydW50aW1lIGFuYWx5c2lzLiBJZiB3ZSBkaXNjb3ZlciB0aGF0CisgICAgICAg
IHdlIG5lZWQgdGhvc2Uga2luZHMgb2YgYW5hbHlzZXMsIHdlIHNob3VsZCBqdXN0IHJlcGxhY2Ug
dGhpcyBjbGFzcyB3aXRoCisgICAgICAgIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIFRoaXMg
Y2xhc3MgdHJhY2tzIG11bHRpcGxlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoZSBzYW1lIG9iamVj
dCAtLSB0aGF0CisgICAgICAgIGhhcHBlbnMgYSBsb3QsIHdoZW4gbW92aW5nIGxvY2FscyBpbnRv
IHRlbXBvcmFyeSByZWdpc3RlcnMgLS0gYnV0IGl0CisgICAgICAgIGRvZXNuJ3QgdHJhY2sgY29u
dHJvbCBmbG93IG9yIG11bHRpcGxlIG9iamVjdHMgdGhhdCBhbGlhcyB0aGUgc2FtZSByZWdpc3Rl
ci4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKTogVXBhdGVkIGZvciByZW5hbWUuCisKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKTogVXBkYXRlZCBmb3IgaW5saW5lIGNhcGFjaXR5IGFuZAor
ICAgICAgICBhbGxvY2F0aW9uIHByb2ZpbGUuCisKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lubGluZUNhcGFjaXR5KToKKyAgICAgICAgKE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlubGluZUNhcGFjaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNGdW5jdGlvbik6IEdpdmUgdGhlIGdyYXBoIGEgZ29vZCB3YXkg
dG8gcmVwcmVzZW50CisgICAgICAgIGlubGluZSBjYXBhY2l0eSBmb3IgYW4gYWxsb2NhdGlvbi4K
KworICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKTogVXBkYXRlZCBm
b3IgcmVuYW1lLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOiBVcGRhdGVkIGZv
ciBpbnRlcmZhY2UgY2hhbmdlLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDogV2Ug
cGFzcyB0aGUgaW5saW5lIGNhcGFjaXR5IHRvIHRoZSBzbG93IGNhc2UgYXMKKyAgICAgICAgYW4g
YXJndW1lbnQuIFRoaXMgaXMgdGhlIHNpbXBsZXN0IHdheSwgc2luY2UgaXQncyBzdG9yZWQgYXMg
YSBieXRlY29kZSBvcGVyYW5kLgorCisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAgICAgICogZGZnL0RG
R1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNhY2hlR2V0QnlJRCk6IEZpeGVk
IGEgaG9ycmlibGUgb2ZmLWJ5LW9uZS1oYWxmIGJ1ZyB0aGF0IG9ubHkKKyAgICAgICAgYXBwZWFy
cyB3aGVuIGRvaW5nIGFuIGlubGluZSBjYWNoZWQgbG9hZCBmb3IgcHJvcGVydHkgbnVtYmVyIDY0
IG9uIGEgMzItYml0CisgICAgICAgIHN5c3RlbS4gSW4gSlNWQUxVRTMyXzY0IGxhbmQsICJvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UiIGlzIHRoZQorICAgICAgICBvZmZzZXQgb2YgdGhl
IDY0Yml0IEpTVmFsdWUgLS0gYnV0IHdlJ2xsIGFjdHVhbGx5IGlzc3VlIHR3byBsb2Fkcywgb25l
IGZvcgorICAgICAgICB0aGUgcGF5bG9hZCBhdCB0aGF0IG9mZnNldCwgYW5kIG9uZSBmb3IgdGhl
IHRhZyBhdCB0aGF0IG9mZnNldCArIDQuIFdlIG5lZWQKKyAgICAgICAgdG8gZW5zdXJlIHRoYXQg
Ym90aCBsb2FkcyBoYXZlIGEgY29tcGFjdCByZXByZXNlbnRhdGlvbiwgb3Igd2UnbGwgY29ycnVw
dAorICAgICAgICB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLgorCisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlSlNBcnJheSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UpOgor
ICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0QWxsb2NhdGVKU09iamVjdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOiBMb3RzIG9mIHJlZmFjdG9yaW5nIHRvIHN1
cHBvcnQKKyAgICAgICAgcGFzc2luZyBhbiBhbGxvY2F0b3IgdG8gb3VyIGFsbG9jYXRpb24gZnVu
Y3Rpb24sIGFuZC9vciBwYXNzaW5nIGEgU3RydWN0dXJlCisgICAgICAgIGFzIGEgcmVnaXN0ZXIg
aW5zdGVhZCBvZiBhbiBpbW1lZGlhdGUuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRv
ci5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKE1hcmtlZEFsbG9jYXRvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQpOiBBZGRlZCBhbiBh
Y2Nlc3NvciB0byBzaW1wbGlmeQorICAgICAgICBKSVQgY29kZSBnZW5lcmF0aW9uIG9mIGFsbG9j
YXRpb24gZnJvbSBhbiBhcmJpdHJhcnkgYWxsb2NhdG9yLgorCisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU09iamVjdCk6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29i
amVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRl
X3RoaXMpOiBTYW1lIHJlZmFjdG9yaW5nIGFzIGRvbmUgZm9yIHRoZSBERkcuCisKKyAgICAgICAg
KiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOiBGaXhl
ZCB0aGUgc2FtZSBidWcgbWVudGlvbmVkIGFib3ZlLgorCisgICAgICAgIChKU0M6OkRFRklORV9T
VFVCX0ZVTkNUSU9OKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCisKKyAgICAgICAg
KiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9y
bUFzc2VydGlvbnMpOiBVcGRhdGVkIGZvciBpbnRlcmZhY2UgY2hhbmdlcy4KKworICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206IFNhbWUgcmVmYWN0b3JpbmcgYXMgZm9y
IHRoZSBKSVRzLgorCisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZS5jcHA6Cisg
ICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMuY3BwOgorICAgICAgICAqIHByb2Zp
bGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVy
Q29tcGlsZWRCeXRlY29kZS5jcHA6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFz
ZS5jcHA6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmNwcDoKKyAgICAgICAg
KiBwcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHA6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmls
ZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHA6IEluY2x1ZGUgT2JqZWN0Q29uc3RydWN0b3IuaAorICAg
ICAgICBiZWNhdXNlIHRoYXQncyB3aGVyZSBjcmVhdGVFbXB0eU9iamVjdCgpIGxpdmVzIG5vdy4K
KworICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpKU0Z1bmN0aW9uKTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAgICAgICogcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmFsbG9jYXRlQ2VsbCk6IFVwZGF0ZWQg
dG8gbWF0Y2ggdGhlIGFsbG9jYXRvciBzZWxlY3Rpb24gY29kZSBpbgorICAgICAgICB0aGUgSklU
LCBzbyBpdCdzIGNsZWFyZXIgdGhhdCBib3RoIGFyZSBjb3JyZWN0LgorCisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxvY2F0aW9uUHJvZmlsZSk6CisgICAgICAg
IChKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6dHJ5R2V0QWxsb2NhdGlv
blByb2ZpbGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphZGRBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQpOiBDaGFuZ2VkIGluaGVyaXRvcklECisgICAgICAgIGRhdGEgbWVtYmVyIHRv
IGJlIGFuIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCB3aGljaCBpbmNsdWRlcyBhIHBvaW50ZXIK
KyAgICAgICAgdG8gdGhlIGRlc2lyZWQgYWxsb2NhdG9yLiBUaGlzIHNpbXBsaWZpZXMgSklUIGNv
ZGUsIHNpbmNlIHdlIGRvbid0IGhhdmUKKyAgICAgICAgdG8gY29tcHV0ZSB0aGUgYWxsb2NhdG9y
IG9uIHRoZSBmbHkuIEkgdmVyaWZpZWQgYnkgY29kZSBpbnNwZWN0aW9uIHRoYXQKKyAgICAgICAg
SlNGdW5jdGlvbiBpcyBzdGlsbCBvbmx5IDY0IGJ5dGVzLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRlU3RydWN0dXJlKTogTm8gZGlyZWN0IHBv
aW50ZXIgdG8gdGhlIGVtcHR5CisgICAgICAgIG9iamVjdCBzdHJ1Y3R1cmUgYW55bW9yZSwgYmVj
YXVzZSBub3cgY2xpZW50cyBuZWVkIHRvIHNwZWNpZnkgaG93IG11Y2gKKyAgICAgICAgaW5saW5l
IGNhcGFjaXR5IHRoZXkgd2FudC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5s
aW5lQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBh
Y2l0eSk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6IEEg
bGl0dGxlIHJlZmFjdG9yaW5nIHRvIHRyeSB0byAKKyAgICAgICAgY2xhcmlmeSB3aGVyZSBzb21l
IG9mIHRoZXNlIGNvbnN0YW50cyBkZXJpdmUgZnJvbS4KKworICAgICAgICAoSlNDOjptYXhPZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2UpOiBVc2VkIGZvciBidWcgZml4LCBhYm92ZS4KKwor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnNl
dFRhcmdldCk6IFVnbHksIGJ1dCBlZmZlY3RpdmUuCisKKyAgICAgICAgKiBydW50aW1lL0xpdGVy
YWxQYXJzZXIuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RPYmplY3QpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
aXRoT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsT2JqZWN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6IFVwZGF0ZWQgZm9y
IGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCk6IENsYXJpZmllZCB5b3Vy
IG9wdGlvbnMgZm9yIGhvdyB0byBhbGxvY2F0ZQorICAgICAgICBhbiBlbXB0eSBvYmplY3QsIHRv
IGVtcGhhc2l6ZSB3aGF0IHRoaW5ncyBjYW4gYWN0dWFsbHkgdmFyeS4KKworICAgICAgICAqIHJ1
bnRpbWUvUHJvcGVydHlPZmZzZXQuaDogVGhlc2UgY29uc3RhbnRzIGhhdmUgbW92ZWQgYmVjYXVz
ZSB0aGV5J3JlCisgICAgICAgIHJlYWxseSBoaWdoZXIgbGV2ZWwgY29uY2VwdHMgdG8gZG8gd2l0
aCB0aGUgbGF5b3V0IG9mIG9iamVjdHMgYW5kIHRoZQorICAgICAgICBjb2xsZWN0b3IuIFByb3Bl
cnR5T2Zmc2V0IGlzIGp1c3QgYW4gYWJzdHJhY3QgbnVtYmVyIGxpbmUsIGluZGVwZW5kZW50Cisg
ICAgICAgIG9mIHRob3NlIHRoaW5ncy4KKworICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvdG90eXBlTWFwOjplbXB0eU9iamVjdFN0cnVjdHVyZUZv
clByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlByb3RvdHlwZU1hcDo6Y2xlYXJFbXB0eU9iamVj
dFN0cnVjdHVyZUZvclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Qcm90b3R5cGVNYXAu
aDoKKyAgICAgICAgKFByb3RvdHlwZU1hcCk6IFRoZSBtYXAga2V5IGlzIG5vdyBhIHBhaXIgb2Yg
cHJvdG90eXBlIGFuZCBpbmxpbmUgY2FwYWNpdHksCisgICAgICAgIHNpbmNlIFN0cnVjdHVyZSBl
bmNvZGVzIGlubGluZSBjYXBhY2l0eS4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXApOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bm9u
UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjb3B5UHJvcGVy
dHlUYWJsZUZvclBpbm5pbmcpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRvdGFsU3RvcmFnZVNp
emUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRyYW5zaXRpb25Db3VudCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKTogRml4ZWQgYSBuYXN0eSByZWZhY3RvcmluZyBidWcg
dGhhdCBvbmx5IHNob3dzCisgICAgICAgIHVwIGFmdGVyIGVuYWJsaW5nIHZhcmlhYmxlLXNpemVk
IGlubGluZSBjYXBhY2l0aWVzOiB3ZSB3ZXJlIHBhc3Npbmcgb3VyCisgICAgICAgIHR5cGUgaW5m
byB3aGVyZSBvdXIgaW5saW5lIGNhcGFjaXR5IHdhcyBleHBlY3RlZC4gVGhlIGNvbXBpbGVyIGRp
ZG4ndAorICAgICAgICBub3RpY2UgYmVjYXVzZSBib3RoIGhhdmUgdHlwZSBpbnQgOiguCisKIDIw
MTMtMDEtMjggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2xlYW51cCBBUk0gdmVyc2lvbiBvZiBkZWJ1Z05hbWUoKSBpbiBERkdGUFJJbmZvLmgKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgkod29y
a2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw2IEBAIF9fWk4zSlNDMTZOYXRpdmVFeGVjdXRhYmxl
NmNyZWF0ZUVSTlNfMTIKIF9fWk4zSlNDOEpTT2JqZWN0MzRwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uRVBOU185RXhlY1N0YXRlRVBOU18xMEpTRnVuY3Rpb25FagogX19aTjNKU0Mx
MEpTRnVuY3Rpb240bmFtZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTVPYmplY3RQcm90b3R5
cGVDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUK
LV9fWk4zSlNDOEpTT2JqZWN0MTdjcmVhdGVJbmhlcml0b3JJREVSTlNfMTJKU0dsb2JhbERhdGFF
CiBfX1pOM0pTQzE0QXJyYXlQcm90b3R5cGVDMUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0
cnVjdHVyZUUKIF9fWk4zSlNDN0pTQXJyYXlDMkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1
Y3R1cmVFCiBfX1pOM0pTQzE1U3RyaW5nUHJvdG90eXBlQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0
SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJKU1JldGFpblB0ci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZVJlZi5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw4
ICs0NTksMTEgQEAKIAkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRDVBMkIw
QTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovOyB9OwogCQkxNEJGQ0U2OTEwQ0RC
MUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRDNTI0
MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklUU3R1
YnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkx
NENBOTU4QjE2QUI1MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDQTk1OEExNkFCNTBE
RTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNENBOTU4RDE2QUI1MEZBMDA5MzhBMDYg
LyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0Q0E5NThDMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0RDJGM0RBMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQyRjNEODEzOUY0
QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwICovOyB9OwogCQkxNEQyRjNEQjEzOUY0QkUy
MDA0OTEwMzEgLyogTWFya2VkU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0REYw
NERBMTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERGMDREOTE2QjM5OTZEMDAx
NkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0RTg0RjlFMTRFRTFBQ0MwMEQ2RDVENCAvKiBX
ZWFrQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTRFODRGOTkxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgKi87IH07CiAJCTE0
RTg0RjlGMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTg0RjlBMTRFRTFBQ0MwMEQ2RDVENCAvKiBX
ZWFrQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5QjE0RUUxQUNDMDBENkQ1
RDQgLyogV2Vha1NldC5jcHAgKi87IH07CkBAIC03MzEsNyArNzM0LDcgQEAKIAkJQkMxOEM0NDIw
RTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwRTYwRTE2RDUyMzAwQTA2RTky
IC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OwogCQlCQzE4QzQ0MzBFMTZGNUNEMDBC
MzQ0NjAgLyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjkyQTg3MTAyNTU1OTdEMDFGRjYwRjcgLyogTnVtYmVyT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0
NDQwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzUwRTE2RDRFOTAwQTA2RTkyIC8q
IE51bWJlclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUJDMThDNDQ1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPYmplY3RDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgw
QzcwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmggKi87IH07CisJCUJDMThD
NDQ1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPYmplY3RDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzcwRTE2RDRFOTAwQTA2RTky
IC8qIE9iamVjdENvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NDYwRTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
NjgwQzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDQ4MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNjkyQTg3ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDRCMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwpAQCAtMTI3OCw2ICsxMjgxLDggQEAK
IAkJMTRCRDVBMkIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVSZWYuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gdGVzdGFwaS5jOyBwYXRoID0gQVBJL3Rl
c3RzL3Rlc3RhcGkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENE
QjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWFrR0NNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDQTk1OEEx
NkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUHJvcGVydHlBbmFseXplci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNENBOTU4QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREMkYz
RDgxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtlZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBKU1N0YWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEyODcsNiArMTI5Miw3IEBACiAJCTE0REE4MThFMEQ5OUZEMjAwMEIw
QTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBY3RpdmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0REE4MThGMEQ5
OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBY3RpdmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRERjA0RDkxNkIzOTk2RDAwMTZBNTEzIC8qIFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhdGljUHJvcGVydHlBbmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NEU4NEY5OTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0RTg0RjlBMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0RTg0RjlCMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjIzMCw2ICsyMjM2LDggQEAKIAkJCQk5NjAwOTdBNTBFQkFC
QjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovLAogCQkJCTY1NUVCMjlBMTBDRTI1ODEwMDFB
OTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovLAogCQkJCTk2OUEwNzI4MEVEMUNFNjkwMEYxRjY4
MSAvKiBSZWdpc3RlcklELmggKi8sCisJCQkJMTRERjA0RDkxNkIzOTk2RDAwMTZBNTEzIC8qIFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCAqLywKKwkJCQkxNENBOTU4QTE2QUI1MERFMDA5MzhBMDYg
LyogU3RhdGljUHJvcGVydHlBbmFseXplci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29t
cGlsZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjc2NSw5ICsyNzczLDggQEAK
IAkJCQkwRkIxMDU4MzE2NzU0ODBDMDBGOEFCNkUgLyogRXhpdEtpbmQuaCAqLywKIAkJCQkwRjBC
ODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAogCQkJCTBG
OTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKLQkJCQkwRjkz
MzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCi0JCQkJMEY5MzMy
OTYxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5NjE0
Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oICovLAorCQkJCTBGOTMzMjk1MTRDQTdE
QzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKIAkJCQkwRjBCODNBODE0QkNGNTVF
MDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLywKIAkJCQk5NjlBMDc5MzBFRDFEM0FFMDBGMUY2
ODEgLyogSW5zdHJ1Y3Rpb24uaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyog
SnVtcFRhYmxlLmNwcCAqLywKQEAgLTI3NzgsMTUgKzI3ODUsMTYgQEAKIAkJCQkwRjBGQzQ1ODE0
QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRkI1NDY3QzE0
RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgKi8sCiAJ
CQkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaCAqLywKKwkJCQkxNENBOTU4QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaCAqLywKIAkJCQk5NjlBMDc5NDBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNw
cCAqLywKIAkJCQk5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi8sCiAJCQkJ
MEYyQkRDMkIxNTFGREU4QjAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggKi8sCiAJCQkJMEY5RkM4QkYx
NEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwICovLAogCQkJCTBG
OUZDOEMwMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8sCiAJ
CQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovLAotCQkJ
CTBGOTMzMjk5MTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCAqLywKLQkJCQkw
RjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAorCQkJCTBGOTMz
Mjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOUEx
NENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKKwkJCQkwRjkzMzI5OTE0Q0E3
REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKQEAgLTI4MDAsNyArMjgwOCw3IEBACiAJCQkJMEZE
ODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4
MkU0RjE0MURBRUExMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRjkzMzI5
QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCi0JCQkJMEY5MzMyOUIxNENB
N0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovLAorCQkJCTBGOTMzMjlBMTRDQTdEQzEw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY3NjZEMzYxNUFFNEExQTAwOEYz
NjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovLAogCQkJCTBGNzY2
RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmgg
Ki8sCiAJCQkJQkNDRjBEMEIwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNw
cCAqLywKQEAgLTI4MTIsNiArMjgyMCw3IEBACiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhG
IC8qIFZpcnR1YWxSZWdpc3Rlci5oICovLAogCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAv
KiBXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0
Y2hwb2ludC5oICovLAorCQkJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVT
ZXQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMzI4MSw2ICszMjkwLDkgQEAKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZF
N0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTc0OTcxMTY4
N0FERTQwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0
QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxNENBOTU4QjE2QUI1MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTRDQTk1OEQxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNERGMDREQTE2QjM5OTZEMDAxNkE1
MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc1NSw3ICs3NTUsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKFByaW50U3RyZWFtCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjcmVhdGVfdGhp
cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZmVycmVk
SW5saW5lQ2FwYWNpdHkgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIlslNGRdIGNyZWF0ZV90aGlzICVzLCAlcywgJXUiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpbmZlcnJl
ZElubGluZUNhcGFjaXR5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfY29udmVydF90aGlzOiB7CkBAIC03NjYsNyArNzY3LDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
bmV3X29iamVjdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXMiLCBsb2NhdGlvbiwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgdW5zaWduZWQgaW5m
ZXJyZWRJbmxpbmVDYXBhY2l0eSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgb3V0
LnByaW50ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzLCAldSIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSk7CisgICAgICAgICAg
ICArK2l0OyAvLyBTa2lwIG9iamVjdCBhbGxvY2F0aW9uIHByb2ZpbGUuCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewpAQCAtMTgxMiw2
ICsxODE1LDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAg
IGlmIChzaXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlZhbHVlUHJvZmls
ZXMoKSkKICAgICAgICAgbV92YWx1ZVByb2ZpbGVzLmdyb3coc2l6ZSk7CiAjZW5kaWYKKyAgICBp
ZiAoc2l6ZV90IHNpemUgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZXMoKSkKKyAgICAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXMuZ3Jvdyhz
aXplKTsKICAgICBpZiAoc2l6ZV90IHNpemUgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZS
ZXNvbHZlT3BlcmF0aW9ucygpKQogICAgICAgICBtX3Jlc29sdmVPcGVyYXRpb25zLmdyb3coc2l6
ZSk7CiAgICAgc2l6ZV90IHB1dFRvQmFzZUNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mUHV0VG9CYXNlT3BlcmF0aW9ucygpOwpAQCAtMTg3Myw2ICsxODc4LDE3IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgfQogI2VuZGlmCiAKKyAg
ICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CisgICAgICAgICAgICBpbnQgb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVJbmRleCA9IHBjW2kgKyBvcExlbmd0aCAtIDFdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSA9
ICZtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlc1tvYmplY3RBbGxvY2F0aW9uUHJvZmlsZUluZGV4
XTsKKyAgICAgICAgICAgIGludCBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gcGNbaSArIG9wTGVu
Z3RoIC0gMl0udS5vcGVyYW5kOworCisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVu
Z3RoIC0gMV0gPSBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgICAgIG9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLT5pbml0aWFsaXplKCpnbG9iYWxEYXRhKCksCisgICAgICAgICAgICAg
ICAgbV9vd25lckV4ZWN1dGFibGUuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSwgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6
IHsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIzOTAsNiArMjQwNiw4IEBAIHZvaWQgQ29kZUJs
b2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
ZnVuY3Rpb25FeHByc1tpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9u
RGVjbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVj
bHNbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29iamVjdEFsbG9jYXRpb25Q
cm9maWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXNb
aV0udmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAKICAgICB1cGRhdGVBbGxQcmVkaWN0aW9ucyhD
b2xsZWN0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkV4ZWN1dGlvbkNvdW50ZXIuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgi
CiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKQEAgLTc4NywxMyArNzg4LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KICAgICAgICAgQXJyYXlQcm9maWxlKiBnZXRBcnJheVByb2ZpbGUodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBBcnJheVByb2ZpbGUqIGdldE9yQWRkQXJyYXlQ
cm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgCi0gICAgICAgIHVuc2ln
bmVkIG51bWJlck9mQXJyYXlBbGxvY2F0aW9uUHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2Fy
cmF5QWxsb2NhdGlvblByb2ZpbGVzLnNpemUoKTsgfQotICAgICAgICBBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiBhZGRBcnJheUFsbG9jYXRpb25Qcm9maWxlKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlcy5hcHBlbmQoQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAmbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlcy5sYXN0
KCk7Ci0gICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBoYW5kbGluZyBz
dXBwb3J0CkBAIC0xMzE0LDYgKzEzMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2Vn
bWVudGVkVmVjdG9yPEFycmF5QWxsb2NhdGlvblByb2ZpbGUsIDg+IG1fYXJyYXlBbGxvY2F0aW9u
UHJvZmlsZXM7CiAgICAgICAgIEFycmF5UHJvZmlsZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CiAj
ZW5kaWYKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCA4
PiBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlczsKIAogICAgICAgICAvLyBDb25zdGFudCBQb29s
CiAgICAgICAgIFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgY2xhc3MgQXJyYXlQcm9maWxlOwogICAgIGNsYXNz
IEpTQ2VsbDsKKyAgICBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICBjbGFzcyBT
dHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CiAgICAgc3RydWN0IExMSW50Q2Fs
bExpbmtJbmZvOwpAQCAtMjE1LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwogICAgICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGU7CiAgICAgICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBhcnJheUFsbG9j
YXRpb25Qcm9maWxlOworICAgICAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIG9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAg
ICAgIGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVfaAorI2RlZmluZSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZV9o
CisKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgi
CisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9y
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2Fs
bG9jYXRvcik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX3N0cnVjdHVy
ZSk7IH0KKworICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKKyAgICAgICAgOiBtX2FsbG9j
YXRvcigwKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX2Fs
bG9jYXRvcjsgfQorCisgICAgdm9pZCBpbml0aWFsaXplKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5mZXJyZWRJ
bmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAg
ICAgICBBU1NFUlQoIW1fc3RydWN0dXJlKTsKKworICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBh
Y2l0eSA9IDA7CisgICAgICAgIGlmIChpbmZlcnJlZElubGluZUNhcGFjaXR5IDwgSlNGaW5hbE9i
amVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgIC8vIFRyeSB0byBz
aHJpbmsgdGhlIG9iamVjdCBiYXNlZCBvbiBzdGF0aWMgYW5hbHlzaXMuCisgICAgICAgICAgICBp
bmZlcnJlZElubGluZUNhcGFjaXR5ICs9IHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlKTsKKworICAgICAgICAgICAgaWYgKCFpbmZlcnJlZElubGluZUNh
cGFjaXR5KSB7CisgICAgICAgICAgICAgICAgLy8gRW1wdHkgb2JqZWN0cyBhcmUgcmFyZSwgc28g
bW9zdCBsaWtlbHkgdGhlIHN0YXRpYyBhbmFseXplciBqdXN0IGRpZG4ndAorICAgICAgICAgICAg
ICAgIC8vIHNlZSB0aGUgcmVhbCBpbml0aWFsaXplciBmdW5jdGlvbi4gVGhpcyBjYW4gaGFwcGVu
IHdpdGggaGVscGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBpbmZlcnJlZElubGluZUNh
cGFjaXR5ID0gSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGluZmVycmVkSW5saW5lQ2FwYWNpdHkgPiBKU0ZpbmFsT2JqZWN0Ojpk
ZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgcHJv
cGVydGllcyBhcmUgd2VhayBndWVzc2VzLCBzbyBkb24ndCBhbGxvdyB0aGVtIHRvIHR1cm4gYSBz
bWFsbAorICAgICAgICAgICAgICAgIC8vIG9iamVjdCBpbnRvIGEgbGFyZ2Ugb2JqZWN0LgorICAg
ICAgICAgICAgICAgIGluZmVycmVkSW5saW5lQ2FwYWNpdHkgPSBKU0ZpbmFsT2JqZWN0OjpkZWZh
dWx0SW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5saW5l
Q2FwYWNpdHkgPSBpbmZlcnJlZElubGluZUNhcGFjaXR5OworICAgICAgICAgICAgQVNTRVJUKGlu
bGluZUNhcGFjaXR5IDwgSlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2FwYWNpdHkoKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBOb3JtYWwgb3IgbGFyZ2Ugb2JqZWN0LgorICAg
ICAgICAgICAgaW5saW5lQ2FwYWNpdHkgPSBpbmZlcnJlZElubGluZUNhcGFjaXR5OworICAgICAg
ICAgICAgaWYgKGlubGluZUNhcGFjaXR5ID4gSlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2FwYWNp
dHkoKSkKKyAgICAgICAgICAgICAgICBpbmxpbmVDYXBhY2l0eSA9IEpTRmluYWxPYmplY3Q6Om1h
eElubGluZUNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoaW5saW5lQ2Fw
YWNpdHkgPiAwKTsKKyAgICAgICAgQVNTRVJUKGlubGluZUNhcGFjaXR5IDw9IEpTRmluYWxPYmpl
Y3Q6Om1heElubGluZUNhcGFjaXR5KCkpOworCisgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KTsKKyAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRv
ckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKyAgICAgICAgQVNT
RVJUKGFsbG9jYXRvci0+Y2VsbFNpemUoKSk7CisKKyAgICAgICAgLy8gVGFrZSBhZHZhbnRhZ2Ug
b2YgZXh0cmEgaW5saW5lIGNhcGFjaXR5IGF2YWlsYWJsZSBpbiB0aGUgc2l6ZSBjbGFzcy4KKyAg
ICAgICAgc2l6ZV90IHNsb3AgPSAoYWxsb2NhdG9yLT5jZWxsU2l6ZSgpIC0gYWxsb2NhdGlvblNp
emUpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgICAgIGlubGluZUNhcGFj
aXR5ICs9IHNsb3A7CisgICAgICAgIGlmIChpbmxpbmVDYXBhY2l0eSA+IEpTRmluYWxPYmplY3Q6
Om1heElubGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICBpbmxpbmVDYXBhY2l0eSA9IEpTRmlu
YWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCk7CisKKyAgICAgICAgbV9hbGxvY2F0b3IgPSBh
bGxvY2F0b3I7CisgICAgICAgIG1fc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwKKyAg
ICAgICAgICAgIGdsb2JhbERhdGEucHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9y
UHJvdG90eXBlKHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpKTsKKyAgICB9CisKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOyB9CisgICAgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkoKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aW5saW5lQ2FwYWNp
dHkoKTsgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX2FsbG9jYXRvciA9
IDA7CisgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChpc051bGwo
KSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRv
cikKKyAgICB7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgfQor
Citwcml2YXRlOgorCisgICAgdW5zaWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICBpZiAocHJvdG90eXBlID09IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFBy
b3RvdHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgc2l6ZV90IGNvdW50
ID0gMDsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lQXJyYXkoJmdsb2Jh
bERhdGEpOworICAgICAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVz
RnJvbVN0cnVjdHVyZShnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlO
YW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCkt
PnByb3BlcnR5TmFtZVZlY3RvcigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
b3BlcnR5TmFtZVZlY3Rvci5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHByb3RvdHlwZS0+Z2V0RGlyZWN0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZVZlY3Rvcltp
XSk7CisKKyAgICAgICAgICAgIC8vIEZ1bmN0aW9ucyBhcmUgY29tbW9uLCBhbmQgYXJlIHVzdWFs
bHkgY2xhc3MtbGV2ZWwgb2JqZWN0cyB0aGF0IGFyZSBub3Qgb3ZlcnJpZGRlbi4KKyAgICAgICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICsrY291bnQ7CisKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gY291bnQ7CisgICAgfQorCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRv
cjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZvciBnZW5lcmF0ZWQgY29k
ZS4KKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxMSArNDQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9w
X2NyZWF0ZV9hY3RpdmF0aW9uLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX2luaXRfbGF6eV9yZWcs
IDIpIFwKICAgICAgICAgbWFjcm8ob3BfY3JlYXRlX2FyZ3VtZW50cywgMikgXAotICAgICAgICBt
YWNybyhvcF9jcmVhdGVfdGhpcywgMykgXAorICAgICAgICBtYWNybyhvcF9jcmVhdGVfdGhpcywg
NCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfY2FsbGVlLCAzKSBcCiAgICAgICAgIG1hY3JvKG9w
X2NvbnZlcnRfdGhpcywgMykgXAogICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9wX25ld19vYmpl
Y3QsIDIpIFwKKyAgICAgICAgbWFjcm8ob3BfbmV3X29iamVjdCwgNCkgXAogICAgICAgICBtYWNy
byhvcF9uZXdfYXJyYXksIDUpIFwKICAgICAgICAgbWFjcm8ob3BfbmV3X2FycmF5X3dpdGhfc2l6
ZSwgNCkgXAogICAgICAgICBtYWNybyhvcF9uZXdfYXJyYXlfYnVmZmVyLCA1KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBA
QCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soSlNHCiAgICAgLCBtX3B1dFRv
QmFzZU9wZXJhdGlvbkNvdW50KDEpCiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCiAgICAg
LCBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVDb3VudCgwKQorICAgICwgbV9vYmplY3RBbGxvY2F0
aW9uUHJvZmlsZUNvdW50KDApCiAgICAgLCBtX3ZhbHVlUHJvZmlsZUNvdW50KDApCiAgICAgLCBt
X2xsaW50Q2FsbExpbmtJbmZvQ291bnQoMCkKICNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcg
QEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIHR5cGVkZWYgdW5zaWduZWQgVW5s
aW5rZWRWYWx1ZVByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkQXJyYXlQcm9maWxl
OwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGU7Cit0eXBl
ZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVu
c2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7CkBAIC0zOTgsNiArMzk5LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQXJy
YXlQcm9maWxlcygpIHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlQ291bnQ7IH0KICAgICBVbmxpbmtl
ZEFycmF5QWxsb2NhdGlvblByb2ZpbGUgYWRkQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSgpIHsgcmV0
dXJuIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZUNvdW50Kys7IH0KICAgICB1bnNpZ25lZCBudW1i
ZXJPZkFycmF5QWxsb2NhdGlvblByb2ZpbGVzKCkgeyByZXR1cm4gbV9hcnJheUFsbG9jYXRpb25Q
cm9maWxlQ291bnQ7IH0KKyAgICBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIGFkZE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKCkgeyByZXR1cm4gbV9vYmplY3RBbGxvY2F0aW9uUHJvZmls
ZUNvdW50Kys7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxl
cygpIHsgcmV0dXJuIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudDsgfQogICAgIFVubGlu
a2VkVmFsdWVQcm9maWxlIGFkZFZhbHVlUHJvZmlsZSgpIHsgcmV0dXJuIG1fdmFsdWVQcm9maWxl
Q291bnQrKzsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHsgcmV0dXJu
IG1fdmFsdWVQcm9maWxlQ291bnQ7IH0KIApAQCAtNTI1LDYgKzUyOCw3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9wdXRUb0Jhc2VPcGVyYXRpb25Db3VudDsKICAgICB1bnNpZ25lZCBtX2Fy
cmF5UHJvZmlsZUNvdW50OwogICAgIHVuc2lnbmVkIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZUNv
dW50OworICAgIHVuc2lnbmVkIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudDsKICAgICB1
bnNpZ25lZCBtX3ZhbHVlUHJvZmlsZUNvdW50OwogICAgIHVuc2lnbmVkIG1fbGxpbnRDYWxsTGlu
a0luZm9Db3VudDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKAogICAgIG1fY29kZUJsb2NrLT5zZXRUaGlzUmVnaXN0ZXIobV90
aGlzUmVnaXN0ZXIuaW5kZXgoKSk7CiAKICAgICBtX3Njb3BlTm9kZS0+ZW1pdEJ5dGVjb2RlKCp0
aGlzKTsKLSAgICAKKworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5raWxsKCk7CisKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90cnlSYW5nZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgVHJ5UmFuZ2UmIHJhbmdlID0gbV90cnlSYW5nZXNbaV07CiAgICAgICAgIGludCBzdGFy
dCA9IHJhbmdlLnN0YXJ0LT5iaW5kKCk7CkBAIC0yNDQsNiArMjQ2LDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogICAgICwgbV9oYXNDcmVhdGVkQWN0aXZhdGlv
bih0cnVlKQogICAgICwgbV9maXJzdExhenlGdW5jdGlvbigwKQogICAgICwgbV9sYXN0TGF6eUZ1
bmN0aW9uKDApCisgICAgLCBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIoJm1faW5zdHJ1Y3Rpb25z
KQogICAgICwgbV9nbG9iYWxEYXRhKCZnbG9iYWxEYXRhKQogICAgICwgbV9sYXN0T3Bjb2RlSUQo
b3BfZW5kKQogI2lmbmRlZiBOREVCVUcKQEAgLTI5NCw2ICsyOTcsNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgLCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9u
KGZhbHNlKQogICAgICwgbV9maXJzdExhenlGdW5jdGlvbigwKQogICAgICwgbV9sYXN0TGF6eUZ1
bmN0aW9uKDApCisgICAgLCBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIoJm1faW5zdHJ1Y3Rpb25z
KQogICAgICwgbV9nbG9iYWxEYXRhKCZnbG9iYWxEYXRhKQogICAgICwgbV9sYXN0T3Bjb2RlSUQo
b3BfZW5kKQogI2lmbmRlZiBOREVCVUcKQEAgLTQ3NSwxOCArNDc5LDkgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogCiAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSkg
ewogICAgICAgICBwcmVwZW5kQ29tbWVudCgiJ3RoaXMnIGJlY2F1c2Ugd2UgYXJlIGEgQ29uc3Ry
dWN0b3IgZnVuY3Rpb24iKTsKLQotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IG5l
d1RlbXBvcmFyeSgpOyAKLQotICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0g
ZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9jYWxsZWUpOwotICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChw
cm9maWxlKTsKLQotICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCi0gICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCi0gICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgCisgICAgICAgIGVtaXRDcmVh
dGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSAmJiAoZnVuY3Rpb25Cb2R5LT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNl
c0V2YWwoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSkgewotICAgICAgICBVbmxpbmtlZFZh
bHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NvbnZlcnRfdGhpcyk7
CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgb3BfY29udmVydF90aGlzKTsKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgfQpAQCAtNTExLDYgKzUwNiw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0cKICAgICAsIG1faGFzQ3JlYXRl
ZEFjdGl2YXRpb24odHJ1ZSkKICAgICAsIG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKICAgICAsIG1f
bGFzdExhenlGdW5jdGlvbigwKQorICAgICwgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyKCZtX2lu
c3RydWN0aW9ucykKICAgICAsIG1fZ2xvYmFsRGF0YSgmZ2xvYmFsRGF0YSkKICAgICAsIG1fbGFz
dE9wY29kZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCkBAIC03NTEsOCArNzQ3LDE1IEBAIFVu
bGlua2VkQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSBCeXRlY29kZUcKICNlbmRpZgogfQogCi1Vbmxp
bmtlZFZhbHVlUHJvZmlsZSBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKE9w
Y29kZUlEIG9wY29kZUlEKQorVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBCeXRlY29k
ZUdlbmVyYXRvcjo6bmV3T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQoreworICAgIHJldHVybiBt
X2NvZGVCbG9jay0+YWRkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsKK30KKworVW5saW5rZWRW
YWx1ZVByb2ZpbGUgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlZE9wY29kZShpbnQgZHN0
LCBPcGNvZGVJRCBvcGNvZGVJRCkKIHsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIua2ls
bChkc3QpOworCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIFVubGlua2VkVmFsdWVQ
cm9maWxlIHJlc3VsdCA9IG1fY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKICNlbHNlCkBA
IC0xMTExLDYgKzExMTQsOCBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhw
KFJlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKIHsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIu
bW92KGRzdC0+aW5kZXgoKSwgc3JjLT5pbmRleCgpKTsKKwogICAgIGVtaXRPcGNvZGUob3BfbW92
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKQEAgLTEzMzIsNyArMTMzNyw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICBpZiAocmVzb2x2ZVJlc3Vs
dC5pc1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiBlbWl0R2V0TG9jYWxWYXIoZHN0LCByZXNv
bHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAKLSAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmUpOworICAgIFVubGlua2VkVmFsdWVQcm9m
aWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUoZHN0LT5pbmRleCgpLCBvcF9yZXNvbHZl
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZ2V0UmVzb2x2ZU9wZXJhdGlvbnMocHJvcGVydHkpKTsKQEAgLTEzNDQsNyArMTM0
OSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc29sdmVSZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzUmVnaXN0ZXIoKSk7
CiAgICAgLy8gV2UgY2FuJ3Qgb3B0aW1pc2UgYXQgYWxsIDotKAotICAgIFVubGlua2VkVmFsdWVQ
cm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV9iYXNlKTsKKyAg
ICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKGRzdC0+
aW5kZXgoKSwgb3BfcmVzb2x2ZV9iYXNlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVy
dHkpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2UpOwpAQCAtMTM1OCw3ICsxMzYz
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsK
ICAgICAvLyBXZSBjYW4ndCBvcHRpbWlzZSBhdCBhbGwgOi0oCi0gICAgVW5saW5rZWRWYWx1ZVBy
b2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX2Jhc2UpOworICAg
IFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUoZHN0LT5p
bmRleCgpLCBvcF9yZXNvbHZlX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0
eSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOwpAQCAtMTM3Myw3ICsxMzc4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXNvbAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0
aEJhc2VGb3JQdXQoUmVnaXN0ZXJJRCogYmFzZURzdCwgUmVnaXN0ZXJJRCogcHJvcERzdCwgY29u
c3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHksIE5vbmxvY2FsUmVzb2x2ZUluZm8mIHZlcmlmaWVyKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb2x2ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKLSAgICBVbmxpbmtl
ZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmVfd2l0
aF9iYXNlKTsKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVk
T3Bjb2RlKGJhc2VEc3QtPmluZGV4KCksIG9wX3Jlc29sdmVfd2l0aF9iYXNlKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZURzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTM5Myw3ICsxMzk4LDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9
CiAKLSAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KG9wX3Jlc29sdmVfd2l0aF90aGlzKTsKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKGJhc2VEc3QtPmluZGV4KCksIG9wX3Jlc29sdmVfd2l0aF90
aGlzKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZURzdC0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQzMiw3ICsxNDM3LDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeQogewogICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
CiAKLSAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KG9wX2dldF9ieV9pZCk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShkc3QtPmluZGV4KCksIG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJh
c2UtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9w
ZXJ0eSkpOwpAQCAtMTQ1NiwxMSArMTQ2MSwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCiB7CisgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50
KHByb3BlcnR5KTsKKworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2Ut
PmluZGV4KCksIHByb3BlcnR5SW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAogICAgIGVtaXRPcGNv
ZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgo
KSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5SW5kZXgpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKQEAgLTE0ODIsMTEgKzE0OTEsMTUgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogeworICAgIHVuc2ln
bmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CisKKyAgICBtX3N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLT5pbmRleCgpLCBwcm9wZXJ0eUluZGV4KTsK
KwogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7CiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQocHJvcGVydHlJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRl
eCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwpAQCAtMTUwMCw5ICsxNTEzLDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGlyZWMKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdldHRl
clNldHRlcihSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogZ2V0dGVyLCBSZWdpc3RlcklEKiBzZXR0ZXIpCiB7CisgICAgdW5zaWduZWQgcHJv
cGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKKworICAgIG1fc3RhdGljUHJvcGVy
dHlBbmFseXplci5wdXRCeUlkKGJhc2UtPmluZGV4KCksIHByb3BlcnR5SW5kZXgpOworCiAgICAg
ZW1pdE9wY29kZShvcF9wdXRfZ2V0dGVyX3NldHRlcik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGJhc2UtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFu
dChwcm9wZXJ0eSkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2V0dGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRleCgpKTsKIH0KQEAgLTE1MTksNyArMTUzNiw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXQKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXJndW1lbnRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewogICAgIFVubGlua2VkQXJy
YXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwotICAgIFVubGlua2Vk
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbCk7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxl
ZE9wY29kZShkc3QtPmluZGV4KCksIG9wX2dldF9hcmd1bWVudF9ieV92YWwpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIEFTU0VSVChiYXNlLT5pbmRleCgp
ID09IG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTQ1LDcgKzE1NjIsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAgICAgICAgIH0KICAgICB9CiAgICAgVW5s
aW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxlKCk7Ci0gICAg
VW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRf
YnlfdmFsKTsKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVk
T3Bjb2RlKGRzdC0+aW5kZXgoKSwgb3BfZ2V0X2J5X3ZhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CkBA
IC0xNTgzLDEwICsxNjAwLDMzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QpCit7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZ1bmMgPSBuZXdUZW1wb3JhcnkoKTsgCisKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmls
ZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKGRzdC0+aW5kZXgoKSwgb3BfZ2V0X2NhbGxl
ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0
aW9ucygpLnNpemUoKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyht
X3RoaXNSZWdpc3Rlci5pbmRleCgpLCBiZWdpbiArIDMpOworCisgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfdGhpcyk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5p
bmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0KQog
eworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBtX3N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIubmV3T2JqZWN0KGRzdC0+aW5kZXgoKSwgYmVnaW4gKyAyKTsKKwog
ICAgIGVtaXRPcGNvZGUob3BfbmV3X29iamVjdCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAgICByZXR1
cm4gZHN0OwogfQogCkBAIC0xNzY3LDEwICsxODA3LDggQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoU3BlY2lh
bDo6T2JqZWN0Q29uc3RydWN0b3IpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVh
bENhbGwtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVtaXRPcGNv
ZGUob3BfbmV3X29iamVjdCk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0
LT5pbmRleCgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQo
KSkKKyAgICAgICAgICAgIGVtaXROZXdPYmplY3QoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKQEAgLTE4NjEsNyArMTg5OSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbCgKICNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJh
eVByb2ZpbGUpOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7Ci0gICAgICAgIFVu
bGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9w
dXRfcmVzdWx0KTsKKyAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShkc3QtPmluZGV4KCksIG9wX2NhbGxfcHV0X3Jlc3VsdCk7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOyAvLyBkc3QKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIH0KQEAgLTE4OTQsNyArMTkzMiw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFYKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYXJndW1lbnRzLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZmlyc3RGcmVlUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJl
c3VsdCgpKSB7Ci0gICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKKyAgICAgICAgVW5saW5rZWRWYWx1ZVBy
b2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShkc3QtPmluZGV4KCksIG9wX2NhbGxf
cHV0X3Jlc3VsdCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgfQpAQCAtMTk3
Nyw3ICsyMDE1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAog
I2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdu
b3JlZFJlc3VsdCgpKSB7Ci0gICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKKyAgICAgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShkc3QtPmluZGV4KCksIG9w
X2NhbGxfcHV0X3Jlc3VsdCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOyAvLyBkc3QKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCiAjaW5jbHVkZSAi
RGVidWdnZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIlN0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgpAQCAtMzgz
LDYgKzM4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RXF1
YWxpdHlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdp
c3RlcklEKiBzcmMyKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5Tm9Ec3RPcChPcGNv
ZGVJRCwgUmVnaXN0ZXJJRCogc3JjKTsKIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRl
VGhpcyhSZWdpc3RlcklEKiBkc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3T2JqZWN0
KFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJheShSZWdp
c3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiwgdW5zaWduZWQgbGVuZ3RoKTsgLy8gc3RvcHMgYXQg
Zmlyc3QgZWxpc2lvbgogCkBAIC01MjEsOCArNTIzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBlbWl0T3Bjb2RlKE9wY29kZUlEKTsKICAgICAgICAgVW5saW5rZWRBcnJheUFs
bG9jYXRpb25Qcm9maWxlIG5ld0FycmF5QWxsb2NhdGlvblByb2ZpbGUoKTsKKyAgICAgICAgVW5s
aW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgp
OwogICAgICAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSBuZXdBcnJheVByb2ZpbGUoKTsKLSAgICAg
ICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29kZUlEKTsKKyAg
ICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgZW1pdFByb2ZpbGVkT3Bjb2RlKGludCBkc3QsIE9w
Y29kZUlEKTsKICAgICAgICAgdm9pZCByZXRyaWV2ZUxhc3RCaW5hcnlPcChpbnQmIGRzdEluZGV4
LCBpbnQmIHNyYzFJbmRleCwgaW50JiBzcmMySW5kZXgpOwogICAgICAgICB2b2lkIHJldHJpZXZl
TGFzdFVuYXJ5T3AoaW50JiBkc3RJbmRleCwgaW50JiBzcmNJbmRleCk7CiAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCByZXdpbmRCaW5hcnlPcCgpOwpAQCAtNzc1LDYgKzc3OCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyUmVzb2x2ZVB1dE1hcCBtX3Jlc29sdmVCYXNl
Rm9yUHV0TWFwOwogICAgICAgICBJZGVudGlmaWVyUmVzb2x2ZVB1dE1hcCBtX3Jlc29sdmVXaXRo
QmFzZUZvclB1dE1hcDsKIAorICAgICAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIG1fc3RhdGlj
UHJvcGVydHlBbmFseXplcjsKKwogICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsK
IAogICAgICAgICBPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFs
eXNpcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzX2gKKyNkZWZpbmUgU3RhdGljUHJvcGVydHlBbmFseXNpc19o
CisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gUmVmZXJl
bmNlIGNvdW50IGluZGljYXRlcyBudW1iZXIgb2YgbGl2ZSByZWdpc3RlcnMgdGhhdCBhbGlhcyB0
aGlzIG9iamVjdC4KK2NsYXNzIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gY3JlYXRlKFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uPiogaW5zdHJ1Y3Rpb25zLCB1bnNpZ25lZCB0YXJnZXQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoaW5zdHJ1Y3Rpb25zLCB0
YXJnZXQpKTsgCisgICAgfQorCisgICAgdm9pZCBhZGRQcm9wZXJ0eUluZGV4KHVuc2lnbmVkIHBy
b3BlcnR5SW5kZXgpIHsgbV9wcm9wZXJ0eUluZGV4ZXMuYWRkKHByb3BlcnR5SW5kZXgpOyB9CisK
KyAgICB2b2lkIHJlY29yZCgpCisgICAgeworICAgICAgICAoKm1faW5zdHJ1Y3Rpb25zKVttX3Rh
cmdldF0gPSBtX3Byb3BlcnR5SW5kZXhlcy5zaXplKCk7CisgICAgfQorCisgICAgaW50IHByb3Bl
cnR5SW5kZXhDb3VudCgpIHsgcmV0dXJuIG1fcHJvcGVydHlJbmRleGVzLnNpemUoKTsgfQorCitw
cml2YXRlOgorICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoVmVjdG9yPFVubGlua2VkSW5zdHJ1
Y3Rpb24+KiBpbnN0cnVjdGlvbnMsIHVuc2lnbmVkIHRhcmdldCkKKyAgICAgICAgOiBtX2luc3Ry
dWN0aW9ucyhpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV90YXJnZXQodGFyZ2V0KQorICAgIHsK
KyAgICB9CisKKyAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qIG1faW5zdHJ1Y3Rpb25z
OworICAgIHVuc2lnbmVkIG1fdGFyZ2V0OworICAgIHR5cGVkZWYgSGFzaFNldDx1bnNpZ25lZCwg
V1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4gPiBQcm9wZXJ0eUluZGV4U2V0OworICAgIFByb3BlcnR5SW5kZXhTZXQgbV9w
cm9wZXJ0eUluZGV4ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTdGF0aWNQcm9wZXJ0
eUFuYWx5emVyX2gKKyNkZWZpbmUgU3RhdGljUHJvcGVydHlBbmFseXplcl9oCisKKyNpbmNsdWRl
ICJTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKKy8vIFVzZWQgZm9yIGZsb3ctaW5zZW5zaXRpdmUgc3RhdGljIGFu
YWx5c2lzIG9mIHRoZSBudW1iZXIgb2YgcHJvcGVydGllcyBhc3NpZ25lZCB0byBhbiBvYmplY3Qu
CitjbGFzcyBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsKK3B1YmxpYzoKKyAgICBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyKFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiopOworCisgICAgdm9pZCBj
cmVhdGVUaGlzKGludCBkc3QsIHVuc2lnbmVkIG9mZnNldE9mSW5saW5lQ2FwYWNpdHlPcGVyYW5k
KTsKKyAgICB2b2lkIG5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNh
cGFjaXR5T3BlcmFuZCk7CisgICAgdm9pZCBwdXRCeUlkKGludCBkc3QsIHVuc2lnbmVkIHByb3Bl
cnR5SW5kZXgpOyAvLyBwcm9wZXJ0eUluZGV4IGlzIGFuIGluZGV4IGludG8gYSB1bmlxdWVkIHNl
dCBvZiBzdHJpbmdzLgorICAgIHZvaWQgbW92KGludCBkc3QsIGludCBzcmMpOworCisgICAgdm9p
ZCBraWxsKCk7CisgICAgdm9pZCBraWxsKGludCBkc3QpOworCitwcml2YXRlOgorICAgIHZvaWQg
a2lsbChTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKik7CisKKyAgICBWZWN0b3I8VW5saW5rZWRJbnN0
cnVjdGlvbj4qIG1faW5zdHJ1Y3Rpb25zOworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0
cjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50PiA+IEFuYWx5c2lzTWFwOworICAgIEFuYWx5c2lz
TWFwIG1fYW5hbHlzZXM7Cit9OworCitpbmxpbmUgU3RhdGljUHJvcGVydHlBbmFseXplcjo6U3Rh
dGljUHJvcGVydHlBbmFseXplcihWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qIGluc3RydWN0
aW9ucykKKyAgICA6IG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKK30KKworaW5saW5l
IHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhpbnQgZHN0LCB1bnNpZ25l
ZCBvZmZzZXRPZklubGluZUNhcGFjaXR5T3BlcmFuZCkKK3sKKyAgICBBbmFseXNpc01hcDo6QWRk
UmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKAorICAgICAgICBkc3QsIFN0YXRpY1By
b3BlcnR5QW5hbHlzaXM6OmNyZWF0ZShtX2luc3RydWN0aW9ucywgb2Zmc2V0T2ZJbmxpbmVDYXBh
Y2l0eU9wZXJhbmQpKTsKKyAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOyAvLyBDYW4n
dCBoYXZlIHR3byAndGhpcycgaW4gdGhlIHNhbWUgY29uc3RydWN0b3IuCit9CisKK2lubGluZSB2
b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBv
ZmZzZXRPZklubGluZUNhcGFjaXR5T3BlcmFuZCkKK3sKKyAgICBSZWZQdHI8U3RhdGljUHJvcGVy
dHlBbmFseXNpcz4gYW5hbHlzaXMgPSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUobV9p
bnN0cnVjdGlvbnMsIG9mZnNldE9mSW5saW5lQ2FwYWNpdHlPcGVyYW5kKTsKKyAgICBBbmFseXNp
c01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdCwgYW5hbHlzaXMp
OworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAga2lsbChhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IGFuYWx5c2lzLnJlbGVhc2UoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXI6OnB1dEJ5SWQoaW50IGRzdCwgdW5zaWduZWQgcHJvcGVydHlJbmRl
eCkKK3sKKyAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcyA9IG1fYW5hbHlzZXMu
Z2V0KGRzdCkuZ2V0KCk7CisgICAgaWYgKCFhbmFseXNpcykKKyAgICAgICAgcmV0dXJuOworICAg
IGFuYWx5c2lzLT5hZGRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SW5kZXgpOworfQorCitpbmxpbmUg
dm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjptb3YoaW50IGRzdCwgaW50IHNyYykKK3sKKyAg
ICBSZWZQdHI8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gYW5hbHlzaXMgPSBtX2FuYWx5c2VzLmdl
dChzcmMpOworICAgIGlmICghYW5hbHlzaXMpIHsKKyAgICAgICAga2lsbChkc3QpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7
CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpraWxsKFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXMqIGFuYWx5c2lzKQoreworICAgIGlmICghYW5hbHlzaXMpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIWFuYWx5c2lzLT5oYXNPbmVSZWYoKSkgLy8gQWxpYXNl
cyBmb3IgdGhpcyBvYmplY3Qgc3RpbGwgZXhpc3QsIHNvIGl0IG1pZ2h0IGFjcXVpcmUgbW9yZSBw
cm9wZXJ0aWVzLgorICAgICAgICByZXR1cm47CisgICAgYW5hbHlzaXMtPnJlY29yZCgpOworfQor
CitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpraWxsKGludCBkc3QpCit7Cisg
ICAgLy8gV2Ugb2JzZXJ2ZSBraWxscyBpbiBvcmRlciB0byBhdm9pZCBwaWxpbmcgb24gcHJvcGVy
dGllcyB0byBhbiBvYmplY3QgYWZ0ZXIKKyAgICAvLyBpdHMgYnl0ZWNvZGUgcmVnaXN0ZXIgaGFz
IGJlZW4gcmVjeWNsZWQuCisKKyAgICAvLyBDb25zaWRlciB0aGVzZSBjYXNlczoKKworICAgIC8v
ICgxKSBBbGlhc2VkIHRlbXBvcmFyeQorICAgIC8vIHZhciBvMSA9IHsgbmFtZTogbmFtZSB9Owor
ICAgIC8vIHZhciBvMiA9IHsgbmFtZTogbmFtZSB9OworCisgICAgLy8gKDIpIEFsaWFzZWQgbG9j
YWwgLS0gbm8gY29udHJvbCBmbG93CisgICAgLy8gdmFyIGxvY2FsOworICAgIC8vIGxvY2FsID0g
bmV3IE9iamVjdDsKKyAgICAvLyBsb2NhbC5uYW1lID0gbmFtZTsKKyAgICAvLyAuLi4KKworICAg
IC8vIGxvY2FsID0gbG9va3VwKCk7CisgICAgLy8gbG9jYWwuZGlkTG9va3VwID0gdHJ1ZTsKKyAg
ICAvLyAuLi4KKworICAgIC8vICgzKSBBbGlhc2VkIGxvY2FsIC0tIGNvbnRyb2wgZmxvdworICAg
IC8vIHZhciBsb2NhbDsKKyAgICAvLyBpZiAoY29uZGl0aW9uKQorICAgIC8vICAgICBsb2NhbCA9
IHsgfTsKKyAgICAvLyBlbHNlIHsKKyAgICAvLyAgICAgbG9jYWwgPSBuZXcgT2JqZWN0OworICAg
IC8vIH0KKyAgICAvLyBsb2NhbC5uYW1lID0gbmFtZTsKKworICAgIC8vIChOb3RlOiBvdXIgZGVm
YXVsdCBjb2RlZ2VuIGZvciAibmV3IE9iamVjdCIgbG9va3MgbGlrZSBjYXNlICgzKS4pCisKKyAg
ICAvLyBDYXNlICgxKSBpcyBlYXN5IGJlY2F1c2UgdGVtcG9yYXJpZXMgYWxtb3N0IG5ldmVyIHN1
cnZpdmUgYWNyb3NzIGNvbnRyb2wgZmxvdy4KKworICAgIC8vIENhc2VzICgyKSBhbmQgKDMpIGFy
ZSBoYXJkLiBDYXNlICgyKSBzaG91bGQga2lsbCAibG9jYWwiLCB3aGlsZSBjYXNlICgzKSBzaG91
bGQKKyAgICAvLyBub3QuIFRoZXJlIGlzIG5vIGdyZWF0IHdheSB0byBzb2x2ZSB0aGVzZSBjYXNl
cyB3aXRoIHNpbXBsZSBzdGF0aWMgYW5hbHlzaXMuCisKKyAgICAvLyBTaW5jZSB0aGlzIGlzIGEg
c2ltcGxlIHN0YXRpYyBhbmFseXNpcywgd2UganVzdCB0cnkgdG8gY2F0Y2ggdGhlIHNpbXBsZXN0
IGNhc2VzLAorICAgIC8vIHNvIHdlIGFjY2VwdCBraWxscyB0byBhbnkgcmVnaXN0ZXJzIGV4Y2Vw
dCBmb3IgcmVnaXN0ZXJzIHRoYXQgaGF2ZSBubyBpbmZlcnJlZAorICAgIC8vIHByb3BlcnRpZXMg
eWV0LgorCisgICAgQW5hbHlzaXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9hbmFseXNlcy5maW5kKGRz
dCk7CisgICAgaWYgKGl0ID09IG1fYW5hbHlzZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIWl0LT52YWx1ZS0+cHJvcGVydHlJbmRleENvdW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGtpbGwoaXQtPnZhbHVlLmdldCgpKTsKKyAgICBtX2FuYWx5c2VzLnJlbW92ZShpdCk7
Cit9CisKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmtpbGwoKQoreworICAg
IHdoaWxlIChtX2FuYWx5c2VzLnNpemUoKSkKKyAgICAgICAga2lsbChtX2FuYWx5c2VzLnRha2Uo
bV9hbmFseXNlcy5iZWdpbigpLT5rZXkpLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNh
c2UgSW5oZXJpdG9ySURXYXRjaHBvaW50OgorICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50OgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzUsMjAgKzIxMzUsMjQgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
IEFTU0VSVChjZWxsLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogaW5oZXJpdG9ySUQg
PSBmdW5jdGlvbi0+dHJ5R2V0S25vd25Jbmhlcml0b3JJRCgpOwotICAgICAgICAgICAgICAgIGlm
IChpbmhlcml0b3JJRCkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEluaGVyaXRv
cklEV2F0Y2hwb2ludCwgT3BJbmZvKGZ1bmN0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld09iamVjdCwg
T3BJbmZvKGluaGVyaXRvcklEKSkpOworICAgICAgICAgICAgICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKiBhbGxvY2F0aW9uUHJvZmlsZSA9IGZ1bmN0aW9uLT50cnlHZXRBbGxvY2F0aW9uUHJv
ZmlsZSgpOworICAgICAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uUHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgT3BJ
bmZvKGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdP
YmplY3QsIE9wSW5mbyhhbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWFscmVhZHlFbWl0dGVkKQotICAgICAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENy
ZWF0ZVRoaXMsIGNhbGxlZSkpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENyZWF0ZVRo
aXMsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSwgY2FsbGVlKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfdGhpcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewotICAgICAgICAgICAgc2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBP
cEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5lbXB0
eU9iamVjdFN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdPYmplY3QsCisg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfb2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw2ICs0ODYsMTcg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAor
ICAgIGJvb2wgaGFzSW5saW5lQ2FwYWNpdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gQ3JlYXRlVGhpczsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzSW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIHJldHVy
biBtX29wSW5mbzsKKyAgICB9CisKICAgICB2b2lkIHNldEluZGV4aW5nVHlwZShJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0luZGV4aW5nVHlwZSgp
KTsKQEAgLTcwMCw3ICs3MTEsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBjYXNlIElu
aGVyaXRvcklEV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBc
Ci0gICAgbWFjcm8oSW5oZXJpdG9ySURXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKICAg
ICBtYWNybyhBcnJheVB1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
Q2xvYmJlcnNXb3JsZCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNs
dWRlICJOYW1lSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKQEAgLTM0
Nyw3ICszNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1Ro
aXNPYmplY3QoZXhlYykpOwogfQogCi1KU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY29uc3RydWN0b3IpCitKU0NlbGwqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciwgaW50MzJfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CkBAIC0zNTcsNyArMzU4LDcgQEAgSlND
ZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaQogICAgIEFTU0VSVChqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29u
c3RydWN0VHlwZUpTKTsKICNlbmRpZgogICAgIAotICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FjaGVkSW5oZXJp
dG9ySUQoZXhlYykpOworICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5s
aW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKSk7CiB9CiAKIEpTQ2VsbCogREZHX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJB
VElPTiAoKkNfREZHT3BlCiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3Bl
cmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BF
UkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwq
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUljZiko
RXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7Cit0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJB
VElPTiAoKkNfREZHT3BlcmF0aW9uX0VPWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRVN0KShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpE
X0RGR09wZXJhdGlvbl9ERCkoZG91YmxlLCBkb3VibGUpOwogdHlwZWRlZiBkb3VibGUgREZHX09Q
RVJBVElPTiAoKkRfREZHT3BlcmF0aW9uX1paKShpbnQzMl90LCBpbnQzMl90KTsKQEAgLTEyMiw3
ICsxMjMsNyBAQCB0eXBlZGVmIFN0cmluZ0ltcGwqIERGR19PUEVSQVRJT04gKCpTdHJfCiAKIC8v
IFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRlIGNhbGxiYWNrcyBvdXQgdG8gQysrIGltcGxlbWVu
dGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBjb21wbGV4IHRvIEpJVC4KIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lO
VEVSTkFMOwotSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0
YXRlKiwgSlNDZWxsKiBjb25zdHJ1Y3RvcikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVj
dG9yLCBpbnQzMl90IGlubGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnRUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBX
VEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw3ICs4MDYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgY2FzZSBHbG9iYWxW
YXJXYXRjaHBvaW50OgogICAgICAgICBjYXNlIEdhcmJhZ2VWYWx1ZToKLSAgICAgICAgY2FzZSBJ
bmhlcml0b3JJRFdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50OgogICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
CiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlVmFsdWUpIHsKICAgICAgICAgaWYgKChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpICE9
IFByb3BlcnR5U2xvdDo6VmFsdWUpCi0gICAgICAgICAgICB8fCAhTWFjcm9Bc3NlbWJsZXI6Omlz
Q29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSkpIHsKKyAgICAgICAgICAgIHx8ICFNYWNyb0Fzc2Vt
Ymxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICAgICAgZGZn
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJh
dGlvbkdldEJ5SWRCdWlsZExpc3QpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2
Myw3ICszNTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFs
bG9jYXRlSlNBcnJheShzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVu
dHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVy
ZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFn
ZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhl
IEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOSwxMSArMzcyOSwxMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7
CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BS
UmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRF
WCkpKTsKQEAgLTM3NDUsOSArMzc0Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKHJlc3VsdEdQUiwgc3RvcmFnZUdQUikpOwogICAg
ICAgICAgICAgbV9qaXQuc3ViUHRyKHNjcmF0Y2hHUFIsIHN0b3JhZ2VHUFIpOwotICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJrZWRCbG9jazo6Tm9uZT4o
Ci0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLmluZGV4aW5nVHlwZSgpKSks
IHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSLCBzaXpl
b2YoSlNBcnJheSksIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKG5vZGUuaW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNP
YmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3Jh
Z2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKQEAgLTM4MDgs
NyArMzgwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTQXJyYXkoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLCBudW1F
bGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobm9kZS5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0
YW50QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgpKTsKQEAgLTM5MTksNDUgKzM5MjAsNTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgYWxs
b2NhdG9yKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJl
ZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBhbGxvY2F0b3JHUFIgPSBhbGxvY2F0b3IuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCi0gICAgICAg
IC8vIExvYWQgdGhlIGluaGVyaXRvcklELiBJZiB0aGUgaW5oZXJpdG9ySUQgaXMgbm90IHNldCwg
Z28gdG8gc2xvdyBwYXRoLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoOwotICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc3RydWN0dXJlR1BSKSk7Ci0gICAgICAgIAotICAgICAgICBlbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KHN0cnVjdHVyZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBz
bG93UGF0aCk7Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2Fs
bGVlR1BSKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhj
YWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpT
RnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xv
d1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFs
bG9jYXRvckdQUikpOworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFs
bG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBz
bG93UGF0aCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwg
bm9kZS5pbmxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBj
YXNlIEluaGVyaXRvcklEV2F0Y2hwb2ludDogewotICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+
KG5vZGUuZnVuY3Rpb24oKSktPmFkZEluaGVyaXRvcklEV2F0Y2hwb2ludChzcGVjdWxhdGlvbldh
dGNocG9pbnQoKSk7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6IHsKKyAg
ICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLmZ1bmN0aW9uKCkpLT5hZGRBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOwogICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2Ug
TmV3T2JqZWN0OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIGFsbG9jYXRvckdQUiA9IGFsbG9jYXRvci5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAg
ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihu
b2RlLnN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7Ci0gICAg
ICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvbk5ld09iamVjdCwgcmVzdWx0R1BSLCBub2RlLnN0cnVjdHVyZSgpKSk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVj
dHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yUHRyID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRo
b3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKGFsbG9jYXRvclB0ciksIGFsbG9jYXRvckdQUik7CisgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKworICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJh
dGlvbk5ld09iamVjdCwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgCiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDc4LDcgKzM0NzgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5
KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAg
ICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9p
bnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhhdmUgcG9p
bnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVyZmx5LCBy
ZXNwZWN0aXZlbHkuCkBAIC0zNjQ1LDE5ICszNjQ1LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gyOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gSW52
YWxpZEdQUlJlZzsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShub2Rl
LmluZGV4aW5nVHlwZSgpKSkgewotICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU2Ny
YXRjaDIodGhpcywgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIuYWRvcHQocmVhbFNj
cmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIu
Z3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihNSU5f
U1BBUlNFX0FSUkFZX0lOREVYKSkpOwpAQCAtMzY2OSw5ICszNjYzLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBz
dG9yYWdlR1BSKSk7CiAgICAgICAgICAgICBtX2ppdC5zdWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFn
ZUdQUik7Ci0gICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTQXJyYXksIE1h
cmtlZEJsb2NrOjpOb25lPigKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUu
aW5kZXhpbmdUeXBlKCkpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLAotICAgICAgICAgICAgICAg
IHN0b3JhZ2VHUFIsIHNpemVvZihKU0FycmF5KSwgc2xvd0Nhc2VzKTsKKyAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIEltbVB0cihzdHJ1Y3R1
cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7
CkBAIC0zNzY3LDcgKzM3NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
ICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAg
ICBlbWl0QWxsb2NhdGVKU0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHJlc3VsdEdQUiwgc3RvcmFn
ZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1
bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAg
ICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZl
cihub2RlLnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC0zODcxLDQ1ICszODY0LDU0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IGFsbG9jYXRvcih0
aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgY2FsbGVl
R1BSID0gY2FsbGVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0gYWxsb2NhdG9yLmdwcigpOwogICAg
ICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBMb2Fk
IHRoZSBpbmhlcml0b3JJRC4gSWYgdGhlIGluaGVyaXRvcklEIGlzIG5vdCBzZXQsIGdvIHRvIHNs
b3cgcGF0aC4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhj
YWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKSksIHN0cnVj
dHVyZUdQUik7CisKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwot
ICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgc3RydWN0dXJlR1BSKSk7Ci0gICAgICAgIAotICAgICAgICBlbWl0QWxsb2NhdGVK
U0ZpbmFsT2JqZWN0KHN0cnVjdHVyZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0
aCk7Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2FsbGVlR1BS
KSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVH
UFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rp
b246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9jYXRv
ckdQUikpOworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRv
ckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0
aCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9kZS5p
bmxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
UiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgSW5oZXJpdG9ySURXYXRjaHBvaW50OiB7Ci0gICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4obm9kZS5mdW5jdGlvbigpKS0+YWRkSW5oZXJpdG9ySURXYXRjaHBvaW50KHNwZWN1bGF0aW9u
V2F0Y2hwb2ludCgpKTsKKyAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDogewor
ICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUuZnVuY3Rpb24oKSktPmFkZEFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CiAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2Fz
ZSBOZXdPYmplY3Q6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IGFsbG9jYXRvcih0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0gYWxsb2NhdG9yLmdwcigpOwog
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7Ci0gICAgICAgIAotICAgICAg
ICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG5vZGUuc3RydWN0dXJlKCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKLSAg
ICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0
aCwgdGhpcywgb3BlcmF0aW9uTmV3T2JqZWN0LCByZXN1bHRHUFIsIG5vZGUuc3RydWN0dXJlKCkp
KTsKKworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuc3RydWN0dXJlKCk7Cisg
ICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShz
dHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFs
bG9jYXRvclB0ciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQdHIpLCBhbGxvY2F0b3JHUFIpOworICAgICAgICBlbWl0
QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisKKyAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUiwgc3RydWN0dXJlKSk7CiAgICAgICAgIAogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDE0IEBAIFNw
ZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQoKQogICAgIFdURjo6ZGVsZXRlQWxsVmFsdWVz
KG1fc2xvd1BhdGhHZW5lcmF0b3JzKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFs
bG9jYXRlSlNBcnJheShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BS
UmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQogewogICAgIEFT
U0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpIHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwog
ICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgCiAgICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBudW1FbGVtZW50cyk7
CiAgICAgCkBAIC03MywxMiArNzUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVKU0FycmF5CiAgICAgc2xvd0Nhc2VzLmFwcGVuZCgKICAgICAgICAgZW1pdEFsbG9jYXRlQmFz
aWNTdG9yYWdlKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwogICAgIG1faml0LnN1YlB0cihU
cnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7
Ci0gICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJrZWRCbG9jazo6Tm9u
ZT4oCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgcmVzdWx0R1BSLCBzY3JhdGNo
R1BSLAotICAgICAgICBzdG9yYWdlR1BSLCBzaXplb2YoSlNBcnJheSksIHNsb3dDYXNlcyk7Cisg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2Fz
ZXMpOwogICAgIAotICAgIC8vIEknbSBhc3N1bWluZyB0aGF0IHR3byAzMi1iaXQgc3RvcmVzIGFy
ZSBiZXR0ZXIgdGhhbiBhIDY0LWJpdCBzdG9yZS4KLSAgICAvLyBJIGhhdmUgbm8gaWRlYSBpZiB0
aGF0J3MgdHJ1ZS4gQW5kIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIGFueXdheS4KICAgICBt
X2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwog
ICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgo
KSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzgsNiArOTM4LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVj
dCwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FT1ogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2JqZWN0LCBpbnQzMl90IHNpemUpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1t
UHRyKHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0VQUyBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvbGQsIHNpemVfdCBzaXplKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9sZCwgVHJ1c3RlZElt
bVB0cihzaXplKSk7CkBAIC0xMzA1LDYgKzEzMTAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0RGR09wZXJhdGlvbl9FT1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
b2JqZWN0LCBpbnQzMl90IHNpemUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3Bl
cmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvbGQsIHNpemVfdCBz
aXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9s
ZCwgVHJ1c3RlZEltbVB0cihzaXplKSk7CkBAIC0yMTM1LDI3ICsyMTQ1LDE5IEBAIHB1YmxpYzoK
ICAgICAgICAgCiAgICAgICAgIHJldHVybiBzbG93UGF0aDsKICAgICB9Ci0gICAgCi0gICAgLy8g
SXQgaXMgTk9UIG9rYXkgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzY3JhdGNoIHJlZ2lzdGVy
IHRvIGJlIHRoZSBzYW1lIHRoaW5nIGJlY2F1c2UgaWYgdGhleSBhcmUgdGhlbiB0aGUgU3RydWN0
dXJlIHdpbGwgCi0gICAgLy8gZ2V0IGNsb2JiZXJlZC4gCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0
eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4gCi0gICAgdm9pZCBl
bWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBHUFJSZWcg
cmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgU3RvcmFnZVR5cGUgc3RvcmFnZSwgc2l6ZV90
IHNpemUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCi0gICAgewotICAgICAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDA7Ci0gICAgICAgIGlmIChkZXN0cnVjdG9y
VHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQotICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1f
aml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1
Y3RvcihzaXplKTsKLSAgICAgICAgZWxzZSBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxv
Y2s6OkltbW9ydGFsU3RydWN0dXJlKQotICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmds
b2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yKHNpemUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhbGxvY2F0b3IgPSAm
bV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVj
dG9yKHNpemUpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoJmFsbG9jYXRvci0+bV9mcmVlTGlz
dC5oZWFkLCByZXN1bHRHUFIpOworICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEg
c3BlY2lmaWMgc2l6ZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU+IC8vIFN0cnVjdHVyZVR5cGUgYW5kIFN0b3JhZ2VUeXBlIGNhbiBi
ZSBHUFIgb3IgSW1tUHRyLgorICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCisg
ICAgICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zm
c2V0T2ZGcmVlTGlzdEhlYWQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBvYmplY3QgaXMgaGFsZi1hbGxvY2F0ZWQ6IHdlIGhh
dmUgd2hhdCB3ZSBrbm93IGlzIGEgZnJlc2ggb2JqZWN0LCBidXQKICAgICAgICAgLy8gaXQncyBz
dGlsbCBvbiB0aGUgR0MncyBmcmVlIGxpc3QuCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0
LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVhZCk7CisgICAg
ICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFs
bG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7CiAK
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgogICAgICAgICBt
X2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwpAQCAtMjE2NCwxMyArMjE2NiwyNCBAQCBw
dWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHN0b3JhZ2UsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxP
YmplY3QoVCBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQorICAgIC8vIENvbnZlbmllbmNlIGFs
bG9jYXRvciBmb3IgYSBidWl0LWluIG9iamVjdC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xh
c3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4gLy8g
U3RydWN0dXJlVHlwZSBhbmQgU3RvcmFnZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCisgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmVUeXBl
IHN0cnVjdHVyZSwgU3RvcmFnZVR5cGUgc3RvcmFnZSwKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1Bh
dGgpCiAgICAgewotICAgICAgICByZXR1cm4gZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0Zp
bmFsT2JqZWN0LCBNYXJrZWRCbG9jazo6Tm9uZT4oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIsIFRydXN0ZWRJbW1QdHIoMCksIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKElO
TElORV9TVE9SQUdFX0NBUEFDSVRZKSwgc2xvd1BhdGgpOworICAgICAgICBNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvciA9IDA7CisgICAgICAgIHNpemVfdCBzaXplID0gQ2xhc3NUeXBlOjphbGxv
Y2F0aW9uU2l6ZSgwKTsKKyAgICAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiAm
JiBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQorICAgICAgICAgICAgYWxsb2NhdG9y
ID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemUpOworICAgICAgICBlbHNlIGlmIChDbGFzc1R5cGU6
Om5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFs
RGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0
YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemUpOworICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjEpOwor
ICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIxLCBzdHJ1
Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CiAgICAgfQotICAgIAotICAg
IHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShTdHJ1Y3R1cmUqLCBHUFJSZWcgcmVzdWx0R1BSLCBH
UFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworCisgICAgdm9pZCBlbWl0
QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9y
YWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KSAKICAg
ICBKSVRDb21waWxlcjo6SnVtcCBjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcg
cmVzdWx0LCBHUFJSZWcgdG1wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTAgKzE1
LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogfQogCiBjbGFzcyBNYXJrZWRBbGxvY2F0b3Ig
ewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRp
dmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogcHVibGlj
OgorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKTsKKwogICAgIE1h
cmtlZEFsbG9jYXRvcigpOwogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIGNhbm9uaWNhbGl6
ZUNlbGxMaXZlbmVzc0RhdGEoKTsKQEAgLTM2LDggKzM3LDYgQEAgcHVibGljOgogICAgIGJvb2wg
aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgCiBwcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCogYWxsb2NhdGVTbG93Q2FzZShzaXplX3QpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlKHNp
emVfdCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoc2l6ZV90KTsKQEAgLTUzLDYgKzUy
LDExIEBAIHByaXZhdGU6CiAgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7CiB9OwogCitp
bmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKQor
eworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWFya2VkQWxsb2NhdG9yLCBtX2ZyZWVMaXN0
KSArIE9CSkVDVF9PRkZTRVRPRihNYXJrZWRCbG9jazo6RnJlZUxpc3QsIGhlYWQpOworfQorCiBp
bmxpbmUgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoKQogICAgIDogbV9jdXJyZW50
QmxvY2soMCkKICAgICAsIG1fYmxvY2tzVG9Td2VlcCgwKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgSlNTdGFj
azsKKyAgICBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAg
Y2xhc3MgU3RydWN0dXJlQ2hhaW47CiAKQEAgLTQ1Myw4ICs0NTQsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lz
dGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgc2NyYXRjaCwgUmVnaXN0ZXJJRCBzY3JhdGNoMiwg
V3JpdGVCYXJyaWVyTW9kZSwgV3JpdGVCYXJyaWVyVXNlS2luZCk7CiAgICAgICAgIHZvaWQgZW1p
dFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3RlcklE
IHNjcmF0Y2gsIFdyaXRlQmFycmllck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JU
eXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoU3RydWN0dXJlVHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0
cik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5h
bE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFn
ZVB0cik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IC8vIFN0cnVj
dHVyZVR5cGUgY2FuIGJlIFJlZ2lzdGVySUQgb3IgSW1tUHRyLgorICAgICAgICB2b2lkIGVtaXRB
bGxvY2F0ZUpTT2JqZWN0KFJlZ2lzdGVySUQgYWxsb2NhdG9yLCBTdHJ1Y3R1cmVUeXBlLCBSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgCiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQogICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUg
dG8gcHJvZmlsZSBpcyBpbiByZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBhdmFpbGFibGUgZm9yCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMCwyMiArMzEwLDE1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFu
ZENvbnN0YW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNTdHJpbmcoKSAmJiBhc1N0cmluZyhn
ZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSktPmxlbmd0aCgpID09IDE7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBk
ZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjpl
bWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQordGVtcGxhdGU8dHlwZW5hbWUgU3Ry
dWN0dXJlVHlwZT4KK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QoUmVnaXN0
ZXJJRCBhbGxvY2F0b3IsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogewotICAgIHNpemVfdCBzaXplID0gQ2xhc3NUeXBlOjph
bGxvY2F0aW9uU2l6ZShJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSk7Ci0gICAgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IgPSAwOwotICAgIGlmIChkZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9j
azo6Tm9ybWFsKQotICAgICAgICBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9j
YXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemUpOwotICAgIGVsc2UgaWYgKGRl
c3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAg
YWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemUpOwotICAgIGVsc2UKLSAgICAgICAgYWxsb2Nh
dG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1
Y3RvcihzaXplKTsKLSAgICBsb2FkUHRyKCZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVhZCwgcmVz
dWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxvY2F0b3I6Om9m
ZnNldE9mRnJlZUxpc3RIZWFkKCkpLCByZXN1bHQpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3RQdHIoWmVybywgcmVzdWx0KSk7CiAKICAgICAvLyByZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRo
ZSBmcmVlIGxpc3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc3RvcmFnZVB0cik7Ci0g
ICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJmFsbG9jYXRvci0+bV9mcmVlTGlzdC5oZWFkKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CisgICAgc3RvcmVQdHIoc2NyYXRj
aCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhl
YWQoKSkpOwogCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCiAgICAg
c3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSkpOwpAQCAtMzM0LDExICszMjcsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBl
LCBNYXJrZWRCbG9jCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1
bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0
dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQotewotICAgIGVtaXRB
bGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9iamVjdCwgTWFya2VkQmxvY2s6Ok5vbmUsIFQ+
KHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKLX0KLQogI2lmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2Zp
bGUqIHZhbHVlUHJvZmlsZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDE1
ICsyMTMsMjUgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKEluc3RydWN0aW9uKiBjdXJyZQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlZ1QwLCBy
ZWdUMSk7Ci0gICAgCi0gICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCByZWdUMCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCk7CisgICAgc2l6
ZV90IGFsbG9jYXRpb25TaXplID0gSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+
aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmbV9n
bG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9j
YXRpb25TaXplKTsKKworICAgIFJlZ2lzdGVySUQgcmVzdWx0UmVnID0gcmVnVDA7CisgICAgUmVn
aXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWcg
PSByZWdUMjsKKworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBhbGxvY2F0b3JS
ZWcpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCByZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOworICAgIGVtaXRTdG9yZUNlbGwo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVzdWx0UmVnKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpLmNh
bGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KFRydXN0ZWRJbW1QdHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUtPnN0cnVjdHVyZSgpKSk7CisgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3Rh
bmNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMTYxLDIyICsxMTcxLDI4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24KIHZvaWQgSklUOjpl
bWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgaW50IGNhbGxlZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgZW1p
dExvYWRQYXlsb2FkKGNhbGxlZSwgcmVnVDApOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgpKSwgcmVnVDIpOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICAKLSAgICAvLyBub3cg
cmVnVDIgY29udGFpbnMgdGhlIGluaGVyaXRvcklELCB3aGljaCBpcyB0aGUgc3RydWN0dXJlIHRo
YXQgdGhlIG5ld2x5Ci0gICAgLy8gYWxsb2NhdGVkIG9iamVjdCB3aWxsIGhhdmUuCi0gICAgCi0g
ICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChyZWdUMiwgcmVnVDAsIHJlZ1QxKTsKLSAgICBl
bWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAg
ICBSZWdpc3RlcklEIGNhbGxlZVJlZyA9IHJlZ1QwOworICAgIFJlZ2lzdGVySUQgcmVzdWx0UmVn
ID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBSZWdp
c3RlcklEIHN0cnVjdHVyZVJlZyA9IHJlZ1QyOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9
IHJlZ1QzOworCisgICAgZW1pdExvYWRQYXlsb2FkKGNhbGxlZSwgY2FsbGVlUmVnKTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Q
cm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSks
IGFsbG9jYXRvclJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3RQdHIoWmVybywgYWxsb2NhdG9yUmVnKSk7CisKKyAgICBlbWl0QWxsb2NhdGVKU09i
amVjdChhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsK
KyAgICBlbWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3Vs
dFJlZyk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewotICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGluaGVy
aXRvciBJRAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9j
YXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWls
ZWQKKwogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7
CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE1ICs5NSwyNSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qbXAoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0X29wX25l
d19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKSwgcmVnVDAsIHJlZ1QxKTsKLSAgICAKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9iamVjdEFsbG9j
YXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKTsKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBK
U09iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2Nh
dG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAgUmVn
aXN0ZXJJRCByZXN1bHRSZWcgPSByZWdUMDsKKyAgICBSZWdpc3RlcklEIGFsbG9jYXRvclJlZyA9
IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9IHJlZ1QyOworCisgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIGFsbG9jYXRvclJlZyk7CisgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QoYWxsb2NhdG9yUmVnLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHJlc3VsdFJl
Zywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmpl
Y3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1
YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25ld19v
YmplY3QpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSk7Cisg
ICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC05MjIsMjIgKzkzMiwyOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
Y2FsbGVlKEluc3RydWN0aW9uCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVl
LCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkNhY2hlZEluaGVyaXRvcklEKCkpLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVz
dFB0cihaZXJvLCByZWdUMikpOwotICAgIAotICAgIC8vIG5vdyByZWdUMiBjb250YWlucyB0aGUg
aW5oZXJpdG9ySUQsIHdoaWNoIGlzIHRoZSBzdHJ1Y3R1cmUgdGhhdCB0aGUgbmV3bHkKLSAgICAv
LyBhbGxvY2F0ZWQgb2JqZWN0IHdpbGwgaGF2ZS4KLSAgICAKLSAgICBlbWl0QWxsb2NhdGVKU0Zp
bmFsT2JqZWN0KHJlZ1QyLCByZWdUMCwgcmVnVDEpOworICAgIFJlZ2lzdGVySUQgY2FsbGVlUmVn
ID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCByZXN1bHRSZWcgPSByZWdUMDsKKyAgICBSZWdpc3Rl
cklEIGFsbG9jYXRvclJlZyA9IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnID0g
cmVnVDI7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVnVDM7CisKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
Y2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7
CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0
dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVy
bywgYWxsb2NhdG9yUmVnKSk7CisKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JS
ZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBpbmhlcml0b3IgSUQKKyAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHByb2ZpbGUKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCisKICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOworICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7
CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNs
dWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgorI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtOTMxLDEwICs5
MzIsOSBAQCBORVZFUl9JTkxJTkUgc3RhdGljIHZvaWQgdHJ5Q2FjaGVHZXRCeUlECiAgICAgLy8g
Q2FjaGUgaGl0OiBTcGVjaWFsaXplIGluc3RydWN0aW9uIGFuZCByZWYgU3RydWN0dXJlcy4KIAog
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgIC8vIHNldCB0
aGlzIHVwLCBzbyBkZXJlZlN0cnVjdHVyZXMgY2FuIGRvIGl0J3Mgam9iLgogICAgICAgICBzdHVi
SW5mby0+aW5pdEdldEJ5SWRTZWxmKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoKHNsb3QuY2FjaGVk
UHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKLSAgICAgICAgICAgIHx8ICFN
YWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQob2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkKKyAgICAgICAgICAg
IHx8ICFNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4
T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkKICAg
ICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIHJldHVybkFk
ZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFkZHJlc3MpOwpAQCAt
MTMwMCw2ICsxMzAwLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
XwogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAgICAgSlNGdW5jdGlvbiog
Y29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwog
I2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTEzMDcsNyArMTMwOCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09
IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y29uc3RydWN0b3ItPmNhY2hlZEluaGVyaXRvcklEKGNhbGxGcmFtZSk7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoY2FsbEZyYW1lLCBp
bmxpbmVDYXBhY2l0eSktPnN0cnVjdHVyZSgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTM5NSw3ICsxMzk2LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04oSlNPYmplY3QqLCBvcF9uZXdfbwogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKIAotICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChzdGFja0ZyYW1l
LmNhbGxGcmFtZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMF0uc3RydWN0dXJlKCkpOwogfQogCiBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZ2VuZXJpYykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA4LDkgKzEwOCw5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxE
YXQKICAgICBBU1NFUlQoSW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDgpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgQVNTRVJUKCZnbG9iYWxEYXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3Ry
dWN0b3IoSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKElOTElORV9TVE9SQUdFX0NBUEFDSVRZKSkg
LSAmZ2xvYmFsRGF0YS5oZWFwLmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0g
MSk7CisgICAgQVNTRVJUKCZnbG9iYWxEYXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91
dERlc3RydWN0b3IoSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoSlNGaW5hbE9iamVjdDo6
ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKSAtICZnbG9iYWxEYXRhLmhlYXAuZmlyc3RBbGxvY2F0
b3JXaXRob3V0RGVzdHJ1Y3RvcnMoKSA9PSAxKTsKICNlbHNlCi0gICAgQVNTRVJUKCZnbG9iYWxE
YXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoSlNPYmplY3Q6OmFs
bG9jYXRpb25TaXplKElOTElORV9TVE9SQUdFX0NBUEFDSVRZKSkgLSAmZ2xvYmFsRGF0YS5oZWFw
LmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0gMyk7CisgICAgQVNTRVJUKCZn
bG9iYWxEYXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFj
aXR5KCkpKSAtICZnbG9iYWxEYXRhLmhlYXAuZmlyc3RBbGxvY2F0b3JXaXRob3V0RGVzdHJ1Y3Rv
cnMoKSA9PSAzKTsKICNlbmRpZgogICAgIEFTU0VSVChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCA9PSAweDQwMDAwMDAwKTsKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9PSAwKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkxMSW50Q29t
bW9uLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC00
ODMsOCArNDg0LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aAog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBBU1NFUlQoY29uc3RydWN0b3It
Pm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERh
dGEpID09IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKLSAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5jYWNoZWRJbmhlcml0b3JJRChleGVjKTsKKworICAgIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5hbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBh
Y2l0eSktPnN0cnVjdHVyZSgpOwogICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjLCBzdHJ1Y3R1cmUpKTsKIH0KIApAQCAtNTAzLDcgKzUwNSw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9jb252ZXJ0X3QKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfb2JqZWN0KQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgcGNbM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0
dXJlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMzYxLDE3ICszNjEsMTggQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9y
SURbdDBdLCB0MgotICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93Ci0gICAgYWxsb2NhdGVC
YXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgdDIsIHQwLCB0MSwgdDMs
IC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fYWxsb2NhdGlvblBy
b2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDBdLCB0MQorICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNT
bG93CisgICAgYWxsb2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Ns
b3cpCiAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAg
IGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2go
MykKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9nZXRfY2FsbGVlOgpAQCAtNDAzLDE4
ICs0MDQsMTggQEAgX2xsaW50X29wX2NvbnZlcnRfdGhpczoKIAogX2xsaW50X29wX25ld19vYmpl
Y3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAot
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpT
R2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKLSAgICBhbGxvY2F0
ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCB0MSwgdDAsIHQyLCB0
MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAg
ICBsb2FkcCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDBdLCB0MQorICAg
IGxvYWRwIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAg
YWxsb2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKICAgICBs
b2FkaSA0W1BDXSwgdDEKICAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2go
MikKKyAgICBkaXNwYXRjaCg0KQogCiAub3BOZXdPYmplY3RTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19vYmplY3QpCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNw
YXRjaCg0KQogCiAKIF9sbGludF9vcF9tb3Y6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI0MywxNiArMjQzLDE3IEBAIF9sbGludF9vcF9jcmVh
dGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQogICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlz
U2xvdwotICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5k
ZXgsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2FsbG9jYXRpb25Qcm9maWxlICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fYWxs
b2NhdG9yW3QwXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2FsbG9jYXRpb25Qcm9maWxl
ICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBidHB6
IHQxLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlSlNPYmplY3QodDEsIHQyLCB0MCwg
dDMsIC5vcENyZWF0ZVRoaXNTbG93KQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkK
ICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0
Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2goMykKKyAgICBkaXNwYXRjaCg0KQogCiAK
IF9sbGludF9vcF9nZXRfY2FsbGVlOgpAQCAtMjgzLDE3ICsyODQsMTcgQEAgX2xsaW50X29wX2Nv
bnZlcnRfdGhpczoKIAogX2xsaW50X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlW3QwXSwgdDEKLSAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4LCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAg
ICBsb2FkcEZyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAgICBsb2FkcCBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9hbGxvY2F0b3JbdDBdLCB0MQorICAgIGxvYWRwIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYWxsb2NhdGVKU09iamVjdCh0MSwgdDIs
IHQwLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGRp
c3BhdGNoKDQpCiAKIC5vcE5ld09iamVjdFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmV3X29iamVjdCkKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDQpCiAK
IAogX2xsaW50X29wX21vdjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMzY5LDMyICszNjksMjEgQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihw
cm9maWxlQXJnUwogLnN0YWNrSGVpZ2h0T0s6CiBlbmQKIAotbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZGV4LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBzbG93Q2FzZSkKK21hY3JvIGFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1
cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNsb3dDYXNlKQogICAgIGlmIEFMV0FZU19BTExPQ0FURV9T
TE9XCiAgICAgICAgIGptcCBzbG93Q2FzZQogICAgIGVsc2UKLSAgICAgICAgY29uc3Qgb2Zmc2V0
T2ZNeVNpemVDbGFzcyA9Ci0gICAgICAgICAgICBKU0dsb2JhbERhdGE6OmhlYXAgKwotICAgICAg
ICAgICAgSGVhcDo6bV9vYmplY3RTcGFjZSArCi0gICAgICAgICAgICBNYXJrZWRTcGFjZTo6bV9u
b3JtYWxTcGFjZSArCi0gICAgICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2U6OnByZWNpc2VB
bGxvY2F0b3JzICsKLSAgICAgICAgICAgIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZEFs
bG9jYXRvcgotICAgICAgICAKICAgICAgICAgY29uc3Qgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsID0g
CiAgICAgICAgICAgICBNYXJrZWRBbGxvY2F0b3I6Om1fZnJlZUxpc3QgKyAKICAgICAgICAgICAg
IE1hcmtlZEJsb2NrOjpGcmVlTGlzdDo6aGVhZAogCi0gICAgICAgICMgRklYTUU6IHdlIGNhbiBn
ZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgotICAgICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQotICAgICAgICAKICAgICAgICAgIyBHZXQg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCi0gICAgICAgIGxvYWRwIG9mZnNldE9m
TXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAg
ICAgICAgbG9hZHAgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRvcl0sIHJlc3VsdAogICAg
ICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKICAgICAgICAgCiAgICAgICAgICMgUmVtb3ZlIHRo
ZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgotICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2Ny
YXRjaDIKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zm
c2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2Ny
YXRjaDEKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbYWxs
b2NhdG9yXQogICAgIAogICAgICAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KICAgICAgICAg
c3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3Bw
CShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJCeXRlY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJQcm9maWxlckJ5dGVjb2RlLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcAkocmV2
aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmls
ZXJDb21waWxhdGlvbi5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5
dGVjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGVk
Qnl0ZWNvZGUuaCIKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJv
ZmlsZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NS
RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJPU1JFeGl0LmgiCiAKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2lu
LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyT3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIlByb2ZpbGVyT3JpZ2luLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFz
ZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyUHJvZmls
ZWRCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJQ
cm9maWxlZEJ5dGVjb2Rlcy5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
OCw3ICs3NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgOiBCYXNlKGdsb2JhbERhdGEs
IHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBt
X2V4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgdGhpcywgZXhlY3V0YWJsZSkKICAgICAgICAgLCBtX3Nj
b3BlKGdsb2JhbERhdGEsIHRoaXMsIHNjb3BlKQotICAgICAgICAsIG1faW5oZXJpdG9ySURXYXRj
aHBvaW50KEluaXRpYWxpemVkQmxpbmQpIC8vIFNlZSBjb21tZW50IGluIEpTRnVuY3Rpb24uY3Bw
IGNvbmNlcm5pbmcgdGhlIHJlYXNvbiBmb3IgdXNpbmcgSW5pdGlhbGl6ZWRCbGluZCBhcyBvcHBv
c2VkIHRvIEluaXRpYWxpemVkV2F0Y2hpbmcuCisgICAgICAgICwgbV9hbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQoSW5pdGlhbGl6ZWRCbGluZCkgLy8gU2VlIGNvbW1lbnQgaW4gSlNGdW5jdGlv
bi5jcHAgY29uY2VybmluZyB0aGUgcmVhc29uIGZvciB1c2luZyBJbml0aWFsaXplZEJsaW5kIGFz
IG9wcG9zZWQgdG8gSW5pdGlhbGl6ZWRXYXRjaGluZy4KICAgICB7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lv
biAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmIGhlYXAsIHNpemVfdCBzaQogICAgIEpTQ2VsbCogcmVzdWx0ID0gMDsKICAgICBpZiAoVDo6
bmVlZHNEZXN0cnVjdGlvbiAmJiBUOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKICAgICAgICAgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3Ioc2l6ZSkpOwotICAgIGVsc2UgaWYgKFQ6Om5lZWRzRGVzdHJ1Y3Rpb24g
JiYgIVQ6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQorICAgIGVsc2UgaWYgKFQ6Om5lZWRzRGVzdHJ1
Y3Rpb24pCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2Nh
dGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplKSk7CiAgICAgZWxzZSAKICAgICAgICAgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNp
emUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
UGFyc2VyLmgiCkBAIC04OCwxMiArODksMTIgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIAogICAgIC8vIHRoZSBvcHRpbWl6ZXIga2lja3MgaW4gZG9uJ3QgZGlzYWJs
ZSBvcHRpbWl6YXRpb25zLiBPbmNlIHRoZSBvcHRpbWl6ZXIga2lja3MgaW4sIHRoZQogICAgIC8v
IHdhdGNocG9pbnQgd2lsbCBzdGFydCB3YXRjaGluZyBhbmQgYW55IGNoYW5nZXMgd2lsbCBib3Ro
IGZvcmNlIGRlb3B0aW1pemF0aW9uIGFuZCBkaXNhYmxlCiAgICAgLy8gZnV0dXJlIGF0dGVtcHRz
IHRvIG9wdGltaXplLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGFyZSBndWFyYW50ZWVk
IHRoYXQgdGhlCi0gICAgLy8gaW5oZXJpdG9ySUQgaXMgY2hhbmdlZCBleGFjdGx5IG9uY2UgcHJp
b3IgdG8gb3B0aW1pemF0aW9ucyBraWNraW5nIGluLiBXZSBjb3VsZCBiZQorICAgIC8vIGFsbG9j
YXRpb24gcHJvZmlsZSBpcyBjaGFuZ2VkIGV4YWN0bHkgb25jZSBwcmlvciB0byBvcHRpbWl6YXRp
b25zIGtpY2tpbmcgaW4uIFdlIGNvdWxkIGJlCiAgICAgLy8gc21hcnRlciBhbmQgY291bnQgdGhl
IG51bWJlciBvZiB0aW1lcyB0aGUgcHJvdG90eXBlIGlzIGNsb2JiZXJlZCBhbmQgb25seSBvcHRp
bWl6ZSBpZiBpdAogICAgIC8vIHdhcyBjbG9iYmVyZWQgZXhhY3RseSBvbmNlLCBidXQgdGhhdCBz
ZWVtcyBsaWtlIG92ZXJraWxsLiBJbiBhbG1vc3QgYWxsIGNhc2VzIGl0IHdpbGwgYmUKICAgICAv
LyBjbG9iYmVyZWQgb25jZSwgYW5kIGlmIGl0J3MgY2xvYmJlcmVkIG1vcmUgdGhhbiBvbmNlLCB0
aGF0IHdpbGwgcHJvYmFibHkgb25seSBvY2N1cgogICAgIC8vIGJlZm9yZSB3ZSBzdGFydGVkIG9w
dGltaXppbmcsIGFueXdheS4KLSAgICAsIG1faW5oZXJpdG9ySURXYXRjaHBvaW50KEluaXRpYWxp
emVkQmxpbmQpCisgICAgLCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludChJbml0aWFsaXpl
ZEJsaW5kKQogewogfQogCkBAIC0xMDYsMTUgKzEwNywxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi1TdHJ1Y3R1cmUqIEpTRnVuY3Rpb246OmNh
Y2hlSW5oZXJpdG9ySUQoRXhlY1N0YXRlKiBleGVjKQorT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUq
IEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4
ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGdldChleGVjLCBnbG9i
YWxEYXRhLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgaWYgKHByb3RvdHlwZS5pc09i
amVjdCgpKQotICAgICAgICBtX2NhY2hlZEluaGVyaXRvcklELnNldChnbG9iYWxEYXRhLCB0aGlz
LCBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlw
ZShhc09iamVjdChwcm90b3R5cGUpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2NhY2hlZEluaGVy
aXRvcklELnNldChnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5lbXB0
eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKLSAgICByZXR1cm4gbV9jYWNoZWRJbmhlcml0b3JJRC5nZXQoKTsKKyAgICBKU09i
amVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBnbG9i
YWxEYXRhLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOworICAgIGlmICghcHJvdG90eXBlKQor
ICAgICAgICBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCk7Cisg
ICAgbV9hbGxvY2F0aW9uUHJvZmlsZS5pbml0aWFsaXplKGdsb2JhbE9iamVjdCgpLT5nbG9iYWxE
YXRhKCksIHRoaXMsIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOworICAgIHJldHVybiAmbV9h
bGxvY2F0aW9uUHJvZmlsZTsKIH0KIAogU3RyaW5nIEpTRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRl
KiBleGVjKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGMKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRJbmhlcml0b3JJRCk7CisgICAgdGhpc09i
amVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAog
Q2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCkBAIC0yMjEsMTIgKzIyMSwxMyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blBy
b3BlcnR5U2xvdChKU0NlCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewotICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7Ci0gICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7Ci0gICAgICAgICAg
ICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKKyAgICAgICAgICAgIEpTT2JqZWN0
KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KGdsb2JhbERhdGEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOworICAgICAgICAgICAgdGhpc09iamVjdC0+
cHV0RGlyZWN0KGdsb2JhbERhdGEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICAgICAgICAgIG9mZnNldCA9IHRo
aXNPYmplY3QtPmdldERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlKTsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
OwogICAgICAgICB9CiAKQEAgLTM1NSw5ICszNTYsOSBAQCB2b2lkIEpTRnVuY3Rpb246OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91
dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9jYWNo
ZWRJbmhlcml0b3JJRC5jbGVhcigpOwotICAgICAgICB0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklE
V2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgpOwotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRv
IGJlIGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9jYWNoZWRJbmhlcml0b3JJ
RC4KKyAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOworICAg
ICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5ub3RpZnlXcml0
ZSgpOworICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBb
W1B1dF1dIG11c3QgY2xlYXIgbV9hbGxvY2F0aW9uUHJvZmlsZS4KICAgICAgICAgUHV0UHJvcGVy
dHlTbG90IGRvbnRDYWNoZTsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwMiw4
ICs0MDMsOCBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAg
ICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9jYWNoZWRJbmhlcml0b3JJRC5jbGVhcigpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEV2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgp
OworICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7CisgICAg
ICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50Lm5vdGlmeVdyaXRl
KCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIH0KIApAQCAt
NDY5LDcgKzQ3MCw2IEBAIENvbnN0cnVjdFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGEK
ICAgICBjb25zdHJ1Y3REYXRhLmpzLnNjb3BlID0gdGhpc09iamVjdC0+c2NvcGUoKTsKICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZUpTOwogfQotICAgIAogCiBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERp
c3BsYXlOYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogb2JqZWN0KQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24g
MTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTY29w
ZS5oIgorI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiV2F0
Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTExNiw0MSArMTE3LDQyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBzaXpl
X3Qgb2Zmc2V0T2ZTY29wZUNoYWluKCkKKyAgICAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZTY29wZUNoYWluKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0
YXRpYyBpbmxpbmUgc2l6ZV90IG9mZnNldE9mRXhlY3V0YWJsZSgpCisgICAgICAgIHN0YXRpYyBp
bmxpbmUgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9leGVjdXRhYmxlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFN0cnVjdHVyZSogY2FjaGVkSW5oZXJpdG9ySUQoRXhlY1N0YXRl
KiBleGVjKQorICAgICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRp
b25Qcm9maWxlKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFtX2NhY2hl
ZEluaGVyaXRvcklEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVJbmhlcml0b3JJRChl
eGVjKTsKLSAgICAgICAgICAgIHJldHVybiBtX2NhY2hlZEluaGVyaXRvcklELmdldCgpOworICAg
ICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2FsbG9jYXRpb25Q
cm9maWxlKTsKICAgICAgICAgfQogCi0gICAgICAgIFN0cnVjdHVyZSogdHJ5R2V0S25vd25Jbmhl
cml0b3JJRCgpCisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBhbGxvY2F0aW9uUHJv
ZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2FjaGVkSW5oZXJpdG9ySUQpCisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobV9hbGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVDYXBhY2l0eSA8PSBtX2FsbG9jYXRpb25Qcm9maWxlLnN0
cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9hbGxv
Y2F0aW9uUHJvZmlsZTsKKyAgICAgICAgfQorCisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKiB0cnlHZXRBbGxvY2F0aW9uUHJvZmlsZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtX2FsbG9jYXRpb25Qcm9maWxlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICAgICAgaWYgKG1faW5oZXJpdG9ySURXYXRjaHBvaW50Lmhhc0JlZW5JbnZhbGlk
YXRlZCgpKQorICAgICAgICAgICAgaWYgKG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50Lmhh
c0JlZW5JbnZhbGlkYXRlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgcmV0dXJuIG1fY2FjaGVkSW5oZXJpdG9ySUQuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4g
Jm1fYWxsb2NhdGlvblByb2ZpbGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQg
YWRkSW5oZXJpdG9ySURXYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVCh0cnlHZXRLbm93bkluaGVyaXRvcklEKCkpOwotICAgICAg
ICAgICAgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQuYWRkKHdhdGNocG9pbnQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkNhY2hlZEluaGVyaXRvcklEKCkKKyAg
ICAgICAgdm9pZCBhZGRBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0
Y2hwb2ludCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U0Z1bmN0aW9uLCBtX2NhY2hlZEluaGVyaXRvcklEKTsKKyAgICAgICAgICAgIEFTU0VSVCh0cnlH
ZXRBbGxvY2F0aW9uUHJvZmlsZSgpKTsKKyAgICAgICAgICAgIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50LmFkZCh3YXRjaHBvaW50KTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgpA
QCAtMTYyLDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKIAotICAg
ICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJpdG9ySUQoRXhlY1N0YXRlKik7CisgICAgICAgIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUq
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAt
MTg3LDggKzE4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFdyaXRlQmFycmllcjxF
eGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOwogICAgICAgICBXcml0ZUJhcnJpZXI8SlNTY29w
ZT4gbV9zY29wZTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRJbmhl
cml0b3JJRDsKLSAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2luaGVyaXRvcklEV2F0Y2hw
b2ludDsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgbV9hbGxvY2F0aW9uUHJvZmls
ZTsKKyAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIzLDggKzIyMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fd2l0
aFNjb3BlU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTV2l0aFNjb3Bl
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpOwog
Ci0gICAgbV9lbXB0eU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBnbG9iYWxEYXRhKCkucHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90
eXBlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7Ci0gICAgbV9udWxsUHJvdG90eXBlT2JqZWN0
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTRmluYWxPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhKCksIHRoaXMsIGpzTnVsbCgpKSk7CisgICAgbV9udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpT
RmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhKCksIHRoaXMsIGpzTnVsbCgp
LCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSkpOwogCiAgICAgbV9jYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYXJndW1lbnRzU3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTUx
Myw3ICs1MTIsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tPYmplY3RTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VtcHR5T2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25TdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxs
YmFja09iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9k
YXRlU3RydWN0dXJlOwotICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bGxQcm90
b3R5cGVPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CkBAIC0zMDMsNyArMzAyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGNh
bGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBl
bXB0eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CkBAIC01
MTQsMTYgKzUxMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZ2xvYmFsRGF0
YSgpLmR5bmFtaWNHbG9iYWxPYmplY3Q7CiAgICAgfQogCi0gICAgaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIH0KLQogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1
Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJv
ZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5pdGlhbExlbmd0
aCA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTo6dXBk
YXRlTGFzdEFsbG9jYXRpb25Gb3IocHJvZmlsZSwgSlNBcnJheTo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgaW5pdGlhbExlbmd0aCA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYID8gZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSA6IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9m
aWxlRHVyaW5nQWxsb2NhdGlvbihwcm9maWxlKSwgaW5pdGlhbExlbmd0aCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTG9jYWwuaCIKICNpbmNs
dWRlICJMb2NhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NTksNyArOTU5LDYgQEAgcHJvdGVjdGVkOgogICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7
CiB9OwogCi0KIC8vIEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQg
aGFzIHNvbWUgaW50ZXJuYWwgc3RvcmFnZSwKIC8vIGJ1dCBhbHNvIHByZXNlcnZlcyBzb21lIHNw
YWNlIGluIHRoZSBjb2xsZWN0b3IgY2VsbCBmb3IgYWRkaXRpb25hbAogLy8gZGF0YSBtZW1iZXJz
IGluIGRlcml2ZWQgdHlwZXMuCkBAIC05OTgsMTAgKzk5NywyMiBAQCBjbGFzcyBKU0ZpbmFsT2Jq
ZWN0IDogcHVibGljIEpTT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTT2JqZWN0IEJh
c2U7CiAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdFNpemUgPSA2NDsKKyAgICBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpCisgICAgeworICAg
ICAgICByZXR1cm4gKGRlZmF1bHRTaXplIC0gYWxsb2NhdGlvblNpemUoMCkpIC8gc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heFNpemUgPSA1MTI7CisgICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBtYXhJbmxpbmVDYXBh
Y2l0eSgpCisgICAgeworICAgICAgICByZXR1cm4gKG1heFNpemUgLSBhbGxvY2F0aW9uU2l6ZSgw
KSkgLyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKICAgICBzdGF0aWMg
SlNGaW5hbE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8sIE5vbkFycmF5LCBJTkxJTkVfU1RPUkFHRV9D
QVBBQ0lUWSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksICZzX2luZm8sIE5vbkFycmF5LCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgfQogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpAQCAtMTA5NSwxMSArMTEwNiw2IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRCdXR0ZXJmbHlXaXRob3UKICAgICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZseTsKIH0KIAot
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUo
ZXhlYywgc3RydWN0dXJlKTsKLX0KLQogaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFs
dWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBDYWxsVHlwZSByZXN1bHQgPSB2
YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0
YSh2YWx1ZS5hc0NlbGwoKSwgY2FsbERhdGEpIDogQ2FsbFR5cGVOb25lOwpAQCAtMTQwMyw3ICsx
NDA5LDcgQEAgaW5saW5lIHNpemVfdCBvZmZzZXRJbkJ1dHRlcmZseShQcm9wZXJ0eQogICAgIHJl
dHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSArIEJ1dHRlcmZseTo6aW5kZXhP
ZlByb3BlcnR5U3RvcmFnZSgpOwogfQogCi0vLyBUaGlzIGlzIGEgaGVscGVyIGZvciBwYXRjaGlu
ZyBjb2RlIHdoZXJlIHlvdSB3YW50IHRvIGVtaXQgYSBsb2FkIG9yIHN0b3JlIGFuZAorLy8gSGVs
cGVycyBmb3IgcGF0Y2hpbmcgY29kZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0IGEgbG9hZCBvciBz
dG9yZSBhbmQKIC8vIHRoZSBiYXNlIGlzOgogLy8gRm9yIGlubGluZSBvZmZzZXRzOiBhIHBvaW50
ZXIgdG8gdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UgcG9pbnRlci4KIC8vIEZvciBvdXQtb2YtbGlu
ZSBvZmZzZXRzOiB0aGUgYmFzZSBvZiB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KQEAgLTE0MTQs
NiArMTQyMCwxNyBAQCBpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvCiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0Ojpi
dXR0ZXJmbHlPZmZzZXQoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uob2Zmc2V0KTsKIH0KIAorLy8gUmV0dXJucyB0aGUgbWF4aW11bSBvZmZzZXQgYSBs
b2FkIGluc3RydWN0aW9uIHdpbGwgZW5jb2RlLgoraW5saW5lIHNpemVfdCBtYXhPZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgcmV0dXJuIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShv
ZmZzZXQpCisgICAgICAgICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpOworI2Vsc2UKKyAgICByZXR1cm4gb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKG9mZnNldCk7CisjZW5kaWYKK30KKwogaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9C
YXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQo
b2Zmc2V0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsMTYgQEAgdm9pZCBKU1Byb3h5Ojpz
ZXRUYXJnZXQoSlNHbG9iYWxEYXRhJiBnbAogICAgIEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QpOwogICAgIG1fdGFyZ2V0LnNldChnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxP
YmplY3QpOwogICAgIHNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QtPnByb3Rv
dHlwZSgpKTsKLSAgICBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5jbGVhckVtcHR5T2JqZWN0U3Ry
dWN0dXJlRm9yUHJvdG90eXBlKHRoaXMpOworCisgICAgUHJvdG90eXBlTWFwJiBwcm90b3R5cGVN
YXAgPSBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcDsKKyAgICBpZiAoIXByb3RvdHlwZU1hcC5pc1By
b3RvdHlwZSh0aGlzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBpcyBzbG93IGJ1
dCBjb25zdGFudCB0aW1lLiBXZSB0aGluayBpdCdzIHZlcnkgcmFyZSBmb3IgYSBwcm94eQorICAg
IC8vIHRvIGJlIGEgcHJvdG90eXBlLCBhbmQgcmVhc29uYWJseSByYXJlIHRvIHJldGFyZ2V0IGEg
cHJveHksCisgICAgLy8gc28gc2xvdyBjb25zdGFudCB0aW1lIGlzIE9LLgorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDw9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCk7ICsraSkK
KyAgICAgICAgcHJvdG90eXBlTWFwLmNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5
cGUodGhpcywgaSk7CiB9CiAKIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29uc3QgSlNPYmpl
Y3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1
ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9B
U0NJSUNUeXBlLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiwxOSArMTAyLDE5IEBAIGJvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5RGUKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0Pihl
eGVjLCBFeGVjU3RhdGU6Om9iamVjdENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxPYmpl
Y3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAK
LS8vIEVDTUEgMTUuMi4yCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgQXJnTGlzdCYgYXJncykKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1
Y3RPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOwogICAgIEpTVmFsdWUgYXJnID0gYXJncy5hdCgwKTsKICAgICBpZiAoYXJnLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgcmV0dXJuIGFyZy50b09i
amVjdChleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdE9iamVjdChleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKSwgYXJncykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0T2JqZWN0KGV4ZWMpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBPYmplY3RDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQpAQCAtMTI1LDggKzEyNSw3IEBAIENvbnN0cnVjdFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6Omdl
dENvbnMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgYXNJbnRlcm5h
bEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdChleGVjKSk7CiB9CiAKIENhbGxU
eXBlIE9iamVjdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCkBAIC0zNTEsNyArMzUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4g
T2JqZWN0IG9yIG51bGwuIikpKTsKICAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKLSAgICAgICAg
PyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvdG90eXBl
TWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKGFzT2JqZWN0KHByb3RvKSkpCisg
ICAgICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQogICAg
ICAgICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShu
ZXdPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw4IEBACiAjZGVmaW5lIE9iamVjdENvbnN0cnVjdG9yX2gKIAogI2luY2x1ZGUgIkludGVy
bmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9i
amVjdFByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTgsNiArNjAsMzAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKKyAgICBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSk7
CisgICAgfQorCisgICAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgUHJvdG90eXBlTWFwJiBwcm90b3R5cGVNYXAg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5wcm90b3R5cGVNYXA7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gcHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJv
dG90eXBlKAorICAgICAgICAgICAgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOworICAgIH0KKwor
ICAgIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIHByb3RvdHlwZSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNh
cGFjaXR5KCkpOworICAgIH0KKworICAgIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90
eXBlKCkpOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBPYmplY3RD
b25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiw2
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZpbmUg
SU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNwotI2Vsc2UKLSNkZWZpbmUgSU5MSU5FX1NUT1JBR0Vf
Q0FQQUNJVFkgNgotI2VuZGlmCi0KIHR5cGVkZWYgaW50IFByb3BlcnR5T2Zmc2V0OwogCiBzdGF0
aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCShyZXZpc2lvbiAx
NDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MiwxOCArNTIsMjQgQEAgdm9pZCBQcm90b3R5cGVNYXA6OmFk
ZFByb3RvdHlwZShKU09iamVjdAogICAgIC8vIHVzZWQgYXMgYSBwcm90b3R5cGUuCiB9CiAKLVN0
cnVjdHVyZSogUHJvdG90eXBlTWFwOjplbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShK
U09iamVjdCogb2JqZWN0KQorU3RydWN0dXJlKiBQcm90b3R5cGVNYXA6OmVtcHR5T2JqZWN0U3Ry
dWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KQogewotICAgIFdlYWtHQ01hcDxKU09iamVjdCosIFN0cnVjdHVyZT46OkFkZFJlc3Vs
dCBhZGRSZXN1bHQgPSBtX3N0cnVjdHVyZXMuYWRkKG9iamVjdCwgbnVsbHB0cik7CisgICAgU3Ry
dWN0dXJlTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zdHJ1Y3R1cmVzLmFkZChzdGQ6Om1h
a2VfcGFpcihwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KSwgbnVsbHB0cik7CiAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBBU1NFUlQoaXNQcm90b3R5cGUob2JqZWN0
KSk7CisgICAgICAgIEFTU0VSVChpc1Byb3RvdHlwZShwcm90b3R5cGUpKTsKICAgICAgICAgcmV0
dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgYWRkUHJv
dG90eXBlKG9iamVjdCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0ZpbmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUob2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCBv
YmplY3QtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QpOworICAgIGFkZFByb3RvdHlwZShwcm90b3R5
cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKAorICAgICAgICBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOwog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdHJ1Y3R1cmU7CiAgICAgcmV0dXJuIHN0
cnVjdHVyZTsKIH0KIAordm9pZCBQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1
cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkp
Cit7CisgICAgbV9zdHJ1Y3R1cmVzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihvYmplY3QsIGlubGlu
ZUNhcGFjaXR5KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxNiArMzMsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU09iamVjdDsK
IGNsYXNzIFN0cnVjdHVyZTsKIAorLy8gVHJhY2tzIHRoZSBjYW5vbmljYWwgc3RydWN0dXJlIGFu
IG9iamVjdCBzaG91bGQgYmUgYWxsb2NhdGVkIHdpdGggd2hlbiBpbmhlcml0aW5nIGZyb20gYSBn
aXZlbiBwcm90b3R5cGUuCiBjbGFzcyBQcm90b3R5cGVNYXAgewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUo
SlNPYmplY3QqKTsKLSAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5
cGUoSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5T2Jq
ZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNp
dHkpOworICAgIHZvaWQgY2xlYXJFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09i
amVjdCosIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICB2b2lkIGFkZFByb3RvdHlwZShK
U09iamVjdCopOwogICAgIGJvb2wgaXNQcm90b3R5cGUoSlNPYmplY3QqKTsgLy8gUmV0dXJucyBh
IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBXZWFrR0NNYXA8SlNPYmpl
Y3QqLCBKU09iamVjdD4gbV9wcm90b3R5cGVzOwotICAgIFdlYWtHQ01hcDxKU09iamVjdCosIFN0
cnVjdHVyZT4gbV9zdHJ1Y3R1cmVzOworICAgIHR5cGVkZWYgV2Vha0dDTWFwPHN0ZDo6cGFpcjxK
U09iamVjdCosIHVuc2lnbmVkPiwgU3RydWN0dXJlPiBTdHJ1Y3R1cmVNYXA7CisgICAgU3RydWN0
dXJlTWFwIG1fc3RydWN0dXJlczsKIH07CiAKIGlubGluZSBib29sIFByb3RvdHlwZU1hcDo6aXNQ
cm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkKQEAgLTUwLDExICs1Miw2IEBAIGlubGluZSBib29s
IFByb3RvdHlwZU1hcDo6aXNQcm90b3R5cGUoSlMKICAgICByZXR1cm4gbV9wcm90b3R5cGVzLmNv
bnRhaW5zKG9iamVjdCk7CiB9CiAKLWlubGluZSB2b2lkIFByb3RvdHlwZU1hcDo6Y2xlYXJFbXB0
eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCogb2JqZWN0KQotewotICAgIG1f
c3RydWN0dXJlcy5yZW1vdmUob2JqZWN0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBQcm90b3R5cGVNYXBfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5
LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKCkKICNlbmRpZgogfQogCi1TdHJ1
Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUlu
Zm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKK1N0cnVjdHVyZTo6U3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlU3Ry
dWN0dXJlLmdldCgpKQogICAgICwgbV90eXBlSW5mbyh0eXBlSW5mbykKICAgICAsIG1faW5kZXhp
bmdUeXBlKGluZGV4aW5nVHlwZSkKQEAgLTE3MSw2ICsxNzEsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX2RpZFRyYW5zaXRpb24oZmFsc2UpCiAg
ICAgLCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZChmYWxzZSkKIHsKKyAgICBBU1NFUlQoaW5saW5l
Q2FwYWNpdHkgPD0gSlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgQVNT
RVJUKGlubGluZUNhcGFjaXR5IDwgZmlyc3RPdXRPZkxpbmVPZmZzZXQpOwogfQogCiBjb25zdCBD
bGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8gPSB7ICJTdHJ1Y3R1cmUiLCAwLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFN0cnVjdHVyZSkgfTsKQEAgLTI0NSw3ICsyNDcsNyBAQCB2b2lkIFN0
cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
Pm1fcHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUt
Pm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFz
dE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKKyAgICAgICAgICAgIG1fcHJv
cGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEs
IDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNTMsNyArMjU1LDcgQEAg
dm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlm
ICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKKyAgICAgICAg
Y3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1f
aW5saW5lQ2FwYWNpdHkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNp
emUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNb
aV07CkBAIC0zOTMsNiArMzk1LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdAogICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKIAog
ICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIGNoZWNrT2Zmc2V0KHRyYW5z
aXRpb24tPm1fb2Zmc2V0LCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICBzdHJ1
Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAg
ICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KQEAgLTU2NCw2ICs1NjcsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0CiAgICAgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVz
SW5QcmV2aW91cyA9IGF0dHJpYnV0ZXM7CiAgICAgdHJhbnNpdGlvbi0+bV9pbmRleGluZ1R5cGUg
PSBpbmRleGluZ1R5cGU7CiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1f
b2Zmc2V0OworICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPm1fb2Zmc2V0LCB0cmFuc2l0aW9u
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAKICAgICBpZiAoc3RydWN0dXJlLT5tX3Byb3BlcnR5
VGFibGUpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUp
CkBAIC03MTksNyArNzIzLDcgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6
OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25l
cikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5
VGFibGUobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlw
ZSgpKSkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVy
dHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVy
dHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBh
Y2l0eSkpKTsKIH0KIAogUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5m
byosIEluZGV4aW5nVHlwZSA9IE5vbkFycmF5LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0
eSA9IDApOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5lQ2Fw
YWNpdHkgPSAwKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yMjEsNyArMjIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0
LCBtX3R5cGVJbmZvLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpOwogICAgICAgICB9CiAgICAg
ICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKICAgICAgICAgewpAQCAt
MzU5LDcgKzM1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBl
LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
Jik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsK
IApAQCAtNDAwLDcgKzQwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgdHJhbnNp
dGlvbkNvdW50KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgLy8gU2luY2UgdGhlIG51
bWJlciBvZiB0cmFuc2l0aW9ucyBpcyBhbHdheXMgdGhlIHNhbWUgYXMgbV9vZmZzZXQsIHdlIGtl
ZXAgdGhlIHNpemUgb2YgU3RydWN0dXJlIGRvd24gYnkgbm90IHN0b3JpbmcgYm90aC4KLSAgICAg
ICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBl
SW5mby50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zm
c2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KTsKICAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgaXNWYWxpZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5
cGVDaGFpbikgY29uc3Q7CkBAIC00NTQsNyArNDU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxp
bmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlLCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKKyAgICBpbmxp
bmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChj
bGFzc0luZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTc4KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDEt
MjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdGF0aWMg
c2l6ZSBpbmZlcmVuY2UgZm9yIEphdmFTY3JpcHQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MDkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6IEFk
ZGVkLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHA6IEluY2x1ZGUgT2JqZWN0Q29uc3RydWN0b3IuaCBiZWNhdXNlCisgICAgICAgIHRoYXQncyB3
aGVyZSBjcmVhdGVFbXB0eU9iamVjdCgpIGlzIGxvY2F0ZWQgbm93LgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFu
Z2UuCisKIDIwMTMtMDEtMjggIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAg
ICAgICAgIFtDU1MgRXhjbHVzaW9uc10gUmVmYWN0b3IgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
IHRvIG1vcmUgZ2VuZXJhbCBFeGNsdXNpb25TaGFwZUluZm8KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBA
QAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9PYmplY3RDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX09iamVjdENvbnN0cnVjdG9yX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCShyZXZpc2lv
biAxNDA0NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRl
IDxydW50aW1lL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cE9iamVjdC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAxNDA0NDUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0Um93
TGlzdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2Uu
aD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cC5oPgpAQCAtMTY3NCw3ICsxNjc1
LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogICAgICAgICBj
YXNlIE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFj
ay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQogICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOwotICAgICAgICAgICAg
SlNPYmplY3QqIG91dE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fZXhlYywgbV9nbG9i
YWxPYmplY3QpOworICAgICAgICAgICAgSlNPYmplY3QqIG91dE9iamVjdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KG1fZXhlYywgbV9nbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAg
ICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kKG91dE9iamVjdCk7CiAgICAgICAgICAgICBvdXRw
dXRPYmplY3RTdGFjay5hcHBlbmQob3V0T2JqZWN0KTsKICAgICAgICAgICAgIC8vIGZhbGx0aHJv
dWdoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185119</attachid>
            <date>2013-01-28 17:55:50 -0800</date>
            <delta_ts>2013-01-28 19:47:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108093-20130128175237.patch</filename>
            <type>text/plain</type>
            <size>154924</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBA
QAorMjAxMy0wMS0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN0YXRpYyBzaXplIGluZmVyZW5jZSBmb3IgSmF2YVNjcmlwdCBvYmplY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwOTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUub3JkZXI6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUGF5IHRoZSB0YXggbWFuLgorCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBvcF9uZXdfb2JqZWN0IGFuZCBvcF9jcmVhdGVfdGhpcyBub3cKKyAg
ICAgICAgaGF2ZSBhbiBleHRyYSBpbmZlcnJlZElubGluZUNhcGFjaXR5IGFyZ3VtZW50LiBUaGlz
IGlzIHRoZSBzdGF0aWNhbGx5CisgICAgICAgIGluZmVycmVkIGlubGluZSBjYXBhY2l0eSwganVz
dCBmcm9tIGFuYWx5emluZyBzb3VyY2UgdGV4dC4gb3BfbmV3X29iamVjdAorICAgICAgICBhbHNv
IGdldHMgYSBwb2ludGVyIHRvIGFuIGFsbG9jYXRpb24gcHJvZmlsZS4gKEZvciBvcF9jcmVhdGVf
dGhpcywgdGhlCisgICAgICAgIHByb2ZpbGUgaXMgaW4gdGhlIGNvbnN0cnV0b3IgZnVuY3Rpb24u
KQorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogTGluayBvcF9uZXdfb2Jq
ZWN0LgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
ZW5jZXMpOiBNYXJrIG91ciBwcm9maWxlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoQ29kZUJsb2NrKTogUmVtb3ZlZCBzb21lIGRlYWQgY29kZS4gQWRkZWQg
b2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVj
dGlvbi5oOgorICAgICAgICAoSlNDKTogTmV3IHVuaW9uIHR5cGUsIHNpbmNlIGFuIGluc3RydWN0
aW9uIG9wZXJhbmQgbWF5IHBvaW50IHRvIGFuCisgICAgICAgIG9iamVjdCBhbGxvY2F0aW9uIHBy
b2ZpbGUgbm93LgorCisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmlubGluZUNhcGFjaXR5
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmNsZWFyKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQpOiBOZXcgY2xhc3MKKyAgICAgICAgZm9yIHRyYWNraW5nIGEgcHJlZGljdGlvbiBhYm91
dCBvYmplY3QgYWxsb2NhdGlvbjogc3RydWN0dXJlLCBpbmxpbmUKKyAgICAgICAgY2FwYWNpdHks
IGFsbG9jYXRvciB0byB1c2UuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOiBVcGRhdGVkIGluc3RydWN0
aW9uIHNpemVzLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZXMpOgorICAgICAgICAoVW5saW5rZWRDb2RlQmxvY2spOiBVbmxpbmtlZCBzdXBw
b3J0IGZvciBhbGxvY2F0aW9uIHByb2ZpbGVzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKTogS2lsbCBhbGwgcmVtYWluaW5nIGFuYWx5c2VzIGF0IHRoZQorICAgICAgICBlbmQg
b2YgY29kZWdlbiwgc2luY2UgdGhpcyBpcyBvdXIgbGFzdCBvcHBvcnR1bml0eS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOiBBZGRlZCBhIHN0
YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciB0byBieXRlY29kZSBnZW5lcmF0aW9uLiBJ
dCB0cmFja3MgaW5pdGlhbGl6aW5nIGFzc2lnbm1lbnRzIGFuZAorICAgICAgICBtYWtlcyBhIGd1
ZXNzIGFib3V0IGhvdyBtYW55IHdpbGwgaGFwcGVuLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZXR0
ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3Vt
ZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFs
KTogQWRkZWQgaG9va3MgdG8gdGhlIHN0YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciwg
c28gaXQgY2FuIG9ic2VydmUgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOiBGYWN0b3JlZCB0aGlzIGludG8g
YSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24gYmVjYXVzZSBpdCB3YXMgYSBzaWduaWZpY2FudCBh
bW91bnQgb2YgbG9naWMsIGFuZCBJIHdhbnRlZCB0bworICAgICAgICBhZGQgdG8gaXQuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KTogQWRkZWQgYSBob29rIHRvIHByb2ZpbGVkIG9w
Y29kZXMKKyAgICAgICAgdG8gdHJhY2sgdGhlaXIgc3RvcmVzLCBpbiBjYXNlIGEgc3RvcmUga2ls
bHMgYSBwcm9maWxlZCBhbGxvY2F0aW9uLiBTaW5jZQorICAgICAgICBwcm9maWxlZCBvcGNvZGVz
IGFyZSBiYXNpY2FsbHkgdGhlIG9ubHkgaW50ZXJlc3Rpbmcgc3RvcmVzIHdlIGRvLCB0aGlzCisg
ICAgICAgIGlzIGEgY29udmVuaWVudCBwbGFjZSB0byBub3RpY2UgYW55IHN0b3JlIHRoYXQgbWln
aHQga2lsbCBhbiBhbGxvY2F0aW9uLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6IEFzIGFib3ZlLgorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoU3RhdGljUHJvcGVydHlBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0
YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmFkZFByb3BlcnR5SW5kZXgpOgorICAgICAgICAoSlNDOjpT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzOjpwcm9wZXJ0eUluZGV4Q291bnQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKTogU2ltcGxlIGhlbHBlcgor
ICAgICAgICBjbGFzcyBmb3IgdHJhY2tpbmcgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAg
ICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6IEFkZGVkLgorICAg
ICAgICAoU3RhdGljUHJvcGVydHlBbmFseXplcik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXI6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJv
cGVydHlBbmFseXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlB
bmFseXplcjo6cHV0QnlJZCk6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6
Om1vdik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmtpbGwpOiBIZWxw
ZXIgY2xhc3MgZm9yIG9ic2VydmluZyBhbGxvY2F0aW9ucworICAgICAgICBhbmQgc3RvcmVzIGFu
ZCBtYWtpbmcgYW4gaW5saW5lIGNhcGFjaXR5IGd1ZXNzLiBUaGUgaGV1cmlzdGljcyBoZXJlIGFy
ZQorICAgICAgICBpbnRlbnRpb25hbGx5IG1pbmltYWwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRo
aXMgb25lIGNsYXNzIHRvIHRyeSB0bworICAgICAgICByZS1jcmVhdGUgc29tZXRoaW5nIGxpa2Ug
YSBERkcgb3IgYSBydW50aW1lIGFuYWx5c2lzLiBJZiB3ZSBkaXNjb3ZlciB0aGF0CisgICAgICAg
IHdlIG5lZWQgdGhvc2Uga2luZHMgb2YgYW5hbHlzZXMsIHdlIHNob3VsZCBqdXN0IHJlcGxhY2Ug
dGhpcyBjbGFzcyB3aXRoCisgICAgICAgIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIFRoaXMg
Y2xhc3MgdHJhY2tzIG11bHRpcGxlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoZSBzYW1lIG9iamVj
dCAtLSB0aGF0CisgICAgICAgIGhhcHBlbnMgYSBsb3QsIHdoZW4gbW92aW5nIGxvY2FscyBpbnRv
IHRlbXBvcmFyeSByZWdpc3RlcnMgLS0gYnV0IGl0CisgICAgICAgIGRvZXNuJ3QgdHJhY2sgY29u
dHJvbCBmbG93IG9yIG11bHRpcGxlIG9iamVjdHMgdGhhdCBhbGlhcyB0aGUgc2FtZSByZWdpc3Rl
ci4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6IFVwZGF0ZWQgZm9yIGlubGluZSBjYXBhY2l0eSBhbmQK
KyAgICAgICAgYWxsb2NhdGlvbiBwcm9maWxlLgorCisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJbmxpbmVDYXBhY2l0eSk6CisgICAgICAgIChO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppbmxpbmVDYXBhY2l0eSk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzRnVuY3Rpb24pOiBHaXZlIHRoZSBncmFwaCBhIGdvb2Qgd2F5
IHRvIHJlcHJlc2VudAorICAgICAgICBpbmxpbmUgY2FwYWNpdHkgZm9yIGFuIGFsbG9jYXRpb24u
CisKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6IFVwZGF0ZWQg
Zm9yIHJlbmFtZS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDogVXBkYXRlZCBm
b3IgaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6IFdl
IHBhc3MgdGhlIGlubGluZSBjYXBhY2l0eSB0byB0aGUgc2xvdyBjYXNlIGFzCisgICAgICAgIGFu
IGFyZ3VtZW50LiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXksIHNpbmNlIGl0J3Mgc3RvcmVkIGFz
IGEgYnl0ZWNvZGUgb3BlcmFuZC4KKworICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U6OnByb3BhZ2F0ZSk6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIGRmZy9E
RkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOiBGaXhl
ZCBhIGhvcnJpYmxlIG9mZi1ieS1vbmUtaGFsZiBidWcgdGhhdCBvbmx5CisgICAgICAgIGFwcGVh
cnMgd2hlbiBkb2luZyBhbiBpbmxpbmUgY2FjaGVkIGxvYWQgZm9yIHByb3BlcnR5IG51bWJlciA2
NCBvbiBhIDMyLWJpdAorICAgICAgICBzeXN0ZW0uIEluIEpTVkFMVUUzMl82NCBsYW5kLCAib2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlIiBpcyB0aGUKKyAgICAgICAgb2Zmc2V0IG9mIHRo
ZSA2NGJpdCBKU1ZhbHVlIC0tIGJ1dCB3ZSdsbCBhY3R1YWxseSBpc3N1ZSB0d28gbG9hZHMsIG9u
ZSBmb3IKKyAgICAgICAgdGhlIHBheWxvYWQgYXQgdGhhdCBvZmZzZXQsIGFuZCBvbmUgZm9yIHRo
ZSB0YWcgYXQgdGhhdCBvZmZzZXQgKyA0LiBXZSBuZWVkCisgICAgICAgIHRvIGVuc3VyZSB0aGF0
IGJvdGggbG9hZHMgaGF2ZSBhIGNvbXBhY3QgcmVwcmVzZW50YXRpb24sIG9yIHdlJ2xsIGNvcnJ1
cHQKKyAgICAgICAgdGhlIGluc3RydWN0aW9uIHN0cmVhbS4KKworICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKToK
KyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogTG90cyBvZiByZWZhY3RvcmluZyB0byBz
dXBwb3J0CisgICAgICAgIHBhc3NpbmcgYW4gYWxsb2NhdG9yIHRvIG91ciBhbGxvY2F0aW9uIGZ1
bmN0aW9uLCBhbmQvb3IgcGFzc2luZyBhIFN0cnVjdHVyZQorICAgICAgICBhcyBhIHJlZ2lzdGVy
IGluc3RlYWQgb2YgYW4gaW1tZWRpYXRlLgorCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKTogQWRkZWQgYW4g
YWNjZXNzb3IgdG8gc2ltcGxpZnkKKyAgICAgICAgSklUIGNvZGUgZ2VuZXJhdGlvbiBvZiBhbGxv
Y2F0aW9uIGZyb20gYW4gYXJiaXRyYXJ5IGFsbG9jYXRvci4KKworICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19v
YmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0
ZV90aGlzKTogU2FtZSByZWZhY3RvcmluZyBhcyBkb25lIGZvciB0aGUgREZHLgorCisgICAgICAg
ICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKTogRml4
ZWQgdGhlIHNhbWUgYnVnIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAoSlNDOjpERUZJTkVf
U1RVQl9GVU5DVElPTik6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCisKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOiBTYW1lIHJlZmFjdG9yaW5nIGFzIGZv
ciB0aGUgSklUcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3BwOgor
ICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHA6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwOiBJbmNsdWRlIE9iamVjdENvbnN0cnVjdG9yLmgKKyAg
ICAgICAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgY3JlYXRlRW1wdHlPYmplY3QoKSBsaXZlcyBub3cu
CisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6SlNGdW5jdGlvbik6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVcGRhdGVk
IHRvIG1hdGNoIHRoZSBhbGxvY2F0b3Igc2VsZWN0aW9uIGNvZGUgaW4KKyAgICAgICAgdGhlIEpJ
VCwgc28gaXQncyBjbGVhcmVyIHRoYXQgYm90aCBhcmUgY29ycmVjdC4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxl
KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAg
ICAoSlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnRyeUdldEFsbG9jYXRp
b25Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWRkQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50KTogQ2hhbmdlZCBpbmhlcml0b3JJRAorICAgICAgICBkYXRhIG1lbWJlciB0
byBiZSBhbiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgd2hpY2ggaW5jbHVkZXMgYSBwb2ludGVy
CisgICAgICAgIHRvIHRoZSBkZXNpcmVkIGFsbG9jYXRvci4gVGhpcyBzaW1wbGlmaWVzIEpJVCBj
b2RlLCBzaW5jZSB3ZSBkb24ndCBoYXZlCisgICAgICAgIHRvIGNvbXB1dGUgdGhlIGFsbG9jYXRv
ciBvbiB0aGUgZmx5LiBJIHZlcmlmaWVkIGJ5IGNvZGUgaW5zcGVjdGlvbiB0aGF0CisgICAgICAg
IEpTRnVuY3Rpb24gaXMgc3RpbGwgb25seSA2NCBieXRlcy4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGF0ZVN0cnVjdHVyZSk6IE5vIGRpcmVjdCBw
b2ludGVyIHRvIHRoZSBlbXB0eQorICAgICAgICBvYmplY3Qgc3RydWN0dXJlIGFueW1vcmUsIGJl
Y2F1c2Ugbm93IGNsaWVudHMgbmVlZCB0byBzcGVjaWZ5IGhvdyBtdWNoCisgICAgICAgIGlubGlu
ZSBjYXBhY2l0eSB0aGV5IHdhbnQuCisKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZGVmYXVsdElu
bGluZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOiBB
IGxpdHRsZSByZWZhY3RvcmluZyB0byB0cnkgdG8gCisgICAgICAgIGNsYXJpZnkgd2hlcmUgc29t
ZSBvZiB0aGVzZSBjb25zdGFudHMgZGVyaXZlIGZyb20uCisKKyAgICAgICAgKEpTQzo6bWF4T2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKTogVXNlZCBmb3IgYnVnIGZpeCwgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3h5Ojpz
ZXRUYXJnZXQpOiBVZ2x5LCBidXQgZWZmZWN0aXZlLgorCisgICAgICAgICogcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
V2l0aE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUpOiBVcGRhdGVkIGZv
ciBpbnRlcmZhY2UgY2hhbmdlcy4KKworICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QpOiBDbGFyaWZpZWQgeW91
ciBvcHRpb25zIGZvciBob3cgdG8gYWxsb2NhdGUKKyAgICAgICAgYW4gZW1wdHkgb2JqZWN0LCB0
byBlbXBoYXNpemUgd2hhdCB0aGluZ3MgY2FuIGFjdHVhbGx5IHZhcnkuCisKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5T2Zmc2V0Lmg6IFRoZXNlIGNvbnN0YW50cyBoYXZlIG1vdmVkIGJlY2F1
c2UgdGhleSdyZQorICAgICAgICByZWFsbHkgaGlnaGVyIGxldmVsIGNvbmNlcHRzIHRvIGRvIHdp
dGggdGhlIGxheW91dCBvZiBvYmplY3RzIGFuZCB0aGUKKyAgICAgICAgY29sbGVjdG9yLiBQcm9w
ZXJ0eU9mZnNldCBpcyBqdXN0IGFuIGFic3RyYWN0IG51bWJlciBsaW5lLCBpbmRlcGVuZGVudAor
ICAgICAgICBvZiB0aG9zZSB0aGluZ3MuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlByb3RvdHlwZU1hcDo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVG
b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFw
Lmg6CisgICAgICAgIChQcm90b3R5cGVNYXApOiBUaGUgbWFwIGtleSBpcyBub3cgYSBwYWlyIG9m
IHByb3RvdHlwZSBhbmQgaW5saW5lIGNhcGFjaXR5LAorICAgICAgICBzaW5jZSBTdHJ1Y3R1cmUg
ZW5jb2RlcyBpbmxpbmUgY2FwYWNpdHkuCisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VT
aXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6IEZpeGVkIGEgbmFzdHkgcmVmYWN0b3JpbmcgYnVn
IHRoYXQgb25seSBzaG93cworICAgICAgICB1cCBhZnRlciBlbmFibGluZyB2YXJpYWJsZS1zaXpl
ZCBpbmxpbmUgY2FwYWNpdGllczogd2Ugd2VyZSBwYXNzaW5nIG91cgorICAgICAgICB0eXBlIGlu
Zm8gd2hlcmUgb3VyIGlubGluZSBjYXBhY2l0eSB3YXMgZXhwZWN0ZWQuIFRoZSBjb21waWxlciBk
aWRuJ3QKKyAgICAgICAgbm90aWNlIGJlY2F1c2UgYm90aCBoYXZlIHR5cGUgaW50IDooLgorCiAy
MDEzLTAxLTI4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFudXAgQVJNIHZlcnNpb24gb2YgZGVidWdOYW1lKCkgaW4gREZHRlBSSW5mby5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCShyZXZpc2lvbiAx
NDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNiBAQCBfX1pOM0pTQzE2TmF0aXZlRXhlY3V0YWJs
ZTZjcmVhdGVFUk5TXzEyCiBfX1pOM0pTQzhKU09iamVjdDM0cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRWoKIF9fWk4zSlND
MTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE1T2JqZWN0UHJvdG90
eXBlQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVF
Ci1fX1pOM0pTQzhKU09iamVjdDE3Y3JlYXRlSW5oZXJpdG9ySURFUk5TXzEySlNHbG9iYWxEYXRh
RQogX19aTjNKU0MxNEFycmF5UHJvdG90eXBlQzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlT
dHJ1Y3R1cmVFCiBfX1pOM0pTQzdKU0FycmF5QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBOU185U3Ry
dWN0dXJlRQogX19aTjNKU0MxNVN0cmluZ1Byb3RvdHlwZUMxRVBOU185RXhlY1N0YXRlRVBOU18x
NEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTks
OCArNDU5LDExIEBACiAJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTJC
MEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCAqLzsgfTsKIAkJMTRCRkNFNjkxMENE
QjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0QzUy
NDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZGNDAwMDE1MEZEIC8qIEpJVFN0
dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0Q0E5NThBMTZBQjUw
REUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRDQTk1OEQxNkFCNTBGQTAwOTM4QTA2
IC8qIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNENBOTU4QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxNEQyRjNEQTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREMkYzRDgxMzlG
NEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmNwcCAqLzsgfTsKIAkJMTREMkYzREIxMzlGNEJF
MjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNERG
MDREQTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRERjA0RDkxNkIzOTk2RDAw
MTZBNTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEU4NEY5RTE0RUUxQUNDMDBENkQ1RDQgLyog
V2Vha0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0RTg0Rjk5MTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suY3BwICovOyB9OwogCQkx
NEU4NEY5RjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5QTE0RUUxQUNDMDBENkQ1RDQgLyog
V2Vha0Jsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFODRGOUIxNEVFMUFDQzAwRDZE
NUQ0IC8qIFdlYWtTZXQuY3BwICovOyB9OwpAQCAtNzMxLDcgKzczNCw3IEBACiAJCUJDMThDNDQy
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEU2MEUxNkQ1MjMwMEEwNkU5
MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJQkMxOEM0NDMwRTE2RjVDRDAw
QjM0NDYwIC8qIE51bWJlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjY5MkE4NzEwMjU1NTk3RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThD
NDQ0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM1MEUxNkQ0RTkwMEEwNkU5MiAv
KiBOdW1iZXJQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlCQzE4QzQ0NTBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0Q29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4
MEM3MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5oICovOyB9OworCQlCQzE4
QzQ0NTBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM3MEUxNkQ0RTkwMEEwNkU5
MiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDMThDNDQ2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPYmplY3RQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MjY4MEM5MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ0ODBFMTZGNUNEMDBC
MzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ0QjBF
MTZGNUNEMDBCMzQ0NjAgLyogUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0YwQjNBQTA5QkI0REMwMDA2OEZDRTMgLyogUGFyc2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTEyNzgsNiArMTI4MSw4IEBA
CiAJCTE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlUmVmLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRDVBMkQwQTNFOTFGNjAwQkFGNTlDIC8qIHRlc3RhcGkuYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHRlc3RhcGkuYzsgcGF0aCA9IEFQSS90
ZXN0cy90ZXN0YXBpLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QkZDRTY4MTBD
REIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha0dDTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Q0E5NThB
MTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RDJG
M0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRTcGFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNEQ3OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogSlNTdGFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0YWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjg3LDYgKzEyOTIsNyBAQAogCQkxNERBODE4RTBEOTlGRDIwMDBC
MEE0RkIgLyogSlNBY3RpdmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERBODE4RjBE
OTlGRDIwMDBCMEE0RkIgLyogSlNBY3RpdmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQWN0aXZhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0REUwRDY4MEQwMjQzMTQwMEFBQ0NBMiAvKiBKU0dsb2JhbE9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0REYwNEQ5MTZCMzk5NkQwMDE2QTUxMyAvKiBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTRFODRGOTkxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNEU4NEY5QTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNEU4NEY5QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMzAsNiArMjIzNiw4IEBACiAJCQkJOTYwMDk3QTUwRUJB
QkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLywKIAkJCQk2NTVFQjI5QTEwQ0UyNTgxMDAx
QTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCAqLywKIAkJCQk5NjlBMDcyODBFRDFDRTY5MDBGMUY2
ODEgLyogUmVnaXN0ZXJJRC5oICovLAorCQkJCTE0REYwNEQ5MTZCMzk5NkQwMDE2QTUxMyAvKiBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggKi8sCisJCQkJMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2
IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYnl0ZWNv
bXBpbGVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3NjUsOSArMjc3Myw4IEBA
CiAJCQkJMEZCMTA1ODMxNjc1NDgwQzAwRjhBQjZFIC8qIEV4aXRLaW5kLmggKi8sCiAJCQkJMEYw
QjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLywKIAkJCQkw
RjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCi0JCQkJMEY5
MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLAotCQkJCTBGOTMz
Mjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTYx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLywKKwkJCQkwRjkzMzI5NTE0Q0E3
REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCiAJCQkJOTY5QTA3OTMwRUQxRDNBRTAwRjFG
NjgxIC8qIEluc3RydWN0aW9uLmggKi8sCiAJCQkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8q
IEp1bXBUYWJsZS5jcHAgKi8sCkBAIC0yNzc4LDE1ICsyNzg1LDE2IEBACiAJCQkJMEYwRkM0NTgx
NEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEZCNTQ2N0Mx
NEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwICovLAog
CQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmggKi8sCisJCQkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmggKi8sCiAJCQkJOTY5QTA3OTQwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5j
cHAgKi8sCiAJCQkJOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oICovLAogCQkJ
CTBGMkJEQzJCMTUxRkRFOEIwMENEODkxMCAvKiBPcGVyYW5kcy5oICovLAogCQkJCTBGOUZDOEJG
MTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLywKIAkJCQkw
RjlGQzhDMDE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oICovLAog
CQkJCTBGOTMzMjk5MTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCAqLywKLQkJ
CQkwRjkzMzI5OTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi8sCi0JCQkJ
MEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKKwkJCQkwRjkz
MzI5NjE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTMzMjlB
MTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCisJCQkJMEY5MzMyOTkxNENB
N0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovLAogCQkJCTBGOUZDOEMxMTRFMUI1
RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3
OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8sCkBAIC0yODAwLDcgKzI4MDgsNyBAQAogCQkJCTBG
RDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZE
ODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEY5MzMy
OUIxNENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovLAotCQkJCTBGOTMzMjlCMTRD
QTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCAqLywKKwkJCQkwRjkzMzI5QTE0Q0E3REMx
MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGNzY2RDM2MTVBRTRBMUEwMDhG
MzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjc2
NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5o
ICovLAogCQkJCUJDQ0YwRDBCMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5j
cHAgKi8sCkBAIC0yODEyLDYgKzI4MjAsNyBAQAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4
RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLywKIAkJCQkwRjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0Qg
LyogV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdh
dGNocG9pbnQuaCAqLywKKwkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJl
U2V0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTMyODEsNiArMzI5MCw5IEBACiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlG
RTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3NDk3MTE2
ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTE0Q0E5NThEMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRERjA0REExNkIzOTk2RDAwMTZB
NTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NTUsNyArNzU1LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZShQcmludFN0cmVhbQogICAgICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOiB7CiAgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY3JlYXRlX3Ro
aXMgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmZlcnJl
ZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSBjcmVhdGVfdGhpcyAlcywgJXMsICV1IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgaW5mZXJy
ZWRJbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2NvbnZlcnRfdGhpczogewpAQCAtNzY2LDcgKzc2Nyw5IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlu
ZmVycmVkSW5saW5lQ2FwYWNpdHkgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIG5ld19vYmplY3RcdCAlcywgJXUiLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCksIGluZmVycmVkSW5saW5lQ2FwYWNpdHkpOworICAgICAgICAg
ICAgKytpdDsgLy8gU2tpcCBvYmplY3QgYWxsb2NhdGlvbiBwcm9maWxlLgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsKQEAgLTE4MTIs
NiArMTgxNSw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAg
ICBpZiAoc2l6ZV90IHNpemUgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkpCiAgICAgICAgIG1fdmFsdWVQcm9maWxlcy5ncm93KHNpemUpOwogI2VuZGlmCisgICAg
aWYgKHNpemVfdCBzaXplID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVzKCkpCisgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzLmdyb3co
c2l6ZSk7CiAgICAgaWYgKHNpemVfdCBzaXplID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
UmVzb2x2ZU9wZXJhdGlvbnMoKSkKICAgICAgICAgbV9yZXNvbHZlT3BlcmF0aW9ucy5ncm93KHNp
emUpOwogICAgIHNpemVfdCBwdXRUb0Jhc2VDb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1i
ZXJPZlB1dFRvQmFzZU9wZXJhdGlvbnMoKTsKQEAgLTE4NzMsNiArMTg3OCwxNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIH0KICNlbmRpZgogCisg
ICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogeworICAgICAgICAgICAgaW50IG9iamVjdEFsbG9j
YXRpb25Qcm9maWxlSW5kZXggPSBwY1tpICsgb3BMZW5ndGggLSAxXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUg
PSAmbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXNbb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmRl
eF07CisgICAgICAgICAgICBpbnQgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA9IHBjW2kgKyBvcExl
bmd0aCAtIDJdLnUub3BlcmFuZDsKKworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExl
bmd0aCAtIDFdID0gb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CisgICAgICAgICAgICBvYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS0+aW5pdGlhbGl6ZSgqZ2xvYmFsRGF0YSgpLAorICAgICAgICAgICAg
ICAgIG1fb3duZXJFeGVjdXRhYmxlLmdldCgpLCBtX2dsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCksIGluZmVycmVkSW5saW5lQ2FwYWNpdHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFs
OiB7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yMzkwLDYgKzI0MDYsOCBAQCB2b2lkIENvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZt
X2Z1bmN0aW9uRXhwcnNbaV0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlv
bkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRl
Y2xzW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vYmplY3RBbGxvY2F0aW9u
UHJvZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVz
W2ldLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogCiAgICAgdXBkYXRlQWxsUHJlZGljdGlvbnMo
Q29sbGVjdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNs
dWRlICJFeGVjdXRpb25Db3VudGVyLmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5o
IgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCisjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJKSVRDb2RlLmgiCkBAIC03ODcsMTMgKzc4OCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAgICAgICAgIEFycmF5UHJvZmlsZSogZ2V0QXJyYXlQcm9maWxlKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgQXJyYXlQcm9maWxlKiBnZXRPckFkZEFycmF5
UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIAotICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkFycmF5QWxsb2NhdGlvblByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheUFsbG9jYXRpb25Qcm9maWxlcy5zaXplKCk7IH0KLSAgICAgICAgQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZSogYWRkQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXMuYXBwZW5kKEFycmF5QWxsb2NhdGlvblByb2Zp
bGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gJm1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXMubGFz
dCgpOwotICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICAvLyBFeGNlcHRpb24gaGFuZGxpbmcg
c3VwcG9ydApAQCAtMTMxNCw2ICsxMzA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNl
Z21lbnRlZFZlY3RvcjxBcnJheUFsbG9jYXRpb25Qcm9maWxlLCA4PiBtX2FycmF5QWxsb2NhdGlv
blByb2ZpbGVzOwogICAgICAgICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOwog
I2VuZGlmCisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwg
OD4gbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXM7CiAKICAgICAgICAgLy8gQ29uc3RhbnQgUG9v
bAogICAgICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9pZGVudGlmaWVyczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxNDA0
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBB
cnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAgIGNsYXNzIEFycmF5UHJvZmlsZTsKICAgICBjbGFz
cyBKU0NlbGw7CisgICAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwogICAgIHN0cnVjdCBMTEludENh
bGxMaW5rSW5mbzsKQEAgLTE5NSw2ICsxOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7
IH0KICAgICAgICAgSW5zdHJ1Y3Rpb24oQXJyYXlQcm9maWxlKiBwcm9maWxlKSB7IHUuYXJyYXlQ
cm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICBJbnN0cnVjdGlvbihBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiBwcm9maWxlKSB7IHUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSA9IHByb2ZpbGU7IH0K
KyAgICAgICAgSW5zdHJ1Y3Rpb24oT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUpIHsg
dS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAgCiAgICAgICAg
IEluc3RydWN0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKSB7IHUu
cmVnaXN0ZXJQb2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CiAgICAgICAgIApAQCAtMjE1LDYg
KzIxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlOwogICAgICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGU7CiAgICAgICAgICAg
ICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBhcnJheUFsbG9jYXRpb25Qcm9maWxlOworICAgICAg
ICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwog
ICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgICAgIGJvb2wqIHByZWRpY2F0ZVBv
aW50ZXI7CiAgICAgICAgIH0gdTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVf
aAorI2RlZmluZSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZV9oCisKKyNpbmNsdWRlICJKU0dsb2Jh
bERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdFBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2FsbG9jYXRvcik7IH0KKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX3N0cnVjdHVyZSk7IH0KKworICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkKKyAgICAgICAgOiBtX2FsbG9jYXRvcigwKQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX2FsbG9jYXRvcjsgfQorCisgICAgdm9p
ZCBpbml0aWFsaXplKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgSlNP
YmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSkKKyAgICB7
CisgICAgICAgIEFTU0VSVCghbV9hbGxvY2F0b3IpOworICAgICAgICBBU1NFUlQoIW1fc3RydWN0
dXJlKTsKKworICAgICAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDA7CisgICAgICAgIGlm
IChpbmZlcnJlZElubGluZUNhcGFjaXR5IDwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNh
cGFjaXR5KCkpIHsKKyAgICAgICAgICAgIC8vIFRyeSB0byBzaHJpbmsgdGhlIG9iamVjdCBiYXNl
ZCBvbiBzdGF0aWMgYW5hbHlzaXMuCisgICAgICAgICAgICBpbmZlcnJlZElubGluZUNhcGFjaXR5
ICs9IHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoZ2xvYmFsRGF0YSwgcHJvdG90eXBlKTsK
KworICAgICAgICAgICAgaWYgKCFpbmZlcnJlZElubGluZUNhcGFjaXR5KSB7CisgICAgICAgICAg
ICAgICAgLy8gRW1wdHkgb2JqZWN0cyBhcmUgcmFyZSwgc28gbW9zdCBsaWtlbHkgdGhlIHN0YXRp
YyBhbmFseXplciBqdXN0IGRpZG4ndAorICAgICAgICAgICAgICAgIC8vIHNlZSB0aGUgcmVhbCBp
bml0aWFsaXplciBmdW5jdGlvbi4gVGhpcyBjYW4gaGFwcGVuIHdpdGggaGVscGVyIGZ1bmN0aW9u
cy4KKyAgICAgICAgICAgICAgICBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gSlNGaW5hbE9iamVj
dDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGluZmVy
cmVkSW5saW5lQ2FwYWNpdHkgPiBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHko
KSkgeworICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgcHJvcGVydGllcyBhcmUgd2VhayBndWVz
c2VzLCBzbyBkb24ndCBhbGxvdyB0aGVtIHRvIHR1cm4gYSBzbWFsbAorICAgICAgICAgICAgICAg
IC8vIG9iamVjdCBpbnRvIGEgbGFyZ2Ugb2JqZWN0LgorICAgICAgICAgICAgICAgIGluZmVycmVk
SW5saW5lQ2FwYWNpdHkgPSBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5saW5lQ2FwYWNpdHkgPSBpbmZlcnJlZElu
bGluZUNhcGFjaXR5OworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhcGFjaXR5IDwgSlNGaW5h
bE9iamVjdDo6bWF4SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBOb3JtYWwgb3IgbGFyZ2Ugb2JqZWN0LgorICAgICAgICAgICAgaW5saW5lQ2FwYWNp
dHkgPSBpbmZlcnJlZElubGluZUNhcGFjaXR5OworICAgICAgICAgICAgaWYgKGlubGluZUNhcGFj
aXR5ID4gSlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgICAg
ICBpbmxpbmVDYXBhY2l0eSA9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBBU1NFUlQoaW5saW5lQ2FwYWNpdHkgPiAwKTsKKyAgICAgICAg
QVNTRVJUKGlubGluZUNhcGFjaXR5IDw9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5
KCkpOworCisgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFs
bG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IgPSAmZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0
cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKyAgICAgICAgQVNTRVJUKGFsbG9jYXRvci0+Y2VsbFNp
emUoKSk7CisKKyAgICAgICAgLy8gVGFrZSBhZHZhbnRhZ2Ugb2YgZXh0cmEgaW5saW5lIGNhcGFj
aXR5IGF2YWlsYWJsZSBpbiB0aGUgc2l6ZSBjbGFzcy4KKyAgICAgICAgc2l6ZV90IHNsb3AgPSAo
YWxsb2NhdG9yLT5jZWxsU2l6ZSgpIC0gYWxsb2NhdGlvblNpemUpIC8gc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPik7CisgICAgICAgIGlubGluZUNhcGFjaXR5ICs9IHNsb3A7CisgICAgICAg
IGlmIChpbmxpbmVDYXBhY2l0eSA+IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCkp
CisgICAgICAgICAgICBpbmxpbmVDYXBhY2l0eSA9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNh
cGFjaXR5KCk7CisKKyAgICAgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CisgICAgICAgIG1f
c3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwKKyAgICAgICAgICAgIGdsb2JhbERhdGEu
cHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKHByb3RvdHlwZSwg
aW5saW5lQ2FwYWNpdHkpKTsKKyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOyB9CisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHko
KSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsgfQorCisgICAgdm9pZCBj
bGVhcigpCisgICAgeworICAgICAgICBtX2FsbG9jYXRvciA9IDA7CisgICAgICAgIG1fc3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChpc051bGwoKSk7CisgICAgfQorCisgICAgdm9p
ZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgfQorCitwcml2YXRlOgorCisgICAgdW5z
aWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTT2JqZWN0KiBwcm90b3R5cGUpCisgICAgeworICAgICAgICBpZiAocHJvdG90eXBlID09
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lQXJyYXkoJmdsb2JhbERhdGEpOworICAgICAgICBwcm90
b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWVBcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
ICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5h
bWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheS5kYXRhKCktPnByb3BlcnR5TmFtZVZlY3Rvcigp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZVZlY3Rvci5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHByb3RvdHlwZS0+Z2V0RGly
ZWN0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZVZlY3RvcltpXSk7CisKKyAgICAgICAgICAgIC8v
IEZ1bmN0aW9ucyBhcmUgY29tbW9uLCBhbmQgYXJlIHVzdWFsbHkgY2xhc3MtbGV2ZWwgb2JqZWN0
cyB0aGF0IGFyZSBub3Qgb3ZlcnJpZGRlbi4KKyAgICAgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTRnVuY3Rpb24qPih2YWx1ZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICsrY291bnQ7CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY291bnQ7CisgICAg
fQorCisgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8g
bWFrZSB0aGluZ3MgZWFzaWVyIGZvciBnZW5lcmF0ZWQgY29kZS4KKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2NyZWF0ZV9hY3RpdmF0aW9uLCAy
KSBcCiAgICAgICAgIG1hY3JvKG9wX2luaXRfbGF6eV9yZWcsIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfY3JlYXRlX2FyZ3VtZW50cywgMikgXAotICAgICAgICBtYWNybyhvcF9jcmVhdGVfdGhpcywg
MykgXAorICAgICAgICBtYWNybyhvcF9jcmVhdGVfdGhpcywgNCkgXAogICAgICAgICBtYWNybyhv
cF9nZXRfY2FsbGVlLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2NvbnZlcnRfdGhpcywgMykgXAog
ICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9wX25ld19vYmplY3QsIDIpIFwKKyAgICAgICAgbWFj
cm8ob3BfbmV3X29iamVjdCwgNCkgXAogICAgICAgICBtYWNybyhvcF9uZXdfYXJyYXksIDUpIFwK
ICAgICAgICAgbWFjcm8ob3BfbmV3X2FycmF5X3dpdGhfc2l6ZSwgNCkgXAogICAgICAgICBtYWNy
byhvcF9uZXdfYXJyYXlfYnVmZmVyLCA1KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2soSlNHCiAgICAgLCBtX3B1dFRvQmFzZU9wZXJhdGlvbkNvdW50KDEp
CiAgICAgLCBtX2FycmF5UHJvZmlsZUNvdW50KDApCiAgICAgLCBtX2FycmF5QWxsb2NhdGlvblBy
b2ZpbGVDb3VudCgwKQorICAgICwgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZUNvdW50KDApCiAg
ICAgLCBtX3ZhbHVlUHJvZmlsZUNvdW50KDApCiAgICAgLCBtX2xsaW50Q2FsbExpbmtJbmZvQ291
bnQoMCkKICNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24g
MTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRWYWx1ZVByb2ZpbGU7CiB0
eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkQXJyYXlQcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBV
bmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGU7Cit0eXBlZGVmIHVuc2lnbmVkIFVubGlua2Vk
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRD
YWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CkBAIC0zOTgsNiArMzk5LDgg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mQXJyYXlQcm9maWxlcygpIHsgcmV0dXJu
IG1fYXJyYXlQcm9maWxlQ291bnQ7IH0KICAgICBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2Zp
bGUgYWRkQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSgpIHsgcmV0dXJuIG1fYXJyYXlBbGxvY2F0aW9u
UHJvZmlsZUNvdW50Kys7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5QWxsb2NhdGlvblBy
b2ZpbGVzKCkgeyByZXR1cm4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlQ291bnQ7IH0KKyAgICBV
bmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIGFkZE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCkgeyByZXR1cm4gbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZUNvdW50Kys7IH0KKyAgICB1bnNp
Z25lZCBudW1iZXJPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlcygpIHsgcmV0dXJuIG1fb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVDb3VudDsgfQogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIGFkZFZh
bHVlUHJvZmlsZSgpIHsgcmV0dXJuIG1fdmFsdWVQcm9maWxlQ291bnQrKzsgfQogICAgIHVuc2ln
bmVkIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHsgcmV0dXJuIG1fdmFsdWVQcm9maWxlQ291bnQ7
IH0KIApAQCAtNTI1LDYgKzUyOCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wdXRUb0Jh
c2VPcGVyYXRpb25Db3VudDsKICAgICB1bnNpZ25lZCBtX2FycmF5UHJvZmlsZUNvdW50OwogICAg
IHVuc2lnbmVkIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZUNvdW50OworICAgIHVuc2lnbmVkIG1f
b2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudDsKICAgICB1bnNpZ25lZCBtX3ZhbHVlUHJvZmls
ZUNvdW50OwogICAgIHVuc2lnbmVkIG1fbGxpbnRDYWxsTGlua0luZm9Db3VudDsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTUsNyArMTU1LDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAog
ICAgIG1fY29kZUJsb2NrLT5zZXRUaGlzUmVnaXN0ZXIobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7
CiAKICAgICBtX3Njb3BlTm9kZS0+ZW1pdEJ5dGVjb2RlKCp0aGlzKTsKLSAgICAKKworICAgIG1f
c3RhdGljUHJvcGVydHlBbmFseXplci5raWxsKCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV90cnlSYW5nZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVHJ5UmFuZ2UmIHJhbmdl
ID0gbV90cnlSYW5nZXNbaV07CiAgICAgICAgIGludCBzdGFydCA9IHJhbmdlLnN0YXJ0LT5iaW5k
KCk7CkBAIC0yNDQsNiArMjQ2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKEpTRwogICAgICwgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbih0cnVlKQogICAgICwgbV9maXJz
dExhenlGdW5jdGlvbigwKQogICAgICwgbV9sYXN0TGF6eUZ1bmN0aW9uKDApCisgICAgLCBtX3N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIoJm1faW5zdHJ1Y3Rpb25zKQogICAgICwgbV9nbG9iYWxEYXRh
KCZnbG9iYWxEYXRhKQogICAgICwgbV9sYXN0T3Bjb2RlSUQob3BfZW5kKQogI2lmbmRlZiBOREVC
VUcKQEAgLTI5NCw2ICsyOTcsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoSlNHCiAgICAgLCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uKGZhbHNlKQogICAgICwgbV9maXJz
dExhenlGdW5jdGlvbigwKQogICAgICwgbV9sYXN0TGF6eUZ1bmN0aW9uKDApCisgICAgLCBtX3N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIoJm1faW5zdHJ1Y3Rpb25zKQogICAgICwgbV9nbG9iYWxEYXRh
KCZnbG9iYWxEYXRhKQogICAgICwgbV9sYXN0T3Bjb2RlSUQob3BfZW5kKQogI2lmbmRlZiBOREVC
VUcKQEAgLTQ3NSwxOSArNDc5LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihKU0cKIAogICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgcHJlcGVuZENv
bW1lbnQoIid0aGlzJyBiZWNhdXNlIHdlIGFyZSBhIENvbnN0cnVjdG9yIGZ1bmN0aW9uIik7Ci0K
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBuZXdUZW1wb3JhcnkoKTsgCi0KLSAg
ICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShv
cF9nZXRfY2FsbGVlKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4
KCkpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7Ci0KLSAgICAgICAg
ZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7IAotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZnVuYy0+aW5kZXgoKSk7IAorICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0
ZXIpOwogICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgJiYgKGZ1bmN0
aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zaG91bGRF
bWl0RGVidWdIb29rcykpIHsKICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShvcF9jb252ZXJ0X3RoaXMpOwotICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocHJvZmlsZSk7CiAgICAgfQogfQpAQCAtNTExLDYgKzUwNiw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0cKICAgICAsIG1faGFzQ3JlYXRlZEFjdGl2
YXRpb24odHJ1ZSkKICAgICAsIG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExh
enlGdW5jdGlvbigwKQorICAgICwgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyKCZtX2luc3RydWN0
aW9ucykKICAgICAsIG1fZ2xvYmFsRGF0YSgmZ2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29k
ZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCkBAIC03NTEsNiArNzQ3LDExIEBAIFVubGlua2Vk
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSBCeXRlY29kZUcKICNlbmRpZgogfQogCitVbmxpbmtlZE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlIEJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSgpCit7CisgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5hZGRPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSgpOworfQorCiBVbmxpbmtlZFZhbHVlUHJvZmlsZSBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewogI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKQEAgLTExMTEsNiArMTExMiw4IEBAIHVuc2lnbmVkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjphZGRSZWdFeHAoUmUKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogeworICAgIG1fc3RhdGlj
UHJvcGVydHlBbmFseXplci5tb3YoZHN0LT5pbmRleCgpLCBzcmMtPmluZGV4KCkpOworCiAgICAg
ZW1pdE9wY29kZShvcF9tb3YpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOwpAQCAtMTMzMyw3
ICsxMzM2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAg
ICAgICByZXR1cm4gZW1pdEdldExvY2FsVmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkp
OwogCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29k
ZShvcF9yZXNvbHZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZ2V0UmVzb2x2ZU9wZXJhdGlvbnMocHJvcGVydHkpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocHJvZmlsZSk7CkBAIC0xMzQ1LDcgKzEzNDgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvbHZlUmVzdWx0LCAh
cmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpOwogICAgIC8vIFdlIGNhbid0IG9wdGltaXNlIGF0
IGFsbCA6LSgKICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVk
T3Bjb2RlKG9wX3Jlc29sdmVfYmFzZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGZhbHNlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2V0UmVzb2x2
ZUJhc2VPcGVyYXRpb25zKHByb3BlcnR5KSk7CkBAIC0xMzU5LDcgKzEzNjIsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
bHZlUmVzdWx0LCAhcmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpOwogICAgIC8vIFdlIGNhbid0
IG9wdGltaXNlIGF0IGFsbCA6LSgKICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0g
ZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmVfYmFzZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CiAg
ICAgdWludDMyX3QgcHV0VG9CYXNlSW5kZXggPSAwOwpAQCAtMTM3NCw3ICsxMzc3LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIEFTU0VSVF9VTlVT
RUQocmVzb2x2ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAgICBVbmxp
bmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmVf
d2l0aF9iYXNlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZURzdC0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoYmFzZURzdCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICB1aW50MzJfdCBwdXRUb0Jhc2VJbmRleCA9
IDA7CkBAIC0xMzk0LDcgKzEzOTcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFJlc29sCiAgICAgfQogCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfdGhpcyk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChr
aWxsKGJhc2VEc3QpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldFJlc29sdmVXaXRoVGhpc09wZXJhdGlvbnMocHJv
cGVydHkpKTsKQEAgLTE0MzMsNyArMTQzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0QnkKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUg
cHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChr
aWxsKGRzdCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CkBAIC0xNDU2LDExICsxNDU5LDE1IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4
ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOworCisgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVy
LnB1dEJ5SWQoYmFzZS0+aW5kZXgoKSwgcHJvcGVydHlJbmRleCk7CisKICAgICBtX2NvZGVCbG9j
ay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
CiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQo
cHJvcGVydHkpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlJbmRleCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwpAQCAtMTQ4Miwx
MSArMTQ4OSwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvCiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7CisgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsK
KworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UtPmluZGV4KCksIHBy
b3BlcnR5SW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1
dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CkBAIC0xNTAwLDkgKzE1MTEsMTMgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlYwogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5LCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcikKIHsKKyAg
ICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJvcGVydHkpOworCisgICAg
bV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZS0+aW5kZXgoKSwgcHJvcGVydHlJ
bmRleCk7CisKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHBy
b3BlcnR5SW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZXR0ZXItPmluZGV4KCkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwogfQpAQCAtMTUy
MCw3ICsxNTM1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgog
ewogICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmls
ZSgpOwogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CiAgICAg
QVNTRVJUKGJhc2UtPmluZGV4KCkgPT0gbV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwpAQCAtMTU0Niw3ICsxNTYxLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeQogICAgIH0KICAgICBVbmxp
bmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsKICAgICBV
bmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9i
eV92YWwpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwpAQCAtMTU4
MywxMCArMTU5OCwzMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmdW5jID0gbmV3VGVtcG9yYXJ5KCk7IAorCisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJv
ZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfY2FsbGVlKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHBy
b2ZpbGUpOworCisgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAg
IG1fc3RhdGljUHJvcGVydHlBbmFseXplci5jcmVhdGVUaGlzKG1fdGhpc1JlZ2lzdGVyLmluZGV4
KCksIGJlZ2luICsgMyk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsgCisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IAorICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld09iamVjdChSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgc2l6ZV90IGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5u
ZXdPYmplY3QoZHN0LT5pbmRleCgpLCBiZWdpbiArIDIpOworCiAgICAgZW1pdE9wY29kZShvcF9u
ZXdfb2JqZWN0KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5l
d09iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE3
NjcsMTAgKzE4MDUsOCBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rv
cik7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZWFsQ2FsbC0+YmluZChiZWdpbiwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoZHN0ICE9IGln
bm9yZWRSZXN1bHQoKSkgewotICAgICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfb2JqZWN0KTsK
LSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKQorICAgICAgICAgICAgZW1p
dE5ld09iamVjdChkc3QpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTg2
Miw3ICsxODk4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwogICAgIGlmIChkc3QgIT0g
aWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKLSAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7IC8vIGRzdAorICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHBy
b2ZpbGUpOwogICAgIH0KICAgICAKQEAgLTE4OTUsNyArMTkzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmly
c3RGcmVlUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgp
KSB7CiAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRP
cGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkp
OwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgfQogICAgIGlm
IChtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpIHsKQEAgLTE5NzgsNyArMjAxNCw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVW5s
aW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1
dF9yZXN1bHQpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsg
Ly8gZHN0CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KQEAgLTM4Myw2ICszODQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQsIFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMik7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU5vRHN0T3AoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIHNy
Yyk7CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld09iamVjdChSZWdpc3RlcklEKiBkc3QpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50
Tm9kZSosIHVuc2lnbmVkIGxlbmd0aCk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KIApAQCAt
NTIxLDggKzUyMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRPcGNv
ZGUoT3Bjb2RlSUQpOwogICAgICAgICBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGUgbmV3
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgICAgICBVbmxpbmtlZE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlIG5ld09iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIFVubGlua2Vk
QXJyYXlQcm9maWxlIG5ld0FycmF5UHJvZmlsZSgpOwogICAgICAgICBVbmxpbmtlZFZhbHVlUHJv
ZmlsZSBlbWl0UHJvZmlsZWRPcGNvZGUoT3Bjb2RlSUQpOworICAgICAgICBpbnQga2lsbChSZWdp
c3RlcklEKiBkc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IGRzdC0+aW5k
ZXgoKTsKKyAgICAgICAgICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5raWxsKGluZGV4KTsK
KyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgcmV0
cmlldmVMYXN0QmluYXJ5T3AoaW50JiBkc3RJbmRleCwgaW50JiBzcmMxSW5kZXgsIGludCYgc3Jj
MkluZGV4KTsKICAgICAgICAgdm9pZCByZXRyaWV2ZUxhc3RVbmFyeU9wKGludCYgZHN0SW5kZXgs
IGludCYgc3JjSW5kZXgpOwogICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmV3aW5kQmluYXJ5
T3AoKTsKQEAgLTc3NSw2ICs3ODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRp
ZmllclJlc29sdmVQdXRNYXAgbV9yZXNvbHZlQmFzZUZvclB1dE1hcDsKICAgICAgICAgSWRlbnRp
ZmllclJlc29sdmVQdXRNYXAgbV9yZXNvbHZlV2l0aEJhc2VGb3JQdXRNYXA7CiAKKyAgICAgICAg
U3RhdGljUHJvcGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXI7CisKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAKICAgICAgICAgT3Bjb2RlSUQgbV9sYXN0
T3Bjb2RlSUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU3RhdGljUHJvcGVydHlBbmFseXNpc19oCisj
ZGVmaW5lIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXNfaAorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFJlZmVyZW5jZSBjb3VudCBpbmRpY2F0ZXMgbnVtYmVy
IG9mIGxpdmUgcmVnaXN0ZXJzIHRoYXQgYWxpYXMgdGhpcyBvYmplY3QuCitjbGFzcyBTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhdGljUHJvcGVydHlBbmFseXNp
cz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlz
aXM+IGNyZWF0ZShWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qIGluc3RydWN0aW9ucywgdW5z
aWduZWQgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzKGluc3RydWN0aW9ucywgdGFyZ2V0KSk7IAorICAgIH0KKworICAgIHZv
aWQgYWRkUHJvcGVydHlJbmRleCh1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KSB7IG1fcHJvcGVydHlJ
bmRleGVzLmFkZChwcm9wZXJ0eUluZGV4KTsgfQorCisgICAgdm9pZCByZWNvcmQoKQorICAgIHsK
KyAgICAgICAgKCptX2luc3RydWN0aW9ucylbbV90YXJnZXRdID0gbV9wcm9wZXJ0eUluZGV4ZXMu
c2l6ZSgpOworICAgIH0KKworICAgIGludCBwcm9wZXJ0eUluZGV4Q291bnQoKSB7IHJldHVybiBt
X3Byb3BlcnR5SW5kZXhlcy5zaXplKCk7IH0KKworcHJpdmF0ZToKKyAgICBTdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzKFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiogaW5zdHJ1Y3Rpb25zLCB1bnNp
Z25lZCB0YXJnZXQpCisgICAgICAgIDogbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQorICAg
ICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKKyAgICB7CisgICAgfQorCisgICAgVmVjdG9yPFVubGlu
a2VkSW5zdHJ1Y3Rpb24+KiBtX2luc3RydWN0aW9uczsKKyAgICB1bnNpZ25lZCBtX3RhcmdldDsK
KyAgICB0eXBlZGVmIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+ID4gUHJvcGVydHlJbmRl
eFNldDsKKyAgICBQcm9wZXJ0eUluZGV4U2V0IG1fcHJvcGVydHlJbmRleGVzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFs
eXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
U3RhdGljUHJvcGVydHlBbmFseXplci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgU3RhdGljUHJvcGVydHlBbmFseXplcl9oCisjZGVmaW5lIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXJfaAorCisjaW5jbHVkZSAiU3RhdGljUHJvcGVydHlBbmFseXNpcy5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBVc2Vk
IGZvciBmbG93LWluc2Vuc2l0aXZlIHN0YXRpYyBhbmFseXNpcyBvZiB0aGUgbnVtYmVyIG9mIHBy
b3BlcnRpZXMgYXNzaWduZWQgdG8gYW4gb2JqZWN0LgorLy8gV2UgdXNlIHRoaXMgYW5hbHlzaXMg
d2l0aCBvdGhlciBydW50aW1lIGRhdGEgdG8gcHJvZHVjZSBhbiBvcHRpbWl6YXRpb24gZ3Vlc3Mu
IFRoaXMgYW5hbHlzaXMKKy8vIGlzIHVuZGVyc3Rvb2QgdG8gYmUgbG9zc3ksIGFuZCBpdCdzIE9L
IGlmIGl0IHR1cm5zIG91dCB0byBiZSB3cm9uZyBzb21ldGltZXMuCitjbGFzcyBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyIHsKK3B1YmxpYzoKKyAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyKFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uPiopOworCisgICAgdm9pZCBjcmVhdGVUaGlzKGludCBkc3Qs
IHVuc2lnbmVkIG9mZnNldE9mSW5saW5lQ2FwYWNpdHlPcGVyYW5kKTsKKyAgICB2b2lkIG5ld09i
amVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNhcGFjaXR5T3BlcmFuZCk7Cisg
ICAgdm9pZCBwdXRCeUlkKGludCBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpOyAvLyBwcm9w
ZXJ0eUluZGV4IGlzIGFuIGluZGV4IGludG8gYSB1bmlxdWVkIHNldCBvZiBzdHJpbmdzLgorICAg
IHZvaWQgbW92KGludCBkc3QsIGludCBzcmMpOworCisgICAgdm9pZCBraWxsKCk7CisgICAgdm9p
ZCBraWxsKGludCBkc3QpOworCitwcml2YXRlOgorICAgIHZvaWQga2lsbChTdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzKik7CisKKyAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qIG1faW5zdHJ1
Y3Rpb25zOworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxTdGF0aWNQcm9wZXJ0eUFu
YWx5c2lzPiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8aW50PiA+IEFuYWx5c2lzTWFwOworICAgIEFuYWx5c2lzTWFwIG1fYW5hbHlzZXM7Cit9
OworCitpbmxpbmUgU3RhdGljUHJvcGVydHlBbmFseXplcjo6U3RhdGljUHJvcGVydHlBbmFseXpl
cihWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qIGluc3RydWN0aW9ucykKKyAgICA6IG1faW5z
dHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKK30KKworaW5saW5lIHZvaWQgU3RhdGljUHJvcGVy
dHlBbmFseXplcjo6Y3JlYXRlVGhpcyhpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNh
cGFjaXR5T3BlcmFuZCkKK3sKKyAgICBBbmFseXNpc01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IG1fYW5hbHlzZXMuYWRkKAorICAgICAgICBkc3QsIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNy
ZWF0ZShtX2luc3RydWN0aW9ucywgb2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eU9wZXJhbmQpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOyAvLyBDYW4n
dCBoYXZlIHR3byAndGhpcycgaW4gdGhlIHNhbWUgY29uc3RydWN0b3IuCit9CisKK2lubGluZSB2
b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBv
ZmZzZXRPZklubGluZUNhcGFjaXR5T3BlcmFuZCkKK3sKKyAgICBSZWZQdHI8U3RhdGljUHJvcGVy
dHlBbmFseXNpcz4gYW5hbHlzaXMgPSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUobV9p
bnN0cnVjdGlvbnMsIG9mZnNldE9mSW5saW5lQ2FwYWNpdHlPcGVyYW5kKTsKKyAgICBBbmFseXNp
c01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdCwgYW5hbHlzaXMp
OworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAga2lsbChhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IGFuYWx5c2lzLnJlbGVhc2UoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXI6OnB1dEJ5SWQoaW50IGRzdCwgdW5zaWduZWQgcHJvcGVydHlJbmRl
eCkKK3sKKyAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcyA9IG1fYW5hbHlzZXMu
Z2V0KGRzdCkuZ2V0KCk7CisgICAgaWYgKCFhbmFseXNpcykKKyAgICAgICAgcmV0dXJuOworICAg
IGFuYWx5c2lzLT5hZGRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SW5kZXgpOworfQorCitpbmxpbmUg
dm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjptb3YoaW50IGRzdCwgaW50IHNyYykKK3sKKyAg
ICBSZWZQdHI8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gYW5hbHlzaXMgPSBtX2FuYWx5c2VzLmdl
dChzcmMpOworICAgIGlmICghYW5hbHlzaXMpIHsKKyAgICAgICAga2lsbChkc3QpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7
CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpraWxsKFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXMqIGFuYWx5c2lzKQoreworICAgIGlmICghYW5hbHlzaXMpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIWFuYWx5c2lzLT5oYXNPbmVSZWYoKSkgLy8gQWxpYXNl
cyBmb3IgdGhpcyBvYmplY3Qgc3RpbGwgZXhpc3QsIHNvIGl0IG1pZ2h0IGFjcXVpcmUgbW9yZSBw
cm9wZXJ0aWVzLgorICAgICAgICByZXR1cm47CisgICAgYW5hbHlzaXMtPnJlY29yZCgpOworfQor
CitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpraWxsKGludCBkc3QpCit7Cisg
ICAgLy8gV2Ugb2JzZXJ2ZSBraWxscyBpbiBvcmRlciB0byBhdm9pZCBwaWxpbmcgb24gcHJvcGVy
dGllcyB0byBhbiBvYmplY3QgYWZ0ZXIKKyAgICAvLyBpdHMgYnl0ZWNvZGUgcmVnaXN0ZXIgaGFz
IGJlZW4gcmVjeWNsZWQuCisKKyAgICAvLyBDb25zaWRlciB0aGVzZSBjYXNlczoKKworICAgIC8v
ICgxKSBBbGlhc2VkIHRlbXBvcmFyeQorICAgIC8vIHZhciBvMSA9IHsgbmFtZTogbmFtZSB9Owor
ICAgIC8vIHZhciBvMiA9IHsgbmFtZTogbmFtZSB9OworCisgICAgLy8gKDIpIEFsaWFzZWQgbG9j
YWwgLS0gbm8gY29udHJvbCBmbG93CisgICAgLy8gdmFyIGxvY2FsOworICAgIC8vIGxvY2FsID0g
bmV3IE9iamVjdDsKKyAgICAvLyBsb2NhbC5uYW1lID0gbmFtZTsKKyAgICAvLyAuLi4KKworICAg
IC8vIGxvY2FsID0gbG9va3VwKCk7CisgICAgLy8gbG9jYWwuZGlkTG9va3VwID0gdHJ1ZTsKKyAg
ICAvLyAuLi4KKworICAgIC8vICgzKSBBbGlhc2VkIGxvY2FsIC0tIGNvbnRyb2wgZmxvdworICAg
IC8vIHZhciBsb2NhbDsKKyAgICAvLyBpZiAoY29uZGl0aW9uKQorICAgIC8vICAgICBsb2NhbCA9
IHsgfTsKKyAgICAvLyBlbHNlIHsKKyAgICAvLyAgICAgbG9jYWwgPSBuZXcgT2JqZWN0OworICAg
IC8vIH0KKyAgICAvLyBsb2NhbC5uYW1lID0gbmFtZTsKKworICAgIC8vIChOb3RlOiBvdXIgZGVm
YXVsdCBjb2RlZ2VuIGZvciAibmV3IE9iamVjdCIgbG9va3MgbGlrZSBjYXNlICgzKS4pCisKKyAg
ICAvLyBDYXNlICgxKSBpcyBlYXN5IGJlY2F1c2UgdGVtcG9yYXJpZXMgYWxtb3N0IG5ldmVyIHN1
cnZpdmUgYWNyb3NzIGNvbnRyb2wgZmxvdy4KKworICAgIC8vIENhc2VzICgyKSBhbmQgKDMpIGFy
ZSBoYXJkLiBDYXNlICgyKSBzaG91bGQga2lsbCAibG9jYWwiLCB3aGlsZSBjYXNlICgzKSBzaG91
bGQKKyAgICAvLyBub3QuIFRoZXJlIGlzIG5vIGdyZWF0IHdheSB0byBzb2x2ZSB0aGVzZSBjYXNl
cyB3aXRoIHNpbXBsZSBzdGF0aWMgYW5hbHlzaXMuCisKKyAgICAvLyBTaW5jZSB0aGlzIGlzIGEg
c2ltcGxlIHN0YXRpYyBhbmFseXNpcywgd2UganVzdCB0cnkgdG8gY2F0Y2ggdGhlIHNpbXBsZXN0
IGNhc2VzLAorICAgIC8vIHNvIHdlIGFjY2VwdCBraWxscyB0byBhbnkgcmVnaXN0ZXJzIGV4Y2Vw
dCBmb3IgcmVnaXN0ZXJzIHRoYXQgaGF2ZSBubyBpbmZlcnJlZAorICAgIC8vIHByb3BlcnRpZXMg
eWV0LgorCisgICAgQW5hbHlzaXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9hbmFseXNlcy5maW5kKGRz
dCk7CisgICAgaWYgKGl0ID09IG1fYW5hbHlzZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIWl0LT52YWx1ZS0+cHJvcGVydHlJbmRleENvdW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGtpbGwoaXQtPnZhbHVlLmdldCgpKTsKKyAgICBtX2FuYWx5c2VzLnJlbW92ZShpdCk7
Cit9CisKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmtpbGwoKQoreworICAg
IHdoaWxlIChtX2FuYWx5c2VzLnNpemUoKSkKKyAgICAgICAga2lsbChtX2FuYWx5c2VzLnRha2Uo
bV9hbmFseXNlcy5iZWdpbigpLT5rZXkpLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNh
c2UgSW5oZXJpdG9ySURXYXRjaHBvaW50OgorICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50OgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzUsMjAgKzIxMzUsMjQgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
IEFTU0VSVChjZWxsLT5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNlbGwpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogaW5oZXJpdG9ySUQg
PSBmdW5jdGlvbi0+dHJ5R2V0S25vd25Jbmhlcml0b3JJRCgpOwotICAgICAgICAgICAgICAgIGlm
IChpbmhlcml0b3JJRCkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEluaGVyaXRv
cklEV2F0Y2hwb2ludCwgT3BJbmZvKGZ1bmN0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld09iamVjdCwg
T3BJbmZvKGluaGVyaXRvcklEKSkpOworICAgICAgICAgICAgICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKiBhbGxvY2F0aW9uUHJvZmlsZSA9IGZ1bmN0aW9uLT50cnlHZXRBbGxvY2F0aW9uUHJv
ZmlsZSgpOworICAgICAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uUHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgT3BJ
bmZvKGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdP
YmplY3QsIE9wSW5mbyhhbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWFscmVhZHlFbWl0dGVkKQotICAgICAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENy
ZWF0ZVRoaXMsIGNhbGxlZSkpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENyZWF0ZVRo
aXMsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSwgY2FsbGVlKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfdGhpcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewotICAgICAgICAgICAgc2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBP
cEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5lbXB0
eU9iamVjdFN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdPYmplY3QsCisg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfb2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw2ICs0ODYsMTcg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAor
ICAgIGJvb2wgaGFzSW5saW5lQ2FwYWNpdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gQ3JlYXRlVGhpczsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzSW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIHJldHVy
biBtX29wSW5mbzsKKyAgICB9CisKICAgICB2b2lkIHNldEluZGV4aW5nVHlwZShJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0luZGV4aW5nVHlwZSgp
KTsKQEAgLTcwMCw3ICs3MTEsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgotICAgICAgICBjYXNlIElu
aGVyaXRvcklEV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBc
Ci0gICAgbWFjcm8oSW5oZXJpdG9ySURXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKICAg
ICBtYWNybyhBcnJheVB1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
Q2xvYmJlcnNXb3JsZCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNs
dWRlICJOYW1lSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKQEAgLTM0
Nyw3ICszNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1Ro
aXNPYmplY3QoZXhlYykpOwogfQogCi1KU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY29uc3RydWN0b3IpCitKU0NlbGwqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciwgaW50MzJfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CkBAIC0zNTcsNyArMzU4LDcgQEAgSlND
ZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaQogICAgIEFTU0VSVChqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29u
c3RydWN0VHlwZUpTKTsKICNlbmRpZgogICAgIAotICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FjaGVkSW5oZXJp
dG9ySUQoZXhlYykpOworICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5s
aW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKSk7CiB9CiAKIEpTQ2VsbCogREZHX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJB
VElPTiAoKkNfREZHT3BlCiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3Bl
cmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BF
UkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwq
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUljZiko
RXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7Cit0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJB
VElPTiAoKkNfREZHT3BlcmF0aW9uX0VPWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRVN0KShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpE
X0RGR09wZXJhdGlvbl9ERCkoZG91YmxlLCBkb3VibGUpOwogdHlwZWRlZiBkb3VibGUgREZHX09Q
RVJBVElPTiAoKkRfREZHT3BlcmF0aW9uX1paKShpbnQzMl90LCBpbnQzMl90KTsKQEAgLTEyMiw3
ICsxMjMsNyBAQCB0eXBlZGVmIFN0cmluZ0ltcGwqIERGR19PUEVSQVRJT04gKCpTdHJfCiAKIC8v
IFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRlIGNhbGxiYWNrcyBvdXQgdG8gQysrIGltcGxlbWVu
dGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBjb21wbGV4IHRvIEpJVC4KIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lO
VEVSTkFMOwotSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0
YXRlKiwgSlNDZWxsKiBjb25zdHJ1Y3RvcikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVj
dG9yLCBpbnQzMl90IGlubGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnRUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBX
VEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNiw3ICs4MDYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKICAgICAgICAgY2FzZSBHbG9iYWxW
YXJXYXRjaHBvaW50OgogICAgICAgICBjYXNlIEdhcmJhZ2VWYWx1ZToKLSAgICAgICAgY2FzZSBJ
bmhlcml0b3JJRFdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50OgogICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
CiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlVmFsdWUpIHsKICAgICAgICAgaWYgKChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpICE9
IFByb3BlcnR5U2xvdDo6VmFsdWUpCi0gICAgICAgICAgICB8fCAhTWFjcm9Bc3NlbWJsZXI6Omlz
Q29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSkpIHsKKyAgICAgICAgICAgIHx8ICFNYWNyb0Fzc2Vt
Ymxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICAgICAgZGZn
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJh
dGlvbkdldEJ5SWRCdWlsZExpc3QpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2
Myw3ICszNTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFs
bG9jYXRlSlNBcnJheShzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVu
dHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVy
ZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFn
ZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhl
IEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOSwxMSArMzcyOSwxMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7
CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BS
UmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRF
WCkpKTsKQEAgLTM3NDUsOSArMzc0Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKHJlc3VsdEdQUiwgc3RvcmFnZUdQUikpOwogICAg
ICAgICAgICAgbV9qaXQuc3ViUHRyKHNjcmF0Y2hHUFIsIHN0b3JhZ2VHUFIpOwotICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJrZWRCbG9jazo6Tm9uZT4o
Ci0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLmluZGV4aW5nVHlwZSgpKSks
IHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSLCBzaXpl
b2YoSlNBcnJheSksIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKG5vZGUuaW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNP
YmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3Jh
Z2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKQEAgLTM4MDgs
NyArMzgwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTQXJyYXkoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLCBudW1F
bGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobm9kZS5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0
YW50QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgpKTsKQEAgLTM5MTksNDUgKzM5MjAsNTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgYWxs
b2NhdG9yKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJl
ZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBhbGxvY2F0b3JHUFIgPSBhbGxvY2F0b3IuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCi0gICAgICAg
IC8vIExvYWQgdGhlIGluaGVyaXRvcklELiBJZiB0aGUgaW5oZXJpdG9ySUQgaXMgbm90IHNldCwg
Z28gdG8gc2xvdyBwYXRoLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoOwotICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc3RydWN0dXJlR1BSKSk7Ci0gICAgICAgIAotICAgICAgICBlbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KHN0cnVjdHVyZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBz
bG93UGF0aCk7Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2Fs
bGVlR1BSKSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhj
YWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpT
RnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xv
d1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFs
bG9jYXRvckdQUikpOworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFs
bG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBz
bG93UGF0aCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwg
bm9kZS5pbmxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBj
YXNlIEluaGVyaXRvcklEV2F0Y2hwb2ludDogewotICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+
KG5vZGUuZnVuY3Rpb24oKSktPmFkZEluaGVyaXRvcklEV2F0Y2hwb2ludChzcGVjdWxhdGlvbldh
dGNocG9pbnQoKSk7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6IHsKKyAg
ICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLmZ1bmN0aW9uKCkpLT5hZGRBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOwogICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2Ug
TmV3T2JqZWN0OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIGFsbG9jYXRvckdQUiA9IGFsbG9jYXRvci5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAg
ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihu
b2RlLnN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7Ci0gICAg
ICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvbk5ld09iamVjdCwgcmVzdWx0R1BSLCBub2RlLnN0cnVjdHVyZSgpKSk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVj
dHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yUHRyID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRo
b3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKGFsbG9jYXRvclB0ciksIGFsbG9jYXRvckdQUik7CisgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKworICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJh
dGlvbk5ld09iamVjdCwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgCiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDc4LDcgKzM0NzgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5
KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAg
ICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9p
bnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhhdmUgcG9p
bnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVyZmx5LCBy
ZXNwZWN0aXZlbHkuCkBAIC0zNjQ1LDE5ICszNjQ1LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gyOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gSW52
YWxpZEdQUlJlZzsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShub2Rl
LmluZGV4aW5nVHlwZSgpKSkgewotICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU2Ny
YXRjaDIodGhpcywgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIuYWRvcHQocmVhbFNj
cmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIu
Z3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihNSU5f
U1BBUlNFX0FSUkFZX0lOREVYKSkpOwpAQCAtMzY2OSw5ICszNjYzLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZCgKICAgICAgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBz
dG9yYWdlR1BSKSk7CiAgICAgICAgICAgICBtX2ppdC5zdWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFn
ZUdQUik7Ci0gICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTQXJyYXksIE1h
cmtlZEJsb2NrOjpOb25lPigKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUu
aW5kZXhpbmdUeXBlKCkpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLAotICAgICAgICAgICAgICAg
IHN0b3JhZ2VHUFIsIHNpemVvZihKU0FycmF5KSwgc2xvd0Nhc2VzKTsKKyAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIEltbVB0cihzdHJ1Y3R1
cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7
CkBAIC0zNzY3LDcgKzM3NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
ICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAg
ICBlbWl0QWxsb2NhdGVKU0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHJlc3VsdEdQUiwgc3RvcmFn
ZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1
bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAg
ICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZl
cihub2RlLnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC0zODcxLDQ1ICszODY0LDU0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IGFsbG9jYXRvcih0
aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgY2FsbGVl
R1BSID0gY2FsbGVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0gYWxsb2NhdG9yLmdwcigpOwogICAg
ICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBMb2Fk
IHRoZSBpbmhlcml0b3JJRC4gSWYgdGhlIGluaGVyaXRvcklEIGlzIG5vdCBzZXQsIGdvIHRvIHNs
b3cgcGF0aC4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhj
YWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKSksIHN0cnVj
dHVyZUdQUik7CisKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwot
ICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgc3RydWN0dXJlR1BSKSk7Ci0gICAgICAgIAotICAgICAgICBlbWl0QWxsb2NhdGVK
U0ZpbmFsT2JqZWN0KHN0cnVjdHVyZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0
aCk7Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2FsbGVlR1BS
KSk7CisKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVH
UFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rp
b246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9jYXRv
ckdQUikpOworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRv
ckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0
aCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9kZS5p
bmxpbmVDYXBhY2l0eSgpKSk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
UiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgSW5oZXJpdG9ySURXYXRjaHBvaW50OiB7Ci0gICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4obm9kZS5mdW5jdGlvbigpKS0+YWRkSW5oZXJpdG9ySURXYXRjaHBvaW50KHNwZWN1bGF0aW9u
V2F0Y2hwb2ludCgpKTsKKyAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDogewor
ICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUuZnVuY3Rpb24oKSktPmFkZEFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CiAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2Fz
ZSBOZXdPYmplY3Q6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IGFsbG9jYXRvcih0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0gYWxsb2NhdG9yLmdwcigpOwog
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7Ci0gICAgICAgIAotICAgICAg
ICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG5vZGUuc3RydWN0dXJlKCkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKLSAg
ICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0
aCwgdGhpcywgb3BlcmF0aW9uTmV3T2JqZWN0LCByZXN1bHRHUFIsIG5vZGUuc3RydWN0dXJlKCkp
KTsKKworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuc3RydWN0dXJlKCk7Cisg
ICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShz
dHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFs
bG9jYXRvclB0ciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQdHIpLCBhbGxvY2F0b3JHUFIpOworICAgICAgICBlbWl0
QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisKKyAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUiwgc3RydWN0dXJlKSk7CiAgICAgICAgIAogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDE0IEBAIFNw
ZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQoKQogICAgIFdURjo6ZGVsZXRlQWxsVmFsdWVz
KG1fc2xvd1BhdGhHZW5lcmF0b3JzKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFs
bG9jYXRlSlNBcnJheShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BS
UmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQogewogICAgIEFT
U0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpIHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwog
ICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgCiAgICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBudW1FbGVtZW50cyk7
CiAgICAgCkBAIC03MywxMiArNzUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVKU0FycmF5CiAgICAgc2xvd0Nhc2VzLmFwcGVuZCgKICAgICAgICAgZW1pdEFsbG9jYXRlQmFz
aWNTdG9yYWdlKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwogICAgIG1faml0LnN1YlB0cihU
cnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7
Ci0gICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJrZWRCbG9jazo6Tm9u
ZT4oCi0gICAgICAgIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgcmVzdWx0R1BSLCBzY3JhdGNo
R1BSLAotICAgICAgICBzdG9yYWdlR1BSLCBzaXplb2YoSlNBcnJheSksIHNsb3dDYXNlcyk7Cisg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2Fz
ZXMpOwogICAgIAotICAgIC8vIEknbSBhc3N1bWluZyB0aGF0IHR3byAzMi1iaXQgc3RvcmVzIGFy
ZSBiZXR0ZXIgdGhhbiBhIDY0LWJpdCBzdG9yZS4KLSAgICAvLyBJIGhhdmUgbm8gaWRlYSBpZiB0
aGF0J3MgdHJ1ZS4gQW5kIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIGFueXdheS4KICAgICBt
X2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwog
ICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgo
KSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzgsNiArOTM4LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVj
dCwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FT1ogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2JqZWN0LCBpbnQzMl90IHNpemUpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1t
UHRyKHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0VQUyBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvbGQsIHNpemVfdCBzaXplKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9sZCwgVHJ1c3RlZElt
bVB0cihzaXplKSk7CkBAIC0xMzA1LDYgKzEzMTAsMTEgQEAgcHVibGljOgogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0RGR09wZXJhdGlvbl9FT1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
b2JqZWN0LCBpbnQzMl90IHNpemUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3Bl
cmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvbGQsIHNpemVfdCBz
aXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9s
ZCwgVHJ1c3RlZEltbVB0cihzaXplKSk7CkBAIC0yMTM1LDI3ICsyMTQ1LDE5IEBAIHB1YmxpYzoK
ICAgICAgICAgCiAgICAgICAgIHJldHVybiBzbG93UGF0aDsKICAgICB9Ci0gICAgCi0gICAgLy8g
SXQgaXMgTk9UIG9rYXkgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzY3JhdGNoIHJlZ2lzdGVy
IHRvIGJlIHRoZSBzYW1lIHRoaW5nIGJlY2F1c2UgaWYgdGhleSBhcmUgdGhlbiB0aGUgU3RydWN0
dXJlIHdpbGwgCi0gICAgLy8gZ2V0IGNsb2JiZXJlZC4gCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlLCB0
eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4gCi0gICAgdm9pZCBl
bWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBHUFJSZWcg
cmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgU3RvcmFnZVR5cGUgc3RvcmFnZSwgc2l6ZV90
IHNpemUsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCi0gICAgewotICAgICAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDA7Ci0gICAgICAgIGlmIChkZXN0cnVjdG9y
VHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQotICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1f
aml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1
Y3RvcihzaXplKTsKLSAgICAgICAgZWxzZSBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxv
Y2s6OkltbW9ydGFsU3RydWN0dXJlKQotICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmds
b2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yKHNpemUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhbGxvY2F0b3IgPSAm
bV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVj
dG9yKHNpemUpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoJmFsbG9jYXRvci0+bV9mcmVlTGlz
dC5oZWFkLCByZXN1bHRHUFIpOworICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEg
c3BlY2lmaWMgc2l6ZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU+IC8vIFN0cnVjdHVyZVR5cGUgYW5kIFN0b3JhZ2VUeXBlIGNhbiBi
ZSBHUFIgb3IgSW1tUHRyLgorICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCisg
ICAgICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zm
c2V0T2ZGcmVlTGlzdEhlYWQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBvYmplY3QgaXMgaGFsZi1hbGxvY2F0ZWQ6IHdlIGhh
dmUgd2hhdCB3ZSBrbm93IGlzIGEgZnJlc2ggb2JqZWN0LCBidXQKICAgICAgICAgLy8gaXQncyBz
dGlsbCBvbiB0aGUgR0MncyBmcmVlIGxpc3QuCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIG1faml0
LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVhZCk7CisgICAg
ICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFs
bG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7CiAK
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgogICAgICAgICBt
X2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwpAQCAtMjE2NCwxMyArMjE2NiwyNCBAQCBw
dWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHN0b3JhZ2UsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxP
YmplY3QoVCBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQorICAgIC8vIENvbnZlbmllbmNlIGFs
bG9jYXRvciBmb3IgYSBidWl0LWluIG9iamVjdC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xh
c3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4gLy8g
U3RydWN0dXJlVHlwZSBhbmQgU3RvcmFnZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCisgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmVUeXBl
IHN0cnVjdHVyZSwgU3RvcmFnZVR5cGUgc3RvcmFnZSwKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1Bh
dGgpCiAgICAgewotICAgICAgICByZXR1cm4gZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0Zp
bmFsT2JqZWN0LCBNYXJrZWRCbG9jazo6Tm9uZT4oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIsIFRydXN0ZWRJbW1QdHIoMCksIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKElO
TElORV9TVE9SQUdFX0NBUEFDSVRZKSwgc2xvd1BhdGgpOworICAgICAgICBNYXJrZWRBbGxvY2F0
b3IqIGFsbG9jYXRvciA9IDA7CisgICAgICAgIHNpemVfdCBzaXplID0gQ2xhc3NUeXBlOjphbGxv
Y2F0aW9uU2l6ZSgwKTsKKyAgICAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiAm
JiBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQorICAgICAgICAgICAgYWxsb2NhdG9y
ID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemUpOworICAgICAgICBlbHNlIGlmIChDbGFzc1R5cGU6
Om5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFs
RGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0
YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemUpOworICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjEpOwor
ICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIxLCBzdHJ1
Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CiAgICAgfQotICAgIAotICAg
IHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShTdHJ1Y3R1cmUqLCBHUFJSZWcgcmVzdWx0R1BSLCBH
UFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworCisgICAgdm9pZCBlbWl0
QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9y
YWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KSAKICAg
ICBKSVRDb21waWxlcjo6SnVtcCBjb252ZXJ0VG9Eb3VibGUoR1BSUmVnIHZhbHVlLCBGUFJSZWcg
cmVzdWx0LCBHUFJSZWcgdG1wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTAgKzE1
LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogfQogCiBjbGFzcyBNYXJrZWRBbGxvY2F0b3Ig
ewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRp
dmVKSVQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogcHVibGlj
OgorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKTsKKwogICAgIE1h
cmtlZEFsbG9jYXRvcigpOwogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIGNhbm9uaWNhbGl6
ZUNlbGxMaXZlbmVzc0RhdGEoKTsKQEAgLTM2LDggKzM3LDYgQEAgcHVibGljOgogICAgIGJvb2wg
aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgCiBwcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCogYWxsb2NhdGVTbG93Q2FzZShzaXplX3QpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlKHNp
emVfdCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoc2l6ZV90KTsKQEAgLTUzLDYgKzUy
LDExIEBAIHByaXZhdGU6CiAgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7CiB9OwogCitp
bmxpbmUgcHRyZGlmZl90IE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKQor
eworICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWFya2VkQWxsb2NhdG9yLCBtX2ZyZWVMaXN0
KSArIE9CSkVDVF9PRkZTRVRPRihNYXJrZWRCbG9jazo6RnJlZUxpc3QsIGhlYWQpOworfQorCiBp
bmxpbmUgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoKQogICAgIDogbV9jdXJyZW50
QmxvY2soMCkKICAgICAsIG1fYmxvY2tzVG9Td2VlcCgwKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgSlNTdGFj
azsKKyAgICBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAg
Y2xhc3MgU3RydWN0dXJlQ2hhaW47CiAKQEAgLTQ1Myw4ICs0NTQsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lz
dGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgc2NyYXRjaCwgUmVnaXN0ZXJJRCBzY3JhdGNoMiwg
V3JpdGVCYXJyaWVyTW9kZSwgV3JpdGVCYXJyaWVyVXNlS2luZCk7CiAgICAgICAgIHZvaWQgZW1p
dFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3RlcklE
IHNjcmF0Y2gsIFdyaXRlQmFycmllck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JU
eXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoU3RydWN0dXJlVHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0
cik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5h
bE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFn
ZVB0cik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IC8vIFN0cnVj
dHVyZVR5cGUgY2FuIGJlIFJlZ2lzdGVySUQgb3IgSW1tUHRyLgorICAgICAgICB2b2lkIGVtaXRB
bGxvY2F0ZUpTT2JqZWN0KFJlZ2lzdGVySUQgYWxsb2NhdG9yLCBTdHJ1Y3R1cmVUeXBlLCBSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgCiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQogICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUg
dG8gcHJvZmlsZSBpcyBpbiByZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBhdmFpbGFibGUgZm9yCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMCwyMiArMzEwLDE1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFu
ZENvbnN0YW4KICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNTdHJpbmcoKSAmJiBhc1N0cmluZyhn
ZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSktPmxlbmd0aCgpID09IDE7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBk
ZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjpl
bWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKQordGVtcGxhdGU8dHlwZW5hbWUgU3Ry
dWN0dXJlVHlwZT4KK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QoUmVnaXN0
ZXJJRCBhbGxvY2F0b3IsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3Vs
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogewotICAgIHNpemVfdCBzaXplID0gQ2xhc3NUeXBlOjph
bGxvY2F0aW9uU2l6ZShJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSk7Ci0gICAgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IgPSAwOwotICAgIGlmIChkZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9j
azo6Tm9ybWFsKQotICAgICAgICBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9j
YXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemUpOwotICAgIGVsc2UgaWYgKGRl
c3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAg
YWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemUpOwotICAgIGVsc2UKLSAgICAgICAgYWxsb2Nh
dG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1
Y3RvcihzaXplKTsKLSAgICBsb2FkUHRyKCZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVhZCwgcmVz
dWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxvY2F0b3I6Om9m
ZnNldE9mRnJlZUxpc3RIZWFkKCkpLCByZXN1bHQpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3RQdHIoWmVybywgcmVzdWx0KSk7CiAKICAgICAvLyByZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRo
ZSBmcmVlIGxpc3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc3RvcmFnZVB0cik7Ci0g
ICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgJmFsbG9jYXRvci0+bV9mcmVlTGlzdC5oZWFkKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CisgICAgc3RvcmVQdHIoc2NyYXRj
aCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhl
YWQoKSkpOwogCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCiAgICAg
c3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSkpOwpAQCAtMzM0LDExICszMjcsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBl
LCBNYXJrZWRCbG9jCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1
bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0
dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQotewotICAgIGVtaXRB
bGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9iamVjdCwgTWFya2VkQmxvY2s6Ok5vbmUsIFQ+
KHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKLX0KLQogI2lmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2Zp
bGUqIHZhbHVlUHJvZmlsZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDE1
ICsyMTMsMjUgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKEluc3RydWN0aW9uKiBjdXJyZQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlZ1QwLCBy
ZWdUMSk7Ci0gICAgCi0gICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCByZWdUMCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCk7CisgICAgc2l6
ZV90IGFsbG9jYXRpb25TaXplID0gSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+
aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmbV9n
bG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9j
YXRpb25TaXplKTsKKworICAgIFJlZ2lzdGVySUQgcmVzdWx0UmVnID0gcmVnVDA7CisgICAgUmVn
aXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWcg
PSByZWdUMjsKKworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBhbGxvY2F0b3JS
ZWcpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCByZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOworICAgIGVtaXRTdG9yZUNlbGwo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVzdWx0UmVnKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpLmNh
bGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KFRydXN0ZWRJbW1QdHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUtPnN0cnVjdHVyZSgpKSk7CisgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3Rh
bmNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMTYxLDIyICsxMTcxLDI4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24KIHZvaWQgSklUOjpl
bWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgaW50IGNhbGxlZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgZW1p
dExvYWRQYXlsb2FkKGNhbGxlZSwgcmVnVDApOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgpKSwgcmVnVDIpOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICAKLSAgICAvLyBub3cg
cmVnVDIgY29udGFpbnMgdGhlIGluaGVyaXRvcklELCB3aGljaCBpcyB0aGUgc3RydWN0dXJlIHRo
YXQgdGhlIG5ld2x5Ci0gICAgLy8gYWxsb2NhdGVkIG9iamVjdCB3aWxsIGhhdmUuCi0gICAgCi0g
ICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChyZWdUMiwgcmVnVDAsIHJlZ1QxKTsKLSAgICBl
bWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAg
ICBSZWdpc3RlcklEIGNhbGxlZVJlZyA9IHJlZ1QwOworICAgIFJlZ2lzdGVySUQgcmVzdWx0UmVn
ID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBSZWdp
c3RlcklEIHN0cnVjdHVyZVJlZyA9IHJlZ1QyOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9
IHJlZ1QzOworCisgICAgZW1pdExvYWRQYXlsb2FkKGNhbGxlZSwgY2FsbGVlUmVnKTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Q
cm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSks
IGFsbG9jYXRvclJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3RQdHIoWmVybywgYWxsb2NhdG9yUmVnKSk7CisKKyAgICBlbWl0QWxsb2NhdGVKU09i
amVjdChhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsK
KyAgICBlbWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3Vs
dFJlZyk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewotICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGluaGVy
aXRvciBJRAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9j
YXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWls
ZWQKKwogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7
CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE1ICs5NSwyNSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qbXAoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0X29wX25l
d19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0QWxs
b2NhdGVKU0ZpbmFsT2JqZWN0KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKSwgcmVnVDAsIHJlZ1QxKTsKLSAgICAKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9iamVjdEFsbG9j
YXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKTsKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBK
U09iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2Nh
dG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAgUmVn
aXN0ZXJJRCByZXN1bHRSZWcgPSByZWdUMDsKKyAgICBSZWdpc3RlcklEIGFsbG9jYXRvclJlZyA9
IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9IHJlZ1QyOworCisgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIGFsbG9jYXRvclJlZyk7CisgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QoYWxsb2NhdG9yUmVnLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHJlc3VsdFJl
Zywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmpl
Y3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1
YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25ld19v
YmplY3QpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSk7Cisg
ICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC05MjIsMjIgKzkzMiwyOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
Y2FsbGVlKEluc3RydWN0aW9uCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVl
LCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkNhY2hlZEluaGVyaXRvcklEKCkpLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVz
dFB0cihaZXJvLCByZWdUMikpOwotICAgIAotICAgIC8vIG5vdyByZWdUMiBjb250YWlucyB0aGUg
aW5oZXJpdG9ySUQsIHdoaWNoIGlzIHRoZSBzdHJ1Y3R1cmUgdGhhdCB0aGUgbmV3bHkKLSAgICAv
LyBhbGxvY2F0ZWQgb2JqZWN0IHdpbGwgaGF2ZS4KLSAgICAKLSAgICBlbWl0QWxsb2NhdGVKU0Zp
bmFsT2JqZWN0KHJlZ1QyLCByZWdUMCwgcmVnVDEpOworICAgIFJlZ2lzdGVySUQgY2FsbGVlUmVn
ID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCByZXN1bHRSZWcgPSByZWdUMDsKKyAgICBSZWdpc3Rl
cklEIGFsbG9jYXRvclJlZyA9IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnID0g
cmVnVDI7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVnVDM7CisKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
Y2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7
CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0
dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVy
bywgYWxsb2NhdG9yUmVnKSk7CisKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JS
ZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBpbmhlcml0b3IgSUQKKyAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHByb2ZpbGUKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCisKICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOworICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7
CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNs
dWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgorI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtOTMxLDEwICs5
MzIsOSBAQCBORVZFUl9JTkxJTkUgc3RhdGljIHZvaWQgdHJ5Q2FjaGVHZXRCeUlECiAgICAgLy8g
Q2FjaGUgaGl0OiBTcGVjaWFsaXplIGluc3RydWN0aW9uIGFuZCByZWYgU3RydWN0dXJlcy4KIAog
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgIC8vIHNldCB0
aGlzIHVwLCBzbyBkZXJlZlN0cnVjdHVyZXMgY2FuIGRvIGl0J3Mgam9iLgogICAgICAgICBzdHVi
SW5mby0+aW5pdEdldEJ5SWRTZWxmKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoKHNsb3QuY2FjaGVk
UHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKLSAgICAgICAgICAgIHx8ICFN
YWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQob2Zmc2V0UmVs
YXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkKKyAgICAgICAgICAg
IHx8ICFNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4
T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSkKICAg
ICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIHJldHVybkFk
ZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFkZHJlc3MpOwpAQCAt
MTMwMCw2ICsxMzAwLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
XwogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAgICAgSlNGdW5jdGlvbiog
Y29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwog
I2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTEzMDcsNyArMTMwOCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09
IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y29uc3RydWN0b3ItPmNhY2hlZEluaGVyaXRvcklEKGNhbGxGcmFtZSk7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoY2FsbEZyYW1lLCBp
bmxpbmVDYXBhY2l0eSktPnN0cnVjdHVyZSgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lLCBzdHJ1Y3R1cmUpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTM5NSw3ICsxMzk2LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04oSlNPYmplY3QqLCBvcF9uZXdfbwogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShz
dGFja0ZyYW1lKTsKIAotICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChzdGFja0ZyYW1l
LmNhbGxGcmFtZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMF0uc3RydWN0dXJlKCkpOwogfQogCiBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfZ2VuZXJpYykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA4LDkgKzEwOCw5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxE
YXQKICAgICBBU1NFUlQoSW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDgpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgQVNTRVJUKCZnbG9iYWxEYXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3Ry
dWN0b3IoSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKElOTElORV9TVE9SQUdFX0NBUEFDSVRZKSkg
LSAmZ2xvYmFsRGF0YS5oZWFwLmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0g
MSk7CisgICAgQVNTRVJUKCZnbG9iYWxEYXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91
dERlc3RydWN0b3IoSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoSlNGaW5hbE9iamVjdDo6
ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKSAtICZnbG9iYWxEYXRhLmhlYXAuZmlyc3RBbGxvY2F0
b3JXaXRob3V0RGVzdHJ1Y3RvcnMoKSA9PSAxKTsKICNlbHNlCi0gICAgQVNTRVJUKCZnbG9iYWxE
YXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoSlNPYmplY3Q6OmFs
bG9jYXRpb25TaXplKElOTElORV9TVE9SQUdFX0NBUEFDSVRZKSkgLSAmZ2xvYmFsRGF0YS5oZWFw
LmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0gMyk7CisgICAgQVNTRVJUKCZn
bG9iYWxEYXRhLmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFj
aXR5KCkpKSAtICZnbG9iYWxEYXRhLmhlYXAuZmlyc3RBbGxvY2F0b3JXaXRob3V0RGVzdHJ1Y3Rv
cnMoKSA9PSAzKTsKICNlbmRpZgogICAgIEFTU0VSVChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCA9PSAweDQwMDAwMDAwKTsKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9PSAwKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkxMSW50Q29t
bW9uLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC00
ODMsOCArNDg0LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aAog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBBU1NFUlQoY29uc3RydWN0b3It
Pm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERh
dGEpID09IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKLSAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5jYWNoZWRJbmhlcml0b3JJRChleGVjKTsKKworICAgIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5hbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBh
Y2l0eSktPnN0cnVjdHVyZSgpOwogICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjLCBzdHJ1Y3R1cmUpKTsKIH0KIApAQCAtNTAzLDcgKzUwNSw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9jb252ZXJ0X3QKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfb2JqZWN0KQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgcGNbM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0
dXJlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMzYxLDE3ICszNjEsMTggQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fY2FjaGVkSW5oZXJpdG9y
SURbdDBdLCB0MgotICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93Ci0gICAgYWxsb2NhdGVC
YXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgdDIsIHQwLCB0MSwgdDMs
IC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fYWxsb2NhdGlvblBy
b2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDBdLCB0MQorICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNT
bG93CisgICAgYWxsb2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Ns
b3cpCiAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAg
IGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2go
MykKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9nZXRfY2FsbGVlOgpAQCAtNDAzLDE4
ICs0MDQsMTggQEAgX2xsaW50X29wX2NvbnZlcnRfdGhpczoKIAogX2xsaW50X29wX25ld19vYmpl
Y3Q6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAot
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpT
R2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKLSAgICBhbGxvY2F0
ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCB0MSwgdDAsIHQyLCB0
MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAg
ICBsb2FkcCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDBdLCB0MQorICAg
IGxvYWRwIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAg
YWxsb2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKICAgICBs
b2FkaSA0W1BDXSwgdDEKICAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2go
MikKKyAgICBkaXNwYXRjaCg0KQogCiAub3BOZXdPYmplY3RTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19vYmplY3QpCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNw
YXRjaCg0KQogCiAKIF9sbGludF9vcF9tb3Y6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI0MywxNiArMjQzLDE3IEBAIF9sbGludF9vcF9jcmVh
dGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQogICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlz
U2xvdwotICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5k
ZXgsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2FsbG9jYXRpb25Qcm9maWxlICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fYWxs
b2NhdG9yW3QwXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2FsbG9jYXRpb25Qcm9maWxl
ICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBidHB6
IHQxLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlSlNPYmplY3QodDEsIHQyLCB0MCwg
dDMsIC5vcENyZWF0ZVRoaXNTbG93KQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkK
ICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0
Y2goNCkKIAogLm9wQ3JlYXRlVGhpc1Nsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfY3JlYXRlX3RoaXMpCi0gICAgZGlzcGF0Y2goMykKKyAgICBkaXNwYXRjaCg0KQogCiAK
IF9sbGludF9vcF9nZXRfY2FsbGVlOgpAQCAtMjgzLDE3ICsyODQsMTcgQEAgX2xsaW50X29wX2Nv
bnZlcnRfdGhpczoKIAogX2xsaW50X29wX25ld19vYmplY3Q6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlW3QwXSwgdDEKLSAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4LCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAg
ICBsb2FkcEZyb21JbnN0cnVjdGlvbigzLCB0MCkKKyAgICBsb2FkcCBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9hbGxvY2F0b3JbdDBdLCB0MQorICAgIGxvYWRwIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYWxsb2NhdGVKU09iamVjdCh0MSwgdDIs
IHQwLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQorICAgIGRp
c3BhdGNoKDQpCiAKIC5vcE5ld09iamVjdFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmV3X29iamVjdCkKLSAgICBkaXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDQpCiAK
IAogX2xsaW50X29wX21vdjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMzY5LDMyICszNjksMjEgQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihw
cm9maWxlQXJnUwogLnN0YWNrSGVpZ2h0T0s6CiBlbmQKIAotbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZGV4LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBzbG93Q2FzZSkKK21hY3JvIGFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1
cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNsb3dDYXNlKQogICAgIGlmIEFMV0FZU19BTExPQ0FURV9T
TE9XCiAgICAgICAgIGptcCBzbG93Q2FzZQogICAgIGVsc2UKLSAgICAgICAgY29uc3Qgb2Zmc2V0
T2ZNeVNpemVDbGFzcyA9Ci0gICAgICAgICAgICBKU0dsb2JhbERhdGE6OmhlYXAgKwotICAgICAg
ICAgICAgSGVhcDo6bV9vYmplY3RTcGFjZSArCi0gICAgICAgICAgICBNYXJrZWRTcGFjZTo6bV9u
b3JtYWxTcGFjZSArCi0gICAgICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2U6OnByZWNpc2VB
bGxvY2F0b3JzICsKLSAgICAgICAgICAgIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZEFs
bG9jYXRvcgotICAgICAgICAKICAgICAgICAgY29uc3Qgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsID0g
CiAgICAgICAgICAgICBNYXJrZWRBbGxvY2F0b3I6Om1fZnJlZUxpc3QgKyAKICAgICAgICAgICAg
IE1hcmtlZEJsb2NrOjpGcmVlTGlzdDo6aGVhZAogCi0gICAgICAgICMgRklYTUU6IHdlIGNhbiBn
ZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgotICAgICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQotICAgICAgICAKICAgICAgICAgIyBHZXQg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgCi0gICAgICAgIGxvYWRwIG9mZnNldE9m
TXlTaXplQ2xhc3MgKyBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAg
ICAgICAgbG9hZHAgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRvcl0sIHJlc3VsdAogICAg
ICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKICAgICAgICAgCiAgICAgICAgICMgUmVtb3ZlIHRo
ZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgotICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2Ny
YXRjaDIKLSAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zm
c2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2Ny
YXRjaDEKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbYWxs
b2NhdG9yXQogICAgIAogICAgICAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KICAgICAgICAg
c3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3Bw
CShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJCeXRlY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJQcm9maWxlckJ5dGVjb2RlLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcAkocmV2
aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmls
ZXJDb21waWxhdGlvbi5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5
dGVjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGVk
Qnl0ZWNvZGUuaCIKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJv
ZmlsZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NS
RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJPU1JFeGl0LmgiCiAKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2lu
LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyT3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIlByb2ZpbGVyT3JpZ2luLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFz
ZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyUHJvZmls
ZWRCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJQ
cm9maWxlZEJ5dGVjb2Rlcy5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
OCw3ICs3NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgOiBCYXNlKGdsb2JhbERhdGEs
IHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBt
X2V4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgdGhpcywgZXhlY3V0YWJsZSkKICAgICAgICAgLCBtX3Nj
b3BlKGdsb2JhbERhdGEsIHRoaXMsIHNjb3BlKQotICAgICAgICAsIG1faW5oZXJpdG9ySURXYXRj
aHBvaW50KEluaXRpYWxpemVkQmxpbmQpIC8vIFNlZSBjb21tZW50IGluIEpTRnVuY3Rpb24uY3Bw
IGNvbmNlcm5pbmcgdGhlIHJlYXNvbiBmb3IgdXNpbmcgSW5pdGlhbGl6ZWRCbGluZCBhcyBvcHBv
c2VkIHRvIEluaXRpYWxpemVkV2F0Y2hpbmcuCisgICAgICAgICwgbV9hbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQoSW5pdGlhbGl6ZWRCbGluZCkgLy8gU2VlIGNvbW1lbnQgaW4gSlNGdW5jdGlv
bi5jcHAgY29uY2VybmluZyB0aGUgcmVhc29uIGZvciB1c2luZyBJbml0aWFsaXplZEJsaW5kIGFz
IG9wcG9zZWQgdG8gSW5pdGlhbGl6ZWRXYXRjaGluZy4KICAgICB7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lv
biAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmIGhlYXAsIHNpemVfdCBzaQogICAgIEpTQ2VsbCogcmVzdWx0ID0gMDsKICAgICBpZiAoVDo6
bmVlZHNEZXN0cnVjdGlvbiAmJiBUOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKICAgICAgICAgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3Ioc2l6ZSkpOwotICAgIGVsc2UgaWYgKFQ6Om5lZWRzRGVzdHJ1Y3Rpb24g
JiYgIVQ6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQorICAgIGVsc2UgaWYgKFQ6Om5lZWRzRGVzdHJ1
Y3Rpb24pCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2Nh
dGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplKSk7CiAgICAgZWxzZSAKICAgICAgICAgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcC5hbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNp
emUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
UGFyc2VyLmgiCkBAIC04OCwxMiArODksMTIgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIAogICAgIC8vIHRoZSBvcHRpbWl6ZXIga2lja3MgaW4gZG9uJ3QgZGlzYWJs
ZSBvcHRpbWl6YXRpb25zLiBPbmNlIHRoZSBvcHRpbWl6ZXIga2lja3MgaW4sIHRoZQogICAgIC8v
IHdhdGNocG9pbnQgd2lsbCBzdGFydCB3YXRjaGluZyBhbmQgYW55IGNoYW5nZXMgd2lsbCBib3Ro
IGZvcmNlIGRlb3B0aW1pemF0aW9uIGFuZCBkaXNhYmxlCiAgICAgLy8gZnV0dXJlIGF0dGVtcHRz
IHRvIG9wdGltaXplLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGFyZSBndWFyYW50ZWVk
IHRoYXQgdGhlCi0gICAgLy8gaW5oZXJpdG9ySUQgaXMgY2hhbmdlZCBleGFjdGx5IG9uY2UgcHJp
b3IgdG8gb3B0aW1pemF0aW9ucyBraWNraW5nIGluLiBXZSBjb3VsZCBiZQorICAgIC8vIGFsbG9j
YXRpb24gcHJvZmlsZSBpcyBjaGFuZ2VkIGV4YWN0bHkgb25jZSBwcmlvciB0byBvcHRpbWl6YXRp
b25zIGtpY2tpbmcgaW4uIFdlIGNvdWxkIGJlCiAgICAgLy8gc21hcnRlciBhbmQgY291bnQgdGhl
IG51bWJlciBvZiB0aW1lcyB0aGUgcHJvdG90eXBlIGlzIGNsb2JiZXJlZCBhbmQgb25seSBvcHRp
bWl6ZSBpZiBpdAogICAgIC8vIHdhcyBjbG9iYmVyZWQgZXhhY3RseSBvbmNlLCBidXQgdGhhdCBz
ZWVtcyBsaWtlIG92ZXJraWxsLiBJbiBhbG1vc3QgYWxsIGNhc2VzIGl0IHdpbGwgYmUKICAgICAv
LyBjbG9iYmVyZWQgb25jZSwgYW5kIGlmIGl0J3MgY2xvYmJlcmVkIG1vcmUgdGhhbiBvbmNlLCB0
aGF0IHdpbGwgcHJvYmFibHkgb25seSBvY2N1cgogICAgIC8vIGJlZm9yZSB3ZSBzdGFydGVkIG9w
dGltaXppbmcsIGFueXdheS4KLSAgICAsIG1faW5oZXJpdG9ySURXYXRjaHBvaW50KEluaXRpYWxp
emVkQmxpbmQpCisgICAgLCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludChJbml0aWFsaXpl
ZEJsaW5kKQogewogfQogCkBAIC0xMDYsMTUgKzEwNywxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi1TdHJ1Y3R1cmUqIEpTRnVuY3Rpb246OmNh
Y2hlSW5oZXJpdG9ySUQoRXhlY1N0YXRlKiBleGVjKQorT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUq
IEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4
ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGdldChleGVjLCBnbG9i
YWxEYXRhLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgaWYgKHByb3RvdHlwZS5pc09i
amVjdCgpKQotICAgICAgICBtX2NhY2hlZEluaGVyaXRvcklELnNldChnbG9iYWxEYXRhLCB0aGlz
LCBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlw
ZShhc09iamVjdChwcm90b3R5cGUpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2NhY2hlZEluaGVy
aXRvcklELnNldChnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5lbXB0
eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKLSAgICByZXR1cm4gbV9jYWNoZWRJbmhlcml0b3JJRC5nZXQoKTsKKyAgICBKU09i
amVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBnbG9i
YWxEYXRhLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOworICAgIGlmICghcHJvdG90eXBlKQor
ICAgICAgICBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCk7Cisg
ICAgbV9hbGxvY2F0aW9uUHJvZmlsZS5pbml0aWFsaXplKGdsb2JhbE9iamVjdCgpLT5nbG9iYWxE
YXRhKCksIHRoaXMsIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOworICAgIHJldHVybiAmbV9h
bGxvY2F0aW9uUHJvZmlsZTsKIH0KIAogU3RyaW5nIEpTRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRl
KiBleGVjKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGMKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRJbmhlcml0b3JJRCk7CisgICAgdGhpc09i
amVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAog
Q2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCkBAIC0yMjEsMTIgKzIyMSwxMyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blBy
b3BlcnR5U2xvdChKU0NlCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewotICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewotICAgICAgICAgICAgSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7Ci0gICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7Ci0gICAgICAgICAg
ICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKKyAgICAgICAgICAgIEpTT2JqZWN0
KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KGdsb2JhbERhdGEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOworICAgICAgICAgICAgdGhpc09iamVjdC0+
cHV0RGlyZWN0KGdsb2JhbERhdGEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHBy
b3RvdHlwZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICAgICAgICAgIG9mZnNldCA9IHRo
aXNPYmplY3QtPmdldERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlKTsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
OwogICAgICAgICB9CiAKQEAgLTM1NSw5ICszNTYsOSBAQCB2b2lkIEpTRnVuY3Rpb246OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91
dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9jYWNo
ZWRJbmhlcml0b3JJRC5jbGVhcigpOwotICAgICAgICB0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklE
V2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgpOwotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRv
IGJlIGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9jYWNoZWRJbmhlcml0b3JJ
RC4KKyAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOworICAg
ICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5ub3RpZnlXcml0
ZSgpOworICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBb
W1B1dF1dIG11c3QgY2xlYXIgbV9hbGxvY2F0aW9uUHJvZmlsZS4KICAgICAgICAgUHV0UHJvcGVy
dHlTbG90IGRvbnRDYWNoZTsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwMiw4
ICs0MDMsOCBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAg
ICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9jYWNoZWRJbmhlcml0b3JJRC5jbGVhcigpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tX2luaGVyaXRvcklEV2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgp
OworICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7CisgICAg
ICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50Lm5vdGlmeVdyaXRl
KCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIH0KIApAQCAt
NDY5LDcgKzQ3MCw2IEBAIENvbnN0cnVjdFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGEK
ICAgICBjb25zdHJ1Y3REYXRhLmpzLnNjb3BlID0gdGhpc09iamVjdC0+c2NvcGUoKTsKICAgICBy
ZXR1cm4gQ29uc3RydWN0VHlwZUpTOwogfQotICAgIAogCiBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERp
c3BsYXlOYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogb2JqZWN0KQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24g
MTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTY29w
ZS5oIgorI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiV2F0
Y2hwb2ludC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTExNiw0MSArMTE3LDQyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBzaXpl
X3Qgb2Zmc2V0T2ZTY29wZUNoYWluKCkKKyAgICAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZTY29wZUNoYWluKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0
YXRpYyBpbmxpbmUgc2l6ZV90IG9mZnNldE9mRXhlY3V0YWJsZSgpCisgICAgICAgIHN0YXRpYyBp
bmxpbmUgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9leGVjdXRhYmxlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFN0cnVjdHVyZSogY2FjaGVkSW5oZXJpdG9ySUQoRXhlY1N0YXRl
KiBleGVjKQorICAgICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRp
b25Qcm9maWxlKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFtX2NhY2hl
ZEluaGVyaXRvcklEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVJbmhlcml0b3JJRChl
eGVjKTsKLSAgICAgICAgICAgIHJldHVybiBtX2NhY2hlZEluaGVyaXRvcklELmdldCgpOworICAg
ICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2FsbG9jYXRpb25Q
cm9maWxlKTsKICAgICAgICAgfQogCi0gICAgICAgIFN0cnVjdHVyZSogdHJ5R2V0S25vd25Jbmhl
cml0b3JJRCgpCisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBhbGxvY2F0aW9uUHJv
ZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2FjaGVkSW5oZXJpdG9ySUQpCisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobV9hbGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVDYXBhY2l0eSA8PSBtX2FsbG9jYXRpb25Qcm9maWxlLnN0
cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9hbGxv
Y2F0aW9uUHJvZmlsZTsKKyAgICAgICAgfQorCisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKiB0cnlHZXRBbGxvY2F0aW9uUHJvZmlsZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtX2FsbG9jYXRpb25Qcm9maWxlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICAgICAgaWYgKG1faW5oZXJpdG9ySURXYXRjaHBvaW50Lmhhc0JlZW5JbnZhbGlk
YXRlZCgpKQorICAgICAgICAgICAgaWYgKG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50Lmhh
c0JlZW5JbnZhbGlkYXRlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgcmV0dXJuIG1fY2FjaGVkSW5oZXJpdG9ySUQuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4g
Jm1fYWxsb2NhdGlvblByb2ZpbGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQg
YWRkSW5oZXJpdG9ySURXYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVCh0cnlHZXRLbm93bkluaGVyaXRvcklEKCkpOwotICAgICAg
ICAgICAgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQuYWRkKHdhdGNocG9pbnQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkNhY2hlZEluaGVyaXRvcklEKCkKKyAg
ICAgICAgdm9pZCBhZGRBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0
Y2hwb2ludCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U0Z1bmN0aW9uLCBtX2NhY2hlZEluaGVyaXRvcklEKTsKKyAgICAgICAgICAgIEFTU0VSVCh0cnlH
ZXRBbGxvY2F0aW9uUHJvZmlsZSgpKTsKKyAgICAgICAgICAgIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50LmFkZCh3YXRjaHBvaW50KTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgpA
QCAtMTYyLDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKIAotICAg
ICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJpdG9ySUQoRXhlY1N0YXRlKik7CisgICAgICAgIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUq
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAt
MTg3LDggKzE4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFdyaXRlQmFycmllcjxF
eGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOwogICAgICAgICBXcml0ZUJhcnJpZXI8SlNTY29w
ZT4gbV9zY29wZTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRJbmhl
cml0b3JJRDsKLSAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2luaGVyaXRvcklEV2F0Y2hw
b2ludDsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgbV9hbGxvY2F0aW9uUHJvZmls
ZTsKKyAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIzLDggKzIyMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fd2l0
aFNjb3BlU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTV2l0aFNjb3Bl
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpOwog
Ci0gICAgbV9lbXB0eU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBnbG9iYWxEYXRhKCkucHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90
eXBlKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7Ci0gICAgbV9udWxsUHJvdG90eXBlT2JqZWN0
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTRmluYWxPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhKCksIHRoaXMsIGpzTnVsbCgpKSk7CisgICAgbV9udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpT
RmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhKCksIHRoaXMsIGpzTnVsbCgp
LCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSkpOwogCiAgICAgbV9jYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYXJndW1lbnRzU3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTUx
Myw3ICs1MTIsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tPYmplY3RTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VtcHR5T2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25TdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxs
YmFja09iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9k
YXRlU3RydWN0dXJlOwotICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bGxQcm90
b3R5cGVPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
ZXJyb3JTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CkBAIC0zMDMsNyArMzAyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGNh
bGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBl
bXB0eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CkBAIC01
MTQsMTYgKzUxMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZ2xvYmFsRGF0
YSgpLmR5bmFtaWNHbG9iYWxPYmplY3Q7CiAgICAgfQogCi0gICAgaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIH0KLQogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1
Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJv
ZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5pdGlhbExlbmd0
aCA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTo6dXBk
YXRlTGFzdEFsbG9jYXRpb25Gb3IocHJvZmlsZSwgSlNBcnJheTo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgaW5pdGlhbExlbmd0aCA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYID8gZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSA6IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9m
aWxlRHVyaW5nQWxsb2NhdGlvbihwcm9maWxlKSwgaW5pdGlhbExlbmd0aCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTG9jYWwuaCIKICNpbmNs
dWRlICJMb2NhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NTksNyArOTU5LDYgQEAgcHJvdGVjdGVkOgogICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7
CiB9OwogCi0KIC8vIEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQg
aGFzIHNvbWUgaW50ZXJuYWwgc3RvcmFnZSwKIC8vIGJ1dCBhbHNvIHByZXNlcnZlcyBzb21lIHNw
YWNlIGluIHRoZSBjb2xsZWN0b3IgY2VsbCBmb3IgYWRkaXRpb25hbAogLy8gZGF0YSBtZW1iZXJz
IGluIGRlcml2ZWQgdHlwZXMuCkBAIC05OTgsMTAgKzk5NywyMiBAQCBjbGFzcyBKU0ZpbmFsT2Jq
ZWN0IDogcHVibGljIEpTT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTT2JqZWN0IEJh
c2U7CiAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdFNpemUgPSA2NDsKKyAgICBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpCisgICAgeworICAg
ICAgICByZXR1cm4gKGRlZmF1bHRTaXplIC0gYWxsb2NhdGlvblNpemUoMCkpIC8gc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heFNpemUgPSA1MTI7CisgICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBtYXhJbmxpbmVDYXBh
Y2l0eSgpCisgICAgeworICAgICAgICByZXR1cm4gKG1heFNpemUgLSBhbGxvY2F0aW9uU2l6ZSgw
KSkgLyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKICAgICBzdGF0aWMg
SlNGaW5hbE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8sIE5vbkFycmF5LCBJTkxJTkVfU1RPUkFHRV9D
QVBBQ0lUWSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRmluYWxPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksICZzX2luZm8sIE5vbkFycmF5LCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgfQogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpAQCAtMTA5NSwxMSArMTEwNiw2IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRCdXR0ZXJmbHlXaXRob3UKICAgICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZseTsKIH0KIAot
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUo
ZXhlYywgc3RydWN0dXJlKTsKLX0KLQogaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFs
dWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBDYWxsVHlwZSByZXN1bHQgPSB2
YWx1ZS5pc0NlbGwoKSA/IHZhbHVlLmFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0
YSh2YWx1ZS5hc0NlbGwoKSwgY2FsbERhdGEpIDogQ2FsbFR5cGVOb25lOwpAQCAtMTQwMyw3ICsx
NDA5LDcgQEAgaW5saW5lIHNpemVfdCBvZmZzZXRJbkJ1dHRlcmZseShQcm9wZXJ0eQogICAgIHJl
dHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSArIEJ1dHRlcmZseTo6aW5kZXhP
ZlByb3BlcnR5U3RvcmFnZSgpOwogfQogCi0vLyBUaGlzIGlzIGEgaGVscGVyIGZvciBwYXRjaGlu
ZyBjb2RlIHdoZXJlIHlvdSB3YW50IHRvIGVtaXQgYSBsb2FkIG9yIHN0b3JlIGFuZAorLy8gSGVs
cGVycyBmb3IgcGF0Y2hpbmcgY29kZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0IGEgbG9hZCBvciBz
dG9yZSBhbmQKIC8vIHRoZSBiYXNlIGlzOgogLy8gRm9yIGlubGluZSBvZmZzZXRzOiBhIHBvaW50
ZXIgdG8gdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UgcG9pbnRlci4KIC8vIEZvciBvdXQtb2YtbGlu
ZSBvZmZzZXRzOiB0aGUgYmFzZSBvZiB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZS4KQEAgLTE0MTQs
NiArMTQyMCwxNyBAQCBpbmxpbmUgc2l6ZV90IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvCiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAtIEpTT2JqZWN0Ojpi
dXR0ZXJmbHlPZmZzZXQoKSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvZmZzZXRJbklubGlu
ZVN0b3JhZ2Uob2Zmc2V0KTsKIH0KIAorLy8gUmV0dXJucyB0aGUgbWF4aW11bSBvZmZzZXQgYSBs
b2FkIGluc3RydWN0aW9uIHdpbGwgZW5jb2RlLgoraW5saW5lIHNpemVfdCBtYXhPZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQoreworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgcmV0dXJuIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShv
ZmZzZXQpCisgICAgICAgICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy50YWcpOworI2Vsc2UKKyAgICByZXR1cm4gb2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRT
dG9yYWdlKG9mZnNldCk7CisjZW5kaWYKK30KKwogaW5saW5lIGludCBpbmRleFJlbGF0aXZlVG9C
YXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQo
b2Zmc2V0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsMTYgQEAgdm9pZCBKU1Byb3h5Ojpz
ZXRUYXJnZXQoSlNHbG9iYWxEYXRhJiBnbAogICAgIEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QpOwogICAgIG1fdGFyZ2V0LnNldChnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxP
YmplY3QpOwogICAgIHNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QtPnByb3Rv
dHlwZSgpKTsKLSAgICBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5jbGVhckVtcHR5T2JqZWN0U3Ry
dWN0dXJlRm9yUHJvdG90eXBlKHRoaXMpOworCisgICAgUHJvdG90eXBlTWFwJiBwcm90b3R5cGVN
YXAgPSBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcDsKKyAgICBpZiAoIXByb3RvdHlwZU1hcC5pc1By
b3RvdHlwZSh0aGlzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBpcyBzbG93IGJ1
dCBjb25zdGFudCB0aW1lLiBXZSB0aGluayBpdCdzIHZlcnkgcmFyZSBmb3IgYSBwcm94eQorICAg
IC8vIHRvIGJlIGEgcHJvdG90eXBlLCBhbmQgcmVhc29uYWJseSByYXJlIHRvIHJldGFyZ2V0IGEg
cHJveHksCisgICAgLy8gc28gc2xvdyBjb25zdGFudCB0aW1lIGlzIE9LLgorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDw9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCk7ICsraSkK
KyAgICAgICAgcHJvdG90eXBlTWFwLmNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5
cGUodGhpcywgaSk7CiB9CiAKIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29uc3QgSlNPYmpl
Y3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1
ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9B
U0NJSUNUeXBlLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiwxOSArMTAyLDE5IEBAIGJvb2wgT2JqZWN0Q29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5RGUKICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0Pihl
eGVjLCBFeGVjU3RhdGU6Om9iamVjdENvbnN0cnVjdG9yVGFibGUoZXhlYyksIGpzQ2FzdDxPYmpl
Y3RDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAK
LS8vIEVDTUEgMTUuMi4yCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgQXJnTGlzdCYgYXJncykKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1
Y3RPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOwogICAgIEpTVmFsdWUgYXJnID0gYXJncy5hdCgwKTsKICAgICBpZiAoYXJnLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgcmV0dXJuIGFyZy50b09i
amVjdChleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdE9iamVjdChleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKSwgYXJncykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0T2JqZWN0KGV4ZWMpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBPYmplY3RDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQpAQCAtMTI1LDggKzEyNSw3IEBAIENvbnN0cnVjdFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6Omdl
dENvbnMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgYXNJbnRlcm5h
bEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdChleGVjKSk7CiB9CiAKIENhbGxU
eXBlIE9iamVjdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCkBAIC0zNTEsNyArMzUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4g
T2JqZWN0IG9yIG51bGwuIikpKTsKICAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKLSAgICAgICAg
PyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvdG90eXBl
TWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKGFzT2JqZWN0KHByb3RvKSkpCisg
ICAgICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQogICAg
ICAgICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShu
ZXdPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw4IEBACiAjZGVmaW5lIE9iamVjdENvbnN0cnVjdG9yX2gKIAogI2luY2x1ZGUgIkludGVy
bmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9i
amVjdFByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTgsNiArNjAsMzAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKKyAgICBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSk7
CisgICAgfQorCisgICAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgUHJvdG90eXBlTWFwJiBwcm90b3R5cGVNYXAg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5wcm90b3R5cGVNYXA7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gcHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJv
dG90eXBlKAorICAgICAgICAgICAgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOworICAgIH0KKwor
ICAgIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIHByb3RvdHlwZSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNh
cGFjaXR5KCkpOworICAgIH0KKworICAgIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90
eXBlKCkpOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBPYmplY3RD
b25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5T2Zmc2V0LmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5T2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiw2
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNkZWZpbmUg
SU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkgNwotI2Vsc2UKLSNkZWZpbmUgSU5MSU5FX1NUT1JBR0Vf
Q0FQQUNJVFkgNgotI2VuZGlmCi0KIHR5cGVkZWYgaW50IFByb3BlcnR5T2Zmc2V0OwogCiBzdGF0
aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCShyZXZpc2lvbiAx
NDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MiwxOCArNTIsMjQgQEAgdm9pZCBQcm90b3R5cGVNYXA6OmFk
ZFByb3RvdHlwZShKU09iamVjdAogICAgIC8vIHVzZWQgYXMgYSBwcm90b3R5cGUuCiB9CiAKLVN0
cnVjdHVyZSogUHJvdG90eXBlTWFwOjplbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShK
U09iamVjdCogb2JqZWN0KQorU3RydWN0dXJlKiBQcm90b3R5cGVNYXA6OmVtcHR5T2JqZWN0U3Ry
dWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KQogewotICAgIFdlYWtHQ01hcDxKU09iamVjdCosIFN0cnVjdHVyZT46OkFkZFJlc3Vs
dCBhZGRSZXN1bHQgPSBtX3N0cnVjdHVyZXMuYWRkKG9iamVjdCwgbnVsbHB0cik7CisgICAgU3Ry
dWN0dXJlTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zdHJ1Y3R1cmVzLmFkZChzdGQ6Om1h
a2VfcGFpcihwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KSwgbnVsbHB0cik7CiAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBBU1NFUlQoaXNQcm90b3R5cGUob2JqZWN0
KSk7CisgICAgICAgIEFTU0VSVChpc1Byb3RvdHlwZShwcm90b3R5cGUpKTsKICAgICAgICAgcmV0
dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgYWRkUHJv
dG90eXBlKG9iamVjdCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0ZpbmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUob2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCBv
YmplY3QtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QpOworICAgIGFkZFByb3RvdHlwZShwcm90b3R5
cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKAorICAgICAgICBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCks
IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOwog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdHJ1Y3R1cmU7CiAgICAgcmV0dXJuIHN0
cnVjdHVyZTsKIH0KIAordm9pZCBQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1
cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkp
Cit7CisgICAgbV9zdHJ1Y3R1cmVzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihvYmplY3QsIGlubGlu
ZUNhcGFjaXR5KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxNiArMzMsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU09iamVjdDsK
IGNsYXNzIFN0cnVjdHVyZTsKIAorLy8gVHJhY2tzIHRoZSBjYW5vbmljYWwgc3RydWN0dXJlIGFu
IG9iamVjdCBzaG91bGQgYmUgYWxsb2NhdGVkIHdpdGggd2hlbiBpbmhlcml0aW5nIGZyb20gYSBn
aXZlbiBwcm90b3R5cGUuCiBjbGFzcyBQcm90b3R5cGVNYXAgewogcHVibGljOgotICAgIEpTX0VY
UE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUo
SlNPYmplY3QqKTsKLSAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5
cGUoSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5T2Jq
ZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNp
dHkpOworICAgIHZvaWQgY2xlYXJFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09i
amVjdCosIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICB2b2lkIGFkZFByb3RvdHlwZShK
U09iamVjdCopOwogICAgIGJvb2wgaXNQcm90b3R5cGUoSlNPYmplY3QqKTsgLy8gUmV0dXJucyBh
IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZS4KIAogcHJpdmF0ZToKICAgICBXZWFrR0NNYXA8SlNPYmpl
Y3QqLCBKU09iamVjdD4gbV9wcm90b3R5cGVzOwotICAgIFdlYWtHQ01hcDxKU09iamVjdCosIFN0
cnVjdHVyZT4gbV9zdHJ1Y3R1cmVzOworICAgIHR5cGVkZWYgV2Vha0dDTWFwPHN0ZDo6cGFpcjxK
U09iamVjdCosIHVuc2lnbmVkPiwgU3RydWN0dXJlPiBTdHJ1Y3R1cmVNYXA7CisgICAgU3RydWN0
dXJlTWFwIG1fc3RydWN0dXJlczsKIH07CiAKIGlubGluZSBib29sIFByb3RvdHlwZU1hcDo6aXNQ
cm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkKQEAgLTUwLDExICs1Miw2IEBAIGlubGluZSBib29s
IFByb3RvdHlwZU1hcDo6aXNQcm90b3R5cGUoSlMKICAgICByZXR1cm4gbV9wcm90b3R5cGVzLmNv
bnRhaW5zKG9iamVjdCk7CiB9CiAKLWlubGluZSB2b2lkIFByb3RvdHlwZU1hcDo6Y2xlYXJFbXB0
eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCogb2JqZWN0KQotewotICAgIG1f
c3RydWN0dXJlcy5yZW1vdmUob2JqZWN0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBQcm90b3R5cGVNYXBfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5
LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKCkKICNlbmRpZgogfQogCi1TdHJ1
Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUlu
Zm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKK1N0cnVjdHVyZTo6U3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlU3Ry
dWN0dXJlLmdldCgpKQogICAgICwgbV90eXBlSW5mbyh0eXBlSW5mbykKICAgICAsIG1faW5kZXhp
bmdUeXBlKGluZGV4aW5nVHlwZSkKQEAgLTE3MSw2ICsxNzEsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhCiAgICAgLCBtX2RpZFRyYW5zaXRpb24oZmFsc2UpCiAg
ICAgLCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZChmYWxzZSkKIHsKKyAgICBBU1NFUlQoaW5saW5l
Q2FwYWNpdHkgPD0gSlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgQVNT
RVJUKGlubGluZUNhcGFjaXR5IDwgZmlyc3RPdXRPZkxpbmVPZmZzZXQpOwogfQogCiBjb25zdCBD
bGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8gPSB7ICJTdHJ1Y3R1cmUiLCAwLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFN0cnVjdHVyZSkgfTsKQEAgLTI0NSw3ICsyNDcsNyBAQCB2b2lkIFN0
cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKCiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
Pm1fcHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUt
Pm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFz
dE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKKyAgICAgICAgICAgIG1fcHJv
cGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEs
IDAsIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNTMsNyArMjU1LDcgQEAg
dm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgIH0KIAogICAgIGlm
ICghbV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICBjcmVhdGVQcm9wZXJ0eU1hcChudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpKTsKKyAgICAgICAg
Y3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1f
aW5saW5lQ2FwYWNpdHkpKTsKIAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNp
emUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNb
aV07CkBAIC0zOTMsNiArMzk1LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdAogICAgICAgICB0cmFuc2l0aW9uLT5ncm93T3V0T2ZMaW5lQ2FwYWNpdHkoKTsKIAog
ICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIGNoZWNrT2Zmc2V0KHRyYW5z
aXRpb24tPm1fb2Zmc2V0LCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICBzdHJ1
Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAg
ICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KQEAgLTU2NCw2ICs1NjcsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0CiAgICAgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVz
SW5QcmV2aW91cyA9IGF0dHJpYnV0ZXM7CiAgICAgdHJhbnNpdGlvbi0+bV9pbmRleGluZ1R5cGUg
PSBpbmRleGluZ1R5cGU7CiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1f
b2Zmc2V0OworICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPm1fb2Zmc2V0LCB0cmFuc2l0aW9u
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAKICAgICBpZiAoc3RydWN0dXJlLT5tX3Byb3BlcnR5
VGFibGUpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUp
CkBAIC03MTksNyArNzIzLDcgQEAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6
OmNvcAogCiBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGVGb3JQaW5uaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25l
cikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5
VGFibGUobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlw
ZSgpKSkpOworICAgIHJldHVybiBhZG9wdFB0cihtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVy
dHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJsZSkgOiBuZXcgUHJvcGVy
dHlUYWJsZShudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBh
Y2l0eSkpKTsKIH0KIAogUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5m
byosIEluZGV4aW5nVHlwZSA9IE5vbkFycmF5LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0
eSA9IDApOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5lQ2Fw
YWNpdHkgPSAwKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yMjEsNyArMjIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5VGFibGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0
LCBtX3R5cGVJbmZvLnR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpOwogICAgICAgICB9CiAgICAg
ICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZUNhcGFjaXR5KCkgY29uc3QKICAgICAgICAgewpAQCAt
MzU5LDcgKzM1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBl
LCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
Jik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsK
IApAQCAtNDAwLDcgKzQwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgdHJhbnNp
dGlvbkNvdW50KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgLy8gU2luY2UgdGhlIG51
bWJlciBvZiB0cmFuc2l0aW9ucyBpcyBhbHdheXMgdGhlIHNhbWUgYXMgbV9vZmZzZXQsIHdlIGtl
ZXAgdGhlIHNpemUgb2YgU3RydWN0dXJlIGRvd24gYnkgbm90IHN0b3JpbmcgYm90aC4KLSAgICAg
ICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBl
SW5mby50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zm
c2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KTsKICAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgaXNWYWxpZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5
cGVDaGFpbikgY29uc3Q7CkBAIC00NTQsNyArNDU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKLSAgICBpbmxp
bmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlLCBQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKKyAgICBpbmxp
bmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChj
bGFzc0luZm8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTc4KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDEt
MjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdGF0aWMg
c2l6ZSBpbmZlcmVuY2UgZm9yIEphdmFTY3JpcHQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MDkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6IEFk
ZGVkLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHA6IEluY2x1ZGUgT2JqZWN0Q29uc3RydWN0b3IuaCBiZWNhdXNlCisgICAgICAgIHRoYXQncyB3
aGVyZSBjcmVhdGVFbXB0eU9iamVjdCgpIGlzIGxvY2F0ZWQgbm93LgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFu
Z2UuCisKIDIwMTMtMDEtMjggIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAg
ICAgICAgIFtDU1MgRXhjbHVzaW9uc10gUmVmYWN0b3IgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
IHRvIG1vcmUgZ2VuZXJhbCBFeGNsdXNpb25TaGFwZUluZm8KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBA
QAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9PYmplY3RDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX09iamVjdENvbnN0cnVjdG9yX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU0lEQktleS5oIgogCiAjaW5j
bHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KKyNpbmNsdWRlIDxydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rl
dmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlv
bkV2ZW50LmgiCisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCShyZXZpc2lvbiAxNDA0
NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlIDxydW50
aW1lL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cE9iamVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0Um93TGlzdC5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNp
bmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cC5oPgpAQCAtMTY3NCw3ICsxNjc1LDcgQEAg
RGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogICAgICAgICBjYXNlIE9i
amVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXpl
KCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
X3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOwotICAgICAgICAgICAgSlNPYmpl
Y3QqIG91dE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QpOworICAgICAgICAgICAgSlNPYmplY3QqIG91dE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KG1fZXhlYywgbV9nbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICAgICAg
ICAgIG1fZ2NCdWZmZXIuYXBwZW5kKG91dE9iamVjdCk7CiAgICAgICAgICAgICBvdXRwdXRPYmpl
Y3RTdGFjay5hcHBlbmQob3V0T2JqZWN0KTsKICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185134</attachid>
            <date>2013-01-28 19:47:27 -0800</date>
            <delta_ts>2013-01-28 21:35:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108093-20130128194414.patch</filename>
            <type>text/plain</type>
            <size>155690</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBA
QAorMjAxMy0wMS0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN0YXRpYyBzaXplIGluZmVyZW5jZSBmb3IgSmF2YVNjcmlwdCBvYmplY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwOTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUub3JkZXI6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUGF5IHRoZSB0YXggbWFuLgorCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBvcF9uZXdfb2JqZWN0IGFuZCBvcF9jcmVhdGVfdGhpcyBub3cKKyAg
ICAgICAgaGF2ZSBhbiBleHRyYSBpbmZlcnJlZElubGluZUNhcGFjaXR5IGFyZ3VtZW50LiBUaGlz
IGlzIHRoZSBzdGF0aWNhbGx5CisgICAgICAgIGluZmVycmVkIGlubGluZSBjYXBhY2l0eSwganVz
dCBmcm9tIGFuYWx5emluZyBzb3VyY2UgdGV4dC4gb3BfbmV3X29iamVjdAorICAgICAgICBhbHNv
IGdldHMgYSBwb2ludGVyIHRvIGFuIGFsbG9jYXRpb24gcHJvZmlsZS4gKEZvciBvcF9jcmVhdGVf
dGhpcywgdGhlCisgICAgICAgIHByb2ZpbGUgaXMgaW4gdGhlIGNvbnN0cnV0b3IgZnVuY3Rpb24u
KQorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogTGluayBvcF9uZXdfb2Jq
ZWN0LgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
ZW5jZXMpOiBNYXJrIG91ciBwcm9maWxlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoQ29kZUJsb2NrKTogUmVtb3ZlZCBzb21lIGRlYWQgY29kZS4gQWRkZWQg
b2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVj
dGlvbi5oOgorICAgICAgICAoSlNDKTogTmV3IHVuaW9uIHR5cGUsIHNpbmNlIGFuIGluc3RydWN0
aW9uIG9wZXJhbmQgbWF5IHBvaW50IHRvIGFuCisgICAgICAgIG9iamVjdCBhbGxvY2F0aW9uIHBy
b2ZpbGUgbm93LgorCisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmlubGluZUNhcGFjaXR5
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmNsZWFyKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQpOiBOZXcgY2xhc3MKKyAgICAgICAgZm9yIHRyYWNraW5nIGEgcHJlZGljdGlvbiBhYm91
dCBvYmplY3QgYWxsb2NhdGlvbjogc3RydWN0dXJlLCBpbmxpbmUKKyAgICAgICAgY2FwYWNpdHks
IGFsbG9jYXRvciB0byB1c2UuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOiBVcGRhdGVkIGluc3RydWN0
aW9uIHNpemVzLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZXMpOgorICAgICAgICAoVW5saW5rZWRDb2RlQmxvY2spOiBVbmxpbmtlZCBzdXBw
b3J0IGZvciBhbGxvY2F0aW9uIHByb2ZpbGVzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKTogS2lsbCBhbGwgcmVtYWluaW5nIGFuYWx5c2VzIGF0IHRoZQorICAgICAgICBlbmQg
b2YgY29kZWdlbiwgc2luY2UgdGhpcyBpcyBvdXIgbGFzdCBvcHBvcnR1bml0eS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOiBBZGRlZCBhIHN0
YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciB0byBieXRlY29kZSBnZW5lcmF0aW9uLiBJ
dCB0cmFja3MgaW5pdGlhbGl6aW5nIGFzc2lnbm1lbnRzIGFuZAorICAgICAgICBtYWtlcyBhIGd1
ZXNzIGFib3V0IGhvdyBtYW55IHdpbGwgaGFwcGVuLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZXR0
ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3Vt
ZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFs
KTogQWRkZWQgaG9va3MgdG8gdGhlIHN0YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciwg
c28gaXQgY2FuIG9ic2VydmUgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOiBGYWN0b3JlZCB0aGlzIGludG8g
YSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24gYmVjYXVzZSBpdCB3YXMgYSBzaWduaWZpY2FudCBh
bW91bnQgb2YgbG9naWMsIGFuZCBJIHdhbnRlZCB0bworICAgICAgICBhZGQgdG8gaXQuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KTogQWRkZWQgYSBob29rIHRvIHByb2ZpbGVkIG9w
Y29kZXMKKyAgICAgICAgdG8gdHJhY2sgdGhlaXIgc3RvcmVzLCBpbiBjYXNlIGEgc3RvcmUga2ls
bHMgYSBwcm9maWxlZCBhbGxvY2F0aW9uLiBTaW5jZQorICAgICAgICBwcm9maWxlZCBvcGNvZGVz
IGFyZSBiYXNpY2FsbHkgdGhlIG9ubHkgaW50ZXJlc3Rpbmcgc3RvcmVzIHdlIGRvLCB0aGlzCisg
ICAgICAgIGlzIGEgY29udmVuaWVudCBwbGFjZSB0byBub3RpY2UgYW55IHN0b3JlIHRoYXQgbWln
aHQga2lsbCBhbiBhbGxvY2F0aW9uLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6IEFzIGFib3ZlLgorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoU3RhdGljUHJvcGVydHlBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0
YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmFkZFByb3BlcnR5SW5kZXgpOgorICAgICAgICAoSlNDOjpT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzOjpwcm9wZXJ0eUluZGV4Q291bnQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKTogU2ltcGxlIGhlbHBlcgor
ICAgICAgICBjbGFzcyBmb3IgdHJhY2tpbmcgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAg
ICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6IEFkZGVkLgorICAg
ICAgICAoU3RhdGljUHJvcGVydHlBbmFseXplcik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXI6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJv
cGVydHlBbmFseXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlB
bmFseXplcjo6cHV0QnlJZCk6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6
Om1vdik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmtpbGwpOiBIZWxw
ZXIgY2xhc3MgZm9yIG9ic2VydmluZyBhbGxvY2F0aW9ucworICAgICAgICBhbmQgc3RvcmVzIGFu
ZCBtYWtpbmcgYW4gaW5saW5lIGNhcGFjaXR5IGd1ZXNzLiBUaGUgaGV1cmlzdGljcyBoZXJlIGFy
ZQorICAgICAgICBpbnRlbnRpb25hbGx5IG1pbmltYWwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRo
aXMgb25lIGNsYXNzIHRvIHRyeSB0bworICAgICAgICByZS1jcmVhdGUgc29tZXRoaW5nIGxpa2Ug
YSBERkcgb3IgYSBydW50aW1lIGFuYWx5c2lzLiBJZiB3ZSBkaXNjb3ZlciB0aGF0CisgICAgICAg
IHdlIG5lZWQgdGhvc2Uga2luZHMgb2YgYW5hbHlzZXMsIHdlIHNob3VsZCBqdXN0IHJlcGxhY2Ug
dGhpcyBjbGFzcyB3aXRoCisgICAgICAgIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIFRoaXMg
Y2xhc3MgdHJhY2tzIG11bHRpcGxlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoZSBzYW1lIG9iamVj
dCAtLSB0aGF0CisgICAgICAgIGhhcHBlbnMgYSBsb3QsIHdoZW4gbW92aW5nIGxvY2FscyBpbnRv
IHRlbXBvcmFyeSByZWdpc3RlcnMgLS0gYnV0IGl0CisgICAgICAgIGRvZXNuJ3QgdHJhY2sgY29u
dHJvbCBmbG93IG9yIG11bHRpcGxlIG9iamVjdHMgdGhhdCBhbGlhcyB0aGUgc2FtZSByZWdpc3Rl
ci4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6IFVwZGF0ZWQgZm9yIGlubGluZSBjYXBhY2l0eSBhbmQK
KyAgICAgICAgYWxsb2NhdGlvbiBwcm9maWxlLgorCisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJbmxpbmVDYXBhY2l0eSk6CisgICAgICAgIChO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppbmxpbmVDYXBhY2l0eSk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzRnVuY3Rpb24pOiBHaXZlIHRoZSBncmFwaCBhIGdvb2Qgd2F5
IHRvIHJlcHJlc2VudAorICAgICAgICBpbmxpbmUgY2FwYWNpdHkgZm9yIGFuIGFsbG9jYXRpb24u
CisKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6IFVwZGF0ZWQg
Zm9yIHJlbmFtZS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDogVXBkYXRlZCBm
b3IgaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6IFdl
IHBhc3MgdGhlIGlubGluZSBjYXBhY2l0eSB0byB0aGUgc2xvdyBjYXNlIGFzCisgICAgICAgIGFu
IGFyZ3VtZW50LiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXksIHNpbmNlIGl0J3Mgc3RvcmVkIGFz
IGEgYnl0ZWNvZGUgb3BlcmFuZC4KKworICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U6OnByb3BhZ2F0ZSk6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIGRmZy9E
RkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOiBGaXhl
ZCBhIGhvcnJpYmxlIG9mZi1ieS1vbmUtaGFsZiBidWcgdGhhdCBvbmx5CisgICAgICAgIGFwcGVh
cnMgd2hlbiBkb2luZyBhbiBpbmxpbmUgY2FjaGVkIGxvYWQgZm9yIHByb3BlcnR5IG51bWJlciA2
NCBvbiBhIDMyLWJpdAorICAgICAgICBzeXN0ZW0uIEluIEpTVkFMVUUzMl82NCBsYW5kLCAib2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlIiBpcyB0aGUKKyAgICAgICAgb2Zmc2V0IG9mIHRo
ZSA2NGJpdCBKU1ZhbHVlIC0tIGJ1dCB3ZSdsbCBhY3R1YWxseSBpc3N1ZSB0d28gbG9hZHMsIG9u
ZSBmb3IKKyAgICAgICAgdGhlIHBheWxvYWQgYXQgdGhhdCBvZmZzZXQsIGFuZCBvbmUgZm9yIHRo
ZSB0YWcgYXQgdGhhdCBvZmZzZXQgKyA0LiBXZSBuZWVkCisgICAgICAgIHRvIGVuc3VyZSB0aGF0
IGJvdGggbG9hZHMgaGF2ZSBhIGNvbXBhY3QgcmVwcmVzZW50YXRpb24sIG9yIHdlJ2xsIGNvcnJ1
cHQKKyAgICAgICAgdGhlIGluc3RydWN0aW9uIHN0cmVhbS4KKworICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKToK
KyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogTG90cyBvZiByZWZhY3RvcmluZyB0byBz
dXBwb3J0CisgICAgICAgIHBhc3NpbmcgYW4gYWxsb2NhdG9yIHRvIG91ciBhbGxvY2F0aW9uIGZ1
bmN0aW9uLCBhbmQvb3IgcGFzc2luZyBhIFN0cnVjdHVyZQorICAgICAgICBhcyBhIHJlZ2lzdGVy
IGluc3RlYWQgb2YgYW4gaW1tZWRpYXRlLgorCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKTogQWRkZWQgYW4g
YWNjZXNzb3IgdG8gc2ltcGxpZnkKKyAgICAgICAgSklUIGNvZGUgZ2VuZXJhdGlvbiBvZiBhbGxv
Y2F0aW9uIGZyb20gYW4gYXJiaXRyYXJ5IGFsbG9jYXRvci4KKworICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19v
YmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0
ZV90aGlzKTogU2FtZSByZWZhY3RvcmluZyBhcyBkb25lIGZvciB0aGUgREZHLgorCisgICAgICAg
ICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKTogRml4
ZWQgdGhlIHNhbWUgYnVnIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAoSlNDOjpERUZJTkVf
U1RVQl9GVU5DVElPTik6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCisKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOiBTYW1lIHJlZmFjdG9yaW5nIGFzIGZv
ciB0aGUgSklUcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3BwOgor
ICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHA6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwOiBJbmNsdWRlIE9iamVjdENvbnN0cnVjdG9yLmgKKyAg
ICAgICAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgY3JlYXRlRW1wdHlPYmplY3QoKSBsaXZlcyBub3cu
CisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6SlNGdW5jdGlvbik6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVcGRhdGVk
IHRvIG1hdGNoIHRoZSBhbGxvY2F0b3Igc2VsZWN0aW9uIGNvZGUgaW4KKyAgICAgICAgdGhlIEpJ
VCwgc28gaXQncyBjbGVhcmVyIHRoYXQgYm90aCBhcmUgY29ycmVjdC4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxl
KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAg
ICAoSlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnRyeUdldEFsbG9jYXRp
b25Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWRkQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50KTogQ2hhbmdlZCBpbmhlcml0b3JJRAorICAgICAgICBkYXRhIG1lbWJlciB0
byBiZSBhbiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgd2hpY2ggaW5jbHVkZXMgYSBwb2ludGVy
CisgICAgICAgIHRvIHRoZSBkZXNpcmVkIGFsbG9jYXRvci4gVGhpcyBzaW1wbGlmaWVzIEpJVCBj
b2RlLCBzaW5jZSB3ZSBkb24ndCBoYXZlCisgICAgICAgIHRvIGNvbXB1dGUgdGhlIGFsbG9jYXRv
ciBvbiB0aGUgZmx5LiBJIHZlcmlmaWVkIGJ5IGNvZGUgaW5zcGVjdGlvbiB0aGF0CisgICAgICAg
IEpTRnVuY3Rpb24gaXMgc3RpbGwgb25seSA2NCBieXRlcy4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGF0ZVN0cnVjdHVyZSk6IE5vIGRpcmVjdCBw
b2ludGVyIHRvIHRoZSBlbXB0eQorICAgICAgICBvYmplY3Qgc3RydWN0dXJlIGFueW1vcmUsIGJl
Y2F1c2Ugbm93IGNsaWVudHMgbmVlZCB0byBzcGVjaWZ5IGhvdyBtdWNoCisgICAgICAgIGlubGlu
ZSBjYXBhY2l0eSB0aGV5IHdhbnQuCisKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZGVmYXVsdElu
bGluZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOiBB
IGxpdHRsZSByZWZhY3RvcmluZyB0byB0cnkgdG8gCisgICAgICAgIGNsYXJpZnkgd2hlcmUgc29t
ZSBvZiB0aGVzZSBjb25zdGFudHMgZGVyaXZlIGZyb20uCisKKyAgICAgICAgKEpTQzo6bWF4T2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKTogVXNlZCBmb3IgYnVnIGZpeCwgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3h5Ojpz
ZXRUYXJnZXQpOiBVZ2x5LCBidXQgZWZmZWN0aXZlLgorCisgICAgICAgICogcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
V2l0aE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUpOiBVcGRhdGVkIGZv
ciBpbnRlcmZhY2UgY2hhbmdlcy4KKworICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QpOiBDbGFyaWZpZWQgeW91
ciBvcHRpb25zIGZvciBob3cgdG8gYWxsb2NhdGUKKyAgICAgICAgYW4gZW1wdHkgb2JqZWN0LCB0
byBlbXBoYXNpemUgd2hhdCB0aGluZ3MgY2FuIGFjdHVhbGx5IHZhcnkuCisKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5T2Zmc2V0Lmg6IFRoZXNlIGNvbnN0YW50cyBoYXZlIG1vdmVkIGJlY2F1
c2UgdGhleSdyZQorICAgICAgICByZWFsbHkgaGlnaGVyIGxldmVsIGNvbmNlcHRzIHRvIGRvIHdp
dGggdGhlIGxheW91dCBvZiBvYmplY3RzIGFuZCB0aGUKKyAgICAgICAgY29sbGVjdG9yLiBQcm9w
ZXJ0eU9mZnNldCBpcyBqdXN0IGFuIGFic3RyYWN0IG51bWJlciBsaW5lLCBpbmRlcGVuZGVudAor
ICAgICAgICBvZiB0aG9zZSB0aGluZ3MuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlByb3RvdHlwZU1hcDo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVG
b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFw
Lmg6CisgICAgICAgIChQcm90b3R5cGVNYXApOiBUaGUgbWFwIGtleSBpcyBub3cgYSBwYWlyIG9m
IHByb3RvdHlwZSBhbmQgaW5saW5lIGNhcGFjaXR5LAorICAgICAgICBzaW5jZSBTdHJ1Y3R1cmUg
ZW5jb2RlcyBpbmxpbmUgY2FwYWNpdHkuCisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VT
aXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6IEZpeGVkIGEgbmFzdHkgcmVmYWN0b3JpbmcgYnVn
IHRoYXQgb25seSBzaG93cworICAgICAgICB1cCBhZnRlciBlbmFibGluZyB2YXJpYWJsZS1zaXpl
ZCBpbmxpbmUgY2FwYWNpdGllczogd2Ugd2VyZSBwYXNzaW5nIG91cgorICAgICAgICB0eXBlIGlu
Zm8gd2hlcmUgb3VyIGlubGluZSBjYXBhY2l0eSB3YXMgZXhwZWN0ZWQuIFRoZSBjb21waWxlciBk
aWRuJ3QKKyAgICAgICAgbm90aWNlIGJlY2F1c2UgYm90aCBoYXZlIHR5cGUgaW50IDooLgorCiAy
MDEzLTAxLTI4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFudXAgQVJNIHZlcnNpb24gb2YgZGVidWdOYW1lKCkgaW4gREZHRlBSSW5mby5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCShyZXZpc2lvbiAx
NDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNiBAQCBfX1pOM0pTQzE2TmF0aXZlRXhlY3V0YWJs
ZTZjcmVhdGVFUk5TXzEyCiBfX1pOM0pTQzhKU09iamVjdDM0cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRWoKIF9fWk4zSlND
MTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE1T2JqZWN0UHJvdG90
eXBlQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVF
Ci1fX1pOM0pTQzhKU09iamVjdDE3Y3JlYXRlSW5oZXJpdG9ySURFUk5TXzEySlNHbG9iYWxEYXRh
RQogX19aTjNKU0MxNEFycmF5UHJvdG90eXBlQzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlT
dHJ1Y3R1cmVFCiBfX1pOM0pTQzdKU0FycmF5QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBOU185U3Ry
dWN0dXJlRQogX19aTjNKU0MxNVN0cmluZ1Byb3RvdHlwZUMxRVBOU185RXhlY1N0YXRlRVBOU18x
NEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9y
dHMuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZgkocmV2aXNp
b24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw2IEBAIEVYUE9SVFMKICAgICA/PzBTSEExQFdURkBAUUFFQFhaCiAgICAg
Pz8wU3RyaW5nT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAx
QEBaCiAgICAgPz8wU3RyaW5nUHJpbnRTdHJlYW1AV1RGQEBRQUVAWFoKLSAgICA/PzBTdHJ1Y3R1
cmVASlNDQEBBQUVAQUFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWSlNWYWx1
ZUAxQEFCVlR5cGVJbmZvQDFAUEJVQ2xhc3NJbmZvQDFARUhAWgogICAgID8/MFRocmVhZENvbmRp
dGlvbkBXVEZAQFFBRUBYWgogICAgID8/MFdURlRocmVhZERhdGFAV1RGQEBRQUVAWFoKICAgICA/
PzBXcmFwcGVyQmFzZUBNZW1vcnlJbnN0cnVtZW50YXRpb25AV1RGQEBRQUVAUEJEUEJYQFoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDU5LDggKzQ1OSwxMSBAQAogCQkxNEJENUEzMjBBM0U5MUY2
MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5j
cHAgKi87IH07CiAJCTE0QkZDRTY5MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkZDRTY4MTBDREIx
RkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTY1ODFB
MEY0RTM2RjQwMDAxNTBGRCAvKiBKSVRTdHVicy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNENBOTU4QTE2QUI1MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFs
eXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTE0Q0E5NThEMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDQTk1OEMxNkFC
NTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTREMkYzREExMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAg
Ki87IH07CiAJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREMkYzRDkxMzlGNEJF
MjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRERjA0REExNkIzOTk2RDAwMTZBNTEzIC8qIFN0YXRpY1By
b3BlcnR5QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0REYwNEQ5MTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRF
ODRGOUUxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5OTE0RUUxQUNDMDBENkQ1RDQgLyog
V2Vha0Jsb2NrLmNwcCAqLzsgfTsKIAkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtC
bG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRF
ODRGOUExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAv
KiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0RTg0RjlCMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCAqLzsgfTsKQEAgLTcz
MSw3ICs3MzQsNyBAQAogCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzI2ODBFNjBFMTZENTIzMDBBMDZFOTIgLyogTnVtYmVyQ29uc3RydWN0b3IubHV0LmggKi87
IH07CiAJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODcxMDI1NTU5N0Qw
MUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ0NDBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzI2ODBDNTBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkMxOEM0NDUwRTE2RjVDRDAw
QjM0NDYwIC8qIE9iamVjdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29u
c3RydWN0b3IuaCAqLzsgfTsKKwkJQkMxOEM0NDUwRTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdENv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29uc3RydWN0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ0NjBFMTZG
NUNEMDBCMzQ0NjAgLyogT2JqZWN0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDOTBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0
UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODc4MDI1NTU5N0QwMUZG
NjBGNyAvKiBPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NEIwRTE2RjVDRDAwQjM0NDYwIC8qIFBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMEIzQUEwOUJCNERD
MDAwNjhGQ0UzIC8qIFBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07
IH07CkBAIC0xMjc4LDYgKzEyODEsOCBAQAogCQkxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyog
SlNWYWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNW
YWx1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QkQ1QTJEMEEzRTkx
RjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUg
PSB0ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNENBOTU4QTE2QUI1MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVy
dHlBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Q0E5NThDMTZB
QjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3Bh
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEw
MzEgLyogTWFya2VkU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFy
a2VkU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRENzkyNjQwREFBMDNG
QjAwMUE5RjA1IC8qIEpTU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4Nyw2ICsxMjkyLDcg
QEAKIAkJMTREQTgxOEUwRDk5RkQyMDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FjdGl2YXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTREQTgxOEYwRDk5RkQyMDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjdGl2YXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIg
LyogSlNHbG9iYWxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNERG
MDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTg0Rjk5MTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFr
QmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRFODRGOUExNEVFMUFDQzAwRDZE
NUQ0IC8qIFdlYWtCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFr
QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRFODRGOUIxNEVFMUFDQzAw
RDZENUQ0IC8qIFdlYWtTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2Vha1NldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjMwLDYgKzIy
MzYsOCBAQAogCQkJCTk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi8s
CiAJCQkJNjU1RUIyOUExMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgKi8sCiAJ
CQkJOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCAqLywKKwkJCQkxNERG
MDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oICovLAorCQkJ
CTE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGJ5dGVjb21waWxlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yNzY1LDkgKzI3NzMsOCBAQAogCQkJCTBGQjEwNTgzMTY3NTQ4MEMwMEY4QUI2RSAv
KiBFeGl0S2luZC5oICovLAogCQkJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5
SWRTdGF0dXMuY3BwICovLAotCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlk
U3RhdHVzLmNwcCAqLywKLQkJCQkwRjkzMzI5NjE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0
YXR1cy5oICovLAogCQkJCTBGOTMzMjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVz
LmggKi8sCisJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3Bw
ICovLAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLAog
CQkJCTk2OUEwNzkzMEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oICovLAogCQkJCUJD
RkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLApAQCAtMjc3OCwxNSAr
Mjc4NSwxNiBAQAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5r
SW5mby5oICovLAogCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyog
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAorCQkJCTE0Q0E5NThDMTZBQjUwRkEw
MDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oICovLAogCQkJCTk2OUEwNzk0MEVE
MUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuY3BwICovLAogCQkJCTk2OUEwNzk1MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCAqLywKIAkJCQkwRjJCREMyQjE1MUZERThCMDBDRDg5MTAgLyogT3Bl
cmFuZHMuaCAqLywKIAkJCQkwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQ
dXRCeUlkTGlzdC5jcHAgKi8sCiAJCQkJMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHlt
b3JwaGljUHV0QnlJZExpc3QuaCAqLywKIAkJCQkwRjkzMzI5OTE0Q0E3REMxMDA4NUYzQzYgLyog
UHV0QnlJZFN0YXR1cy5jcHAgKi8sCi0JCQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1
dEJ5SWRTdGF0dXMuY3BwICovLAotCQkJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRC
eUlkU3RhdHVzLmggKi8sCisJCQkJMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRT
dGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1
cy5oICovLAorCQkJCTBGOTMzMjk5MTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNw
cCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJ
CTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLywKIAkJ
CQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovLApAQCAt
MjgwMCw3ICsyODA4LDcgQEAKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3Vs
YXRlZFR5cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxh
dGVkVHlwZS5oICovLAogCQkJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVT
ZXQuaCAqLywKLQkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0Lmgg
Ki8sCisJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywK
IAkJCQkwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTND
OEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwICovLApAQCAtMjgxMiw2ICsyODIwLDcgQEAKIAkJ
CQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJ
MEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCisJCQkJMEY5MzMyOUIxNENB
N0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRl
Y29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjgxLDYgKzMyOTAsOSBAQAog
CQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5NzQ5NzExNjg3QURFNDAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90b3R5
cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNENBOTU4RDE2QUI1
MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTE0REYwNERBMTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1LDcgKzc1NSw4IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgY2FzZSBv
cF9jcmVhdGVfdGhpczogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIlslNGRdIGNyZWF0ZV90aGlzICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAg
ICAgICAgICAgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY3JlYXRlX3RoaXMgJXMsICVzLCAl
dSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIGluZmVycmVkSW5saW5lQ2FwYWNpdHkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6IHsKQEAgLTc2
Niw3ICs3NjcsOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtCiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIG5l
d19vYmplY3RcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CisgICAgICAgICAgICB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXMs
ICV1IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmZlcnJlZElu
bGluZUNhcGFjaXR5KTsKKyAgICAgICAgICAgICsraXQ7IC8vIFNraXAgb2JqZWN0IGFsbG9jYXRp
b24gcHJvZmlsZS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfbmV3X2FycmF5OiB7CkBAIC0xODEyLDYgKzE4MTUsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgaWYgKHNpemVfdCBzaXplID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mVmFsdWVQcm9maWxlcygpKQogICAgICAgICBtX3ZhbHVlUHJvZmlsZXMu
Z3JvdyhzaXplKTsKICNlbmRpZgorICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlcygpKQorICAgICAgICBtX29iamVj
dEFsbG9jYXRpb25Qcm9maWxlcy5ncm93KHNpemUpOwogICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlJlc29sdmVPcGVyYXRpb25zKCkpCiAgICAgICAgIG1f
cmVzb2x2ZU9wZXJhdGlvbnMuZ3JvdyhzaXplKTsKICAgICBzaXplX3QgcHV0VG9CYXNlQ291bnQg
PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZQdXRUb0Jhc2VPcGVyYXRpb25zKCk7CkBAIC0x
ODczLDYgKzE4NzgsMTcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSog
bwogICAgICAgICB9CiAjZW5kaWYKIAorICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKKyAg
ICAgICAgICAgIGludCBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZUluZGV4ID0gcGNbaSArIG9wTGVu
Z3RoIC0gMV0udS5vcGVyYW5kOworICAgICAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUq
IG9iamVjdEFsbG9jYXRpb25Qcm9maWxlID0gJm1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzW29i
amVjdEFsbG9jYXRpb25Qcm9maWxlSW5kZXhdOworICAgICAgICAgICAgaW50IGluZmVycmVkSW5s
aW5lQ2FwYWNpdHkgPSBwY1tpICsgb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CisKKyAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IG9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOworICAgICAgICAgICAgb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPmluaXRpYWxpemUoKmds
b2JhbERhdGEoKSwKKyAgICAgICAgICAgICAgICBtX293bmVyRXhlY3V0YWJsZS5nZXQoKSwgbV9n
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCBpbmZlcnJlZElubGluZUNhcGFjaXR5KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9jYWxsOgog
ICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjM5
MCw2ICsyNDA2LDggQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkV4cHJzW2ldKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzLnNpemUoKTsgKytpKQorICAgICAgICBt
X29iamVjdEFsbG9jYXRpb25Qcm9maWxlc1tpXS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIAog
ICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zKENvbGxlY3Rpb24pOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTQwNDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRXhlY3V0aW9uQ291bnRlci5oIgogI2luY2x1
ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgorI2lu
Y2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgpAQCAtNzg3LDEz
ICs3ODgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICBBcnJheVByb2Zp
bGUqIGdldEFycmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIEFy
cmF5UHJvZmlsZSogZ2V0T3JBZGRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
OwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheUFsbG9jYXRpb25Qcm9m
aWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXMuc2l6ZSgpOyB9
Ci0gICAgICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIGFkZEFycmF5QWxsb2NhdGlvblByb2Zp
bGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzLmFw
cGVuZChBcnJheUFsbG9jYXRpb25Qcm9maWxlKCkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2Fy
cmF5QWxsb2NhdGlvblByb2ZpbGVzLmxhc3QoKTsKLSAgICAgICAgfQogI2VuZGlmCiAKICAgICAg
ICAgLy8gRXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQKQEAgLTEzMTQsNiArMTMwOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8QXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSwgOD4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsKICAgICAgICAgQXJyYXlQcm9maWxl
VmVjdG9yIG1fYXJyYXlQcm9maWxlczsKICNlbmRpZgorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIDg+IG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzOwog
CiAgICAgICAgIC8vIENvbnN0YW50IFBvb2wKICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IG1f
aWRlbnRpZmllcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKICAgICBjbGFz
cyBBcnJheVByb2ZpbGU7CiAgICAgY2xhc3MgSlNDZWxsOworICAgIGNsYXNzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVD
aGFpbjsKICAgICBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CkBAIC0xOTUsNiArMTk2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmls
ZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAgICAgICAgIEluc3RydWN0aW9uKEFycmF5UHJv
ZmlsZSogcHJvZmlsZSkgeyB1LmFycmF5UHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAgSW5z
dHJ1Y3Rpb24oQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSkgeyB1LmFycmF5QWxsb2Nh
dGlvblByb2ZpbGUgPSBwcm9maWxlOyB9CisgICAgICAgIEluc3RydWN0aW9uKE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKiBwcm9maWxlKSB7IHUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgPSBwcm9m
aWxlOyB9CiAgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93
bj4qIHJlZ2lzdGVyUG9pbnRlcikgeyB1LnJlZ2lzdGVyUG9pbnRlciA9IHJlZ2lzdGVyUG9pbnRl
cjsgfQogICAgICAgICAKQEAgLTIxNSw2ICsyMTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKICAgICAgICAgICAgIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlOwogICAgICAgICAgICAgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogYXJyYXlB
bGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBv
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAg
ICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlX2gKKyNkZWZpbmUgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVfaAorCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRv
ci5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9j
YXRvcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwg
bV9hbGxvY2F0b3IpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9zdHJ1
Y3R1cmUpOyB9CisKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCisgICAgICAgIDogbV9h
bGxvY2F0b3IoMCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAh
bV9hbGxvY2F0b3I7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGluZmVy
cmVkSW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsK
KyAgICAgICAgQVNTRVJUKCFtX3N0cnVjdHVyZSk7CisKKyAgICAgICAgdW5zaWduZWQgaW5saW5l
Q2FwYWNpdHkgPSAwOworICAgICAgICBpZiAoaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA8IEpTRmlu
YWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAvLyBUcnkg
dG8gc2hyaW5rIHRoZSBvYmplY3QgYmFzZWQgb24gc3RhdGljIGFuYWx5c2lzLgorICAgICAgICAg
ICAgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSArPSBwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50
KGdsb2JhbERhdGEsIHByb3RvdHlwZSk7CisKKyAgICAgICAgICAgIGlmICghaW5mZXJyZWRJbmxp
bmVDYXBhY2l0eSkgeworICAgICAgICAgICAgICAgIC8vIEVtcHR5IG9iamVjdHMgYXJlIHJhcmUs
IHNvIG1vc3QgbGlrZWx5IHRoZSBzdGF0aWMgYW5hbHl6ZXIganVzdCBkaWRuJ3QKKyAgICAgICAg
ICAgICAgICAvLyBzZWUgdGhlIHJlYWwgaW5pdGlhbGl6ZXIgZnVuY3Rpb24uIFRoaXMgY2FuIGhh
cHBlbiB3aXRoIGhlbHBlciBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgaW5mZXJyZWRJbmxp
bmVDYXBhY2l0eSA9IEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChpbmZlcnJlZElubGluZUNhcGFjaXR5ID4gSlNGaW5hbE9iamVj
dDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBEZWZhdWx0
IHByb3BlcnRpZXMgYXJlIHdlYWsgZ3Vlc3Nlcywgc28gZG9uJ3QgYWxsb3cgdGhlbSB0byB0dXJu
IGEgc21hbGwKKyAgICAgICAgICAgICAgICAvLyBvYmplY3QgaW50byBhIGxhcmdlIG9iamVjdC4K
KyAgICAgICAgICAgICAgICBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gSlNGaW5hbE9iamVjdDo6
ZGVmYXVsdElubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlu
bGluZUNhcGFjaXR5ID0gaW5mZXJyZWRJbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVDYXBhY2l0eSA8IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm9ybWFsIG9yIGxhcmdlIG9iamVjdC4K
KyAgICAgICAgICAgIGlubGluZUNhcGFjaXR5ID0gaW5mZXJyZWRJbmxpbmVDYXBhY2l0eTsKKyAg
ICAgICAgICAgIGlmIChpbmxpbmVDYXBhY2l0eSA+IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNh
cGFjaXR5KCkpCisgICAgICAgICAgICAgICAgaW5saW5lQ2FwYWNpdHkgPSBKU0ZpbmFsT2JqZWN0
OjptYXhJbmxpbmVDYXBhY2l0eSgpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGlubGlu
ZUNhcGFjaXR5ID4gMCk7CisgICAgICAgIEFTU0VSVChpbmxpbmVDYXBhY2l0eSA8PSBKU0ZpbmFs
T2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpKTsKKworICAgICAgICBzaXplX3QgYWxsb2NhdGlv
blNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSk7Cisg
ICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJmdsb2JhbERhdGEuaGVhcC5hbGxv
Y2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisgICAgICAg
IEFTU0VSVChhbGxvY2F0b3ItPmNlbGxTaXplKCkpOworCisgICAgICAgIC8vIFRha2UgYWR2YW50
YWdlIG9mIGV4dHJhIGlubGluZSBjYXBhY2l0eSBhdmFpbGFibGUgaW4gdGhlIHNpemUgY2xhc3Mu
CisgICAgICAgIHNpemVfdCBzbG9wID0gKGFsbG9jYXRvci0+Y2VsbFNpemUoKSAtIGFsbG9jYXRp
b25TaXplKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgICAgICBpbmxpbmVD
YXBhY2l0eSArPSBzbG9wOworICAgICAgICBpZiAoaW5saW5lQ2FwYWNpdHkgPiBKU0ZpbmFsT2Jq
ZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgaW5saW5lQ2FwYWNpdHkgPSBK
U0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpOworCisgICAgICAgIG1fYWxsb2NhdG9y
ID0gYWxsb2NhdG9yOworICAgICAgICBtX3N0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
CisgICAgICAgICAgICBnbG9iYWxEYXRhLnByb3RvdHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVy
ZUZvclByb3RvdHlwZShwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KSk7CisgICAgfQorCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsgfQorICAg
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCk7IH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9hbGxvY2F0
b3IgPSAwOworICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBBU1NFUlQoaXNO
dWxsKCkpOworICAgIH0KKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCisgICAgeworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOworICAg
IH0KKworcHJpdmF0ZToKKworICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291
bnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogcHJvdG90eXBlKQorICAgIHsK
KyAgICAgICAgaWYgKHByb3RvdHlwZSA9PSBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmpl
Y3RQcm90b3R5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHNpemVfdCBj
b3VudCA9IDA7CisgICAgICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZn
bG9iYWxEYXRhKTsKKyAgICAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVydHlO
YW1lc0Zyb21TdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lQXJyYXksIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3Bl
cnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXkuZGF0
YSgpLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBwcm90b3R5cGUtPmdldERpcmVjdChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWVWZWN0
b3JbaV0pOworCisgICAgICAgICAgICAvLyBGdW5jdGlvbnMgYXJlIGNvbW1vbiwgYW5kIGFyZSB1
c3VhbGx5IGNsYXNzLWxldmVsIG9iamVjdHMgdGhhdCBhcmUgbm90IG92ZXJyaWRkZW4uCisgICAg
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICArK2NvdW50OworCisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKworICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxv
Y2F0b3I7IC8vIFByZWNvbXB1dGVkIHRvIG1ha2UgdGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVk
IGNvZGUuCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNy
byhvcF9jcmVhdGVfYWN0aXZhdGlvbiwgMikgXAogICAgICAgICBtYWNybyhvcF9pbml0X2xhenlf
cmVnLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX2NyZWF0ZV9hcmd1bWVudHMsIDIpIFwKLSAgICAg
ICAgbWFjcm8ob3BfY3JlYXRlX3RoaXMsIDMpIFwKKyAgICAgICAgbWFjcm8ob3BfY3JlYXRlX3Ro
aXMsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2NhbGxlZSwgMykgXAogICAgICAgICBtYWNy
byhvcF9jb252ZXJ0X3RoaXMsIDMpIFwKICAgICAgICAgXAotICAgICAgICBtYWNybyhvcF9uZXdf
b2JqZWN0LCAyKSBcCisgICAgICAgIG1hY3JvKG9wX25ld19vYmplY3QsIDQpIFwKICAgICAgICAg
bWFjcm8ob3BfbmV3X2FycmF5LCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheV93aXRo
X3NpemUsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfbmV3X2FycmF5X2J1ZmZlciwgNSkgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKEpTRwogICAgICwgbV9w
dXRUb0Jhc2VPcGVyYXRpb25Db3VudCgxKQogICAgICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQog
ICAgICwgbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlQ291bnQoMCkKKyAgICAsIG1fb2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVDb3VudCgwKQogICAgICwgbV92YWx1ZVByb2ZpbGVDb3VudCgwKQogICAg
ICwgbV9sbGludENhbGxMaW5rSW5mb0NvdW50KDApCiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1F
TlRTKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1
OCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiB0eXBlZGVmIHVuc2lnbmVk
IFVubGlua2VkVmFsdWVQcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5UHJv
ZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlOwor
dHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRl
ZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJs
ZUluZm8gewpAQCAtMzk4LDYgKzM5OSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJP
ZkFycmF5UHJvZmlsZXMoKSB7IHJldHVybiBtX2FycmF5UHJvZmlsZUNvdW50OyB9CiAgICAgVW5s
aW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlIGFkZEFycmF5QWxsb2NhdGlvblByb2ZpbGUoKSB7
IHJldHVybiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVDb3VudCsrOyB9CiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcnJheUFsbG9jYXRpb25Qcm9maWxlcygpIHsgcmV0dXJuIG1fYXJyYXlBbGxvY2F0
aW9uUHJvZmlsZUNvdW50OyB9CisgICAgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBh
ZGRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpIHsgcmV0dXJuIG1fb2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVDb3VudCsrOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZXMoKSB7IHJldHVybiBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlQ291bnQ7IH0KICAgICBV
bmxpbmtlZFZhbHVlUHJvZmlsZSBhZGRWYWx1ZVByb2ZpbGUoKSB7IHJldHVybiBtX3ZhbHVlUHJv
ZmlsZUNvdW50Kys7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJl
dHVybiBtX3ZhbHVlUHJvZmlsZUNvdW50OyB9CiAKQEAgLTUyNSw2ICs1MjgsNyBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fcHV0VG9CYXNlT3BlcmF0aW9uQ291bnQ7CiAgICAgdW5zaWduZWQg
bV9hcnJheVByb2ZpbGVDb3VudDsKICAgICB1bnNpZ25lZCBtX2FycmF5QWxsb2NhdGlvblByb2Zp
bGVDb3VudDsKKyAgICB1bnNpZ25lZCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlQ291bnQ7CiAg
ICAgdW5zaWduZWQgbV92YWx1ZVByb2ZpbGVDb3VudDsKICAgICB1bnNpZ25lZCBtX2xsaW50Q2Fs
bExpbmtJbmZvQ291bnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNDA0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw5IEBAIFBhcnNlckVycm9yIEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAgICBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVy
KG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogCiAgICAgbV9zY29wZU5vZGUtPmVtaXRCeXRlY29k
ZSgqdGhpcyk7Ci0gICAgCisKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIua2lsbCgpOwor
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdHJ5UmFuZ2VzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIFRyeVJhbmdlJiByYW5nZSA9IG1fdHJ5UmFuZ2VzW2ldOwogICAgICAgICBpbnQg
c3RhcnQgPSByYW5nZS5zdGFydC0+YmluZCgpOwpAQCAtMjQ0LDYgKzI0Niw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0cKICAgICAsIG1faGFzQ3JlYXRlZEFjdGl2
YXRpb24odHJ1ZSkKICAgICAsIG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExh
enlGdW5jdGlvbigwKQorICAgICwgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyKCZtX2luc3RydWN0
aW9ucykKICAgICAsIG1fZ2xvYmFsRGF0YSgmZ2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29k
ZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCkBAIC0yOTQsNiArMjk3LDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTRwogICAgICwgbV9oYXNDcmVhdGVkQWN0aXZh
dGlvbihmYWxzZSkKICAgICAsIG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExh
enlGdW5jdGlvbigwKQorICAgICwgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyKCZtX2luc3RydWN0
aW9ucykKICAgICAsIG1fZ2xvYmFsRGF0YSgmZ2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29k
ZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCkBAIC00NzUsMTkgKzQ3OSwxMCBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAKICAgICBpZiAoaXNDb25zdHJ1Y3Rv
cigpKSB7CiAgICAgICAgIHByZXBlbmRDb21tZW50KCIndGhpcycgYmVjYXVzZSB3ZSBhcmUgYSBD
b25zdHJ1Y3RvciBmdW5jdGlvbiIpOwotCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
ID0gbmV3VGVtcG9yYXJ5KCk7IAotCi0gICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2NhbGxlZSk7Ci0gICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHByb2ZpbGUpOwotCi0gICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAKKyAgICAgICAgZW1p
dENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKICAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpICYmIChmdW5jdGlvbkJvZHktPnVzZXNUaGlzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpIHx8IG1fc2hvdWxkRW1pdERlYnVnSG9va3MpKSB7CiAgICAgICAgIFVubGlu
a2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY29udmVydF90
aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4
KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIp
KTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIH0KIH0KQEAg
LTUxMSw2ICs1MDYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNH
CiAgICAgLCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uKHRydWUpCiAgICAgLCBtX2ZpcnN0TGF6eUZ1
bmN0aW9uKDApCiAgICAgLCBtX2xhc3RMYXp5RnVuY3Rpb24oMCkKKyAgICAsIG1fc3RhdGljUHJv
cGVydHlBbmFseXplcigmbV9pbnN0cnVjdGlvbnMpCiAgICAgLCBtX2dsb2JhbERhdGEoJmdsb2Jh
bERhdGEpCiAgICAgLCBtX2xhc3RPcGNvZGVJRChvcF9lbmQpCiAjaWZuZGVmIE5ERUJVRwpAQCAt
NzUxLDYgKzc0NywxMSBAQCBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGUgQnl0ZWNvZGVH
CiAjZW5kaWYKIH0KIAorVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBCeXRlY29kZUdl
bmVyYXRvcjo6bmV3T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQoreworICAgIHJldHVybiBtX2Nv
ZGVCbG9jay0+YWRkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsKK30KKwogVW5saW5rZWRWYWx1
ZVByb2ZpbGUgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlZE9wY29kZShPcGNvZGVJRCBv
cGNvZGVJRCkKIHsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0xMTExLDYgKzExMTIs
OCBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhwKFJlCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYykKIHsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIubW92KGRzdC0+aW5kZXgo
KSwgc3JjLT5pbmRleCgpKTsKKwogICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
c3JjLT5pbmRleCgpKTsKQEAgLTEzMzMsNyArMTMzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICAgICAgcmV0dXJuIGVtaXRHZXRMb2NhbFZhcihkc3Qs
IHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKIAogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwo
ZHN0KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldFJlc29sdmVPcGVyYXRpb25zKHByb3BlcnR5
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwpAQCAtMTM0NSw3ICsxMzQ4
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIEFTU0VS
VF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAg
ICAvLyBXZSBjYW4ndCBvcHRpbWlzZSBhdCBhbGwgOi0oCiAgICAgVW5saW5rZWRWYWx1ZVByb2Zp
bGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX2Jhc2UpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChw
cm9wZXJ0eSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmYWxzZSk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGdldFJlc29sdmVCYXNlT3BlcmF0aW9ucyhwcm9wZXJ0eSkpOwpAQCAt
MTM1OSw3ICsxMzYyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNv
bAogICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdp
c3RlcigpKTsKICAgICAvLyBXZSBjYW4ndCBvcHRpbWlzZSBhdCBhbGwgOi0oCiAgICAgVW5saW5r
ZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX2Jh
c2UpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChh
ZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHVpbnQzMl90IHB1dFRvQmFzZUluZGV4ID0gMDsK
QEAgLTEzNzQsNyArMTM3Nyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzb2wKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc29sdmVSZXN1bHQsICFyZXNvbHZlUmVzdWx0
LmlzUmVnaXN0ZXIoKSk7CiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfYmFzZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxs
KGJhc2VEc3QpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAgICAg
dWludDMyX3QgcHV0VG9CYXNlSW5kZXggPSAwOwpAQCAtMTM5NCw3ICsxMzk3LDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIH0KIAogICAgIFVubGlua2Vk
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRo
X3RoaXMpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlRHN0LT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChiYXNlRHN0KSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChh
ZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZXRSZXNv
bHZlV2l0aFRoaXNPcGVyYXRpb25zKHByb3BlcnR5KSk7CkBAIC0xNDMzLDcgKzE0MzYsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAgICAgbV9jb2RlQmxvY2st
PmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAog
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bf
Z2V0X2J5X2lkKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0
YW50KHByb3BlcnR5KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwpAQCAtMTQ1Niwx
MSArMTQ1OSwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Cisg
ICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKKworICAg
IG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UtPmluZGV4KCksIHByb3BlcnR5
SW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb3BlcnR5SW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+
aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKQEAgLTE0ODIsMTEgKzE0ODksMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogeworICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgg
PSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CisKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIu
cHV0QnlJZChiYXNlLT5pbmRleCgpLCBwcm9wZXJ0eUluZGV4KTsKKwogICAgIG1fY29kZUJsb2Nr
LT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAg
ICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnQocHJvcGVydHkpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlJbmRleCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwpAQCAtMTUw
MCw5ICsxNTExLDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWMK
IAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdldHRlclNldHRlcihSZWdpc3RlcklE
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogZ2V0dGVyLCBS
ZWdpc3RlcklEKiBzZXR0ZXIpCiB7CisgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENv
bnN0YW50KHByb3BlcnR5KTsKKworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRCeUlk
KGJhc2UtPmluZGV4KCksIHByb3BlcnR5SW5kZXgpOworCiAgICAgZW1pdE9wY29kZShvcF9wdXRf
Z2V0dGVyX3NldHRlcik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZ2V0dGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0
dGVyLT5pbmRleCgpKTsKIH0KQEAgLTE1MjAsNyArMTUzNSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIHsKICAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJh
eVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsKICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9hcmd1bWVudF9ieV92YWwpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChraWxsKGRzdCkpOwogICAgIEFTU0VSVChiYXNlLT5pbmRleCgpID09IG1fY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFz
ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgp
KTsKQEAgLTE1NDYsNyArMTU2MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnkKICAgICB9CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0g
bmV3QXJyYXlQcm9maWxlKCk7CiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfdmFsKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYXJyYXlQcm9maWxlKTsKQEAgLTE1ODMsMTAgKzE1OTgsMzMgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkK
K3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IG5ld1RlbXBvcmFyeSgpOyAKKworICAg
IFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0
X2NhbGxlZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKworICAgIHNpemVfdCBiZWdpbiA9IGlu
c3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRl
VGhpcyhtX3RoaXNSZWdpc3Rlci5pbmRleCgpLCBiZWdpbiArIDMpOworCisgICAgZW1pdE9wY29k
ZShvcF9jcmVhdGVfdGhpcyk7IAorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdp
c3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkp
OyAKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCog
ZHN0KQogeworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBt
X3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIubmV3T2JqZWN0KGRzdC0+aW5kZXgoKSwgYmVnaW4gKyAy
KTsKKwogICAgIGVtaXRPcGNvZGUob3BfbmV3X29iamVjdCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQogCkBAIC0xNzY3LDEwICsxODA1LDggQEAgRXhwZWN0ZWRGdW5jdGlv
biBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
U3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3IpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQocmVhbENhbGwtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVt
aXRPcGNvZGUob3BfbmV3X29iamVjdCk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRS
ZXN1bHQoKSkKKyAgICAgICAgICAgIGVtaXROZXdPYmplY3QoZHN0KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKQEAgLTE4NjIsNyArMTg5OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQ
cm9maWxlKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBVbmxp
bmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0
X3Jlc3VsdCk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOyAv
LyBkc3QKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICB9CiAgICAgCkBAIC0xODk1LDcg
KzE5MzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0RnJlZVJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBp
ZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmls
ZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7Ci0gICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb2ZpbGUpOwogICAgIH0KICAgICBpZiAobV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CkBA
IC0xOTc4LDcgKzIwMTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENv
bnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3Jl
ZFJlc3VsdCgpKSB7CiAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7IC8vIGRzdAorICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoa2lsbChkc3QpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUp
OwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiU3RhdGljUHJv
cGVydHlBbmFseXplci5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CkBA
IC0zODMsNiArMzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRFcXVhbGl0eU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEs
IFJlZ2lzdGVySUQqIHNyYzIpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlOb0RzdE9w
KE9wY29kZUlELCBSZWdpc3RlcklEKiBzcmMpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
cmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdP
YmplY3QoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5
KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgpOyAvLyBzdG9w
cyBhdCBmaXJzdCBlbGlzaW9uCiAKQEAgLTUyMSw4ICs1MjMsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCBlbWl0T3Bjb2RlKE9wY29kZUlEKTsKICAgICAgICAgVW5saW5rZWRB
cnJheUFsbG9jYXRpb25Qcm9maWxlIG5ld0FycmF5QWxsb2NhdGlvblByb2ZpbGUoKTsKKyAgICAg
ICAgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBuZXdPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSgpOwogICAgICAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSBuZXdBcnJheVByb2ZpbGUoKTsK
ICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29kZUlE
KTsKKyAgICAgICAgaW50IGtpbGwoUmVnaXN0ZXJJRCogZHN0KQorICAgICAgICB7CisgICAgICAg
ICAgICBpbnQgaW5kZXggPSBkc3QtPmluZGV4KCk7CisgICAgICAgICAgICBtX3N0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIua2lsbChpbmRleCk7CisgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAg
ICAgIH0KKwogICAgICAgICB2b2lkIHJldHJpZXZlTGFzdEJpbmFyeU9wKGludCYgZHN0SW5kZXgs
IGludCYgc3JjMUluZGV4LCBpbnQmIHNyYzJJbmRleCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVM
YXN0VW5hcnlPcChpbnQmIGRzdEluZGV4LCBpbnQmIHNyY0luZGV4KTsKICAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJld2luZEJpbmFyeU9wKCk7CkBAIC03NzUsNiArNzg1LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXJSZXNvbHZlUHV0TWFwIG1fcmVzb2x2ZUJhc2VG
b3JQdXRNYXA7CiAgICAgICAgIElkZW50aWZpZXJSZXNvbHZlUHV0TWFwIG1fcmVzb2x2ZVdpdGhC
YXNlRm9yUHV0TWFwOwogCisgICAgICAgIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyOworCiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwog
CiAgICAgICAgIE9wY29kZUlEIG1fbGFzdE9wY29kZUlEOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5
c2lzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFN0
YXRpY1Byb3BlcnR5QW5hbHlzaXNfaAorI2RlZmluZSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzX2gK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBSZWZlcmVu
Y2UgY291bnQgaW5kaWNhdGVzIG51bWJlciBvZiBsaXZlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRo
aXMgb2JqZWN0LgorY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXNpcyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiBjcmVhdGUoVmVjdG9yPFVubGlua2VkSW5zdHJ1
Y3Rpb24+KiBpbnN0cnVjdGlvbnMsIHVuc2lnbmVkIHRhcmdldCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3RhdGljUHJvcGVydHlBbmFseXNpcyhpbnN0cnVjdGlvbnMsIHRh
cmdldCkpOyAKKyAgICB9CisKKyAgICB2b2lkIGFkZFByb3BlcnR5SW5kZXgodW5zaWduZWQgcHJv
cGVydHlJbmRleCkgeyBtX3Byb3BlcnR5SW5kZXhlcy5hZGQocHJvcGVydHlJbmRleCk7IH0KKwor
ICAgIHZvaWQgcmVjb3JkKCkKKyAgICB7CisgICAgICAgICgqbV9pbnN0cnVjdGlvbnMpW21fdGFy
Z2V0XSA9IG1fcHJvcGVydHlJbmRleGVzLnNpemUoKTsKKyAgICB9CisKKyAgICBpbnQgcHJvcGVy
dHlJbmRleENvdW50KCkgeyByZXR1cm4gbV9wcm9wZXJ0eUluZGV4ZXMuc2l6ZSgpOyB9CisKK3By
aXZhdGU6CisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyhWZWN0b3I8VW5saW5rZWRJbnN0cnVj
dGlvbj4qIGluc3RydWN0aW9ucywgdW5zaWduZWQgdGFyZ2V0KQorICAgICAgICA6IG1faW5zdHJ1
Y3Rpb25zKGluc3RydWN0aW9ucykKKyAgICAgICAgLCBtX3RhcmdldCh0YXJnZXQpCisgICAgewor
ICAgIH0KKworICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiogbV9pbnN0cnVjdGlvbnM7
CisgICAgdW5zaWduZWQgbV90YXJnZXQ7CisgICAgdHlwZWRlZiBIYXNoU2V0PHVuc2lnbmVkLCBX
VEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPiA+IFByb3BlcnR5SW5kZXhTZXQ7CisgICAgUHJvcGVydHlJbmRleFNldCBtX3By
b3BlcnR5SW5kZXhlczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3Rh
dGljUHJvcGVydHlBbmFseXNpc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVy
dHlBbmFseXplci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFN0YXRpY1Byb3BlcnR5
QW5hbHl6ZXJfaAorI2RlZmluZSBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyX2gKKworI2luY2x1ZGUg
IlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworLy8gVXNlZCBmb3IgZmxvdy1pbnNlbnNpdGl2ZSBzdGF0aWMgYW5h
bHlzaXMgb2YgdGhlIG51bWJlciBvZiBwcm9wZXJ0aWVzIGFzc2lnbmVkIHRvIGFuIG9iamVjdC4K
Ky8vIFdlIHVzZSB0aGlzIGFuYWx5c2lzIHdpdGggb3RoZXIgcnVudGltZSBkYXRhIHRvIHByb2R1
Y2UgYW4gb3B0aW1pemF0aW9uIGd1ZXNzLiBUaGlzIGFuYWx5c2lzCisvLyBpcyB1bmRlcnN0b29k
IHRvIGJlIGxvc3N5LCBhbmQgaXQncyBPSyBpZiBpdCB0dXJucyBvdXQgdG8gYmUgd3Jvbmcgc29t
ZXRpbWVzLgorY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXplciB7CitwdWJsaWM6CisgICAgU3Rh
dGljUHJvcGVydHlBbmFseXplcihWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qKTsKKworICAg
IHZvaWQgY3JlYXRlVGhpcyhpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNhcGFjaXR5
T3BlcmFuZCk7CisgICAgdm9pZCBuZXdPYmplY3QoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJ
bmxpbmVDYXBhY2l0eU9wZXJhbmQpOworICAgIHZvaWQgcHV0QnlJZChpbnQgZHN0LCB1bnNpZ25l
ZCBwcm9wZXJ0eUluZGV4KTsgLy8gcHJvcGVydHlJbmRleCBpcyBhbiBpbmRleCBpbnRvIGEgdW5p
cXVlZCBzZXQgb2Ygc3RyaW5ncy4KKyAgICB2b2lkIG1vdihpbnQgZHN0LCBpbnQgc3JjKTsKKwor
ICAgIHZvaWQga2lsbCgpOworICAgIHZvaWQga2lsbChpbnQgZHN0KTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGtpbGwoU3RhdGljUHJvcGVydHlBbmFseXNpcyopOworCisgICAgVmVjdG9yPFVubGlu
a2VkSW5zdHJ1Y3Rpb24+KiBtX2luc3RydWN0aW9uczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50
LCBSZWZQdHI8U3RhdGljUHJvcGVydHlBbmFseXNpcz4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4gPiBBbmFseXNpc01hcDsKKyAgICBB
bmFseXNpc01hcCBtX2FuYWx5c2VzOworfTsKKworaW5saW5lIFN0YXRpY1Byb3BlcnR5QW5hbHl6
ZXI6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIoVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+KiBp
bnN0cnVjdGlvbnMpCisgICAgOiBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7Cit9CisK
K2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoaW50IGRzdCwg
dW5zaWduZWQgb2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eU9wZXJhbmQpCit7CisgICAgQW5hbHlzaXNN
YXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZCgKKyAgICAgICAgZHN0LCBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUobV9pbnN0cnVjdGlvbnMsIG9mZnNldE9mSW5s
aW5lQ2FwYWNpdHlPcGVyYW5kKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsgLy8gQ2FuJ3QgaGF2ZSB0d28gJ3RoaXMnIGluIHRoZSBzYW1lIGNv
bnN0cnVjdG9yLgorfQorCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdP
YmplY3QoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eU9wZXJhbmQpCit7
CisgICAgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGFuYWx5c2lzID0gU3RhdGljUHJv
cGVydHlBbmFseXNpczo6Y3JlYXRlKG1faW5zdHJ1Y3Rpb25zLCBvZmZzZXRPZklubGluZUNhcGFj
aXR5T3BlcmFuZCk7CisgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2Fu
YWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7CisgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CisgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7CisgICAg
fQorfQorCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpwdXRCeUlkKGludCBk
c3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpCit7CisgICAgU3RhdGljUHJvcGVydHlBbmFseXNp
cyogYW5hbHlzaXMgPSBtX2FuYWx5c2VzLmdldChkc3QpLmdldCgpOworICAgIGlmICghYW5hbHlz
aXMpCisgICAgICAgIHJldHVybjsKKyAgICBhbmFseXNpcy0+YWRkUHJvcGVydHlJbmRleChwcm9w
ZXJ0eUluZGV4KTsKK30KKworaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KGludCBkc3QsIGludCBzcmMpCit7CisgICAgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+
IGFuYWx5c2lzID0gbV9hbmFseXNlcy5nZXQoc3JjKTsKKyAgICBpZiAoIWFuYWx5c2lzKSB7Cisg
ICAgICAgIGtpbGwoZHN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFuYWx5c2lz
TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5hZGQoZHN0LCBhbmFseXNpcyk7
CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBraWxsKGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gYW5hbHlzaXMucmVsZWFzZSgpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU3RhdGlj
UHJvcGVydHlBbmFseXplcjo6a2lsbChTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcykK
K3sKKyAgICBpZiAoIWFuYWx5c2lzKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFhbmFseXNp
cy0+aGFzT25lUmVmKCkpIC8vIEFsaWFzZXMgZm9yIHRoaXMgb2JqZWN0IHN0aWxsIGV4aXN0LCBz
byBpdCBtaWdodCBhY3F1aXJlIG1vcmUgcHJvcGVydGllcy4KKyAgICAgICAgcmV0dXJuOworICAg
IGFuYWx5c2lzLT5yZWNvcmQoKTsKK30KKworaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFs
eXplcjo6a2lsbChpbnQgZHN0KQoreworICAgIC8vIFdlIG9ic2VydmUga2lsbHMgaW4gb3JkZXIg
dG8gYXZvaWQgcGlsaW5nIG9uIHByb3BlcnRpZXMgdG8gYW4gb2JqZWN0IGFmdGVyCisgICAgLy8g
aXRzIGJ5dGVjb2RlIHJlZ2lzdGVyIGhhcyBiZWVuIHJlY3ljbGVkLgorCisgICAgLy8gQ29uc2lk
ZXIgdGhlc2UgY2FzZXM6CisKKyAgICAvLyAoMSkgQWxpYXNlZCB0ZW1wb3JhcnkKKyAgICAvLyB2
YXIgbzEgPSB7IG5hbWU6IG5hbWUgfTsKKyAgICAvLyB2YXIgbzIgPSB7IG5hbWU6IG5hbWUgfTsK
KworICAgIC8vICgyKSBBbGlhc2VkIGxvY2FsIC0tIG5vIGNvbnRyb2wgZmxvdworICAgIC8vIHZh
ciBsb2NhbDsKKyAgICAvLyBsb2NhbCA9IG5ldyBPYmplY3Q7CisgICAgLy8gbG9jYWwubmFtZSA9
IG5hbWU7CisgICAgLy8gLi4uCisKKyAgICAvLyBsb2NhbCA9IGxvb2t1cCgpOworICAgIC8vIGxv
Y2FsLmRpZExvb2t1cCA9IHRydWU7CisgICAgLy8gLi4uCisKKyAgICAvLyAoMykgQWxpYXNlZCBs
b2NhbCAtLSBjb250cm9sIGZsb3cKKyAgICAvLyB2YXIgbG9jYWw7CisgICAgLy8gaWYgKGNvbmRp
dGlvbikKKyAgICAvLyAgICAgbG9jYWwgPSB7IH07CisgICAgLy8gZWxzZSB7CisgICAgLy8gICAg
IGxvY2FsID0gbmV3IE9iamVjdDsKKyAgICAvLyB9CisgICAgLy8gbG9jYWwubmFtZSA9IG5hbWU7
CisKKyAgICAvLyAoTm90ZTogb3VyIGRlZmF1bHQgY29kZWdlbiBmb3IgIm5ldyBPYmplY3QiIGxv
b2tzIGxpa2UgY2FzZSAoMykuKQorCisgICAgLy8gQ2FzZSAoMSkgaXMgZWFzeSBiZWNhdXNlIHRl
bXBvcmFyaWVzIGFsbW9zdCBuZXZlciBzdXJ2aXZlIGFjcm9zcyBjb250cm9sIGZsb3cuCisKKyAg
ICAvLyBDYXNlcyAoMikgYW5kICgzKSBhcmUgaGFyZC4gQ2FzZSAoMikgc2hvdWxkIGtpbGwgImxv
Y2FsIiwgd2hpbGUgY2FzZSAoMykgc2hvdWxkCisgICAgLy8gbm90LiBUaGVyZSBpcyBubyBncmVh
dCB3YXkgdG8gc29sdmUgdGhlc2UgY2FzZXMgd2l0aCBzaW1wbGUgc3RhdGljIGFuYWx5c2lzLgor
CisgICAgLy8gU2luY2UgdGhpcyBpcyBhIHNpbXBsZSBzdGF0aWMgYW5hbHlzaXMsIHdlIGp1c3Qg
dHJ5IHRvIGNhdGNoIHRoZSBzaW1wbGVzdCBjYXNlcywKKyAgICAvLyBzbyB3ZSBhY2NlcHQga2ls
bHMgdG8gYW55IHJlZ2lzdGVycyBleGNlcHQgZm9yIHJlZ2lzdGVycyB0aGF0IGhhdmUgbm8gaW5m
ZXJyZWQKKyAgICAvLyBwcm9wZXJ0aWVzIHlldC4KKworICAgIEFuYWx5c2lzTWFwOjppdGVyYXRv
ciBpdCA9IG1fYW5hbHlzZXMuZmluZChkc3QpOworICAgIGlmIChpdCA9PSBtX2FuYWx5c2VzLmVu
ZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFpdC0+dmFsdWUtPnByb3BlcnR5SW5kZXhD
b3VudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBraWxsKGl0LT52YWx1ZS5nZXQoKSk7Cisg
ICAgbV9hbmFseXNlcy5yZW1vdmUoaXQpOworfQorCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0
eUFuYWx5emVyOjpraWxsKCkKK3sKKyAgICB3aGlsZSAobV9hbmFseXNlcy5zaXplKCkpCisgICAg
ICAgIGtpbGwobV9hbmFseXNlcy50YWtlKG1fYW5hbHlzZXMuYmVnaW4oKS0+a2V5KS5nZXQoKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3RhdGljUHJvcGVydHlBbmFs
eXplcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDQsNyArMTM0NCw3IEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEluaGVyaXRvcklEV2F0Y2hwb2ludDoKKyAgICBj
YXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTM1LDIwICsyMTM1LDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICBBU1NFUlQoY2VsbC0+aW5oZXJpdHMoJkpTRnVuY3Rp
b246OnNfaW5mbykpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGluaGVyaXRvcklEID0gZnVuY3Rpb24tPnRyeUdldEtub3duSW5oZXJpdG9y
SUQoKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5oZXJpdG9ySUQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChJbmhlcml0b3JJRFdhdGNocG9pbnQsIE9wSW5mbyhmdW5jdGlvbikp
OwotICAgICAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhpbmhlcml0b3JJRCkpKTsKKyAgICAgICAg
ICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUgPSBmdW5j
dGlvbi0+dHJ5R2V0QWxsb2NhdGlvblByb2ZpbGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoYWxs
b2NhdGlvblByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQsIE9wSW5mbyhmdW5jdGlvbikpOworICAgICAgICAgICAgICAg
ICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcEluZm8oYWxsb2NhdGlvblByb2ZpbGUt
PnN0cnVjdHVyZSgpKSkpOwogICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFh
bHJlYWR5RW1pdHRlZCkKLSAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgYWRkVG9HcmFwaChDcmVhdGVUaGlzLCBjYWxsZWUpKTsKKyAgICAgICAgICAg
ICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDcmVhdGVUaGlzLCBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCksIGNhbGxlZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRl
X3RoaXMpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIG9wX25ld19v
YmplY3Q6IHsKLSAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoTmV3T2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X29iamVjdCk7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9u
IDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00ODYsNiArNDg2LDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJu
IG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0lubGluZUNhcGFjaXR5KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBvcCgpID09IENyZWF0ZVRoaXM7CisgICAgfQorCisgICAgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lubGluZUNh
cGFjaXR5KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCiAgICAgdm9pZCBz
ZXRJbmRleGluZ1R5cGUoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChoYXNJbmRleGluZ1R5cGUoKSk7CkBAIC03MDAsNyArNzExLDcgQEAgc3RydWN0IE5v
ZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjoKLSAgICAgICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6CisgICAgICAgIGNh
c2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2NSw3ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1
dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5j
dGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKEluaGVyaXRvcklEV2F0Y2hwb2lu
dCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZv
ciBhcnJheSBtdXRhdGlvbi4gKi9cCiAgICAgbWFjcm8oQXJyYXlQdXNoLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTQwNDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8
d3RmL0lubGluZUFTTS5oPgogCkBAIC0zNDcsNyArMzQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25DbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzT2JqZWN0KGV4ZWMpKTsKIH0KIAotSlNDZWxsKiBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IGNvbnN0cnVjdG9yKQorSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2Fw
YWNpdHkpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMp
OwpAQCAtMzU3LDcgKzM1OCw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVh
dGVUaGkKICAgICBBU1NFUlQoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciksIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKICAgICAKLSAg
ICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywganNDYXN0PEpTRnVuY3Rpb24qPihj
b25zdHJ1Y3RvciktPmNhY2hlZEluaGVyaXRvcklEKGV4ZWMpKTsKKyAgICByZXR1cm4gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYywganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmFs
bG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+c3RydWN0dXJlKCkpOwogfQog
CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAg
dHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZQogdHlwZWRlZiBKU0NlbGwq
IERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7
CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VDQykoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElP
TiAoKkNfREZHT3BlcmF0aW9uX0VJY2YpKEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSopOwor
dHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FT1opKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElP
TiAoKkNfREZHT3BlcmF0aW9uX0VTdCkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CiB0eXBlZGVm
IGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fREQpKGRvdWJsZSwgZG91Ymxl
KTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9aWikoaW50
MzJfdCwgaW50MzJfdCk7CkBAIC0xMjIsNyArMTIzLDcgQEAgdHlwZWRlZiBTdHJpbmdJbXBsKiBE
RkdfT1BFUkFUSU9OICgqU3RyXwogCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUgcHJvdmlkZSBjYWxs
YmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9ucyB0b28gY29tcGxl
eCB0byBKSVQuCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogREZHX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTQ2VsbCogY29uc3RydWN0b3IpIFdURl9J
TlRFUk5BTDsKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgaW50MzJfdCBpbmxpbmVDYXBhY2l0eSkgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0
VGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGROb3ROdW1iZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDYs
NyArODA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0
ZWQ6CiAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBHYXJi
YWdlVmFsdWU6Ci0gICAgICAgIGNhc2UgSW5oZXJpdG9ySURXYXRjaHBvaW50OgorICAgICAgICBj
YXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBQaGFudG9tOgog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3Bw
CShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0
Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGljIGJvb2wgdHJ5
Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgIC8vIE9wdGltaXplIHNlbGYgYWNjZXNzLgog
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgIGlmICgoc2xv
dC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSAhPSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKQotICAgICAgICAg
ICAgfHwgIU1hY3JvQXNzZW1ibGVyOjppc0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChv
ZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7Cisg
ICAgICAgICAgICB8fCAhTWFjcm9Bc3NlbWJsZXI6OmlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNz
T2Zmc2V0KG1heE9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSkpIHsKICAgICAgICAgICAgIGRmZ1JlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NjMsNyArMzU2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3By
KCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkoc3RydWN0dXJlLCByZXN1bHRH
UFIsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpT
QXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90
aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAgICAg
ICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3
MjksMTEgKzM3MjksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIoKTsKICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBz
Y3JhdGNoMi5ncHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZElt
bTMyKE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpKSk7CkBAIC0zNzQ1LDkgKzM3NDcsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1
bHRHUFIsIHN0b3JhZ2VHUFIpKTsKICAgICAgICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BS
LCBzdG9yYWdlR1BSKTsKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNB
cnJheSwgTWFya2VkQmxvY2s6Ok5vbmU+KAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIo
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24obm9kZS5pbmRleGluZ1R5cGUoKSkpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsCi0gICAgICAg
ICAgICAgICAgc3RvcmFnZUdQUiwgc2l6ZW9mKEpTQXJyYXkpLCBzbG93Q2FzZXMpOworICAgICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLmluZGV4aW5nVHlwZSgpKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwg
c2xvd0Nhc2VzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXpl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZl
Y3Rvckxlbmd0aCgpKSk7CkBAIC0zODA4LDcgKzM4MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigp
OwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHJl
c3VsdEdQUiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9j
YXRlSlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVs
ZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUuaW5kZXhpbmdUeXBl
KCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9
IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLnN0YXJ0Q29uc3RhbnQoKSk7
CkBAIC0zOTE5LDQ1ICszOTIwLDU0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IGFsbG9jYXRvcih0aGlzKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgY2FsbGVlR1BSID0gY2FsbGVlLmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBHUFJSZWcgYWxs
b2NhdG9yR1BSID0gYWxsb2NhdG9yLmdwcigpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BS
ID0gc3RydWN0dXJlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgICAgIAotICAgICAgICAvLyBMb2FkIHRoZSBpbmhlcml0b3JJRC4gSWYgdGhl
IGluaGVyaXRvcklEIGlzIG5vdCBzZXQsIGdvIHRvIHNsb3cgcGF0aC4KLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9m
ZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0cnVjdHVyZUdQUikpOwot
ICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChzdHJ1Y3R1cmVHUFIs
IHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwotICAgICAgICAKLSAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25D
cmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUikpOworCisgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSksIGFsbG9jYXRvckdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0
cnVjdHVyZUdQUik7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBhbGxvY2F0b3JHUFIpKTsKKyAgICAgICAgZW1pdEFsbG9j
YXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgVHJ1c3Rl
ZEltbVB0cigwKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOworCisgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhp
cywgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIG5vZGUuaW5saW5lQ2FwYWNpdHkoKSkpOwogICAgICAg
ICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBJbmhlcml0b3JJRFdhdGNocG9pbnQ6IHsKLSAg
ICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLmZ1bmN0aW9uKCkpLT5hZGRJbmhlcml0b3JJ
RFdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgIGNhc2UgQWxsb2NhdGlv
blByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS5m
dW5jdGlvbigpKS0+YWRkQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50KHNwZWN1bGF0aW9uV2F0
Y2hwb2ludCgpKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgYWxsb2NhdG9yKHRoaXMpOwog
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBhbGxvY2F0b3JH
UFIgPSBhbGxvY2F0b3IuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93
UGF0aDsKICAgICAgICAgCi0gICAgICAgIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5zdHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2Ny
YXRjaEdQUiwgc2xvd1BhdGgpOwotICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdPYmplY3QsIHJlc3Vs
dEdQUiwgbm9kZS5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG5vZGUuc3RydWN0dXJlKCk7CisgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTT2Jq
ZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAg
ICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhl
YXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOwor
CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQdHIpLCBhbGxvY2F0
b3JHUFIpOworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRv
ckdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNo
R1BSLCBzbG93UGF0aCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUiwgc3RydWN0
dXJlKSk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxl
SW5kZXgpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQ3OCw3ICszNDc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAg
ICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc3RvcmFnZUdQ
UiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRH
UFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQ
UiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNB
cnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzY0NSwxOSArMzY0NSwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0
b3JhZ2UodGhpcyk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMjsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSUmVnIHNpemVH
UFIgPSBzaXplLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKLSAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmIChoYXNEb3VibGUobm9kZS5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVhbFNjcmF0Y2gyKHRoaXMsIHNpemUpOwotICAgICAgICAgICAg
ICAgIHNjcmF0Y2gyLmFkb3B0KHJlYWxTY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgc2NyYXRj
aDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBz
aXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkpKTsKQEAgLTM2Njks
OSArMzY2Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgZW1pdEFsbG9jYXRl
QmFzaWNTdG9yYWdlKHJlc3VsdEdQUiwgc3RvcmFnZUdQUikpOwogICAgICAgICAgICAgbV9qaXQu
c3ViUHRyKHNjcmF0Y2hHUFIsIHN0b3JhZ2VHUFIpOwotICAgICAgICAgICAgZW1pdEFsbG9jYXRl
QmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJrZWRCbG9jazo6Tm9uZT4oCi0gICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLmluZGV4aW5nVHlwZSgpKSksIHJlc3VsdEdQUiwgc2Ny
YXRjaEdQUiwKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSLCBzaXplb2YoSlNBcnJheSksIHNs
b3dDYXNlcyk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUuaW5k
ZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4o
cmVzdWx0R1BSLCBJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2Ny
YXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwpAQCAtMzc2Nyw3ICszNzYwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAg
IGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdl
R1BSLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVChpbmRl
eGluZ1R5cGUgJiBJc0FycmF5KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5j
b2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9kZS5zdGFydENvbnN0YW50KCkpOwpAQCAtMzg3
MSw0NSArMzg2NCw1NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1
Y3R1cmUodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAg
ICAKICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGFsbG9jYXRvckdQ
UiA9IGFsbG9jYXRvci5ncHIoKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVj
dHVyZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwot
ICAgICAgICAKLSAgICAgICAgLy8gTG9hZCB0aGUgaW5oZXJpdG9ySUQuIElmIHRoZSBpbmhlcml0
b3JJRCBpcyBub3Qgc2V0LCBnbyB0byBzbG93IHBhdGguCi0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkNh
Y2hlZEluaGVyaXRvcklEKCkpLCBzdHJ1Y3R1cmVHUFIpOworCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0cnVjdHVyZUdQUikpOwotICAgICAg
ICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChzdHJ1Y3R1cmVHUFIsIHJlc3Vs
dEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwotICAgICAgICAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVU
aGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUikpOworCisgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3Io
KSksIGFsbG9jYXRvckdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVy
ZUdQUik7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBhbGxvY2F0b3JHUFIpKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNP
YmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0
cigwKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOworCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVz
dWx0R1BSLCBjYWxsZWVHUFIsIG5vZGUuaW5saW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICAKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEluaGVyaXRvcklEV2F0Y2hwb2ludDogewot
ICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUuZnVuY3Rpb24oKSktPmFkZEluaGVyaXRv
cklEV2F0Y2hwb2ludChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CisgICAgY2FzZSBBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQ6IHsKKyAgICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2Rl
LmZ1bmN0aW9uKCkpLT5hZGRBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQoc3BlY3VsYXRpb25X
YXRjaHBvaW50KCkpOwogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGFsbG9jYXRv
ckdQUiA9IGFsbG9jYXRvci5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNs
b3dQYXRoOwotICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLnN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBz
Y3JhdGNoR1BSLCBzbG93UGF0aCk7Ci0gICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld09iamVjdCwgcmVz
dWx0R1BSLCBub2RlLnN0cnVjdHVyZSgpKSk7CisKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlLnN0cnVjdHVyZSgpOworICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBK
U09iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAg
ICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQdHIgPSAmbV9qaXQuZ2xvYmFsRGF0YSgp
LT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXpl
KTsKKworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgYWxs
b2NhdG9yR1BSKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxv
Y2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2Ny
YXRjaEdQUiwgc2xvd1BhdGgpOworCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3T2JqZWN0LCByZXN1bHRHUFIsIHN0
cnVjdHVyZSkpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDEyICs1OSwxNCBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKCkK
ICAgICBXVEY6OmRlbGV0ZUFsbFZhbHVlcyhtX3Nsb3dQYXRoR2VuZXJhdG9ycyk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVt
ZW50cykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25l
ZCBudW1FbGVtZW50cykKIHsKICAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhh
c0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNDb250aWd1b3VzKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gy
LmdwcigpOwogICAgIAogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0Vf
VkVDVE9SX0xFTiwgbnVtRWxlbWVudHMpOwogICAgIApAQCAtNzMsMTIgKzc1LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheQogICAgIHNsb3dDYXNlcy5hcHBlbmQo
CiAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VH
UFIpKTsKICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVv
ZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOwotICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8
SlNBcnJheSwgTWFya2VkQmxvY2s6Ok5vbmU+KAotICAgICAgICBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwKLSAgICAgICAgc3RvcmFnZUdQUiwgc2l6ZW9m
KEpTQXJyYXkpLCBzbG93Q2FzZXMpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+
KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAgICAKLSAgICAvLyBJJ20gYXNzdW1pbmcg
dGhhdCB0d28gMzItYml0IHN0b3JlcyBhcmUgYmV0dGVyIHRoYW4gYSA2NC1iaXQgc3RvcmUuCi0g
ICAgLy8gSSBoYXZlIG5vIGlkZWEgaWYgdGhhdCdzIHRydWUuIEFuZCBpdCBwcm9iYWJseSBkb2Vz
bid0IG1hdHRlciBhbnl3YXkuCiAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxl
bWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2
ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJm
bHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTM4LDYgKzkzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19E
RkdPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwg
aW50MzJfdCBzaXplKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKG9iamVjdCwgVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKSk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
b2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwpAQCAtMTMwNSw2ICsxMzEwLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRU9aIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXplKQorICAgIHsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVjdCwgVHJ1c3RlZElt
bVB0cihzaXplKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwpAQCAtMjEz
NSwyNyArMjE0NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2xvd1Bh
dGg7CiAgICAgfQotICAgIAotICAgIC8vIEl0IGlzIE5PVCBva2F5IGZvciB0aGUgc3RydWN0dXJl
IGFuZCB0aGUgc2NyYXRjaCByZWdpc3RlciB0byBiZSB0aGUgc2FtZSB0aGluZyBiZWNhdXNlIGlm
IHRoZXkgYXJlIHRoZW4gdGhlIFN0cnVjdHVyZSB3aWxsIAotICAgIC8vIGdldCBjbG9iYmVyZWQu
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVj
dG9yVHlwZSBkZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUg
U3RvcmFnZVR5cGU+IAotICAgIHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1
cmVUeXBlIHN0cnVjdHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIFN0
b3JhZ2VUeXBlIHN0b3JhZ2UsIHNpemVfdCBzaXplLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
IHNsb3dQYXRoKQotICAgIHsKLSAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAw
OwotICAgICAgICBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKLSAg
ICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9y
Rm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGRl
c3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAg
ICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2Jq
ZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0
b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplKTsKIAotICAgICAgICBtX2ppdC5sb2Fk
UHRyKCZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVhZCwgcmVzdWx0R1BSKTsKKyAgICAvLyBBbGxv
Y2F0b3IgZm9yIGFuIG9iamVjdCBvZiBhIHNwZWNpZmljIHNpemUuCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPiAvLyBTdHJ1Y3R1cmVU
eXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KKyAgICB2b2lkIGVtaXRB
bGxvY2F0ZUpTT2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBhbGxvY2F0b3JHUFIsIFN0
cnVjdHVyZVR5cGUgc3RydWN0dXJlLAorICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdlLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7
CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9y
R1BSLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpLCByZXN1bHRHUFIp
OwogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgcmVzdWx0R1BSKSk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgb2JqZWN0
IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBoYXZlIHdoYXQgd2Uga25vdyBpcyBhIGZyZXNoIG9iamVj
dCwgYnV0CiAgICAgICAgIC8vIGl0J3Mgc3RpbGwgb24gdGhlIEdDJ3MgZnJlZSBsaXN0LgogICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiksIHNj
cmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCAmYWxsb2NhdG9y
LT5tX2ZyZWVMaXN0LmhlYWQpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zm
c2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVj
dCdzIFN0cnVjdHVyZS4KICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsK
QEAgLTIxNjQsMTMgKzIxNjYsMjQgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihz
dG9yYWdlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
dm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBHUFJSZWcgcmVzdWx0
R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0
aCkKKyAgICAvLyBDb252ZW5pZW5jZSBhbGxvY2F0b3IgZm9yIGEgYnVpdC1pbiBvYmplY3QuCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZSwg
dHlwZW5hbWUgU3RvcmFnZVR5cGU+IC8vIFN0cnVjdHVyZVR5cGUgYW5kIFN0b3JhZ2VUeXBlIGNh
biBiZSBHUFIgb3IgSW1tUHRyLgorICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVn
IHJlc3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2Us
CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVtaXRB
bGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9iamVjdCwgTWFya2VkQmxvY2s6Ok5vbmU+KHN0
cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBKU0ZpbmFs
T2JqZWN0OjphbGxvY2F0aW9uU2l6ZShJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSksIHNsb3dQYXRo
KTsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwOworICAgICAgICBzaXpl
X3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2NhdGlvblNpemUoMCk7CisgICAgICAgIGlmIChDbGFz
c1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgQ2xhc3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVy
ZSkKKyAgICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplKTsKKyAg
ICAgICAgZWxzZSBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKQorICAgICAgICAgICAg
YWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RX
aXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWxs
b2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRo
b3V0RGVzdHJ1Y3RvcihzaXplKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGFs
bG9jYXRvciksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVz
dWx0R1BSLCBzY3JhdGNoR1BSMSwgc3RydWN0dXJlLCBzdG9yYWdlLCBzY3JhdGNoR1BSMiwgc2xv
d1BhdGgpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJyYXkoU3RydWN0
dXJlKiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVs
ZW1lbnRzKTsKKworICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BS
LCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwog
CiAjaWYgVVNFKEpTVkFMVUU2NCkgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91
YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIHRtcCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1LDEwICsxNSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIH0K
IAogY2xhc3MgTWFya2VkQWxsb2NhdG9yIHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotICAgIGZy
aWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
RnJlZUxpc3RIZWFkKCk7CisKICAgICBNYXJrZWRBbGxvY2F0b3IoKTsKICAgICB2b2lkIHJlc2V0
KCk7CiAgICAgdm9pZCBjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CkBAIC0zNiw4ICsz
Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAg
IAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAg
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90KTsK
ICAgICB2b2lkKiB0cnlBbGxvY2F0ZShzaXplX3QpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVs
cGVyKHNpemVfdCk7CkBAIC01Myw2ICs1MiwxMSBAQCBwcml2YXRlOgogICAgIE1hcmtlZFNwYWNl
KiBtX21hcmtlZFNwYWNlOwogfTsKIAoraW5saW5lIHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6
Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkKK3sKKyAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1h
cmtlZEFsbG9jYXRvciwgbV9mcmVlTGlzdCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWFya2VkQmxvY2s6
OkZyZWVMaXN0LCBoZWFkKTsKK30KKwogaW5saW5lIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxs
b2NhdG9yKCkKICAgICA6IG1fY3VycmVudEJsb2NrKDApCiAgICAgLCBtX2Jsb2Nrc1RvU3dlZXAo
MCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBK
U1Njb3BlOwogICAgIGNsYXNzIEpTU3RhY2s7CisgICAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwog
ICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwogCkBAIC00NTMs
OCArNDU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmll
cihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHZhbHVlVGFnLCBSZWdpc3RlcklEIHNjcmF0
Y2gsIFJlZ2lzdGVySUQgc2NyYXRjaDIsIFdyaXRlQmFycmllck1vZGUsIFdyaXRlQmFycmllclVz
ZUtpbmQpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgUmVn
aXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0
ZUJhcnJpZXJVc2VLaW5kKTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUs
IE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9p
ZCBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIFJlZ2lzdGVySUQgcmVz
dWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQg
cmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGNhbiBiZSBSZWdpc3RlcklEIG9yIElt
bVB0ci4KKyAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChSZWdpc3RlcklEIGFsbG9j
YXRvciwgU3RydWN0dXJlVHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRj
aCk7CiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICAgICAgLy8gVGhp
cyBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIHRvIHByb2ZpbGUgaXMgaW4gcmVnVDAgYW5kIHRoYXQg
cmVnVDMgaXMgYXZhaWxhYmxlIGZvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsMjIgKzMxMCwxNSBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFuCiAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMp
LmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkp
LT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBNYXJr
ZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUsIHR5cGVuYW1lIFN0cnVjdHVy
ZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1
cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0
cikKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+CitpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRBbGxvY2F0ZUpTT2JqZWN0KFJlZ2lzdGVySUQgYWxsb2NhdG9yLCBTdHJ1Y3R1cmVUeXBlIHN0
cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKLSAgICBz
aXplX3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2NhdGlvblNpemUoSU5MSU5FX1NUT1JBR0VfQ0FQ
QUNJVFkpOwotICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gMDsKLSAgICBpZiAoZGVz
dHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKLSAgICAgICAgYWxsb2NhdG9yID0g
Jm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rv
cihzaXplKTsKLSAgICBlbHNlIGlmIChkZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6SW1t
b3J0YWxTdHJ1Y3R1cmUpCi0gICAgICAgIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAu
YWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplKTsK
LSAgICBlbHNlCi0gICAgICAgIGFsbG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2Nh
dG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZSk7Ci0gICAgbG9hZFB0cigmYWxsb2Nh
dG9yLT5tX2ZyZWVMaXN0LmhlYWQsIHJlc3VsdCk7CisgICAgbG9hZFB0cihBZGRyZXNzKGFsbG9j
YXRvciwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSwgcmVzdWx0KTsK
ICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCkpOwogCiAgICAgLy8g
cmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlc3VsdCksIHN0b3JhZ2VQdHIpOwotICAgIHN0b3JlUHRyKHN0b3JhZ2VQdHIsICZhbGxvY2F0
b3ItPm1fZnJlZUxpc3QuaGVhZCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCksIHNjcmF0
Y2gpOworICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJlc3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxv
Y2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAogICAgIC8vIGluaXRpYWxpemUgdGhl
IG9iamVjdCdzIHN0cnVjdHVyZQogICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1
bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKQEAgLTMzNCwxMSArMzI3LDYgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgTWFya2VkQmxvYwogICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKLXsKLSAgICBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmpl
Y3QsIE1hcmtlZEJsb2NrOjpOb25lLCBUPihzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7Ci19
Ci0KICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAx
NDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMywxNSArMjEzLDI1IEBAIHZvaWQgSklUOjplbWl0X29wX2pt
cChJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X29iamVjdChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRBbGxvY2F0ZUpTRmluYWxP
YmplY3QoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmVtcHR5T2Jq
ZWN0U3RydWN0dXJlKCkpLCByZWdUMCwgcmVnVDEpOwotICAgIAotICAgIGVtaXRTdG9yZUNlbGwo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUtPnN0cnVjdHVyZSgpOworICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTT2JqZWN0Ojph
bGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgIE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmpl
Y3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICBSZWdpc3RlcklEIHJl
c3VsdFJlZyA9IHJlZ1QwOworICAgIFJlZ2lzdGVySUQgYWxsb2NhdG9yUmVnID0gcmVnVDE7Cisg
ICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVnVDI7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYWxsb2NhdG9yKSwgYWxsb2NhdG9yUmVnKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChh
bGxvY2F0b3JSZWcsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgcmVzdWx0UmVnLCBzY3JhdGNo
UmVnKTsKKyAgICBlbWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IHJlc3VsdFJlZyk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9uZXdfb2JqZWN0KS5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpOworICAgIHN0dWJD
YWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpAQCAtMTE2MSwyMiArMTE3MSwyOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVl
KEluc3RydWN0aW9uCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwotICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIHJlZ1QwKTsKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mQ2FjaGVkSW5oZXJp
dG9ySUQoKSksIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJl
Z1QyKSk7Ci0gICAgCi0gICAgLy8gbm93IHJlZ1QyIGNvbnRhaW5zIHRoZSBpbmhlcml0b3JJRCwg
d2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB0aGF0IHRoZSBuZXdseQotICAgIC8vIGFsbG9jYXRlZCBv
YmplY3Qgd2lsbCBoYXZlLgotICAgIAotICAgIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QocmVn
VDIsIHJlZ1QwLCByZWdUMSk7Ci0gICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgUmVnaXN0ZXJJRCBjYWxsZWVSZWcgPSByZWdUMDsK
KyAgICBSZWdpc3RlcklEIHJlc3VsdFJlZyA9IHJlZ1QwOworICAgIFJlZ2lzdGVySUQgYWxsb2Nh
dG9yUmVnID0gcmVnVDE7CisgICAgUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVSZWcgPSByZWdUMjsKKyAg
ICBSZWdpc3RlcklEIHNjcmF0Y2hSZWcgPSByZWdUMzsKKworICAgIGVtaXRMb2FkUGF5bG9hZChj
YWxsZWUsIGNhbGxlZVJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAgIGxvYWRQdHIoQWRk
cmVzcyhjYWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSAr
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJl
UmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9jYXRvclJlZykp
OworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcs
IHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CisgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHRSZWcpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIGRvZXNuJ3QgaGF2ZSBhbiBpbmhlcml0b3IgSUQKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHByb2ZpbGUKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCisKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0
aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0
ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwu
Y2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSwxNSArOTUsMjUgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKEluc3RydWN0aW9uKiBjdXJy
ZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJl
Z1QwLCByZWdUMSk7Ci0gICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCk7CisgICAg
c2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVy
ZS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAm
bV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFs
bG9jYXRpb25TaXplKTsKKworICAgIFJlZ2lzdGVySUQgcmVzdWx0UmVnID0gcmVnVDA7CisgICAg
UmVnaXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBSZWdpc3RlcklEIHNjcmF0Y2hS
ZWcgPSByZWdUMjsKKworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBhbGxvY2F0
b3JSZWcpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCByZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KS5j
YWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Q
cm9maWxlLT5zdHJ1Y3R1cmUoKSkpOworICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0
YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtOTIyLDIyICs5MzIsMjgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbgogdm9pZCBKSVQ6OmVt
aXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOwotICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgpKSwgcmVnVDIpOwot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICAKLSAgICAv
LyBub3cgcmVnVDIgY29udGFpbnMgdGhlIGluaGVyaXRvcklELCB3aGljaCBpcyB0aGUgc3RydWN0
dXJlIHRoYXQgdGhlIG5ld2x5Ci0gICAgLy8gYWxsb2NhdGVkIG9iamVjdCB3aWxsIGhhdmUuCi0g
ICAgCi0gICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChyZWdUMiwgcmVnVDAsIHJlZ1QxKTsK
KyAgICBSZWdpc3RlcklEIGNhbGxlZVJlZyA9IHJlZ1QwOworICAgIFJlZ2lzdGVySUQgcmVzdWx0
UmVnID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBS
ZWdpc3RlcklEIHN0cnVjdHVyZVJlZyA9IHJlZ1QyOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJl
ZyA9IHJlZ1QzOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIGNhbGxlZVJl
Zyk7CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZB
bGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxs
b2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVSZWcs
IEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9jYXRvclJlZykpOworCisgICAgZW1pdEFs
bG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2Ny
YXRjaFJlZyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUg
YW4gaW5oZXJpdG9yIElECisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUg
YW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0
aW9uIGZhaWxlZAorCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0
ZV90aGlzKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJOYW1lSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJQYXJzZXIuaCIKQEAgLTkzMSwxMCArOTMyLDkgQEAgTkVWRVJfSU5MSU5FIHN0YXRpYyB2b2lk
IHRyeUNhY2hlR2V0QnlJRAogICAgIC8vIENhY2hlIGhpdDogU3BlY2lhbGl6ZSBpbnN0cnVjdGlv
biBhbmQgcmVmIFN0cnVjdHVyZXMuCiAKICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJhc2VW
YWx1ZSkgewotICAgICAgICAvLyBzZXQgdGhpcyB1cCwgc28gZGVyZWZTdHJ1Y3R1cmVzIGNhbiBk
byBpdCdzIGpvYi4KICAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkU2VsZihjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
ICAgICAgICAgaWYgKChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpICE9IFByb3BlcnR5U2xvdDo6
VmFsdWUpCi0gICAgICAgICAgICB8fCAhTWFjcm9Bc3NlbWJsZXI6OmlzQ29tcGFjdFB0ckFsaWdu
ZWRBZGRyZXNzT2Zmc2V0KG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSkpCisgICAgICAgICAgICB8fCAhTWFjcm9Bc3NlbWJsZXI6OmlzQ29tcGFjdFB0
ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG1heE9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSkpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5
X2lkX3NlbGZfZmFpbCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBKSVQ6OnBhdGNoR2V0
QnlJZFNlbGYoY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNl
dCgpLCByZXR1cm5BZGRyZXNzKTsKQEAgLTEzMDAsNiArMTMwMCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKKyAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50
MzIoKTsKIAogICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24q
PihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xMzA3LDcg
KzEzMDgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAg
QVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0
cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwogI2VuZGlmCiAKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5jYWNoZWRJbmhlcml0b3JJRChj
YWxsRnJhbWUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uc3RydWN0b3ItPmFsbG9j
YXRpb25Qcm9maWxlKGNhbGxGcmFtZSwgaW5saW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSwgc3RydWN0
dXJlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzOTUsNyAr
MTM5Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X28KIHsKICAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKLSAgICByZXR1cm4gY29uc3Ry
dWN0RW1wdHlPYmplY3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUpOworICAgIHJldHVybiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLnN0
cnVjdHVyZSgpKTsKIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lk
X2dlbmVyaWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw5ICsxMDgsOSBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0CiAgICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0
YW5jZSA9PSAyKTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5oZWFwLmFsbG9j
YXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShJ
TkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSkpIC0gJmdsb2JhbERhdGEuaGVhcC5maXJzdEFsbG9jYXRv
cldpdGhvdXREZXN0cnVjdG9ycygpID09IDEpOworICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5oZWFw
LmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKEpTRmluYWxPYmplY3Q6OmFsbG9j
YXRpb25TaXplKEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKSkgLSAmZ2xv
YmFsRGF0YS5oZWFwLmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0gMSk7CiAj
ZWxzZQotICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhv
dXREZXN0cnVjdG9yKEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShJTkxJTkVfU1RPUkFHRV9DQVBB
Q0lUWSkpIC0gJmdsb2JhbERhdGEuaGVhcC5maXJzdEFsbG9jYXRvcldpdGhvdXREZXN0cnVjdG9y
cygpID09IDMpOworICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRvckZvck9iamVj
dFdpdGhvdXREZXN0cnVjdG9yKEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKEpTRmluYWxP
YmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKSkgLSAmZ2xvYmFsRGF0YS5oZWFwLmZpcnN0
QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0gMyk7CiAjZW5kaWYKICAgICBBU1NFUlQo
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CiAgICAgQVNTRVJUKEds
b2JhbENvZGUgPT0gMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDcgQEAKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9u
cy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtNDgzLDggKzQ4NCw5IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfdGgKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRh
KGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwogI2VuZGlm
Ci0gICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+Y2FjaGVkSW5o
ZXJpdG9ySUQoZXhlYyk7CisKKyAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBwY1szXS51Lm9w
ZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlv
blByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKTsKICAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7CiB9CiAKQEAgLTUw
Myw3ICs1MDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29udmVydF90CiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X29iamVjdCkKIHsKICAgICBMTElOVF9C
RUdJTigpOwotICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cisg
ICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHBjWzNdLnUub2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24g
MTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM2MSwxNyArMzYxLDE4IEBAIF9sbGludF9v
cF9jcmVhdGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgOFtQQ10sIHQw
CiAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3QwXSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVh
dGVUaGlzU2xvdwotICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNs
YXNzSW5kZXgsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX2FsbG9jYXRpb25Qcm9maWxlICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om1fYWxsb2NhdG9yW3QwXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2FsbG9jYXRpb25Q
cm9maWxlICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAg
ICBidHB6IHQxLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlSlNPYmplY3QodDEsIHQy
LCB0MCwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQogICAgIGxvYWRpIDRbUENdLCB0MQogICAgIHN0
b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDQpCiAK
IC5vcENyZWF0ZVRoaXNTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2Ny
ZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRf
b3BfZ2V0X2NhbGxlZToKQEAgLTQwMywxOCArNDA0LDE4IEBAIF9sbGludF9vcF9jb252ZXJ0X3Ro
aXM6CiAKIF9sbGludF9vcF9uZXdfb2JqZWN0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVj
dHVyZVt0MF0sIHQxCi0gICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXpl
Q2xhc3NJbmRleCwgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oMywgdDApCisgICAgbG9hZHAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om1fYWxsb2NhdG9yW3QwXSwgdDEKKyAgICBsb2FkcCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGFsbG9jYXRlSlNPYmplY3QodDEsIHQyLCB0MCwgdDMs
IC5vcE5ld09iamVjdFNsb3cpCiAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgc3RvcmVpIENlbGxU
YWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goNCkKIAogLm9wTmV3T2Jq
ZWN0U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KQot
ICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfbW92OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsMTYg
KzI0MywxNyBAQCBfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcCBbY2ZyLCB0MCwgOF0s
IHQwCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9jYWNoZWRJbmhlcml0b3JJRFt0MF0sIHQyCi0g
ICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKLSAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qo
SlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhp
c1Nsb3cpCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjptX2FsbG9jYXRvclt0MF0sIHQxCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX3N0
cnVjdHVyZVt0MF0sIHQyCisgICAgYnRweiB0MSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxv
Y2F0ZUpTT2JqZWN0KHQxLCB0MiwgdDAsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAg
ICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDQpCiAKIC5vcENyZWF0ZVRoaXNTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNo
KDMpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfZ2V0X2NhbGxlZToKQEAgLTI4Mywx
NyArMjg0LDE3IEBAIF9sbGludF9vcF9jb252ZXJ0X3RoaXM6CiAKIF9sbGludF9vcF9uZXdfb2Jq
ZWN0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
LSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBK
U0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCi0gICAgYWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgdDEsIHQwLCB0Miwg
dDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCisg
ICAgbG9hZHAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fYWxsb2NhdG9yW3QwXSwgdDEKKyAg
ICBsb2FkcCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGFsbG9jYXRlSlNPYmplY3QodDEsIHQyLCB0MCwgdDMsIC5vcE5ld09iamVjdFNsb3cpCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhd
Ci0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCg0KQogCiAub3BOZXdPYmplY3RTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19vYmplY3QpCi0gICAgZGlzcGF0
Y2goMikKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9tb3Y6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM2OSwzMiArMzY5LDIxIEBAIG1hY3Jv
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1MKIC5zdGFja0hlaWdodE9LOgogZW5k
CiAKLW1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgc3RydWN0dXJl
LCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCittYWNybyBhbGxvY2F0ZUpT
T2JqZWN0KGFsbG9jYXRvciwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzbG93Q2FzZSkK
ICAgICBpZiBBTFdBWVNfQUxMT0NBVEVfU0xPVwogICAgICAgICBqbXAgc2xvd0Nhc2UKICAgICBl
bHNlCi0gICAgICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPQotICAgICAgICAgICAgSlNH
bG9iYWxEYXRhOjpoZWFwICsKLSAgICAgICAgICAgIEhlYXA6Om1fb2JqZWN0U3BhY2UgKwotICAg
ICAgICAgICAgTWFya2VkU3BhY2U6Om1fbm9ybWFsU3BhY2UgKwotICAgICAgICAgICAgTWFya2Vk
U3BhY2U6OlN1YnNwYWNlOjpwcmVjaXNlQWxsb2NhdG9ycyArCi0gICAgICAgICAgICBzaXplQ2xh
c3NJbmRleCAqIHNpemVvZiBNYXJrZWRBbGxvY2F0b3IKLSAgICAgICAgCiAgICAgICAgIGNvbnN0
IG9mZnNldE9mRmlyc3RGcmVlQ2VsbCA9IAogICAgICAgICAgICAgTWFya2VkQWxsb2NhdG9yOjpt
X2ZyZWVMaXN0ICsgCiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUxpc3Q6OmhlYWQKIAot
ICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBm
cm9tIHRoZSBzdGFjay4KLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCi0g
ICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEK
LSAgICAgICAgCiAgICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAg
IAotICAgICAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgICAgIGxvYWRwIG9mZnNldE9mRmlyc3RGcmVlQ2Vs
bFthbGxvY2F0b3JdLCByZXN1bHQKICAgICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCiAgICAg
ICAgIAogICAgICAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KLSAg
ICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCi0gICAgICAgIHN0b3JlcCBzY3JhdGNoMiwg
b2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKyAg
ICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gxCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMSwg
b2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRvcl0KICAgICAKICAgICAgICAgIyBJbml0aWFs
aXplIHRoZSBvYmplY3QuCiAgICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbcmVzdWx0XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyQnl0ZWNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJCeXRlY29kZS5oIgogCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9m
aWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRl
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21w
aWxhdGlvbi5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKIAogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHAJKHJl
dmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmgiCiAKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFz
ZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgorI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuY3BwCShyZXZpc2lvbiAxNDA0
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyT1NS
RXhpdC5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm9maWxlck9yaWdpbi5oIgogCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2Rlcy5oIgog
I2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5j
cHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCIKIAogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNyArNzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIDogQmFzZShnbG9iYWxEYXRhLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9u
U3RydWN0dXJlKCkpCiAgICAgICAgICwgbV9leGVjdXRhYmxlKGdsb2JhbERhdGEsIHRoaXMsIGV4
ZWN1dGFibGUpCiAgICAgICAgICwgbV9zY29wZShnbG9iYWxEYXRhLCB0aGlzLCBzY29wZSkKLSAg
ICAgICAgLCBtX2luaGVyaXRvcklEV2F0Y2hwb2ludChJbml0aWFsaXplZEJsaW5kKSAvLyBTZWUg
Y29tbWVudCBpbiBKU0Z1bmN0aW9uLmNwcCBjb25jZXJuaW5nIHRoZSByZWFzb24gZm9yIHVzaW5n
IEluaXRpYWxpemVkQmxpbmQgYXMgb3Bwb3NlZCB0byBJbml0aWFsaXplZFdhdGNoaW5nLgorICAg
ICAgICAsIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50KEluaXRpYWxpemVkQmxpbmQpIC8v
IFNlZSBjb21tZW50IGluIEpTRnVuY3Rpb24uY3BwIGNvbmNlcm5pbmcgdGhlIHJlYXNvbiBmb3Ig
dXNpbmcgSW5pdGlhbGl6ZWRCbGluZCBhcyBvcHBvc2VkIHRvIEluaXRpYWxpemVkV2F0Y2hpbmcu
CiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBzaXplX3Qgc2kKICAgICBKU0NlbGwq
IHJlc3VsdCA9IDA7CiAgICAgaWYgKFQ6Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgVDo6aGFzSW1tb3J0
YWxTdHJ1Y3R1cmUpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAu
YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemUpKTsKLSAgICBlbHNl
IGlmIChUOjpuZWVkc0Rlc3RydWN0aW9uICYmICFUOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKKyAg
ICBlbHNlIGlmIChUOjpuZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZSkpOwog
ICAgIGVsc2UgCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxs
b2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
Tm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9iamVj
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODgsMTIgKzg5LDEyIEBAIEpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKICAgICAvLyB0aGUgb3B0aW1p
emVyIGtpY2tzIGluIGRvbid0IGRpc2FibGUgb3B0aW1pemF0aW9ucy4gT25jZSB0aGUgb3B0aW1p
emVyIGtpY2tzIGluLCB0aGUKICAgICAvLyB3YXRjaHBvaW50IHdpbGwgc3RhcnQgd2F0Y2hpbmcg
YW5kIGFueSBjaGFuZ2VzIHdpbGwgYm90aCBmb3JjZSBkZW9wdGltaXphdGlvbiBhbmQgZGlzYWJs
ZQogICAgIC8vIGZ1dHVyZSBhdHRlbXB0cyB0byBvcHRpbWl6ZS4gVGhpcyBpcyBuZWNlc3Nhcnkg
YmVjYXVzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZQotICAgIC8vIGluaGVyaXRvcklEIGlz
IGNoYW5nZWQgZXhhY3RseSBvbmNlIHByaW9yIHRvIG9wdGltaXphdGlvbnMga2lja2luZyBpbi4g
V2UgY291bGQgYmUKKyAgICAvLyBhbGxvY2F0aW9uIHByb2ZpbGUgaXMgY2hhbmdlZCBleGFjdGx5
IG9uY2UgcHJpb3IgdG8gb3B0aW1pemF0aW9ucyBraWNraW5nIGluLiBXZSBjb3VsZCBiZQogICAg
IC8vIHNtYXJ0ZXIgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHByb3RvdHlwZSBp
cyBjbG9iYmVyZWQgYW5kIG9ubHkgb3B0aW1pemUgaWYgaXQKICAgICAvLyB3YXMgY2xvYmJlcmVk
IGV4YWN0bHkgb25jZSwgYnV0IHRoYXQgc2VlbXMgbGlrZSBvdmVya2lsbC4gSW4gYWxtb3N0IGFs
bCBjYXNlcyBpdCB3aWxsIGJlCiAgICAgLy8gY2xvYmJlcmVkIG9uY2UsIGFuZCBpZiBpdCdzIGNs
b2JiZXJlZCBtb3JlIHRoYW4gb25jZSwgdGhhdCB3aWxsIHByb2JhYmx5IG9ubHkgb2NjdXIKICAg
ICAvLyBiZWZvcmUgd2Ugc3RhcnRlZCBvcHRpbWl6aW5nLCBhbnl3YXkuCi0gICAgLCBtX2luaGVy
aXRvcklEV2F0Y2hwb2ludChJbml0aWFsaXplZEJsaW5kKQorICAgICwgbV9hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQoSW5pdGlhbGl6ZWRCbGluZCkKIHsKIH0KIApAQCAtMTA2LDE1ICsxMDcs
MTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdAogICAgIHB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAot
U3RydWN0dXJlKiBKU0Z1bmN0aW9uOjpjYWNoZUluaGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhlYykK
K09iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJv
ZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSBnZXQoZXhlYywgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUp
OwotICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgbV9jYWNoZWRJbmhlcml0
b3JJRC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2xvYmFsRGF0YS5wcm90b3R5cGVNYXAuZW1wdHlP
YmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoYXNPYmplY3QocHJvdG90eXBlKSkpOwotICAgIGVs
c2UKLSAgICAgICAgbV9jYWNoZWRJbmhlcml0b3JJRC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2xv
YmFsRGF0YS5wcm90b3R5cGVNYXAuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoZ2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSk7Ci0gICAgcmV0dXJuIG1fY2FjaGVkSW5o
ZXJpdG9ySUQuZ2V0KCk7CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPihnZXQoZXhlYywgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUp
KTsKKyAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0
KCktPm9iamVjdFByb3RvdHlwZSgpOworICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6
ZShnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBwcm90b3R5cGUsIGlubGluZUNh
cGFjaXR5KTsKKyAgICByZXR1cm4gJm1fYWxsb2NhdGlvblByb2ZpbGU7CiB9CiAKIFN0cmluZyBK
U0Z1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lk
IEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjCiAKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9zY29wZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fZXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVk
SW5oZXJpdG9ySUQpOworICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGUudmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7CiB9CiAKIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRh
KEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtMjIxLDEyICsyMjEsMTMgQEAg
Ym9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZQogICAgICAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUpIHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+
Z2V0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVu
dW0pOwotICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRl
IHwgRG9udEVudW0pOwotICAgICAgICAgICAgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0
T2Zmc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSk7CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChnbG9iYWxEYXRhLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsK
KyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChnbG9iYWxEYXRhLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7
CisgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZ2xvYmFs
RGF0YSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSk7CiAgICAgICAgICAgICBBU1NF
UlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgfQogCkBAIC0zNTUsOSArMzU2LDkg
QEAgdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBm
b2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0g
ICAgICAgIHRoaXNPYmplY3QtPm1fY2FjaGVkSW5oZXJpdG9ySUQuY2xlYXIoKTsKLSAgICAgICAg
dGhpc09iamVjdC0+bV9pbmhlcml0b3JJRFdhdGNocG9pbnQubm90aWZ5V3JpdGUoKTsKLSAgICAg
ICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0
IGNsZWFyIG1fY2FjaGVkSW5oZXJpdG9ySUQuCisgICAgICAgIHRoaXNPYmplY3QtPm1fYWxsb2Nh
dGlvblByb2ZpbGUuY2xlYXIoKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQubm90aWZ5V3JpdGUoKTsKKyAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhp
cyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fYWxsb2NhdGlvblBy
b2ZpbGUuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2FjaGU7CiAgICAgICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwog
ICAgICAgICByZXR1cm47CkBAIC00MDIsOCArNDAzLDggQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iagogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBv
dXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fY2Fj
aGVkSW5oZXJpdG9ySUQuY2xlYXIoKTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9pbmhlcml0b3JJ
RFdhdGNocG9pbnQubm90aWZ5V3JpdGUoKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0
aW9uUHJvZmlsZS5jbGVhcigpOworICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93
RXhjZXB0aW9uKTsKICAgICB9CiAKQEAgLTQ2OSw3ICs0NzAsNiBAQCBDb25zdHJ1Y3RUeXBlIEpT
RnVuY3Rpb246OmdldENvbnN0cnVjdERhCiAgICAgY29uc3RydWN0RGF0YS5qcy5zY29wZSA9IHRo
aXNPYmplY3QtPnNjb3BlKCk7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVKUzsKIH0KLSAgICAK
IAogU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNPYmplY3QqIG9iamVjdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9i
amVjdC5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKKyNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0xMTYsNDEgKzExNyw0MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAg
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0g
ICAgICAgIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG9mZnNldE9mU2NvcGVDaGFpbigpCisgICAgICAg
IHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mU2NvcGVDaGFpbigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBvZmZzZXRPZkV4ZWN1
dGFibGUoKQorICAgICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFi
bGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVu
Y3Rpb24sIG1fZXhlY3V0YWJsZSk7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJ1Y3R1cmUqIGNh
Y2hlZEluaGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgc3RhdGljIGlubGluZSBw
dHJkaWZmX3Qgb2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghbV9jYWNoZWRJbmhlcml0b3JJRCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNhY2hlSW5oZXJpdG9ySUQoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4gbV9jYWNo
ZWRJbmhlcml0b3JJRC5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNGdW5jdGlvbiwgbV9hbGxvY2F0aW9uUHJvZmlsZSk7CiAgICAgICAgIH0KIAotICAgICAgICBT
dHJ1Y3R1cmUqIHRyeUdldEtub3duSW5oZXJpdG9ySUQoKQorICAgICAgICBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NhY2hlZEluaGVy
aXRvcklEKQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fYWxsb2NhdGlvblByb2ZpbGUuaXNO
dWxsKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShl
eGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQoaW5saW5lQ2FwYWNpdHkg
PD0gbV9hbGxvY2F0aW9uUHJvZmlsZS5zdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gJm1fYWxsb2NhdGlvblByb2ZpbGU7CisgICAgICAgIH0KKworICAg
ICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogdHJ5R2V0QWxsb2NhdGlvblByb2ZpbGUoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9hbGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGlmIChtX2luaGVyaXRvcklE
V2F0Y2hwb2ludC5oYXNCZWVuSW52YWxpZGF0ZWQoKSkKKyAgICAgICAgICAgIGlmIChtX2FsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludC5oYXNCZWVuSW52YWxpZGF0ZWQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHJldHVybiBtX2NhY2hlZEluaGVyaXRvcklELmdl
dCgpOworICAgICAgICAgICAgcmV0dXJuICZtX2FsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICB2b2lkIGFkZEluaGVyaXRvcklEV2F0Y2hwb2ludChXYXRjaHBv
aW50KiB3YXRjaHBvaW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQodHJ5R2V0S25v
d25Jbmhlcml0b3JJRCgpKTsKLSAgICAgICAgICAgIG1faW5oZXJpdG9ySURXYXRjaHBvaW50LmFk
ZCh3YXRjaHBvaW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZDYWNoZWRJbmhlcml0b3JJRCgpCisgICAgICAgIHZvaWQgYWRkQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9jYWNoZWRJbmhlcml0b3JJRCk7
CisgICAgICAgICAgICBBU1NFUlQodHJ5R2V0QWxsb2NhdGlvblByb2ZpbGUoKSk7CisgICAgICAg
ICAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5hZGQod2F0Y2hwb2ludCk7CiAgICAg
ICAgIH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTE2Miw3ICsxNjQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRh
YmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICAgICAgdXNpbmcgQmFz
ZTo6ZmluaXNoQ3JlYXRpb247CiAKLSAgICAgICAgU3RydWN0dXJlKiBjYWNoZUluaGVyaXRvcklE
KEV4ZWNTdGF0ZSopOworICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogY3JlYXRlQWxs
b2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKIAogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTE4Nyw4ICsxODksOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAg
ICAgICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1fc2NvcGU7Ci0gICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fY2FjaGVkSW5oZXJpdG9ySUQ7Ci0gICAgICAgIElubGluZVdhdGNocG9p
bnRTZXQgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQ7CisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlIG1fYWxsb2NhdGlvblByb2ZpbGU7CisgICAgICAgIElubGluZVdhdGNocG9pbnRTZXQg
bV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw4ICsyMjMsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9zdHJpY3RF
dmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywganNOdWxsKCkpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywganNOdWxsKCkpKTsKIAotICAgIG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFsRGF0YSgpLnByb3RvdHlwZU1hcC5lbXB0
eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwot
ICAgIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSgpLCB0aGlz
LCBqc051bGwoKSkpOworICAgIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZ2xv
YmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNh
cGFjaXR5KCkpKTsKIAogICAgIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcmd1
bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSk7CkBAIC01MTMsNyArNTEyLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGF0ZVN0cnVjdHVyZTsKLSAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9lbXB0eU9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlOwogICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwpAQCAtMzAzLDcgKzMwMiw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0
dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLmdldCgp
OyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSog
bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3Rv
dHlwZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAg
ICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTE0LDE2ICs1MTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0OwogICAgIH0K
IAotICAgIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1
Y3R1cmUoKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB9Ci0KICAg
ICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpT
QXJyYXk6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGluaXRpYWxMZW5ndGggPj0gTUlOX1NQ
QVJTRV9BUlJBWV9JTkRFWCA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9yUHJvZmlsZUR1cmluZ0FsbG9jYXRpb24ocHJvZmlsZSksIGlu
aXRpYWxMZW5ndGgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkxvY2FsLmgiCiAjaW5jbHVkZSAiTG9jYWxTY29wZS5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTU5LDcgKzk1OSw2IEBAIHByb3RlY3RlZDoKICAg
ICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogfTsKIAotCiAvLyBKU05vbkZpbmFsT2JqZWN0IGlz
IGEgdHlwZSBvZiBKU09iamVjdCB0aGF0IGhhcyBzb21lIGludGVybmFsIHN0b3JhZ2UsCiAvLyBi
dXQgYWxzbyBwcmVzZXJ2ZXMgc29tZSBzcGFjZSBpbiB0aGUgY29sbGVjdG9yIGNlbGwgZm9yIGFk
ZGl0aW9uYWwKIC8vIGRhdGEgbWVtYmVycyBpbiBkZXJpdmVkIHR5cGVzLgpAQCAtOTk4LDEwICs5
OTcsMjIgQEAgY2xhc3MgSlNGaW5hbE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOwogCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGRlZmF1bHRTaXplID0gNjQ7CisgICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBkZWZhdWx0SW5s
aW5lQ2FwYWNpdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChkZWZhdWx0U2l6ZSAtIGFsbG9j
YXRpb25TaXplKDApKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTaXplID0gNTEyOworICAgIHN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbWF4SW5saW5lQ2FwYWNpdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICht
YXhTaXplIC0gYWxsb2NhdGlvblNpemUoMCkpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
Pik7CisgICAgfQorCiAgICAgc3RhdGljIEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgewotICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEZpbmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvLCBO
b25BcnJheSwgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkpOworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KEZpbmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvLCBOb25BcnJheSwgaW5s
aW5lQ2FwYWNpdHkpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTEwOTUsMTEgKzExMDYs
NiBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0QnV0dGVyZmx5V2l0aG91CiAgICAgbV9idXR0
ZXJmbHkgPSBidXR0ZXJmbHk7CiB9CiAKLWlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICByZXR1
cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSk7Ci19Ci0KIGlubGluZSBD
YWxsVHlwZSBnZXRDYWxsRGF0YShKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7
CiAgICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+
bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEodmFsdWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENh
bGxUeXBlTm9uZTsKQEAgLTE0MDMsNyArMTQwOSw3IEBAIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5C
dXR0ZXJmbHkoUHJvcGVydHkKICAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9m
ZnNldCkgKyBCdXR0ZXJmbHk6OmluZGV4T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKIH0KIAotLy8gVGhp
cyBpcyBhIGhlbHBlciBmb3IgcGF0Y2hpbmcgY29kZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0IGEg
bG9hZCBvciBzdG9yZSBhbmQKKy8vIEhlbHBlcnMgZm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91
IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUgYW5kCiAvLyB0aGUgYmFzZSBpczoKIC8vIEZv
ciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRvIHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBv
aW50ZXIuCiAvLyBGb3Igb3V0LW9mLWxpbmUgb2Zmc2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1v
Zi1saW5lIHN0b3JhZ2UuCkBAIC0xNDE0LDYgKzE0MjAsMTcgQEAgaW5saW5lIHNpemVfdCBvZmZz
ZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0bwogICAgIHJldHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgLSBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkgKyBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7CiB9CiAKKy8vIFJldHVy
bnMgdGhlIG1heGltdW0gb2Zmc2V0IGEgbG9hZCBpbnN0cnVjdGlvbiB3aWxsIGVuY29kZS4KK2lu
bGluZSBzaXplX3QgbWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKK3sKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHJldHVybiBvZmZzZXRS
ZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0KQorICAgICAgICArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKTsKKyNlbHNlCisgICAgcmV0dXJu
IG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShvZmZzZXQpOworI2VuZGlmCit9CisKIGlu
bGluZSBpbnQgaW5kZXhSZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAg
ICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDE2IEBAIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KEpTR2xvYmFsRGF0YSYgZ2wKICAgICBB
U1NFUlRfQVJHKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKICAgICBtX3RhcmdldC5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgZ2xvYmFsT2JqZWN0KTsKICAgICBzZXRQcm90b3R5cGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUoKSk7Ci0gICAgZ2xvYmFsRGF0YS5wcm90b3R5
cGVNYXAuY2xlYXJFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSh0aGlzKTsKKworICAg
IFByb3RvdHlwZU1hcCYgcHJvdG90eXBlTWFwID0gZ2xvYmFsRGF0YS5wcm90b3R5cGVNYXA7Cisg
ICAgaWYgKCFwcm90b3R5cGVNYXAuaXNQcm90b3R5cGUodGhpcykpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRoaXMgaXMgc2xvdyBidXQgY29uc3RhbnQgdGltZS4gV2UgdGhpbmsgaXQncyB2
ZXJ5IHJhcmUgZm9yIGEgcHJveHkKKyAgICAvLyB0byBiZSBhIHByb3RvdHlwZSwgYW5kIHJlYXNv
bmFibHkgcmFyZSB0byByZXRhcmdldCBhIHByb3h5LAorICAgIC8vIHNvIHNsb3cgY29uc3RhbnQg
dGltZSBpcyBPSy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8PSBKU0ZpbmFsT2JqZWN0Ojpt
YXhJbmxpbmVDYXBhY2l0eSgpOyArK2kpCisgICAgICAgIHByb3RvdHlwZU1hcC5jbGVhckVtcHR5
T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKHRoaXMsIGkpOwogfQogCiBTdHJpbmcgSlNQcm94
eTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUgIk9iamVjdENv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTkgKzEwMiwxOSBAQCBib29sIE9iamVj
dENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlCiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RDb25zdHJ1Y3Rv
clRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi0vLyBFQ01BIDE1LjIuMgotc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitzdGF0aWMgQUxXQVlT
X0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpOworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKICAgICBKU1ZhbHVlIGFyZyA9IGFyZ3Mu
YXQoMCk7CiAgICAgaWYgKGFyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBl
KCkpOwogICAgIHJldHVybiBhcmcudG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYywgYXNJbnRlcm5h
bEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdChleGVjKSk7CiB9CiAKIENvbnN0
cnVjdFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKQEAgLTEyNSw4ICsxMjUsNyBAQCBDb25zdHJ1Y3RU
eXBlIE9iamVjdENvbnN0cnVjdG9yOjpnZXRDb25zCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0T2JqZWN0KGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2Jh
bE9iamVjdCgpLCBhcmdzKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RP
YmplY3QoZXhlYykpOwogfQogCiBDYWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtMzUxLDcgKzM1MCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3Qg
cHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKSk7CiAgICAgSlNWYWx1
ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBw
cm90by5pc09iamVjdCgpCi0gICAgICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhl
Yy0+Z2xvYmFsRGF0YSgpLnByb3RvdHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3Rv
dHlwZShhc09iamVjdChwcm90bykpKQorICAgICAgICA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIGFzT2JqZWN0KHByb3RvKSkKICAgICAgICAgOiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2RlZmluZSBPYmplY3RDb25zdHJ1
Y3Rvcl9oCiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTU4LDYgKzYwLDMwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCisgICAg
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3Q6
OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIGlubGluZSBKU09iamVjdCog
Y29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcHJvdG90eXBl
LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIFBy
b3RvdHlwZU1hcCYgcHJvdG90eXBlTWFwID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkucHJv
dG90eXBlTWFwOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHByb3RvdHlwZU1hcC5l
bXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSgKKyAgICAgICAgICAgIHByb3RvdHlwZSwg
aW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yywgc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVt
cHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBwcm90b3R5cGUsIEpTRmlu
YWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsKKyAgICB9CisKKyAgICBpbmxpbmUg
SlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gT2JqZWN0Q29uc3RydWN0b3JfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCShyZXZpc2lvbiAxNDA0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0jZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDcKLSNlbHNl
Ci0jZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFDSVRZIDYKLSNlbmRpZgotCiB0eXBlZGVmIGlu
dCBQcm9wZXJ0eU9mZnNldDsKIAogc3RhdGljIGNvbnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRP
ZmZzZXQgPSAtMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlw
ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
dG90eXBlTWFwLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTggKzUyLDI0
IEBAIHZvaWQgUHJvdG90eXBlTWFwOjphZGRQcm90b3R5cGUoSlNPYmplY3QKICAgICAvLyB1c2Vk
IGFzIGEgcHJvdG90eXBlLgogfQogCi1TdHJ1Y3R1cmUqIFByb3RvdHlwZU1hcDo6ZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkKK1N0cnVjdHVyZSogUHJv
dG90eXBlTWFwOjplbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCogcHJv
dG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKIHsKLSAgICBXZWFrR0NNYXA8SlNPYmpl
Y3QqLCBTdHJ1Y3R1cmU+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zdHJ1Y3R1cmVzLmFkZChv
YmplY3QsIG51bGxwdHIpOworICAgIFN0cnVjdHVyZU1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IG1fc3RydWN0dXJlcy5hZGQoc3RkOjptYWtlX3BhaXIocHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0
eSksIG51bGxwdHIpOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAg
QVNTRVJUKGlzUHJvdG90eXBlKG9iamVjdCkpOworICAgICAgICBBU1NFUlQoaXNQcm90b3R5cGUo
cHJvdG90eXBlKSk7CiAgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpOwogICAgIH0KIAotICAgIGFkZFByb3RvdHlwZShvYmplY3QpOwotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKG9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbERhdGEoKSwgb2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0KTsK
KyAgICBhZGRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgKKyAgICAgICAgcHJvdG90eXBlLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBwcm90
b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
c3RydWN0dXJlOwogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CiAKK3ZvaWQgUHJvdG90eXBlTWFw
OjpjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3Qs
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQoreworICAgIG1fc3RydWN0dXJlcy5yZW1vdmUoc3Rk
OjptYWtlX3BhaXIob2JqZWN0LCBpbmxpbmVDYXBhY2l0eSkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1h
cC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTYgKzMzLDE4IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKKy8vIFRyYWNrcyB0
aGUgY2Fub25pY2FsIHN0cnVjdHVyZSBhbiBvYmplY3Qgc2hvdWxkIGJlIGFsbG9jYXRlZCB3aXRo
IHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgZ2l2ZW4gcHJvdG90eXBlLgogY2xhc3MgUHJvdG90eXBl
TWFwIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5T2Jq
ZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0Kik7Ci0gICAgdm9pZCBjbGVhckVtcHR5
T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVj
dCosIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKKyAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RT
dHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7
CiAgICAgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmplY3QqKTsKICAgICBib29sIGlzUHJvdG90eXBl
KEpTT2JqZWN0Kik7IC8vIFJldHVybnMgYSBjb25zZXJ2YXRpdmUgZXN0aW1hdGUuCiAKIHByaXZh
dGU6CiAgICAgV2Vha0dDTWFwPEpTT2JqZWN0KiwgSlNPYmplY3Q+IG1fcHJvdG90eXBlczsKLSAg
ICBXZWFrR0NNYXA8SlNPYmplY3QqLCBTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlczsKKyAgICB0eXBl
ZGVmIFdlYWtHQ01hcDxzdGQ6OnBhaXI8SlNPYmplY3QqLCB1bnNpZ25lZD4sIFN0cnVjdHVyZT4g
U3RydWN0dXJlTWFwOworICAgIFN0cnVjdHVyZU1hcCBtX3N0cnVjdHVyZXM7CiB9OwogCiBpbmxp
bmUgYm9vbCBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpCkBAIC01
MCwxMSArNTIsNiBAQCBpbmxpbmUgYm9vbCBQcm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTCiAg
ICAgcmV0dXJuIG1fcHJvdG90eXBlcy5jb250YWlucyhvYmplY3QpOwogfQogCi1pbmxpbmUgdm9p
ZCBQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBtX3N0cnVjdHVyZXMucmVtb3ZlKG9iamVjdCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUHJvdG90eXBlTWFwX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlz
dGljcygpCiAjZW5kaWYKIH0KIAotU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywg
SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkp
CitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYg
dHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fdHlwZUluZm8o
dHlwZUluZm8pCiAgICAgLCBtX2luZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpCkBAIC0xNzEsNiAr
MTcxLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwg
bV9kaWRUcmFuc2l0aW9uKGZhbHNlKQogICAgICwgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQoZmFs
c2UpCiB7CisgICAgQVNTRVJUKGlubGluZUNhcGFjaXR5IDw9IEpTRmluYWxPYmplY3Q6Om1heElu
bGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VSVChpbmxpbmVDYXBhY2l0eSA8IGZpcnN0T3V0T2ZM
aW5lT2Zmc2V0KTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAi
U3RydWN0dXJlIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJ1Y3R1cmUpIH07CkBA
IC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAo
SgogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAgICAg
ICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3ByZXZpb3VzKTsKIAotICAgICAgICAgICAgbV9w
cm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0
YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlw
ZSgpKSk7CisgICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVy
dHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtMjUzLDcgKzI1NSw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgY3Jl
YXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlw
ZUluZm8udHlwZSgpKSk7CisgICAgICAgIGNyZWF0ZVByb3BlcnR5TWFwKG51bWJlck9mU2xvdHNG
b3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KSk7CiAKICAgICBmb3IgKHB0
cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkgewogICAgICAg
ICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpAQCAtMzkzLDYgKzM5NSw3IEBAIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jv
d091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNl
dDsKKyAgICBjaGVja09mZnNldCh0cmFuc2l0aW9uLT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5s
aW5lQ2FwYWNpdHkoKSk7CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xv
YmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CkBAIC01NjQs
NiArNTY3LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdAogICAg
IHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOwogICAgIHRy
YW5zaXRpb24tPm1faW5kZXhpbmdUeXBlID0gaW5kZXhpbmdUeXBlOwogICAgIHRyYW5zaXRpb24t
Pm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKKyAgICBjaGVja09mZnNldCh0cmFuc2l0
aW9uLT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgCiAgICAg
aWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
Pm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKQpAQCAtNzE5LDcgKzcyMyw3IEBAIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AKIAogUGFzc093blB0cjxQcm9wZXJ0eVRhYmxl
PiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogb3duZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG1fcHJv
cGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9w
ZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxlKG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0
KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobV9w
cm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3By
b3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFibGUobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZz
ZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKSk7CiB9CiAKIFByb3BlcnR5T2Zmc2V0IFN0
cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
MTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgUHJv
cGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9u
QXJyYXksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAt
MjIxLDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNs
b3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90eXBlSW5mby50eXBlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNh
cGFjaXR5KTsKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0
eSgpIGNvbnN0CiAgICAgICAgIHsKQEAgLTM1OSw3ICszNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0
IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwgUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBD
bGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICAg
ICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiwgY29uc3QgU3RydWN0dXJlKik7CiAKQEAgLTQwMCw3ICs0MDAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25Db3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIgb2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRo
ZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRoZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5
IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSk7
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwpAQCAtNDU0LDcgKzQ1NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVp
ZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgUHJvcGVydHlPZmZzZXQg
aW5saW5lQ2FwYWNpdHkpCisgICAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5saW5l
Q2FwYWNpdHkpCiAgICAgewogICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1
Y3R1cmUpOwogICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE0MDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIxIEBACisyMDEzLTAxLTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RhdGljIHNpemUgaW5mZXJlbmNlIGZvciBKYXZhU2NyaXB0IG9i
amVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
ODA5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NR
TFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwOiBJbmNsdWRlIE9iamVjdENvbnN0cnVjdG9yLmgg
YmVjYXVzZQorICAgICAgICB0aGF0J3Mgd2hlcmUgY3JlYXRlRW1wdHlPYmplY3QoKSBpcyBsb2Nh
dGVkIG5vdy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOiBV
cGRhdGVkIGZvciBpbnRlcmZhY2UgY2hhbmdlLgorCiAyMDEzLTAxLTI4ICBCZWFyIFRyYXZpcyAg
PGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIFJlZmFjdG9y
IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB0byBtb3JlIGdlbmVyYWwgRXhjbHVzaW9uU2hhcGVJ
bmZvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfT2JqZWN0Q29u
c3RydWN0b3JfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9PYmplY3RDb25zdHJ1Y3Rvcl9oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiSlNJREJLZXkuaCIKIAogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEu
aCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25FdmVudC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2Nyw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxy
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmpl
Y3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1
ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3QuaCIKKyNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNp
b24gMTQwNDQ1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgPHJ1
bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRl
IDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHAu
aD4KQEAgLTE2NzQsNyArMTY3NSw3IEBAIERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2Vy
aWFsaXplcjoKICAgICAgICAgY2FzZSBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICBp
ZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKICAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vy
cm9yKTsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRP
YmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSk7CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3Qp
OwogICAgICAgICAgICAgb3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CiAgICAg
ICAgICAgICAvLyBmYWxsdGhyb3VnaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185149</attachid>
            <date>2013-01-28 21:35:58 -0800</date>
            <delta_ts>2013-01-29 13:33:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108093-20130128213245.patch</filename>
            <type>text/plain</type>
            <size>156287</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwOTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBA
QAorMjAxMy0wMS0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFN0YXRpYyBzaXplIGluZmVyZW5jZSBmb3IgSmF2YVNjcmlwdCBvYmplY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwOTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUub3JkZXI6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUGF5IHRoZSB0YXggbWFuLgorCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUpOiBvcF9uZXdfb2JqZWN0IGFuZCBvcF9jcmVhdGVfdGhpcyBub3cKKyAg
ICAgICAgaGF2ZSBhbiBleHRyYSBpbmZlcnJlZElubGluZUNhcGFjaXR5IGFyZ3VtZW50LiBUaGlz
IGlzIHRoZSBzdGF0aWNhbGx5CisgICAgICAgIGluZmVycmVkIGlubGluZSBjYXBhY2l0eSwganVz
dCBmcm9tIGFuYWx5emluZyBzb3VyY2UgdGV4dC4gb3BfbmV3X29iamVjdAorICAgICAgICBhbHNv
IGdldHMgYSBwb2ludGVyIHRvIGFuIGFsbG9jYXRpb24gcHJvZmlsZS4gKEZvciBvcF9jcmVhdGVf
dGhpcywgdGhlCisgICAgICAgIHByb2ZpbGUgaXMgaW4gdGhlIGNvbnN0cnV0b3IgZnVuY3Rpb24u
KQorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogTGluayBvcF9uZXdfb2Jq
ZWN0LgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
ZW5jZXMpOiBNYXJrIG91ciBwcm9maWxlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoQ29kZUJsb2NrKTogUmVtb3ZlZCBzb21lIGRlYWQgY29kZS4gQWRkZWQg
b2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVj
dGlvbi5oOgorICAgICAgICAoSlNDKTogTmV3IHVuaW9uIHR5cGUsIHNpbmNlIGFuIGluc3RydWN0
aW9uIG9wZXJhbmQgbWF5IHBvaW50IHRvIGFuCisgICAgICAgIG9iamVjdCBhbGxvY2F0aW9uIHBy
b2ZpbGUgbm93LgorCisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmlubGluZUNhcGFjaXR5
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmNsZWFyKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQpOiBOZXcgY2xhc3MKKyAgICAgICAgZm9yIHRyYWNraW5nIGEgcHJlZGljdGlvbiBhYm91
dCBvYmplY3QgYWxsb2NhdGlvbjogc3RydWN0dXJlLCBpbmxpbmUKKyAgICAgICAgY2FwYWNpdHks
IGFsbG9jYXRvciB0byB1c2UuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOiBVcGRhdGVkIGluc3RydWN0
aW9uIHNpemVzLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZXMpOgorICAgICAgICAoVW5saW5rZWRDb2RlQmxvY2spOiBVbmxpbmtlZCBzdXBw
b3J0IGZvciBhbGxvY2F0aW9uIHByb2ZpbGVzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKTogS2lsbCBhbGwgcmVtYWluaW5nIGFuYWx5c2VzIGF0IHRoZQorICAgICAgICBlbmQg
b2YgY29kZWdlbiwgc2luY2UgdGhpcyBpcyBvdXIgbGFzdCBvcHBvcnR1bml0eS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOiBBZGRlZCBhIHN0
YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciB0byBieXRlY29kZSBnZW5lcmF0aW9uLiBJ
dCB0cmFja3MgaW5pdGlhbGl6aW5nIGFzc2lnbm1lbnRzIGFuZAorICAgICAgICBtYWtlcyBhIGd1
ZXNzIGFib3V0IGhvdyBtYW55IHdpbGwgaGFwcGVuLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVkT3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZXR0
ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3Vt
ZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFs
KTogQWRkZWQgaG9va3MgdG8gdGhlIHN0YXRpYyBwcm9wZXJ0eQorICAgICAgICBhbmFseXplciwg
c28gaXQgY2FuIG9ic2VydmUgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOiBGYWN0b3JlZCB0aGlzIGludG8g
YSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24gYmVjYXVzZSBpdCB3YXMgYSBzaWduaWZpY2FudCBh
bW91bnQgb2YgbG9naWMsIGFuZCBJIHdhbnRlZCB0bworICAgICAgICBhZGQgdG8gaXQuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KTogQWRkZWQgYSBob29rIHRvIHByb2ZpbGVkIG9w
Y29kZXMKKyAgICAgICAgdG8gdHJhY2sgdGhlaXIgc3RvcmVzLCBpbiBjYXNlIGEgc3RvcmUga2ls
bHMgYSBwcm9maWxlZCBhbGxvY2F0aW9uLiBTaW5jZQorICAgICAgICBwcm9maWxlZCBvcGNvZGVz
IGFyZSBiYXNpY2FsbHkgdGhlIG9ubHkgaW50ZXJlc3Rpbmcgc3RvcmVzIHdlIGRvLCB0aGlzCisg
ICAgICAgIGlzIGEgY29udmVuaWVudCBwbGFjZSB0byBub3RpY2UgYW55IHN0b3JlIHRoYXQgbWln
aHQga2lsbCBhbiBhbGxvY2F0aW9uLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6IEFzIGFib3ZlLgorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoU3RhdGljUHJvcGVydHlBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0
YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmFkZFByb3BlcnR5SW5kZXgpOgorICAgICAgICAoSlNDOjpT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpyZWNvcmQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzOjpwcm9wZXJ0eUluZGV4Q291bnQpOgorICAgICAgICAoSlNDOjpTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzOjpTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKTogU2ltcGxlIGhlbHBlcgor
ICAgICAgICBjbGFzcyBmb3IgdHJhY2tpbmcgYWxsb2NhdGlvbnMgYW5kIHN0b3Jlcy4KKworICAg
ICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6IEFkZGVkLgorICAg
ICAgICAoU3RhdGljUHJvcGVydHlBbmFseXplcik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXI6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJv
cGVydHlBbmFseXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlB
bmFseXplcjo6cHV0QnlJZCk6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6
Om1vdik6CisgICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmtpbGwpOiBIZWxw
ZXIgY2xhc3MgZm9yIG9ic2VydmluZyBhbGxvY2F0aW9ucworICAgICAgICBhbmQgc3RvcmVzIGFu
ZCBtYWtpbmcgYW4gaW5saW5lIGNhcGFjaXR5IGd1ZXNzLiBUaGUgaGV1cmlzdGljcyBoZXJlIGFy
ZQorICAgICAgICBpbnRlbnRpb25hbGx5IG1pbmltYWwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRo
aXMgb25lIGNsYXNzIHRvIHRyeSB0bworICAgICAgICByZS1jcmVhdGUgc29tZXRoaW5nIGxpa2Ug
YSBERkcgb3IgYSBydW50aW1lIGFuYWx5c2lzLiBJZiB3ZSBkaXNjb3ZlciB0aGF0CisgICAgICAg
IHdlIG5lZWQgdGhvc2Uga2luZHMgb2YgYW5hbHlzZXMsIHdlIHNob3VsZCBqdXN0IHJlcGxhY2Ug
dGhpcyBjbGFzcyB3aXRoCisgICAgICAgIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIFRoaXMg
Y2xhc3MgdHJhY2tzIG11bHRpcGxlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoZSBzYW1lIG9iamVj
dCAtLSB0aGF0CisgICAgICAgIGhhcHBlbnMgYSBsb3QsIHdoZW4gbW92aW5nIGxvY2FscyBpbnRv
IHRlbXBvcmFyeSByZWdpc3RlcnMgLS0gYnV0IGl0CisgICAgICAgIGRvZXNuJ3QgdHJhY2sgY29u
dHJvbCBmbG93IG9yIG11bHRpcGxlIG9iamVjdHMgdGhhdCBhbGlhcyB0aGUgc2FtZSByZWdpc3Rl
ci4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6IFVwZGF0ZWQgZm9yIGlubGluZSBjYXBhY2l0eSBhbmQK
KyAgICAgICAgYWxsb2NhdGlvbiBwcm9maWxlLgorCisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJbmxpbmVDYXBhY2l0eSk6CisgICAgICAgIChO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppbmxpbmVDYXBhY2l0eSk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzRnVuY3Rpb24pOiBHaXZlIHRoZSBncmFwaCBhIGdvb2Qgd2F5
IHRvIHJlcHJlc2VudAorICAgICAgICBpbmxpbmUgY2FwYWNpdHkgZm9yIGFuIGFsbG9jYXRpb24u
CisKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6IFVwZGF0ZWQg
Zm9yIHJlbmFtZS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDogVXBkYXRlZCBm
b3IgaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6IFdl
IHBhc3MgdGhlIGlubGluZSBjYXBhY2l0eSB0byB0aGUgc2xvdyBjYXNlIGFzCisgICAgICAgIGFu
IGFyZ3VtZW50LiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXksIHNpbmNlIGl0J3Mgc3RvcmVkIGFz
IGEgYnl0ZWNvZGUgb3BlcmFuZC4KKworICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U6OnByb3BhZ2F0ZSk6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIGRmZy9E
RkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOiBGaXhl
ZCBhIGhvcnJpYmxlIG9mZi1ieS1vbmUtaGFsZiBidWcgdGhhdCBvbmx5CisgICAgICAgIGFwcGVh
cnMgd2hlbiBkb2luZyBhbiBpbmxpbmUgY2FjaGVkIGxvYWQgZm9yIHByb3BlcnR5IG51bWJlciA2
NCBvbiBhIDMyLWJpdAorICAgICAgICBzeXN0ZW0uIEluIEpTVkFMVUUzMl82NCBsYW5kLCAib2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlIiBpcyB0aGUKKyAgICAgICAgb2Zmc2V0IG9mIHRo
ZSA2NGJpdCBKU1ZhbHVlIC0tIGJ1dCB3ZSdsbCBhY3R1YWxseSBpc3N1ZSB0d28gbG9hZHMsIG9u
ZSBmb3IKKyAgICAgICAgdGhlIHBheWxvYWQgYXQgdGhhdCBvZmZzZXQsIGFuZCBvbmUgZm9yIHRo
ZSB0YWcgYXQgdGhhdCBvZmZzZXQgKyA0LiBXZSBuZWVkCisgICAgICAgIHRvIGVuc3VyZSB0aGF0
IGJvdGggbG9hZHMgaGF2ZSBhIGNvbXBhY3QgcmVwcmVzZW50YXRpb24sIG9yIHdlJ2xsIGNvcnJ1
cHQKKyAgICAgICAgdGhlIGluc3RydWN0aW9uIHN0cmVhbS4KKworICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKToK
KyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKTogTG90cyBvZiByZWZhY3RvcmluZyB0byBz
dXBwb3J0CisgICAgICAgIHBhc3NpbmcgYW4gYWxsb2NhdG9yIHRvIG91ciBhbGxvY2F0aW9uIGZ1
bmN0aW9uLCBhbmQvb3IgcGFzc2luZyBhIFN0cnVjdHVyZQorICAgICAgICBhcyBhIHJlZ2lzdGVy
IGluc3RlYWQgb2YgYW4gaW1tZWRpYXRlLgorCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChNYXJrZWRBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKTogQWRkZWQgYW4g
YWNjZXNzb3IgdG8gc2ltcGxpZnkKKyAgICAgICAgSklUIGNvZGUgZ2VuZXJhdGlvbiBvZiBhbGxv
Y2F0aW9uIGZyb20gYW4gYXJiaXRyYXJ5IGFsbG9jYXRvci4KKworICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19v
YmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0
ZV90aGlzKTogU2FtZSByZWZhY3RvcmluZyBhcyBkb25lIGZvciB0aGUgREZHLgorCisgICAgICAg
ICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKTogRml4
ZWQgdGhlIHNhbWUgYnVnIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAoSlNDOjpERUZJTkVf
U1RVQl9GVU5DVElPTik6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCisKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOiBTYW1lIHJlZmFjdG9yaW5nIGFzIGZv
ciB0aGUgSklUcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3BwOgor
ICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
ckNvbXBpbGVkQnl0ZWNvZGUuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHA6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwOiBJbmNsdWRlIE9iamVjdENvbnN0cnVjdG9yLmgKKyAg
ICAgICAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgY3JlYXRlRW1wdHlPYmplY3QoKSBsaXZlcyBub3cu
CisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6SlNGdW5jdGlvbik6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOiBVcGRhdGVk
IHRvIG1hdGNoIHRoZSBhbGxvY2F0b3Igc2VsZWN0aW9uIGNvZGUgaW4KKyAgICAgICAgdGhlIEpJ
VCwgc28gaXQncyBjbGVhcmVyIHRoYXQgYm90aCBhcmUgY29ycmVjdC4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxl
KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAg
ICAoSlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnRyeUdldEFsbG9jYXRp
b25Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWRkQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50KTogQ2hhbmdlZCBpbmhlcml0b3JJRAorICAgICAgICBkYXRhIG1lbWJlciB0
byBiZSBhbiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgd2hpY2ggaW5jbHVkZXMgYSBwb2ludGVy
CisgICAgICAgIHRvIHRoZSBkZXNpcmVkIGFsbG9jYXRvci4gVGhpcyBzaW1wbGlmaWVzIEpJVCBj
b2RlLCBzaW5jZSB3ZSBkb24ndCBoYXZlCisgICAgICAgIHRvIGNvbXB1dGUgdGhlIGFsbG9jYXRv
ciBvbiB0aGUgZmx5LiBJIHZlcmlmaWVkIGJ5IGNvZGUgaW5zcGVjdGlvbiB0aGF0CisgICAgICAg
IEpTRnVuY3Rpb24gaXMgc3RpbGwgb25seSA2NCBieXRlcy4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGF0ZVN0cnVjdHVyZSk6IE5vIGRpcmVjdCBw
b2ludGVyIHRvIHRoZSBlbXB0eQorICAgICAgICBvYmplY3Qgc3RydWN0dXJlIGFueW1vcmUsIGJl
Y2F1c2Ugbm93IGNsaWVudHMgbmVlZCB0byBzcGVjaWZ5IGhvdyBtdWNoCisgICAgICAgIGlubGlu
ZSBjYXBhY2l0eSB0aGV5IHdhbnQuCisKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6ZGVmYXVsdElu
bGluZUNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOiBB
IGxpdHRsZSByZWZhY3RvcmluZyB0byB0cnkgdG8gCisgICAgICAgIGNsYXJpZnkgd2hlcmUgc29t
ZSBvZiB0aGVzZSBjb25zdGFudHMgZGVyaXZlIGZyb20uCisKKyAgICAgICAgKEpTQzo6bWF4T2Zm
c2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKTogVXNlZCBmb3IgYnVnIGZpeCwgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3h5Ojpz
ZXRUYXJnZXQpOiBVZ2x5LCBidXQgZWZmZWN0aXZlLgorCisgICAgICAgICogcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
V2l0aE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y2FsbE9iamVjdENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUpOiBVcGRhdGVkIGZv
ciBpbnRlcmZhY2UgY2hhbmdlcy4KKworICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QpOiBDbGFyaWZpZWQgeW91
ciBvcHRpb25zIGZvciBob3cgdG8gYWxsb2NhdGUKKyAgICAgICAgYW4gZW1wdHkgb2JqZWN0LCB0
byBlbXBoYXNpemUgd2hhdCB0aGluZ3MgY2FuIGFjdHVhbGx5IHZhcnkuCisKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5T2Zmc2V0Lmg6IFRoZXNlIGNvbnN0YW50cyBoYXZlIG1vdmVkIGJlY2F1
c2UgdGhleSdyZQorICAgICAgICByZWFsbHkgaGlnaGVyIGxldmVsIGNvbmNlcHRzIHRvIGRvIHdp
dGggdGhlIGxheW91dCBvZiBvYmplY3RzIGFuZCB0aGUKKyAgICAgICAgY29sbGVjdG9yLiBQcm9w
ZXJ0eU9mZnNldCBpcyBqdXN0IGFuIGFic3RyYWN0IG51bWJlciBsaW5lLCBpbmRlcGVuZGVudAor
ICAgICAgICBvZiB0aG9zZSB0aGluZ3MuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlByb3RvdHlwZU1hcDo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVG
b3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlTWFw
Lmg6CisgICAgICAgIChQcm90b3R5cGVNYXApOiBUaGUgbWFwIGtleSBpcyBub3cgYSBwYWlyIG9m
IHByb3RvdHlwZSBhbmQgaW5saW5lIGNhcGFjaXR5LAorICAgICAgICBzaW5jZSBTdHJ1Y3R1cmUg
ZW5jb2RlcyBpbmxpbmUgY2FwYWNpdHkuCisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b3RhbFN0b3JhZ2VT
aXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0cmFuc2l0aW9uQ291bnQpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6IEZpeGVkIGEgbmFzdHkgcmVmYWN0b3JpbmcgYnVn
IHRoYXQgb25seSBzaG93cworICAgICAgICB1cCBhZnRlciBlbmFibGluZyB2YXJpYWJsZS1zaXpl
ZCBpbmxpbmUgY2FwYWNpdGllczogd2Ugd2VyZSBwYXNzaW5nIG91cgorICAgICAgICB0eXBlIGlu
Zm8gd2hlcmUgb3VyIGlubGluZSBjYXBhY2l0eSB3YXMgZXhwZWN0ZWQuIFRoZSBjb21waWxlciBk
aWRuJ3QKKyAgICAgICAgbm90aWNlIGJlY2F1c2UgYm90aCBoYXZlIHR5cGUgaW50IDooLgorCiAy
MDEzLTAxLTI4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFudXAgQVJNIHZlcnNpb24gb2YgZGVidWdOYW1lKCkgaW4gREZHRlBSSW5mby5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCShyZXZpc2lvbiAx
NDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNiBAQCBfX1pOM0pTQzE2TmF0aXZlRXhlY3V0YWJs
ZTZjcmVhdGVFUk5TXzEyCiBfX1pOM0pTQzhKU09iamVjdDM0cHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRWoKIF9fWk4zSlND
MTBKU0Z1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE1T2JqZWN0UHJvdG90
eXBlQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVF
Ci1fX1pOM0pTQzhKU09iamVjdDE3Y3JlYXRlSW5oZXJpdG9ySURFUk5TXzEySlNHbG9iYWxEYXRh
RQogX19aTjNKU0MxNEFycmF5UHJvdG90eXBlQzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlT
dHJ1Y3R1cmVFCiBfX1pOM0pTQzdKU0FycmF5QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBOU185U3Ry
dWN0dXJlRQogX19aTjNKU0MxNVN0cmluZ1Byb3RvdHlwZUMxRVBOU185RXhlY1N0YXRlRVBOU18x
NEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9y
dHMuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZgkocmV2aXNp
b24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBAIEVYUE9SVFMKICAgICA/PzBTSEExQFdURkBAUUFFQFhaCiAgICAg
Pz8wU3RyaW5nT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAx
QEBaCiAgICAgPz8wU3RyaW5nUHJpbnRTdHJlYW1AV1RGQEBRQUVAWFoKLSAgICA/PzBTdHJ1Y3R1
cmVASlNDQEBBQUVAQUFWSlNHbG9iYWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWSlNWYWx1
ZUAxQEFCVlR5cGVJbmZvQDFAUEJVQ2xhc3NJbmZvQDFARUhAWgorICAgID8/MFN0cnVjdHVyZUBK
U0NAQEFBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFZKU1ZhbHVlQDFA
QUJWVHlwZUluZm9AMUBQQlVDbGFzc0luZm9AMUBFSUBaCiAgICAgPz8wVGhyZWFkQ29uZGl0aW9u
QFdURkBAUUFFQFhaCiAgICAgPz8wV1RGVGhyZWFkRGF0YUBXVEZAQFFBRUBYWgogICAgID8/MFdy
YXBwZXJCYXNlQE1lbW9yeUluc3RydW1lbnRhdGlvbkBXVEZAQFFBRUBQQkRQQlhAWgpAQCAtMTk0
LDYgKzE5NCw3IEBAIEVYUE9SVFMKICAgICA/ZHVtcFNhbXBsZURhdGFASlNHbG9iYWxEYXRhQEpT
Q0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP0VjbWFTY3JpcHRDb252ZXJ0ZXJARG91Ymxl
VG9TdHJpbmdDb252ZXJ0ZXJAZG91YmxlX2NvbnZlcnNpb25AV1RGQEBTQUFCVjEyM0BYWgogICAg
ID9lbXB0eUBTdHJpbmdJbXBsQFdURkBAU0FQQVYxMkBYWgorICAgID9lbXB0eU9iamVjdFN0cnVj
dHVyZUZvclByb3RvdHlwZUBQcm90b3R5cGVNYXBASlNDQEBRQUVQQVZTdHJ1Y3R1cmVAMkBQQVZK
U09iamVjdEAyQElAWgogICAgID9lbnVtZXJhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFC
RV9OWFoKICAgICA/ZXF1YWxVVEYxNldpdGhVVEY4QFVuaWNvZGVAV1RGQEBZQV9OUEJfVzBQQkQx
QFoKICAgICA/ZXZhbHVhdGVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/QVZKU1ZhbHVlQDJA
QUJWU3RyaW5nQFdURkBAQUFWMzJAQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDU5LDggKzQ1
OSwxMSBAQAogCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJENUEyQjBBM0U5
MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CiAJCTE0QkZDRTY5MTBDREIxRkMw
MDM2NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEM1MjQyQjBG
NTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTY1ODFBMEY0RTM2RjQwMDAxNTBGRCAvKiBKSVRTdHVicy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Q0E5
NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNENBOTU4QTE2QUI1MERFMDA5
MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Q0E5NThEMTZBQjUwRkEwMDkzOEEwNiAvKiBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTREMkYzREExMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDJGM0Q4MTM5RjRCRTIw
MDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi87IH07CiAJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5
MTAzMSAvKiBNYXJrZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRERjA0REEx
NkIzOTk2RDAwMTZBNTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REYwNEQ5MTZCMzk5NkQwMDE2QTUx
MyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRFODRGOUUxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtC
bG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEU4NEY5OTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmNwcCAqLzsgfTsKIAkJMTRFODRG
OUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFODRGOUExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtC
bG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTg0RjlCMTRFRTFBQ0MwMEQ2RDVENCAv
KiBXZWFrU2V0LmNwcCAqLzsgfTsKQEAgLTczMSw3ICs3MzQsNyBAQAogCQlCQzE4QzQ0MjBFMTZG
NUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBFNjBFMTZENTIzMDBBMDZFOTIgLyog
TnVtYmVyQ29uc3RydWN0b3IubHV0LmggKi87IH07CiAJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBOdW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ0NDBF
MTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNTBFMTZENEU5MDBBMDZFOTIgLyogTnVt
YmVyUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQkMxOEM0NDUwRTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdENvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNzBF
MTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkMxOEM0NDUw
RTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIgLyog
T2JqZWN0Q29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQzE4QzQ0NjBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBD
OTBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYw
IC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY2OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NEIwRTE2RjVD
RDAwQjM0NDYwIC8qIFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGMEIzQUEwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0xMjc4LDYgKzEyODEsOCBAQAogCQkx
NEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMv
dGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJGQ0U2ODEwQ0RCMUZD
MDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYWtHQ01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNENBOTU4QTE2QUI1
MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0Q0E5NThDMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQyRjNEODEz
OUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFya2VkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIEpTU3RhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTI4Nyw2ICsxMjkyLDcgQEAKIAkJMTREQTgxOEUwRDk5RkQyMDAwQjBBNEZC
IC8qIEpTQWN0aXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fj
dGl2YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREQTgxOEYwRDk5RkQy
MDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0FjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGlj
UHJvcGVydHlBbmFseXNpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0
aWNQcm9wZXJ0eUFuYWx5c2lzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTg0
Rjk5MTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2Vha0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTRFODRGOUExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRFODRGOUIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMjMwLDYgKzIyMzYsOCBAQAogCQkJCTk2MDA5N0E1MEVCQUJCNTgw
MDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi8sCiAJCQkJNjU1RUIyOUExMENFMjU4MTAwMUE5OTBF
IC8qIE5vZGVzQ29kZWdlbi5jcHAgKi8sCiAJCQkJOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8q
IFJlZ2lzdGVySUQuaCAqLywKKwkJCQkxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGlj
UHJvcGVydHlBbmFseXNpcy5oICovLAorCQkJCTE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGJ5dGVjb21waWxl
cjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzY1LDkgKzI3NzMsOCBAQAogCQkJ
CTBGQjEwNTgzMTY3NTQ4MEMwMEY4QUI2RSAvKiBFeGl0S2luZC5oICovLAogCQkJCTBGMEI4M0FB
MTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8sCiAJCQkJMEY5MzMy
OTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLAotCQkJCTBGOTMzMjk1
MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKLQkJCQkwRjkzMzI5NjE0
Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTMzMjk2MTRDQTdE
QzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggKi8sCisJCQkJMEY5MzMyOTUxNENBN0RDMTAw
ODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4
NUI0RiAvKiBIYW5kbGVySW5mby5oICovLAogCQkJCTk2OUEwNzkzMEVEMUQzQUUwMEYxRjY4MSAv
KiBJbnN0cnVjdGlvbi5oICovLAogCQkJCUJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuY3BwICovLApAQCAtMjc3OCwxNSArMjc4NSwxNiBAQAogCQkJCTBGMEZDNDU4MTRCRDE1
RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGQjU0NjdDMTRGNUNG
RDMwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkw
RkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
ICovLAorCQkJCTE0Q0E5NThDMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS5oICovLAogCQkJCTk2OUEwNzk0MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuY3BwICov
LAogCQkJCTk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLywKIAkJCQkwRjJC
REMyQjE1MUZERThCMDBDRDg5MTAgLyogT3BlcmFuZHMuaCAqLywKIAkJCQkwRjlGQzhCRjE0RTFC
NUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8sCiAJCQkJMEY5RkM4
QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCAqLywKIAkJCQkw
RjkzMzI5OTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi8sCi0JCQkJMEY5
MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovLAotCQkJCTBGOTMz
MjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCisJCQkJMEY5MzMyOTYx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5QTE0Q0E3
REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAorCQkJCTBGOTMzMjk5MTRDQTdEQzEw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNwcCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBE
NTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3OSAvKiBS
ZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLywKIAkJCQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyog
UmVkdWNlV2hpdGVzcGFjZS5oICovLApAQCAtMjgwMCw3ICsyODA4LDcgQEAKIAkJCQkwRkQ4MkU4
NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwICovLAogCQkJCTBGRDgyRTRG
MTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oICovLAogCQkJCTBGOTMzMjlCMTRD
QTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCAqLywKLQkJCQkwRjkzMzI5QjE0Q0E3REMx
MDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCisJCQkJMEY5MzMyOUExNENBN0RDMTAwODVG
M0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEY3NjZEMzcx
NUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLywK
IAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwICov
LApAQCAtMjgxMiw2ICsyODIwLDcgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyog
VmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdh
dGNocG9pbnQuY3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBv
aW50LmggKi8sCisJCQkJMEY5MzMyOUIxNENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0zMjgxLDYgKzMyOTAsOSBAQAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAv
KiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzQ5NzExNjg3QURF
NDAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNC
MTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxNENBOTU4RDE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0REYwNERBMTZCMzk5NkQwMDE2QTUxMyAv
KiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNDA0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzU1LDcgKzc1NSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewogICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGNyZWF0ZV90aGlzICVz
LCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgdW5zaWduZWQgaW5mZXJyZWRJbmxp
bmVDYXBhY2l0eSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgb3V0LnByaW50Zigi
WyU0ZF0gY3JlYXRlX3RoaXMgJXMsICVzLCAldSIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGluZmVycmVkSW5s
aW5lQ2FwYWNpdHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9jb252ZXJ0X3RoaXM6IHsKQEAgLTc2Niw3ICs3NjcsOSBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdf
b2JqZWN0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIlslNGRdIG5ld19vYmplY3RcdCAlcyIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmZlcnJl
ZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJbJTRkXSBuZXdfb2JqZWN0XHQgJXMsICV1IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpLCBpbmZlcnJlZElubGluZUNhcGFjaXR5KTsKKyAgICAgICAgICAgICsr
aXQ7IC8vIFNraXAgb2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZS4KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CkBAIC0xODEyLDYgKzE4
MTUsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgaWYg
KHNpemVfdCBzaXplID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mVmFsdWVQcm9maWxlcygp
KQogICAgICAgICBtX3ZhbHVlUHJvZmlsZXMuZ3JvdyhzaXplKTsKICNlbmRpZgorICAgIGlmIChz
aXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZk9iamVjdEFsbG9jYXRpb25Q
cm9maWxlcygpKQorICAgICAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlcy5ncm93KHNpemUp
OwogICAgIGlmIChzaXplX3Qgc2l6ZSA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZlJlc29s
dmVPcGVyYXRpb25zKCkpCiAgICAgICAgIG1fcmVzb2x2ZU9wZXJhdGlvbnMuZ3JvdyhzaXplKTsK
ICAgICBzaXplX3QgcHV0VG9CYXNlQ291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZQ
dXRUb0Jhc2VPcGVyYXRpb25zKCk7CkBAIC0xODczLDYgKzE4NzgsMTcgQEAgQ29kZUJsb2NrOjpD
b2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAjZW5kaWYKIAorICAgICAg
ICBjYXNlIG9wX25ld19vYmplY3Q6IHsKKyAgICAgICAgICAgIGludCBvYmplY3RBbGxvY2F0aW9u
UHJvZmlsZUluZGV4ID0gcGNbaSArIG9wTGVuZ3RoIC0gMV0udS5vcGVyYW5kOworICAgICAgICAg
ICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlID0gJm1f
b2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzW29iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5kZXhdOwor
ICAgICAgICAgICAgaW50IGluZmVycmVkSW5saW5lQ2FwYWNpdHkgPSBwY1tpICsgb3BMZW5ndGgg
LSAyXS51Lm9wZXJhbmQ7CisKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGgg
LSAxXSA9IG9iamVjdEFsbG9jYXRpb25Qcm9maWxlOworICAgICAgICAgICAgb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUtPmluaXRpYWxpemUoKmdsb2JhbERhdGEoKSwKKyAgICAgICAgICAgICAgICBt
X293bmVyRXhlY3V0YWJsZS5nZXQoKSwgbV9nbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
LCBpbmZlcnJlZElubGluZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewog
I2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjM5MCw2ICsyNDA2LDggQEAgdm9pZCBDb2RlQmxvY2s6
OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5j
dGlvbkV4cHJzW2ldKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNs
cy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tp
XSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVzLnNpemUoKTsgKytpKQorICAgICAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlc1tpXS52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIAogICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zKENvbGxl
Y3Rpb24pOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
RXhlY3V0aW9uQ291bnRlci5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKICNp
bmNsdWRlICJIYW5kbGVySW5mby5oIgorI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiSklUQ29kZS5oIgpAQCAtNzg3LDEzICs3ODgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogICAgICAgICBBcnJheVByb2ZpbGUqIGdldEFycmF5UHJvZmlsZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CiAgICAgICAgIEFycmF5UHJvZmlsZSogZ2V0T3JBZGRBcnJheVByb2Zp
bGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBcnJheUFsbG9jYXRpb25Qcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlB
bGxvY2F0aW9uUHJvZmlsZXMuc2l6ZSgpOyB9Ci0gICAgICAgIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUqIGFkZEFycmF5QWxsb2NhdGlvblByb2ZpbGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X2FycmF5QWxsb2NhdGlvblByb2ZpbGVzLmFwcGVuZChBcnJheUFsbG9jYXRpb25Qcm9maWxlKCkp
OwotICAgICAgICAgICAgcmV0dXJuICZtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzLmxhc3QoKTsK
LSAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gRXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBv
cnQKQEAgLTEzMTQsNiArMTMwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTZWdtZW50
ZWRWZWN0b3I8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwgOD4gbV9hcnJheUFsbG9jYXRpb25Qcm9m
aWxlczsKICAgICAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKICNlbmRp
ZgorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIDg+IG1f
b2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzOwogCiAgICAgICAgIC8vIENvbnN0YW50IFBvb2wKICAg
ICAgICAgVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTQwNDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZTsKICAgICBjbGFzcyBBcnJheVByb2ZpbGU7CiAgICAgY2xhc3MgSlND
ZWxsOworICAgIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogICAgIGNsYXNzIFN0cnVj
dHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKICAgICBzdHJ1Y3QgTExJbnRDYWxsTGlu
a0luZm87CkBAIC0xOTUsNiArMTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3Ry
dWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAg
ICAgICAgIEluc3RydWN0aW9uKEFycmF5UHJvZmlsZSogcHJvZmlsZSkgeyB1LmFycmF5UHJvZmls
ZSA9IHByb2ZpbGU7IH0KICAgICAgICAgSW5zdHJ1Y3Rpb24oQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSogcHJvZmlsZSkgeyB1LmFycmF5QWxsb2NhdGlvblByb2ZpbGUgPSBwcm9maWxlOyB9CisgICAg
ICAgIEluc3RydWN0aW9uKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlKSB7IHUub2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUgPSBwcm9maWxlOyB9CiAgICAgICAgIAogICAgICAgICBJbnN0
cnVjdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikgeyB1LnJlZ2lz
dGVyUG9pbnRlciA9IHJlZ2lzdGVyUG9pbnRlcjsgfQogICAgICAgICAKQEAgLTIxNSw2ICsyMTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsK
ICAgICAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICAgICAgQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSogYXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgICAg
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICAg
ICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVy
OwogICAgICAgICB9IHU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlX2gKKyNk
ZWZpbmUgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVfaAorCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRh
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9hbGxvY2F0b3IpOyB9CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9zdHJ1Y3R1cmUpOyB9CisKKyAgICBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSgpCisgICAgICAgIDogbV9hbGxvY2F0b3IoMCkKKyAgICB7CisgICAgfQorCisg
ICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9hbGxvY2F0b3I7IH0KKworICAgIHZvaWQgaW5p
dGlhbGl6ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0
KiBwcm90b3R5cGUsIHVuc2lnbmVkIGluZmVycmVkSW5saW5lQ2FwYWNpdHkpCisgICAgeworICAg
ICAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKKyAgICAgICAgQVNTRVJUKCFtX3N0cnVjdHVyZSk7
CisKKyAgICAgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwOworICAgICAgICBpZiAoaW5m
ZXJyZWRJbmxpbmVDYXBhY2l0eSA8IEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0
eSgpKSB7CisgICAgICAgICAgICAvLyBUcnkgdG8gc2hyaW5rIHRoZSBvYmplY3QgYmFzZWQgb24g
c3RhdGljIGFuYWx5c2lzLgorICAgICAgICAgICAgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSArPSBw
b3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KGdsb2JhbERhdGEsIHByb3RvdHlwZSk7CisKKyAg
ICAgICAgICAgIGlmICghaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSkgeworICAgICAgICAgICAgICAg
IC8vIEVtcHR5IG9iamVjdHMgYXJlIHJhcmUsIHNvIG1vc3QgbGlrZWx5IHRoZSBzdGF0aWMgYW5h
bHl6ZXIganVzdCBkaWRuJ3QKKyAgICAgICAgICAgICAgICAvLyBzZWUgdGhlIHJlYWwgaW5pdGlh
bGl6ZXIgZnVuY3Rpb24uIFRoaXMgY2FuIGhhcHBlbiB3aXRoIGhlbHBlciBmdW5jdGlvbnMuCisg
ICAgICAgICAgICAgICAgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA9IEpTRmluYWxPYmplY3Q6OmRl
ZmF1bHRJbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZlcnJlZElu
bGluZUNhcGFjaXR5ID4gSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHByb3BlcnRpZXMgYXJlIHdlYWsgZ3Vlc3Nlcywg
c28gZG9uJ3QgYWxsb3cgdGhlbSB0byB0dXJuIGEgc21hbGwKKyAgICAgICAgICAgICAgICAvLyBv
YmplY3QgaW50byBhIGxhcmdlIG9iamVjdC4KKyAgICAgICAgICAgICAgICBpbmZlcnJlZElubGlu
ZUNhcGFjaXR5ID0gSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlubGluZUNhcGFjaXR5ID0gaW5mZXJyZWRJbmxpbmVD
YXBhY2l0eTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYXBhY2l0eSA8IEpTRmluYWxPYmpl
Y3Q6Om1heElubGluZUNhcGFjaXR5KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gTm9ybWFsIG9yIGxhcmdlIG9iamVjdC4KKyAgICAgICAgICAgIGlubGluZUNhcGFjaXR5ID0g
aW5mZXJyZWRJbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYXBhY2l0eSA+
IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICAgICAgaW5s
aW5lQ2FwYWNpdHkgPSBKU0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpOworICAgICAg
ICB9CisKKyAgICAgICAgQVNTRVJUKGlubGluZUNhcGFjaXR5ID4gMCk7CisgICAgICAgIEFTU0VS
VChpbmxpbmVDYXBhY2l0eSA8PSBKU0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpKTsK
KworICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0
aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yID0gJmdsb2JhbERhdGEuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3Rv
cihhbGxvY2F0aW9uU2l6ZSk7CisgICAgICAgIEFTU0VSVChhbGxvY2F0b3ItPmNlbGxTaXplKCkp
OworCisgICAgICAgIC8vIFRha2UgYWR2YW50YWdlIG9mIGV4dHJhIGlubGluZSBjYXBhY2l0eSBh
dmFpbGFibGUgaW4gdGhlIHNpemUgY2xhc3MuCisgICAgICAgIHNpemVfdCBzbG9wID0gKGFsbG9j
YXRvci0+Y2VsbFNpemUoKSAtIGFsbG9jYXRpb25TaXplKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pOworICAgICAgICBpbmxpbmVDYXBhY2l0eSArPSBzbG9wOworICAgICAgICBpZiAo
aW5saW5lQ2FwYWNpdHkgPiBKU0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpKQorICAg
ICAgICAgICAgaW5saW5lQ2FwYWNpdHkgPSBKU0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0
eSgpOworCisgICAgICAgIG1fYWxsb2NhdG9yID0gYWxsb2NhdG9yOworICAgICAgICBtX3N0cnVj
dHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsCisgICAgICAgICAgICBnbG9iYWxEYXRhLnByb3Rv
dHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShwcm90b3R5cGUsIGlubGlu
ZUNhcGFjaXR5KSk7CisgICAgfQorCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsgfQorICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCk7IH0KKworICAgIHZvaWQgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgbV9hbGxvY2F0b3IgPSAwOworICAgICAgICBtX3N0cnVjdHVyZS5j
bGVhcigpOworICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOworICAgIH0KKworICAgIHZvaWQgdmlz
aXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOworICAgIH0KKworcHJpdmF0ZToKKworICAgIHVuc2lnbmVk
IHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U09iamVjdCogcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgaWYgKHByb3RvdHlwZSA9PSBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnR5TmFtZUFycmF5KCZnbG9iYWxEYXRhKTsKKyAgICAgICAgcHJvdG90eXBl
LT5zdHJ1Y3R1cmUoKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lQXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBQ
cm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVj
dG9yID0gcHJvcGVydHlOYW1lQXJyYXkuZGF0YSgpLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBwcm90b3R5cGUtPmdldERpcmVjdChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0pOworCisgICAgICAgICAgICAvLyBGdW5j
dGlvbnMgYXJlIGNvbW1vbiwgYW5kIGFyZSB1c3VhbGx5IGNsYXNzLWxldmVsIG9iamVjdHMgdGhh
dCBhcmUgbm90IG92ZXJyaWRkZW4uCisgICAgICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0Z1
bmN0aW9uKj4odmFsdWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICArK2NvdW50OworCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKwor
ICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7IC8vIFByZWNvbXB1dGVkIHRvIG1ha2Ug
dGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVkIGNvZGUuCisgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJ1Y3R1cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9jcmVhdGVfYWN0aXZhdGlvbiwgMikgXAog
ICAgICAgICBtYWNybyhvcF9pbml0X2xhenlfcmVnLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX2Ny
ZWF0ZV9hcmd1bWVudHMsIDIpIFwKLSAgICAgICAgbWFjcm8ob3BfY3JlYXRlX3RoaXMsIDMpIFwK
KyAgICAgICAgbWFjcm8ob3BfY3JlYXRlX3RoaXMsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0
X2NhbGxlZSwgMykgXAogICAgICAgICBtYWNybyhvcF9jb252ZXJ0X3RoaXMsIDMpIFwKICAgICAg
ICAgXAotICAgICAgICBtYWNybyhvcF9uZXdfb2JqZWN0LCAyKSBcCisgICAgICAgIG1hY3JvKG9w
X25ld19vYmplY3QsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfbmV3X2FycmF5LCA1KSBcCiAgICAg
ICAgIG1hY3JvKG9wX25ld19hcnJheV93aXRoX3NpemUsIDQpIFwKICAgICAgICAgbWFjcm8ob3Bf
bmV3X2FycmF5X2J1ZmZlciwgNSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNDA0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKEpTRwogICAgICwgbV9wdXRUb0Jhc2VPcGVyYXRpb25Db3VudCgxKQogICAg
ICwgbV9hcnJheVByb2ZpbGVDb3VudCgwKQogICAgICwgbV9hcnJheUFsbG9jYXRpb25Qcm9maWxl
Q291bnQoMCkKKyAgICAsIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudCgwKQogICAgICwg
bV92YWx1ZVByb2ZpbGVDb3VudCgwKQogICAgICwgbV9sbGludENhbGxMaW5rSW5mb0NvdW50KDAp
CiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2s7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkVmFsdWVQcm9maWxlOwogdHlwZWRl
ZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5UHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5r
ZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlOwordHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExp
bmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewpAQCAtMzk4LDYgKzM5OSw4IEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5UHJvZmlsZXMoKSB7IHJldHVybiBtX2Fy
cmF5UHJvZmlsZUNvdW50OyB9CiAgICAgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlIGFk
ZEFycmF5QWxsb2NhdGlvblByb2ZpbGUoKSB7IHJldHVybiBtX2FycmF5QWxsb2NhdGlvblByb2Zp
bGVDb3VudCsrOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheUFsbG9jYXRpb25Qcm9maWxl
cygpIHsgcmV0dXJuIG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZUNvdW50OyB9CisgICAgVW5saW5r
ZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBhZGRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpIHsg
cmV0dXJuIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVDb3VudCsrOyB9CisgICAgdW5zaWduZWQg
bnVtYmVyT2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZXMoKSB7IHJldHVybiBtX29iamVjdEFsbG9j
YXRpb25Qcm9maWxlQ291bnQ7IH0KICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBhZGRWYWx1ZVBy
b2ZpbGUoKSB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZUNvdW50Kys7IH0KICAgICB1bnNpZ25lZCBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZUNvdW50OyB9CiAK
QEAgLTUyNSw2ICs1MjgsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcHV0VG9CYXNlT3Bl
cmF0aW9uQ291bnQ7CiAgICAgdW5zaWduZWQgbV9hcnJheVByb2ZpbGVDb3VudDsKICAgICB1bnNp
Z25lZCBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVDb3VudDsKKyAgICB1bnNpZ25lZCBtX29iamVj
dEFsbG9jYXRpb25Qcm9maWxlQ291bnQ7CiAgICAgdW5zaWduZWQgbV92YWx1ZVByb2ZpbGVDb3Vu
dDsKICAgICB1bnNpZ25lZCBtX2xsaW50Q2FsbExpbmtJbmZvQ291bnQ7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcg
KzE1NSw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAgICBt
X2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogCiAg
ICAgbV9zY29wZU5vZGUtPmVtaXRCeXRlY29kZSgqdGhpcyk7Ci0gICAgCisKKyAgICBtX3N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIua2lsbCgpOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fdHJ5UmFuZ2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFRyeVJhbmdlJiByYW5nZSA9IG1f
dHJ5UmFuZ2VzW2ldOwogICAgICAgICBpbnQgc3RhcnQgPSByYW5nZS5zdGFydC0+YmluZCgpOwpA
QCAtMjQ0LDYgKzI0Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihK
U0cKICAgICAsIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24odHJ1ZSkKICAgICAsIG1fZmlyc3RMYXp5
RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQorICAgICwgbV9zdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyKCZtX2luc3RydWN0aW9ucykKICAgICAsIG1fZ2xvYmFsRGF0YSgmZ2xv
YmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29kZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCkBA
IC0yOTQsNiArMjk3LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpT
RwogICAgICwgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbihmYWxzZSkKICAgICAsIG1fZmlyc3RMYXp5
RnVuY3Rpb24oMCkKICAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQorICAgICwgbV9zdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyKCZtX2luc3RydWN0aW9ucykKICAgICAsIG1fZ2xvYmFsRGF0YSgmZ2xv
YmFsRGF0YSkKICAgICAsIG1fbGFzdE9wY29kZUlEKG9wX2VuZCkKICNpZm5kZWYgTkRFQlVHCkBA
IC00NzUsMTkgKzQ3OSwxMCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
SlNHCiAKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7CiAgICAgICAgIHByZXBlbmRDb21tZW50
KCIndGhpcycgYmVjYXVzZSB3ZSBhcmUgYSBDb25zdHJ1Y3RvciBmdW5jdGlvbiIpOwotCi0gICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gbmV3VGVtcG9yYXJ5KCk7IAotCi0gICAgICAg
IFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0
X2NhbGxlZSk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsK
LSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwotCi0gICAgICAgIGVtaXRP
cGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
dGhpc1JlZ2lzdGVyLmluZGV4KCkpOyAKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1
bmMtPmluZGV4KCkpOyAKKyAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
ICAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYmIChmdW5jdGlvbkJv
ZHktPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IG1fc2hvdWxkRW1pdERl
YnVnSG9va3MpKSB7CiAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfY29udmVydF90aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHByb2ZpbGUpOwogICAgIH0KIH0KQEAgLTUxMSw2ICs1MDYsNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHCiAgICAgLCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9u
KHRydWUpCiAgICAgLCBtX2ZpcnN0TGF6eUZ1bmN0aW9uKDApCiAgICAgLCBtX2xhc3RMYXp5RnVu
Y3Rpb24oMCkKKyAgICAsIG1fc3RhdGljUHJvcGVydHlBbmFseXplcigmbV9pbnN0cnVjdGlvbnMp
CiAgICAgLCBtX2dsb2JhbERhdGEoJmdsb2JhbERhdGEpCiAgICAgLCBtX2xhc3RPcGNvZGVJRChv
cF9lbmQpCiAjaWZuZGVmIE5ERUJVRwpAQCAtNzUxLDYgKzc0NywxMSBAQCBVbmxpbmtlZEFycmF5
QWxsb2NhdGlvblByb2ZpbGUgQnl0ZWNvZGVHCiAjZW5kaWYKIH0KIAorVW5saW5rZWRPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZSBCeXRlY29kZUdlbmVyYXRvcjo6bmV3T2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKQoreworICAgIHJldHVybiBtX2NvZGVCbG9jay0+YWRkT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKTsKK30KKwogVW5saW5rZWRWYWx1ZVByb2ZpbGUgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlZE9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCkBAIC0xMTExLDYgKzExMTIsOCBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkUmVnRXhwKFJlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKIHsKKyAgICBtX3N0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIubW92KGRzdC0+aW5kZXgoKSwgc3JjLT5pbmRleCgpKTsKKwogICAgIGVtaXRP
cGNvZGUob3BfbW92KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKQEAgLTEzMzMsNyArMTMz
Niw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICAgICAg
cmV0dXJuIGVtaXRHZXRMb2NhbFZhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKIAog
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bf
cmVzb2x2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdl
dFJlc29sdmVPcGVyYXRpb25zKHByb3BlcnR5KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb2ZpbGUpOwpAQCAtMTM0NSw3ICsxMzQ4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXNvbAogICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwgIXJlc29s
dmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAgICAvLyBXZSBjYW4ndCBvcHRpbWlzZSBhdCBhbGwg
Oi0oCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29k
ZShvcF9yZXNvbHZlX2Jhc2UpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChmYWxzZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldFJlc29sdmVCYXNl
T3BlcmF0aW9ucyhwcm9wZXJ0eSkpOwpAQCAtMTM1OSw3ICsxMzYyLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJl
c3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAgICAvLyBXZSBjYW4ndCBvcHRp
bWlzZSBhdCBhbGwgOi0oCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9yZXNvbHZlX2Jhc2UpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHVp
bnQzMl90IHB1dFRvQmFzZUluZGV4ID0gMDsKQEAgLTEzNzQsNyArMTM3Nyw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c29sdmVSZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzUmVnaXN0ZXIoKSk7CiAgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhf
YmFzZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGJhc2VEc3QpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50KHByb3BlcnR5KSk7CiAgICAgdWludDMyX3QgcHV0VG9CYXNlSW5kZXggPSAwOwpA
QCAtMTM5NCw3ICsxMzk3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXNvbAogICAgIH0KIAogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRoX3RoaXMpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChiYXNlRHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChi
YXNlRHN0KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChnZXRSZXNvbHZlV2l0aFRoaXNPcGVyYXRpb25zKHByb3BlcnR5
KSk7CkBAIC0xNDMzLDcgKzE0MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldEJ5CiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChk
c3QpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwpAQCAtMTQ1NiwxMSArMTQ1OSwxNSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CisgICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFk
ZENvbnN0YW50KHByb3BlcnR5KTsKKworICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5wdXRC
eUlkKGJhc2UtPmluZGV4KCksIHByb3BlcnR5SW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPmFk
ZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAogICAg
IGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFz
ZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3Bl
cnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5SW5kZXgpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKQEAgLTE0ODIsMTEgKzE0
ODksMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewor
ICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CisKKyAg
ICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLT5pbmRleCgpLCBwcm9wZXJ0
eUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
KGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlf
aWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKLSAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcGVydHlJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZh
bHVlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwpAQCAtMTUwMCw5ICsxNTExLDEzIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWMKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEdldHRlclNldHRlcihSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogZ2V0dGVyLCBSZWdpc3RlcklEKiBzZXR0ZXIpCiB7CisgICAgdW5z
aWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKKworICAgIG1fc3Rh
dGljUHJvcGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UtPmluZGV4KCksIHByb3BlcnR5SW5kZXgp
OworCiAgICAgZW1pdE9wY29kZShvcF9wdXRfZ2V0dGVyX3NldHRlcik7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChh
ZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0
eUluZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2V0dGVyLT5pbmRleCgpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRleCgpKTsKIH0KQEAgLTE1MjAsNyAr
MTUzNSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIHsKICAg
ICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsK
ICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9w
X2dldF9hcmd1bWVudF9ieV92YWwpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwogICAgIEFTU0VS
VChiYXNlLT5pbmRleCgpID09IG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKQEAgLTE1NDYsNyArMTU2MSw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnkKICAgICB9CiAgICAgVW5saW5rZWRB
cnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxlKCk7CiAgICAgVW5saW5r
ZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfdmFs
KTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFz
ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKQEAgLTE1ODMsMTAg
KzE1OTgsMzMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
cmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVu
YyA9IG5ld1RlbXBvcmFyeSgpOyAKKworICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2NhbGxlZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGZ1bmMtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxl
KTsKKworICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBtX3N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhtX3RoaXNSZWdpc3Rlci5pbmRleCgpLCBi
ZWdpbiArIDMpOworCisgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7IAorICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX3RoaXNSZWdpc3Rlci5pbmRleCgpKTsgCisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0KQogeworICAgIHNpemVfdCBiZWdpbiA9IGlu
c3RydWN0aW9ucygpLnNpemUoKTsKKyAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIubmV3T2Jq
ZWN0KGRzdC0+aW5kZXgoKSwgYmVnaW4gKyAyKTsKKwogICAgIGVtaXRPcGNvZGUob3BfbmV3X29i
amVjdCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuZXdPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNzY3LDEw
ICsxODA1LDggQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdAogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3IpOwog
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVhbENhbGwtPmJpbmQoYmVnaW4sIGluc3Ry
dWN0aW9ucygpLnNpemUoKSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVk
UmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X29iamVjdCk7Ci0gICAg
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgICAgIGVtaXROZXdP
YmplY3QoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE4NjIsNyAr
MTg5OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKICAgICBpZiAoZHN0ICE9IGlnbm9y
ZWRSZXN1bHQoKSkgewogICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1p
dFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7Ci0gICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOyAvLyBkc3QKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGtpbGwoZHN0KSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxl
KTsKICAgICB9CiAgICAgCkBAIC0xODk1LDcgKzE5MzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENhbGxWCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0RnJl
ZVJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewog
ICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KG9wX2NhbGxfcHV0X3Jlc3VsdCk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIH0KICAgICBpZiAobV9z
aG91bGRFbWl0UHJvZmlsZUhvb2tzKSB7CkBAIC0xOTc4LDcgKzIwMTQsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFVubGlua2Vk
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVz
dWx0KTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7IC8vIGRz
dAorICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
cmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiU3ltYm9sVGFibGUuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCisjaW5jbHVkZSAiU3RhdGljUHJvcGVydHlBbmFseXplci5oIgogI2luY2x1ZGUgIlVu
bGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CkBAIC0zODMsNiArMzg0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFcXVhbGl0eU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0VW5hcnlOb0RzdE9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBzcmMpOwog
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUq
LCB1bnNpZ25lZCBsZW5ndGgpOyAvLyBzdG9wcyBhdCBmaXJzdCBlbGlzaW9uCiAKQEAgLTUyMSw4
ICs1MjMsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0T3Bjb2RlKE9w
Y29kZUlEKTsKICAgICAgICAgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlIG5ld0FycmF5
QWxsb2NhdGlvblByb2ZpbGUoKTsKKyAgICAgICAgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSBuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwogICAgICAgICBVbmxpbmtlZEFycmF5
UHJvZmlsZSBuZXdBcnJheVByb2ZpbGUoKTsKICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUg
ZW1pdFByb2ZpbGVkT3Bjb2RlKE9wY29kZUlEKTsKKyAgICAgICAgaW50IGtpbGwoUmVnaXN0ZXJJ
RCogZHN0KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBkc3QtPmluZGV4KCk7
CisgICAgICAgICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIua2lsbChpbmRleCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHJldHJpZXZl
TGFzdEJpbmFyeU9wKGludCYgZHN0SW5kZXgsIGludCYgc3JjMUluZGV4LCBpbnQmIHNyYzJJbmRl
eCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVMYXN0VW5hcnlPcChpbnQmIGRzdEluZGV4LCBpbnQm
IHNyY0luZGV4KTsKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJld2luZEJpbmFyeU9wKCk7
CkBAIC03NzUsNiArNzg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXJS
ZXNvbHZlUHV0TWFwIG1fcmVzb2x2ZUJhc2VGb3JQdXRNYXA7CiAgICAgICAgIElkZW50aWZpZXJS
ZXNvbHZlUHV0TWFwIG1fcmVzb2x2ZVdpdGhCYXNlRm9yUHV0TWFwOwogCisgICAgICAgIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyOworCiAgICAgICAgIEpT
R2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogCiAgICAgICAgIE9wY29kZUlEIG1fbGFzdE9wY29k
ZUlEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXNfaAorI2RlZmlu
ZSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzX2gKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisvLyBSZWZlcmVuY2UgY291bnQgaW5kaWNhdGVzIG51bWJlciBvZiBs
aXZlIHJlZ2lzdGVycyB0aGF0IGFsaWFzIHRoaXMgb2JqZWN0LgorY2xhc3MgU3RhdGljUHJvcGVy
dHlBbmFseXNpcyA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiBj
cmVhdGUoVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+KiBpbnN0cnVjdGlvbnMsIHVuc2lnbmVk
IHRhcmdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljUHJvcGVy
dHlBbmFseXNpcyhpbnN0cnVjdGlvbnMsIHRhcmdldCkpOyAKKyAgICB9CisKKyAgICB2b2lkIGFk
ZFByb3BlcnR5SW5kZXgodW5zaWduZWQgcHJvcGVydHlJbmRleCkgeyBtX3Byb3BlcnR5SW5kZXhl
cy5hZGQocHJvcGVydHlJbmRleCk7IH0KKworICAgIHZvaWQgcmVjb3JkKCkKKyAgICB7CisgICAg
ICAgICgqbV9pbnN0cnVjdGlvbnMpW21fdGFyZ2V0XSA9IG1fcHJvcGVydHlJbmRleGVzLnNpemUo
KTsKKyAgICB9CisKKyAgICBpbnQgcHJvcGVydHlJbmRleENvdW50KCkgeyByZXR1cm4gbV9wcm9w
ZXJ0eUluZGV4ZXMuc2l6ZSgpOyB9CisKK3ByaXZhdGU6CisgICAgU3RhdGljUHJvcGVydHlBbmFs
eXNpcyhWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4qIGluc3RydWN0aW9ucywgdW5zaWduZWQg
dGFyZ2V0KQorICAgICAgICA6IG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKKyAgICAgICAg
LCBtX3RhcmdldCh0YXJnZXQpCisgICAgeworICAgIH0KKworICAgIFZlY3RvcjxVbmxpbmtlZElu
c3RydWN0aW9uPiogbV9pbnN0cnVjdGlvbnM7CisgICAgdW5zaWduZWQgbV90YXJnZXQ7CisgICAg
dHlwZWRlZiBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPiA+IFByb3BlcnR5SW5kZXhTZXQ7
CisgICAgUHJvcGVydHlJbmRleFNldCBtX3Byb3BlcnR5SW5kZXhlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3RhdGljUHJvcGVydHlBbmFseXNpc19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXJfaAorI2RlZmluZSBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyX2gKKworI2luY2x1ZGUgIlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gVXNlZCBmb3Ig
Zmxvdy1pbnNlbnNpdGl2ZSBzdGF0aWMgYW5hbHlzaXMgb2YgdGhlIG51bWJlciBvZiBwcm9wZXJ0
aWVzIGFzc2lnbmVkIHRvIGFuIG9iamVjdC4KKy8vIFdlIHVzZSB0aGlzIGFuYWx5c2lzIHdpdGgg
b3RoZXIgcnVudGltZSBkYXRhIHRvIHByb2R1Y2UgYW4gb3B0aW1pemF0aW9uIGd1ZXNzLiBUaGlz
IGFuYWx5c2lzCisvLyBpcyB1bmRlcnN0b29kIHRvIGJlIGxvc3N5LCBhbmQgaXQncyBPSyBpZiBp
dCB0dXJucyBvdXQgdG8gYmUgd3Jvbmcgc29tZXRpbWVzLgorY2xhc3MgU3RhdGljUHJvcGVydHlB
bmFseXplciB7CitwdWJsaWM6CisgICAgU3RhdGljUHJvcGVydHlBbmFseXplcihWZWN0b3I8VW5s
aW5rZWRJbnN0cnVjdGlvbj4qKTsKKworICAgIHZvaWQgY3JlYXRlVGhpcyhpbnQgZHN0LCB1bnNp
Z25lZCBvZmZzZXRPZklubGluZUNhcGFjaXR5T3BlcmFuZCk7CisgICAgdm9pZCBuZXdPYmplY3Qo
aW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eU9wZXJhbmQpOworICAgIHZv
aWQgcHV0QnlJZChpbnQgZHN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KTsgLy8gcHJvcGVydHlJ
bmRleCBpcyBhbiBpbmRleCBpbnRvIGEgdW5pcXVlZCBzZXQgb2Ygc3RyaW5ncy4KKyAgICB2b2lk
IG1vdihpbnQgZHN0LCBpbnQgc3JjKTsKKworICAgIHZvaWQga2lsbCgpOworICAgIHZvaWQga2ls
bChpbnQgZHN0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGtpbGwoU3RhdGljUHJvcGVydHlBbmFs
eXNpcyopOworCisgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+KiBtX2luc3RydWN0aW9u
czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8U3RhdGljUHJvcGVydHlBbmFseXNp
cz4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PGludD4gPiBBbmFseXNpc01hcDsKKyAgICBBbmFseXNpc01hcCBtX2FuYWx5c2VzOworfTsKKwor
aW5saW5lIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIoVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+KiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2luc3RydWN0
aW9ucyhpbnN0cnVjdGlvbnMpCit7Cit9CisKK2lubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5h
bHl6ZXI6OmNyZWF0ZVRoaXMoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJbmxpbmVDYXBhY2l0
eU9wZXJhbmQpCit7CisgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2Fu
YWx5c2VzLmFkZCgKKyAgICAgICAgZHN0LCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUo
bV9pbnN0cnVjdGlvbnMsIG9mZnNldE9mSW5saW5lQ2FwYWNpdHlPcGVyYW5kKSk7CisgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsgLy8gQ2FuJ3QgaGF2
ZSB0d28gJ3RoaXMnIGluIHRoZSBzYW1lIGNvbnN0cnVjdG9yLgorfQorCitpbmxpbmUgdm9pZCBT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0
T2ZJbmxpbmVDYXBhY2l0eU9wZXJhbmQpCit7CisgICAgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5h
bHlzaXM+IGFuYWx5c2lzID0gU3RhdGljUHJvcGVydHlBbmFseXNpczo6Y3JlYXRlKG1faW5zdHJ1
Y3Rpb25zLCBvZmZzZXRPZklubGluZUNhcGFjaXR5T3BlcmFuZCk7CisgICAgQW5hbHlzaXNNYXA6
OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKKyAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBhbmFseXNpcy5yZWxlYXNlKCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyOjpwdXRCeUlkKGludCBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpCit7
CisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlzaXMgPSBtX2FuYWx5c2VzLmdldChk
c3QpLmdldCgpOworICAgIGlmICghYW5hbHlzaXMpCisgICAgICAgIHJldHVybjsKKyAgICBhbmFs
eXNpcy0+YWRkUHJvcGVydHlJbmRleChwcm9wZXJ0eUluZGV4KTsKK30KKworaW5saW5lIHZvaWQg
U3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92KGludCBkc3QsIGludCBzcmMpCit7CisgICAgUmVm
UHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGFuYWx5c2lzID0gbV9hbmFseXNlcy5nZXQoc3Jj
KTsKKyAgICBpZiAoIWFuYWx5c2lzKSB7CisgICAgICAgIGtpbGwoZHN0KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9h
bmFseXNlcy5hZGQoZHN0LCBhbmFseXNpcyk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRy
eSkgeworICAgICAgICBraWxsKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOworICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYW5hbHlzaXMucmVsZWFzZSgpOworICAg
IH0KK30KKworaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6a2lsbChTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcykKK3sKKyAgICBpZiAoIWFuYWx5c2lzKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCFhbmFseXNpcy0+aGFzT25lUmVmKCkpIC8vIEFsaWFzZXMgZm9y
IHRoaXMgb2JqZWN0IHN0aWxsIGV4aXN0LCBzbyBpdCBtaWdodCBhY3F1aXJlIG1vcmUgcHJvcGVy
dGllcy4KKyAgICAgICAgcmV0dXJuOworICAgIGFuYWx5c2lzLT5yZWNvcmQoKTsKK30KKworaW5s
aW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6a2lsbChpbnQgZHN0KQoreworICAgIC8v
IFdlIG9ic2VydmUga2lsbHMgaW4gb3JkZXIgdG8gYXZvaWQgcGlsaW5nIG9uIHByb3BlcnRpZXMg
dG8gYW4gb2JqZWN0IGFmdGVyCisgICAgLy8gaXRzIGJ5dGVjb2RlIHJlZ2lzdGVyIGhhcyBiZWVu
IHJlY3ljbGVkLgorCisgICAgLy8gQ29uc2lkZXIgdGhlc2UgY2FzZXM6CisKKyAgICAvLyAoMSkg
QWxpYXNlZCB0ZW1wb3JhcnkKKyAgICAvLyB2YXIgbzEgPSB7IG5hbWU6IG5hbWUgfTsKKyAgICAv
LyB2YXIgbzIgPSB7IG5hbWU6IG5hbWUgfTsKKworICAgIC8vICgyKSBBbGlhc2VkIGxvY2FsIC0t
IG5vIGNvbnRyb2wgZmxvdworICAgIC8vIHZhciBsb2NhbDsKKyAgICAvLyBsb2NhbCA9IG5ldyBP
YmplY3Q7CisgICAgLy8gbG9jYWwubmFtZSA9IG5hbWU7CisgICAgLy8gLi4uCisKKyAgICAvLyBs
b2NhbCA9IGxvb2t1cCgpOworICAgIC8vIGxvY2FsLmRpZExvb2t1cCA9IHRydWU7CisgICAgLy8g
Li4uCisKKyAgICAvLyAoMykgQWxpYXNlZCBsb2NhbCAtLSBjb250cm9sIGZsb3cKKyAgICAvLyB2
YXIgbG9jYWw7CisgICAgLy8gaWYgKGNvbmRpdGlvbikKKyAgICAvLyAgICAgbG9jYWwgPSB7IH07
CisgICAgLy8gZWxzZSB7CisgICAgLy8gICAgIGxvY2FsID0gbmV3IE9iamVjdDsKKyAgICAvLyB9
CisgICAgLy8gbG9jYWwubmFtZSA9IG5hbWU7CisKKyAgICAvLyAoTm90ZTogb3VyIGRlZmF1bHQg
Y29kZWdlbiBmb3IgIm5ldyBPYmplY3QiIGxvb2tzIGxpa2UgY2FzZSAoMykuKQorCisgICAgLy8g
Q2FzZSAoMSkgaXMgZWFzeSBiZWNhdXNlIHRlbXBvcmFyaWVzIGFsbW9zdCBuZXZlciBzdXJ2aXZl
IGFjcm9zcyBjb250cm9sIGZsb3cuCisKKyAgICAvLyBDYXNlcyAoMikgYW5kICgzKSBhcmUgaGFy
ZC4gQ2FzZSAoMikgc2hvdWxkIGtpbGwgImxvY2FsIiwgd2hpbGUgY2FzZSAoMykgc2hvdWxkCisg
ICAgLy8gbm90LiBUaGVyZSBpcyBubyBncmVhdCB3YXkgdG8gc29sdmUgdGhlc2UgY2FzZXMgd2l0
aCBzaW1wbGUgc3RhdGljIGFuYWx5c2lzLgorCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIHNpbXBs
ZSBzdGF0aWMgYW5hbHlzaXMsIHdlIGp1c3QgdHJ5IHRvIGNhdGNoIHRoZSBzaW1wbGVzdCBjYXNl
cywKKyAgICAvLyBzbyB3ZSBhY2NlcHQga2lsbHMgdG8gYW55IHJlZ2lzdGVycyBleGNlcHQgZm9y
IHJlZ2lzdGVycyB0aGF0IGhhdmUgbm8gaW5mZXJyZWQKKyAgICAvLyBwcm9wZXJ0aWVzIHlldC4K
KworICAgIEFuYWx5c2lzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5hbHlzZXMuZmluZChkc3QpOwor
ICAgIGlmIChpdCA9PSBtX2FuYWx5c2VzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFpdC0+dmFsdWUtPnByb3BlcnR5SW5kZXhDb3VudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBraWxsKGl0LT52YWx1ZS5nZXQoKSk7CisgICAgbV9hbmFseXNlcy5yZW1vdmUoaXQpOworfQor
CitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpraWxsKCkKK3sKKyAgICB3aGls
ZSAobV9hbmFseXNlcy5zaXplKCkpCisgICAgICAgIGtpbGwobV9hbmFseXNlcy50YWtlKG1fYW5h
bHlzZXMuYmVnaW4oKS0+a2V5KS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gU3RhdGljUHJvcGVydHlBbmFseXplcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNDQsNyArMTM0NCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1
bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIElu
aGVyaXRvcklEV2F0Y2hwb2ludDoKKyAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBicmVhazsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM1LDIwICsyMTM1LDI0IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBBU1NF
UlQoY2VsbC0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5mbykpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjZWxsKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGluaGVyaXRvcklEID0gZnVu
Y3Rpb24tPnRyeUdldEtub3duSW5oZXJpdG9ySUQoKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5o
ZXJpdG9ySUQpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChJbmhlcml0b3JJRFdh
dGNocG9pbnQsIE9wSW5mbyhmdW5jdGlvbikpOwotICAgICAgICAgICAgICAgICAgICBzZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5m
byhpbmhlcml0b3JJRCkpKTsKKyAgICAgICAgICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSogYWxsb2NhdGlvblByb2ZpbGUgPSBmdW5jdGlvbi0+dHJ5R2V0QWxsb2NhdGlvblByb2ZpbGUo
KTsKKyAgICAgICAgICAgICAgICBpZiAoYWxsb2NhdGlvblByb2ZpbGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE9wSW5mbyhm
dW5jdGlvbikpOworICAgICAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3T2JqZWN0
LCBPcEluZm8oYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpOwogICAgICAgICAgICAg
ICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKCFhbHJlYWR5RW1pdHRlZCkKLSAgICAgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChDcmVhdGVU
aGlzLCBjYWxsZWUpKTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDcmVhdGVUaGlzLCBP
cEluZm8oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCksIGNhbGxlZSkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX3RoaXMpOwogICAgICAgICB9Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKLSAgICAgICAgICAgIHNldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZv
KG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3T2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
bmV3X29iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODYsNiArNDg2LDE3IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICBi
b29sIGhhc0lubGluZUNhcGFjaXR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IENy
ZWF0ZVRoaXM7CisgICAgfQorCisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGhhc0lubGluZUNhcGFjaXR5KCkpOworICAgICAgICByZXR1cm4gbV9v
cEluZm87CisgICAgfQorCiAgICAgdm9pZCBzZXRJbmRleGluZ1R5cGUoSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNJbmRleGluZ1R5cGUoKSk7CkBA
IC03MDAsNyArNzExLDcgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChv
cCgpKSB7CiAgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBJbmhlcml0
b3JJRFdhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAg
IG1hY3JvKEluaGVyaXRvcklEV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1h
Y3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCiAgICAgbWFj
cm8oQXJyYXlQdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2Ji
ZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAi
TmFtZUluc3RhbmNlLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogCkBAIC0zNDcsNyAr
MzQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DbwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzT2Jq
ZWN0KGV4ZWMpKTsKIH0KIAotSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRo
aXMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNvbnN0cnVjdG9yKQorSlNDZWxsKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29u
c3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwpAQCAtMzU3LDcgKzM1OCw3IEBAIEpTQ2VsbCog
REZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGkKICAgICBBU1NFUlQoanNDYXN0PEpTRnVu
Y3Rpb24qPihjb25zdHJ1Y3RvciktPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoanND
YXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciksIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVj
dFR5cGVKUyk7CiAjZW5kaWYKICAgICAKLSAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYywganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhY2hlZEluaGVyaXRvcklE
KGV4ZWMpKTsKKyAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywganNDYXN0PEpT
RnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNh
cGFjaXR5KS0+c3RydWN0dXJlKCkpOwogfQogCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04g
KCpDX0RGR09wZQogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlv
bl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElP
TiAoKkNfREZHT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0
eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VJY2YpKEV4ZWNT
dGF0ZSosIElubGluZUNhbGxGcmFtZSopOwordHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04g
KCpDX0RGR09wZXJhdGlvbl9FT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCk7CiB0
eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VTdCkoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKik7CiB0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdP
cGVyYXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJ
T04gKCpEX0RGR09wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CkBAIC0xMjIsNyArMTIz
LDcgQEAgdHlwZWRlZiBTdHJpbmdJbXBsKiBERkdfT1BFUkFUSU9OICgqU3RyXwogCiAvLyBUaGVz
ZSByb3V0aW5lcyBhcmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlv
bnMgb2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQuCiBKU0NlbGwqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSos
IEpTQ2VsbCogY29uc3RydWN0b3IpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogREZHX09QRVJBVElP
TiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvciwg
aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0VGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQWRkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lO
VEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDYsNyArODA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0
Y2hwb2ludDoKICAgICAgICAgY2FzZSBHYXJiYWdlVmFsdWU6Ci0gICAgICAgIGNhc2UgSW5oZXJp
dG9ySURXYXRjaHBvaW50OgorICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dDoKICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURl
ZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMs
NyArMzIzLDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAg
IC8vIE9wdGltaXplIHNlbGYgYWNjZXNzLgogICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFz
ZVZhbHVlKSB7CiAgICAgICAgIGlmICgoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSAhPSBQcm9w
ZXJ0eVNsb3Q6OlZhbHVlKQotICAgICAgICAgICAgfHwgIU1hY3JvQXNzZW1ibGVyOjppc0NvbXBh
Y3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uo
c2xvdC5jYWNoZWRPZmZzZXQoKSkpKSB7CisgICAgICAgICAgICB8fCAhTWFjcm9Bc3NlbWJsZXI6
OmlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG1heE9mZnNldFJlbGF0aXZlVG9QYXRj
aGVkU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSkpIHsKICAgICAgICAgICAgIGRmZ1JlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25H
ZXRCeUlkQnVpbGRMaXN0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NjMsNyAr
MzU2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0
ZUpTQXJyYXkoc3RydWN0dXJlLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsK
KyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0
b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQg
dGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIg
aGF2ZSBwb2ludGVycyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0
ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3MjksMTEgKzM3MjksMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlJlZyBz
aXplR1BSID0gc2l6ZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpKSk7
CkBAIC0zNzQ1LDkgKzM3NDcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1bHRHUFIsIHN0b3JhZ2VHUFIpKTsKICAgICAgICAg
ICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSLCBzdG9yYWdlR1BSKTsKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJheSwgTWFya2VkQmxvY2s6Ok5vbmU+KAotICAg
ICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS5pbmRleGluZ1R5cGUoKSkpLCByZXN1
bHRHUFIsIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgc3RvcmFnZUdQUiwgc2l6ZW9mKEpT
QXJyYXkpLCBzbG93Q2FzZXMpOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihub2RlLmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0
PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BS
LCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CkBAIC0zODA4LDcgKzM4
MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVK
U0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVu
dHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4
aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKG5vZGUuaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1
ZmZlcihub2RlLnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC0zOTE5LDQ1ICszOTIwLDU0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IGFsbG9jYXRv
cih0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgY2Fs
bGVlR1BSID0gY2FsbGVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBHUFJSZWcgYWxsb2NhdG9yR1BSID0gYWxsb2NhdG9yLmdwcigpOwog
ICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAotICAgICAgICAvLyBM
b2FkIHRoZSBpbmhlcml0b3JJRC4gSWYgdGhlIGluaGVyaXRvcklEIGlzIG5vdCBzZXQsIGdvIHRv
IHNsb3cgcGF0aC4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsK
LSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHN0cnVjdHVyZUdQUikpOwotICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRl
SlNGaW5hbE9iamVjdChzdHJ1Y3R1cmVHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1Bh
dGgpOwotICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQ
UikpOworCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVl
R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIHNsb3dQYXRo
LmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBhbGxvY2F0
b3JHUFIpKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0
b3JHUFIsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUiwgc2xvd1Bh
dGgpOworCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0
aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIG5vZGUu
aW5saW5lQ2FwYWNpdHkoKSkpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBJ
bmhlcml0b3JJRFdhdGNocG9pbnQ6IHsKLSAgICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihub2Rl
LmZ1bmN0aW9uKCkpLT5hZGRJbmhlcml0b3JJRFdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRjaHBv
aW50KCkpOworICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAgICAg
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obm9kZS5mdW5jdGlvbigpKS0+YWRkQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50KHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIE5ld09i
amVjdDogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgYWxsb2NhdG9yKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyBhbGxvY2F0b3JHUFIgPSBhbGxvY2F0b3IuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKICAgICAgICAgCi0gICAgICAgIGVtaXRB
bGxvY2F0ZUpTRmluYWxPYmplY3QoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5z
dHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwotICAgICAgICAK
LSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlz
LCBvcGVyYXRpb25OZXdPYmplY3QsIHJlc3VsdEdQUiwgbm9kZS5zdHJ1Y3R1cmUoKSkpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuc3RydWN0dXJlKCk7CisgICAgICAgIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUt
PmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0
ciA9ICZtX2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERl
c3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihhbGxvY2F0b3JQdHIpLCBhbGxvY2F0b3JHUFIpOworICAgICAgICBlbWl0QWxsb2NhdGVK
U09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisKKyAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25O
ZXdPYmplY3QsIHJlc3VsdEdQUiwgc3RydWN0dXJlKSk7CiAgICAgICAgIAogICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3OCw3ICszNDc4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BS
ID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShzdHJ1
Y3R1cmUsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVt
RWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBv
bmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJz
IHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVj
dGl2ZWx5LgpAQCAtMzY0NSwxOSArMzY0NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
MjsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwogICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9y
YWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2NyYXRjaC5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IEludmFsaWRH
UFJSZWc7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobm9kZS5pbmRl
eGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFNjcmF0Y2gy
KHRoaXMsIHNpemUpOwotICAgICAgICAgICAgICAgIHNjcmF0Y2gyLmFkb3B0KHJlYWxTY3JhdGNo
Mik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOwogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJT
RV9BUlJBWV9JTkRFWCkpKTsKQEAgLTM2NjksOSArMzY2Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoCiAg
ICAgICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKHJlc3VsdEdQUiwgc3RvcmFn
ZUdQUikpOwogICAgICAgICAgICAgbV9qaXQuc3ViUHRyKHNjcmF0Y2hHUFIsIHN0b3JhZ2VHUFIp
OwotICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBNYXJrZWRC
bG9jazo6Tm9uZT4oCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLmluZGV4
aW5nVHlwZSgpKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgICAgICBzdG9y
YWdlR1BSLCBzaXplb2YoSlNBcnJheSksIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUuaW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBJbW1QdHIoc3RydWN0dXJlKSwg
c3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwpAQCAt
Mzc2Nyw3ICszNzYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1p
dEFsbG9jYXRlSlNBcnJheShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIs
IG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BS
LCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIEFTU0VSVChpbmRleGluZ1R5cGUgJiBJc0FycmF5KTsKICAgICAgICAg
ICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9k
ZS5zdGFydENvbnN0YW50KCkpOwpAQCAtMzg3MSw0NSArMzg2NCw1NCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9
IGNhbGxlZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIGFsbG9jYXRvckdQUiA9IGFsbG9jYXRvci5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAgICAgICAKLSAgICAgICAgLy8gTG9hZCB0aGUg
aW5oZXJpdG9ySUQuIElmIHRoZSBpbmhlcml0b3JJRCBpcyBub3Qgc2V0LCBnbyB0byBzbG93IHBh
dGguCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVl
R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkNhY2hlZEluaGVyaXRvcklEKCkpLCBzdHJ1Y3R1cmVH
UFIpOworCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICAg
ICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHN0cnVjdHVyZUdQUikpOwotICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5h
bE9iamVjdChzdHJ1Y3R1cmVHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwot
ICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUikpOwor
CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zm
c2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBhbGxvY2F0b3JHUFIp
KTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIs
IHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwor
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIG5vZGUuaW5saW5l
Q2FwYWNpdHkoKSkpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1f
Y29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNl
IEluaGVyaXRvcklEV2F0Y2hwb2ludDogewotICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5v
ZGUuZnVuY3Rpb24oKSktPmFkZEluaGVyaXRvcklEV2F0Y2hwb2ludChzcGVjdWxhdGlvbldhdGNo
cG9pbnQoKSk7CisgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6IHsKKyAgICAg
ICAganNDYXN0PEpTRnVuY3Rpb24qPihub2RlLmZ1bmN0aW9uKCkpLT5hZGRBbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOwogICAgICAgICBub1Jlc3Vs
dChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgTmV3
T2JqZWN0OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSBhbGxvY2F0b3IodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIGFsbG9jYXRvckdQUiA9IGFsbG9jYXRvci5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwotICAgICAgICAKLSAgICAgICAgZW1p
dEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2Rl
LnN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7Ci0gICAgICAg
IAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRo
aXMsIG9wZXJhdGlvbk5ld09iamVjdCwgcmVzdWx0R1BSLCBub2RlLnN0cnVjdHVyZSgpKSk7CisK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLnN0cnVjdHVyZSgpOworICAgICAg
ICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU09iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0
dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3JQdHIgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhv
dXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgYWxsb2NhdG9yR1BSKTsKKyAgICAgICAgZW1pdEFsbG9j
YXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOworCisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uTmV3T2JqZWN0LCByZXN1bHRHUFIsIHN0cnVjdHVyZSkpOwogICAgICAgICAKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEyICs1OSwxNCBAQCBTcGVjdWxh
dGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKCkKICAgICBXVEY6OmRlbGV0ZUFsbFZhbHVlcyhtX3Ns
b3dQYXRoR2VuZXJhdG9ycyk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZUpTQXJyYXkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
dG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykKIHsKICAgICBBU1NFUlQo
aGFzVW5kZWNpZGVkKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSB8fCBoYXNDb250aWd1b3VzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAK
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgIAogICAgIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVtRWxlbWVudHMpOwogICAg
IApAQCAtNzMsMTIgKzc1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNB
cnJheQogICAgIHNsb3dDYXNlcy5hcHBlbmQoCiAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3Rv
cmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpKTsKICAgICBtX2ppdC5zdWJQdHIoVHJ1c3Rl
ZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOwotICAg
IGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJheSwgTWFya2VkQmxvY2s6Ok5vbmU+KAot
ICAgICAgICBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwK
LSAgICAgICAgc3RvcmFnZUdQUiwgc2l6ZW9mKEpTQXJyYXkpLCBzbG93Q2FzZXMpOworICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsK
ICAgICAKLSAgICAvLyBJJ20gYXNzdW1pbmcgdGhhdCB0d28gMzItYml0IHN0b3JlcyBhcmUgYmV0
dGVyIHRoYW4gYSA2NC1iaXQgc3RvcmUuCi0gICAgLy8gSSBoYXZlIG5vIGlkZWEgaWYgdGhhdCdz
IHRydWUuIEFuZCBpdCBwcm9iYWJseSBkb2Vzbid0IG1hdHRlciBhbnl3YXkuCiAgICAgbV9qaXQu
c3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICBt
X2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtOTM4LDYgKzkzOCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRy
dXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXplKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVjdCwgVHJ1c3RlZEltbVB0cihz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlvbl9FUFMgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIo
c2l6ZSkpOwpAQCAtMTMwNSw2ICsxMzEwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19ERkdPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVj
dCwgaW50MzJfdCBzaXplKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKG9iamVjdCwgVHJ1c3RlZEltbVB0cihzaXplKSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlv
bl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRy
dXN0ZWRJbW1QdHIoc2l6ZSkpOwpAQCAtMjEzNSwyNyArMjE0NSwxOSBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICByZXR1cm4gc2xvd1BhdGg7CiAgICAgfQotICAgIAotICAgIC8vIEl0IGlz
IE5PVCBva2F5IGZvciB0aGUgc3RydWN0dXJlIGFuZCB0aGUgc2NyYXRjaCByZWdpc3RlciB0byBi
ZSB0aGUgc2FtZSB0aGluZyBiZWNhdXNlIGlmIHRoZXkgYXJlIHRoZW4gdGhlIFN0cnVjdHVyZSB3
aWxsIAotICAgIC8vIGdldCBjbG9iYmVyZWQuIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFz
c1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSwgdHlwZW5h
bWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+IAotICAgIHZvaWQgZW1pdEFs
bG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgR1BSUmVnIHJlc3Vs
dEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIHNpemVfdCBzaXpl
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQotICAgIHsKLSAgICAgICAgTWFy
a2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwOwotICAgICAgICBpZiAoZGVzdHJ1Y3RvclR5cGUg
PT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKLSAgICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5n
bG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3Io
c2l6ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpJ
bW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAgICAgIGFsbG9jYXRvciA9ICZtX2ppdC5nbG9iYWxE
YXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvcihzaXplKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0
Lmdsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3Rvcihz
aXplKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKCZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVh
ZCwgcmVzdWx0R1BSKTsKKyAgICAvLyBBbGxvY2F0b3IgZm9yIGFuIG9iamVjdCBvZiBhIHNwZWNp
ZmljIHNpemUuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1l
IFN0b3JhZ2VUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BS
IG9yIEltbVB0ci4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KEdQUlJlZyByZXN1bHRH
UFIsIEdQUlJlZyBhbGxvY2F0b3JHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLAorICAgICAg
ICBTdG9yYWdlVHlwZSBzdG9yYWdlLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BSLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9m
RnJlZUxpc3RIZWFkKCkpLCByZXN1bHRHUFIpOwogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBoYXZlIHdo
YXQgd2Uga25vdyBpcyBhIGZyZXNoIG9iamVjdCwgYnV0CiAgICAgICAgIC8vIGl0J3Mgc3RpbGwg
b24gdGhlIEdDJ3MgZnJlZSBsaXN0LgogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiksIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9y
ZVB0cihzY3JhdGNoR1BSLCAmYWxsb2NhdG9yLT5tX2ZyZWVMaXN0LmhlYWQpOworICAgICAgICBt
X2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0
b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCiAgICAg
ICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIFN0cnVjdHVyZS4KICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKQEAgLTIxNjQsMTMgKzIxNjYsMjQgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zdG9yZVB0cihzdG9yYWdlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0
KFQgc3RydWN0dXJlLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICAvLyBDb252ZW5pZW5jZSBhbGxvY2F0
b3IgZm9yIGEgYnVpdC1pbiBvYmplY3QuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlw
ZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+IC8vIFN0cnVj
dHVyZVR5cGUgYW5kIFN0b3JhZ2VUeXBlIGNhbiBiZSBHUFIgb3IgSW1tUHRyLgorICAgIHZvaWQg
ZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1
Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsCisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMSwg
R1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNGaW5hbE9i
amVjdCwgTWFya2VkQmxvY2s6Ok5vbmU+KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BS
LCBUcnVzdGVkSW1tUHRyKDApLCBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShJTkxJTkVf
U1RPUkFHRV9DQVBBQ0lUWSksIHNsb3dQYXRoKTsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IgPSAwOworICAgICAgICBzaXplX3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2NhdGlv
blNpemUoMCk7CisgICAgICAgIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgQ2xh
c3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKKyAgICAgICAgICAgIGFsbG9jYXRvciA9ICZt
X2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvcihzaXplKTsKKyAgICAgICAgZWxzZSBpZiAoQ2xhc3NUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uKQorICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEo
KS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+
aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplKTsKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIxKTsKKyAgICAg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwgc3RydWN0dXJl
LCBzdG9yYWdlLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0KLSAgICAKLSAgICB2b2lk
IGVtaXRBbGxvY2F0ZUpTQXJyYXkoU3RydWN0dXJlKiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVn
IHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKTsKKworICAgIHZvaWQgZW1pdEFsbG9j
YXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQ
UiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkgCiAgICAgSklU
Q29tcGlsZXI6Okp1bXAgY29udmVydFRvRG91YmxlKEdQUlJlZyB2YWx1ZSwgRlBSUmVnIHJlc3Vs
dCwgR1BSUmVnIHRtcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1LDEwICsxNSwxMSBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIH0KIAogY2xhc3MgTWFya2VkQWxsb2NhdG9yIHsKLSAg
ICBmcmllbmQgY2xhc3MgSklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklU
OworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRnJlZUxpc3RIZWFkKCk7CisKICAgICBNYXJrZWRB
bGxvY2F0b3IoKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBjYW5vbmljYWxpemVDZWxs
TGl2ZW5lc3NEYXRhKCk7CkBAIC0zNiw4ICszNyw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFn
ZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQq
IGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90KTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShzaXplX3Qp
OwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKHNpemVfdCk7CkBAIC01Myw2ICs1MiwxMSBA
QCBwcml2YXRlOgogICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOwogfTsKIAoraW5saW5l
IHB0cmRpZmZfdCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkKK3sKKyAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEFsbG9jYXRvciwgbV9mcmVlTGlzdCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoTWFya2VkQmxvY2s6OkZyZWVMaXN0LCBoZWFkKTsKK30KKwogaW5saW5l
IE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKCkKICAgICA6IG1fY3VycmVudEJsb2Nr
KDApCiAgICAgLCBtX2Jsb2Nrc1RvU3dlZXAoMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIEpTU3RhY2s7Cisg
ICAgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNz
IFN0cnVjdHVyZUNoYWluOwogCkBAIC00NTMsOCArNDU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklE
IHZhbHVlVGFnLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFJlZ2lzdGVySUQgc2NyYXRjaDIsIFdyaXRl
QmFycmllck1vZGUsIFdyaXRlQmFycmllclVzZUtpbmQpOwogICAgICAgICB2b2lkIGVtaXRXcml0
ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3Jh
dGNoLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSwg
dHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0
cnVjdHVyZVR5cGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwot
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmpl
Y3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIp
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1Y3R1cmVU
eXBlIGNhbiBiZSBSZWdpc3RlcklEIG9yIEltbVB0ci4KKyAgICAgICAgdm9pZCBlbWl0QWxsb2Nh
dGVKU09iamVjdChSZWdpc3RlcklEIGFsbG9jYXRvciwgU3RydWN0dXJlVHlwZSwgUmVnaXN0ZXJJ
RCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKICAgICAgICAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIHRvIHBy
b2ZpbGUgaXMgaW4gcmVnVDAgYW5kIHRoYXQgcmVnVDMgaXMgYXZhaWxhYmxlIGZvcgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE0MDQ0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTAsMjIgKzMxMCwxNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25z
dGFuCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMp
ICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0Q29u
c3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZGVzdHJ1
Y3RvclR5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFs
bG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVy
ZVR5cGU+CitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlZ2lzdGVySUQg
YWxsb2NhdG9yLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgc2NyYXRjaCkKIHsKLSAgICBzaXplX3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2Nh
dGlvblNpemUoSU5MSU5FX1NUT1JBR0VfQ0FQQUNJVFkpOwotICAgIE1hcmtlZEFsbG9jYXRvciog
YWxsb2NhdG9yID0gMDsKLSAgICBpZiAoZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5v
cm1hbCkKLSAgICAgICAgYWxsb2NhdG9yID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5hbGxvY2F0b3JG
b3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplKTsKLSAgICBlbHNlIGlmIChkZXN0cnVj
dG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCi0gICAgICAgIGFsbG9j
YXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplKTsKLSAgICBlbHNlCi0gICAgICAgIGFsbG9jYXRvciA9
ICZtX2dsb2JhbERhdGEtPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
c2l6ZSk7Ci0gICAgbG9hZFB0cigmYWxsb2NhdG9yLT5tX2ZyZWVMaXN0LmhlYWQsIHJlc3VsdCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKGFsbG9jYXRvciwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRP
ZkZyZWVMaXN0SGVhZCgpKSwgcmVzdWx0KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRy
KFplcm8sIHJlc3VsdCkpOwogCiAgICAgLy8gcmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCksIHN0b3JhZ2VQdHIpOwotICAgIHN0
b3JlUHRyKHN0b3JhZ2VQdHIsICZhbGxvY2F0b3ItPm1fZnJlZUxpc3QuaGVhZCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlc3VsdCksIHNjcmF0Y2gpOworICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFk
ZHJlc3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkp
KTsKIAogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQogICAgIHN0b3Jl
UHRyKHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
KTsKQEAgLTMzNCwxMSArMzI3LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgTWFy
a2VkQmxvYwogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwg
UmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKLXsKLSAgICBlbWl0QWxsb2Nh
dGVCYXNpY0pTT2JqZWN0PEpTRmluYWxPYmplY3QsIE1hcmtlZEJsb2NrOjpOb25lLCBUPihzdHJ1
Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7Ci19Ci0KICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxlKiB2
YWx1ZVByb2ZpbGUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMywxNSArMjEz
LDI1IEBAIHZvaWQgSklUOjplbWl0X29wX2ptcChJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpLCByZWdUMCwgcmVnVDEp
OwotICAgIAotICAgIGVtaXRTdG9yZUNlbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgcmVnVDApOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOworICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGlu
ZUNhcGFjaXR5KCkpOworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJm1fZ2xvYmFs
RGF0YS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9u
U2l6ZSk7CisKKyAgICBSZWdpc3RlcklEIHJlc3VsdFJlZyA9IHJlZ1QwOworICAgIFJlZ2lzdGVy
SUQgYWxsb2NhdG9yUmVnID0gcmVnVDE7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVn
VDI7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgYWxsb2NhdG9yUmVnKTsK
KyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JSZWcsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICBlbWl0U3RvcmVDZWxsKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3VsdFJlZyk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KS5jYWxsKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVz
dGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxl
LT5zdHJ1Y3R1cmUoKSkpOworICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTE2MSwyMiArMTE3MSwyOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uCiB2b2lkIEpJVDo6ZW1pdF9v
cF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGlu
dCBjYWxsZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGVtaXRMb2Fk
UGF5bG9hZChjYWxsZWUsIHJlZ1QwKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVu
Y3Rpb246Om9mZnNldE9mQ2FjaGVkSW5oZXJpdG9ySUQoKSksIHJlZ1QyKTsKLSAgICBhZGRTbG93
Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QyKSk7Ci0gICAgCi0gICAgLy8gbm93IHJlZ1Qy
IGNvbnRhaW5zIHRoZSBpbmhlcml0b3JJRCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB0aGF0IHRo
ZSBuZXdseQotICAgIC8vIGFsbG9jYXRlZCBvYmplY3Qgd2lsbCBoYXZlLgotICAgIAotICAgIGVt
aXRBbGxvY2F0ZUpTRmluYWxPYmplY3QocmVnVDIsIHJlZ1QwLCByZWdUMSk7Ci0gICAgZW1pdFN0
b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgUmVn
aXN0ZXJJRCBjYWxsZWVSZWcgPSByZWdUMDsKKyAgICBSZWdpc3RlcklEIHJlc3VsdFJlZyA9IHJl
Z1QwOworICAgIFJlZ2lzdGVySUQgYWxsb2NhdG9yUmVnID0gcmVnVDE7CisgICAgUmVnaXN0ZXJJ
RCBzdHJ1Y3R1cmVSZWcgPSByZWdUMjsKKyAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWcgPSByZWdU
MzsKKworICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIGNhbGxlZVJlZyk7CisgICAgbG9hZFB0
cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmls
ZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxv
Y2F0b3JSZWcpOworICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVSZWcsIEpTRnVuY3Rpb246Om9m
ZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZz
ZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hU
ZXN0UHRyKFplcm8sIGFsbG9jYXRvclJlZykpOworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Qo
YWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CisgICAg
ZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHRSZWcp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBpbmhlcml0b3Ig
SUQKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9u
IHByb2ZpbGUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCisK
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOworICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxNSArOTUsMjUgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfam1wKEluc3RydWN0aW9uKiBjdXJyZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2Jq
ZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdEFsbG9jYXRl
SlNGaW5hbE9iamVjdChUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlZ1QwLCByZWdUMSk7Ci0gICAgCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS0+c3RydWN0dXJlKCk7CisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNPYmpl
Y3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgTWFy
a2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRvckZv
ck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgIFJlZ2lzdGVy
SUQgcmVzdWx0UmVnID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCBhbGxvY2F0b3JSZWcgPSByZWdU
MTsKKyAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWcgPSByZWdUMjsKKworICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhbGxvY2F0b3IpLCBhbGxvY2F0b3JSZWcpOworICAgIGVtaXRBbGxvY2F0ZUpTT2Jq
ZWN0KGFsbG9jYXRvclJlZywgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCByZXN1bHRSZWcsIHNj
cmF0Y2hSZWcpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KS5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0
KTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpOworICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtOTIyLDIyICs5MzIsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxl
ZShJbnN0cnVjdGlvbgogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVn
VDApOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNo
ZWRJbmhlcml0b3JJRCgpKSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIo
WmVybywgcmVnVDIpKTsKLSAgICAKLSAgICAvLyBub3cgcmVnVDIgY29udGFpbnMgdGhlIGluaGVy
aXRvcklELCB3aGljaCBpcyB0aGUgc3RydWN0dXJlIHRoYXQgdGhlIG5ld2x5Ci0gICAgLy8gYWxs
b2NhdGVkIG9iamVjdCB3aWxsIGhhdmUuCi0gICAgCi0gICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9i
amVjdChyZWdUMiwgcmVnVDAsIHJlZ1QxKTsKKyAgICBSZWdpc3RlcklEIGNhbGxlZVJlZyA9IHJl
Z1QwOworICAgIFJlZ2lzdGVySUQgcmVzdWx0UmVnID0gcmVnVDA7CisgICAgUmVnaXN0ZXJJRCBh
bGxvY2F0b3JSZWcgPSByZWdUMTsKKyAgICBSZWdpc3RlcklEIHN0cnVjdHVyZVJlZyA9IHJlZ1Qy
OworICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9IHJlZ1QzOworCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihjYWxsZWUsIGNhbGxlZVJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxl
ZVJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mQWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgp
KSwgc3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFs
bG9jYXRvclJlZykpOworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBz
dHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gaW5oZXJpdG9yIElECisgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAorCiAgICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV90aGlzKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAg
IHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNDA0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAi
TGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTkzMSwxMCArOTMyLDkg
QEAgTkVWRVJfSU5MSU5FIHN0YXRpYyB2b2lkIHRyeUNhY2hlR2V0QnlJRAogICAgIC8vIENhY2hl
IGhpdDogU3BlY2lhbGl6ZSBpbnN0cnVjdGlvbiBhbmQgcmVmIFN0cnVjdHVyZXMuCiAKICAgICBp
ZiAoc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewotICAgICAgICAvLyBzZXQgdGhpcyB1
cCwgc28gZGVyZWZTdHJ1Y3R1cmVzIGNhbiBkbyBpdCdzIGpvYi4KICAgICAgICAgc3R1YkluZm8t
PmluaXRHZXRCeUlkU2VsZihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgaWYgKChzbG90LmNhY2hlZFByb3Bl
cnR5VHlwZSgpICE9IFByb3BlcnR5U2xvdDo6VmFsdWUpCi0gICAgICAgICAgICB8fCAhTWFjcm9B
c3NlbWJsZXI6OmlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG9mZnNldFJlbGF0aXZl
VG9QYXRjaGVkU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSkpCisgICAgICAgICAgICB8fCAh
TWFjcm9Bc3NlbWJsZXI6OmlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG1heE9mZnNl
dFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSkpCiAgICAgICAg
ICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2NrLCByZXR1cm5BZGRyZXNz
LCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoY29kZUJsb2NrLCBzdHViSW5mbywg
c3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCByZXR1cm5BZGRyZXNzKTsKQEAgLTEzMDAs
NiArMTMwMCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KIHsK
ICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKKyAgICBzaXplX3QgaW5saW5lQ2FwYWNp
dHkgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogICAgIEpTRnVuY3Rpb24qIGNvbnN0
cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECkBAIC0xMzA3LDcgKzEzMDgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJs
ZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25z
dHJ1Y3RUeXBlSlMpOwogI2VuZGlmCiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0
cnVjdG9yLT5jYWNoZWRJbmhlcml0b3JJRChjYWxsRnJhbWUpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY29uc3RydWN0b3ItPmFsbG9jYXRpb25Qcm9maWxlKGNhbGxGcmFtZSwgaW5saW5l
Q2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGNhbGxGcmFtZSwgc3RydWN0dXJlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTEzOTUsNyArMTM5Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KEpTT2JqZWN0Kiwgb3BfbmV3X28KIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7CiAKLSAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3Qoc3RhY2tGcmFtZS5jYWxs
RnJhbWUpOworICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChzdGFja0ZyYW1lLmNhbGxG
cmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLnN0cnVjdHVyZSgpKTsKIH0KIAogREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkX2dlbmVyaWMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw5ICsxMDgsOSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0CiAg
ICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBBU1NFUlQoSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEFT
U0VSVCgmZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9y
KEpTT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSkpIC0gJmds
b2JhbERhdGEuaGVhcC5maXJzdEFsbG9jYXRvcldpdGhvdXREZXN0cnVjdG9ycygpID09IDEpOwor
ICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0
cnVjdG9yKEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKEpTRmluYWxPYmplY3Q6OmRlZmF1
bHRJbmxpbmVDYXBhY2l0eSgpKSkgLSAmZ2xvYmFsRGF0YS5oZWFwLmZpcnN0QWxsb2NhdG9yV2l0
aG91dERlc3RydWN0b3JzKCkgPT0gMSk7CiAjZWxzZQotICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5o
ZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKEpTT2JqZWN0OjphbGxvY2F0
aW9uU2l6ZShJTkxJTkVfU1RPUkFHRV9DQVBBQ0lUWSkpIC0gJmdsb2JhbERhdGEuaGVhcC5maXJz
dEFsbG9jYXRvcldpdGhvdXREZXN0cnVjdG9ycygpID09IDMpOworICAgIEFTU0VSVCgmZ2xvYmFs
RGF0YS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKEpTRmluYWxPYmpl
Y3Q6OmFsbG9jYXRpb25TaXplKEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgp
KSkgLSAmZ2xvYmFsRGF0YS5oZWFwLmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkg
PT0gMyk7CiAjZW5kaWYKICAgICBBU1NFUlQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPT0g
MHg0MDAwMDAwMCk7CiAgICAgQVNTRVJUKEdsb2JhbENvZGUgPT0gMCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE0
MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMTEludENvbW1vbi5o
IgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtNDgzLDgg
KzQ4NCw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGgKICAgICBD
b25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRo
b2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9
PSBDb25zdHJ1Y3RUeXBlSlMpOwogI2VuZGlmCi0gICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBjb25zdHJ1Y3Rvci0+Y2FjaGVkSW5oZXJpdG9ySUQoZXhlYyk7CisKKyAgICBzaXplX3Qg
aW5saW5lQ2FwYWNpdHkgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBjb25zdHJ1Y3Rvci0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkp
LT5zdHJ1Y3R1cmUoKTsKICAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yywgc3RydWN0dXJlKSk7CiB9CiAKQEAgLTUwMyw3ICs1MDUsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY29udmVydF90CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X29iamVjdCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMsIHBjWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgp
KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTM2MSwxNyArMzYxLDE4IEBAIF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2NhY2hlZEluaGVyaXRvcklEW3Qw
XSwgdDIKLSAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdwotICAgIGFsbG9jYXRlQmFzaWNK
U09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIHQyLCB0MCwgdDEsIHQzLCAub3BD
cmVhdGVUaGlzU2xvdykKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2FsbG9jYXRpb25Qcm9maWxl
ICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fYWxsb2NhdG9yW3QwXSwgdDEKKyAgICBsb2Fk
cCBKU0Z1bmN0aW9uOjptX2FsbG9jYXRpb25Qcm9maWxlICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBidHB6IHQxLCAub3BDcmVhdGVUaGlzU2xvdwor
ICAgIGFsbG9jYXRlSlNPYmplY3QodDEsIHQyLCB0MCwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQog
ICAgIGxvYWRpIDRbUENdLCB0MQogICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNw
YXRjaCgzKQorICAgIGRpc3BhdGNoKDQpCiAKIC5vcENyZWF0ZVRoaXNTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDMpCisg
ICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfZ2V0X2NhbGxlZToKQEAgLTQwMywxOCArNDA0
LDE4IEBAIF9sbGludF9vcF9jb252ZXJ0X3RoaXM6CiAKIF9sbGludF9vcF9uZXdfb2JqZWN0Ogog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKLSAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBKU0dsb2Jh
bE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCi0gICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgdDEsIHQwLCB0MiwgdDMsIC5v
cE5ld09iamVjdFNsb3cpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCisgICAgbG9h
ZHAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fYWxsb2NhdG9yW3QwXSwgdDEKKyAgICBsb2Fk
cCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGFsbG9j
YXRlSlNPYmplY3QodDEsIHQyLCB0MCwgdDMsIC5vcE5ld09iamVjdFNsb3cpCiAgICAgbG9hZGkg
NFtQQ10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpCisg
ICAgZGlzcGF0Y2goNCkKIAogLm9wTmV3T2JqZWN0U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KQotICAgIGRpc3BhdGNoKDIpCisgICAgZGlzcGF0Y2go
NCkKIAogCiBfbGxpbnRfb3BfbW92OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE0MDQ0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsMTYgKzI0MywxNyBAQCBfbGxpbnRfb3BfY3JlYXRlX3Ro
aXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0
MCkKICAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9j
YWNoZWRJbmhlcml0b3JJRFt0MF0sIHQyCi0gICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cK
LSAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCB0
MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6
bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX2FsbG9jYXRv
clt0MF0sIHQxCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYnRweiB0MSwg
Lm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUpTT2JqZWN0KHQxLCB0MiwgdDAsIHQzLCAu
b3BDcmVhdGVUaGlzU2xvdykKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDQp
CiAKIC5vcENyZWF0ZVRoaXNTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2NyZWF0ZV90aGlzKQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxp
bnRfb3BfZ2V0X2NhbGxlZToKQEAgLTI4MywxNyArMjg0LDE3IEBAIF9sbGludF9vcF9jb252ZXJ0
X3RoaXM6CiAKIF9sbGludF9vcF9uZXdfb2JqZWN0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0
cnVjdHVyZVt0MF0sIHQxCi0gICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RT
aXplQ2xhc3NJbmRleCwgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9h
ZHBGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCisgICAgbG9hZHAgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om1fYWxsb2NhdG9yW3QwXSwgdDEKKyAgICBsb2FkcCBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGFsbG9jYXRlSlNPYmplY3QodDEsIHQyLCB0MCwg
dDMsIC5vcE5ld09iamVjdFNsb3cpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQog
ICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRj
aCg0KQogCiAub3BOZXdPYmplY3RTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX25ld19vYmplY3QpCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9s
bGludF9vcF9tb3Y6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTM2OSwzMiArMzY5LDIxIEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmls
ZUFyZ1MKIC5zdGFja0hlaWdodE9LOgogZW5kCiAKLW1hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVj
dChzaXplQ2xhc3NJbmRleCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwg
c2xvd0Nhc2UpCittYWNybyBhbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvciwgc3RydWN0dXJlLCBy
ZXN1bHQsIHNjcmF0Y2gxLCBzbG93Q2FzZSkKICAgICBpZiBBTFdBWVNfQUxMT0NBVEVfU0xPVwog
ICAgICAgICBqbXAgc2xvd0Nhc2UKICAgICBlbHNlCi0gICAgICAgIGNvbnN0IG9mZnNldE9mTXlT
aXplQ2xhc3MgPQotICAgICAgICAgICAgSlNHbG9iYWxEYXRhOjpoZWFwICsKLSAgICAgICAgICAg
IEhlYXA6Om1fb2JqZWN0U3BhY2UgKwotICAgICAgICAgICAgTWFya2VkU3BhY2U6Om1fbm9ybWFs
U3BhY2UgKwotICAgICAgICAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlOjpwcmVjaXNlQWxsb2Nh
dG9ycyArCi0gICAgICAgICAgICBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRBbGxvY2F0
b3IKLSAgICAgICAgCiAgICAgICAgIGNvbnN0IG9mZnNldE9mRmlyc3RGcmVlQ2VsbCA9IAogICAg
ICAgICAgICAgTWFya2VkQWxsb2NhdG9yOjptX2ZyZWVMaXN0ICsgCiAgICAgICAgICAgICBNYXJr
ZWRCbG9jazo6RnJlZUxpc3Q6OmhlYWQKIAotICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRo
ZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KLSAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKLSAgICAgICAgCiAgICAgICAgICMgR2V0IHRoZSBv
YmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgIAotICAgICAgICBsb2FkcCBvZmZzZXRPZk15U2l6
ZUNsYXNzICsgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgICAg
IGxvYWRwIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFthbGxvY2F0b3JdLCByZXN1bHQKICAgICAgICAg
YnRweiByZXN1bHQsIHNsb3dDYXNlCiAgICAgICAgIAogICAgICAgICAjIFJlbW92ZSB0aGUgb2Jq
ZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KLSAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gy
Ci0gICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIG9mZnNldE9m
Rmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKyAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gx
CisgICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRv
cl0KICAgICAKICAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCiAgICAgICAgIHN0b3Jl
cCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlLmNwcAkocmV2
aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
UHJvZmlsZXJCeXRlY29kZS5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9u
IDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVj
b2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0
cmluZ1ByaW50U3RyZWFtLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDE0MDQ0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyQ29t
cGlsYXRpb24uaCIKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyQ29tcGlsZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxlZEJ5dGVj
b2RlLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFByb2ZpbGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiSlNPTk9iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVy
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ck9TUkV4aXQuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhpdC5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHAJ
KHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlck9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJQcm9maWxlck9yaWdpbi5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJQcm9maWxlckJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0
ZWNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyUHJvZmls
ZWRCeXRlY29kZXMuaCIKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NzgsNyAr
Nzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIDogQmFzZShnbG9iYWxEYXRhLCBzY29w
ZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3RydWN0dXJlKCkpCiAgICAgICAgICwgbV9leGVj
dXRhYmxlKGdsb2JhbERhdGEsIHRoaXMsIGV4ZWN1dGFibGUpCiAgICAgICAgICwgbV9zY29wZShn
bG9iYWxEYXRhLCB0aGlzLCBzY29wZSkKLSAgICAgICAgLCBtX2luaGVyaXRvcklEV2F0Y2hwb2lu
dChJbml0aWFsaXplZEJsaW5kKSAvLyBTZWUgY29tbWVudCBpbiBKU0Z1bmN0aW9uLmNwcCBjb25j
ZXJuaW5nIHRoZSByZWFzb24gZm9yIHVzaW5nIEluaXRpYWxpemVkQmxpbmQgYXMgb3Bwb3NlZCB0
byBJbml0aWFsaXplZFdhdGNoaW5nLgorICAgICAgICAsIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50KEluaXRpYWxpemVkQmxpbmQpIC8vIFNlZSBjb21tZW50IGluIEpTRnVuY3Rpb24uY3Bw
IGNvbmNlcm5pbmcgdGhlIHJlYXNvbiBmb3IgdXNpbmcgSW5pdGlhbGl6ZWRCbGluZCBhcyBvcHBv
c2VkIHRvIEluaXRpYWxpemVkV2F0Y2hpbmcuCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMTQw
NDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBo
ZWFwLCBzaXplX3Qgc2kKICAgICBKU0NlbGwqIHJlc3VsdCA9IDA7CiAgICAgaWYgKFQ6Om5lZWRz
RGVzdHJ1Y3Rpb24gJiYgVDo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUpCiAgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yKHNpemUpKTsKLSAgICBlbHNlIGlmIChUOjpuZWVkc0Rlc3RydWN0aW9uICYmICFU
OjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKKyAgICBlbHNlIGlmIChUOjpuZWVkc0Rlc3RydWN0aW9u
KQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlV2l0
aE5vcm1hbERlc3RydWN0b3Ioc2l6ZSkpOwogICAgIGVsc2UgCiAgICAgICAgIHJlc3VsdCA9IHN0
YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAko
cmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgpAQCAtODgsMTIgKzg5LDEyIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCAKICAgICAvLyB0aGUgb3B0aW1pemVyIGtpY2tzIGluIGRvbid0IGRpc2FibGUgb3B0
aW1pemF0aW9ucy4gT25jZSB0aGUgb3B0aW1pemVyIGtpY2tzIGluLCB0aGUKICAgICAvLyB3YXRj
aHBvaW50IHdpbGwgc3RhcnQgd2F0Y2hpbmcgYW5kIGFueSBjaGFuZ2VzIHdpbGwgYm90aCBmb3Jj
ZSBkZW9wdGltaXphdGlvbiBhbmQgZGlzYWJsZQogICAgIC8vIGZ1dHVyZSBhdHRlbXB0cyB0byBv
cHRpbWl6ZS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0
IHRoZQotICAgIC8vIGluaGVyaXRvcklEIGlzIGNoYW5nZWQgZXhhY3RseSBvbmNlIHByaW9yIHRv
IG9wdGltaXphdGlvbnMga2lja2luZyBpbi4gV2UgY291bGQgYmUKKyAgICAvLyBhbGxvY2F0aW9u
IHByb2ZpbGUgaXMgY2hhbmdlZCBleGFjdGx5IG9uY2UgcHJpb3IgdG8gb3B0aW1pemF0aW9ucyBr
aWNraW5nIGluLiBXZSBjb3VsZCBiZQogICAgIC8vIHNtYXJ0ZXIgYW5kIGNvdW50IHRoZSBudW1i
ZXIgb2YgdGltZXMgdGhlIHByb3RvdHlwZSBpcyBjbG9iYmVyZWQgYW5kIG9ubHkgb3B0aW1pemUg
aWYgaXQKICAgICAvLyB3YXMgY2xvYmJlcmVkIGV4YWN0bHkgb25jZSwgYnV0IHRoYXQgc2VlbXMg
bGlrZSBvdmVya2lsbC4gSW4gYWxtb3N0IGFsbCBjYXNlcyBpdCB3aWxsIGJlCiAgICAgLy8gY2xv
YmJlcmVkIG9uY2UsIGFuZCBpZiBpdCdzIGNsb2JiZXJlZCBtb3JlIHRoYW4gb25jZSwgdGhhdCB3
aWxsIHByb2JhYmx5IG9ubHkgb2NjdXIKICAgICAvLyBiZWZvcmUgd2Ugc3RhcnRlZCBvcHRpbWl6
aW5nLCBhbnl3YXkuCi0gICAgLCBtX2luaGVyaXRvcklEV2F0Y2hwb2ludChJbml0aWFsaXplZEJs
aW5kKQorICAgICwgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQoSW5pdGlhbGl6ZWRCbGlu
ZCkKIHsKIH0KIApAQCAtMTA2LDE1ICsxMDcsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdAogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAotU3RydWN0dXJlKiBKU0Z1bmN0aW9uOjpjYWNoZUlu
aGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhlYykKK09iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1
bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSkKIHsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5n
bG9iYWxEYXRhKCk7Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnZXQoZXhlYywgZ2xvYmFsRGF0
YS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3Qo
KSkKLSAgICAgICAgbV9jYWNoZWRJbmhlcml0b3JJRC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2xv
YmFsRGF0YS5wcm90b3R5cGVNYXAuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoYXNP
YmplY3QocHJvdG90eXBlKSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9jYWNoZWRJbmhlcml0b3JJ
RC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2xvYmFsRGF0YS5wcm90b3R5cGVNYXAuZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoZ2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgp
KSk7Ci0gICAgcmV0dXJuIG1fY2FjaGVkSW5oZXJpdG9ySUQuZ2V0KCk7CisgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZ2xvYmFsRGF0
YS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKKyAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAg
ICAgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpOworICAgIG1f
YWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZShnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gJm1fYWxsb2Nh
dGlvblByb2ZpbGU7CiB9CiAKIFN0cmluZyBKU0Z1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhl
YykKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjCiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkSW5oZXJpdG9ySUQpOworICAgIHRoaXNPYmplY3Qt
Pm1fYWxsb2NhdGlvblByb2ZpbGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAKIENhbGxU
eXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxE
YXRhKQpAQCAtMjIxLDEyICsyMjEsMTMgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKLSAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlz
T2JqZWN0LT5nZXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICBwcm90b3R5cGUt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgdGhpc09iamVjdCwgRG9udEVudW0pOwotICAgICAgICAgICAgdGhpc09iamVjdC0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwotICAgICAgICAgICAgb2Zm
c2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSk7CisgICAgICAgICAgICBKU09iamVjdCogcHJv
dG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBwcm90b3R5
cGUtPnB1dERpcmVjdChnbG9iYWxEYXRhLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0
b3IsIHRoaXNPYmplY3QsIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERp
cmVjdChnbG9iYWxEYXRhLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5
cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CisgICAgICAgICAgICBvZmZzZXQgPSB0aGlzT2Jq
ZWN0LT5nZXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSk7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAg
ICAgICAgfQogCkBAIC0zNTUsOSArMzU2LDkgQEAgdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4g
RUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fY2FjaGVkSW5o
ZXJpdG9ySUQuY2xlYXIoKTsKLSAgICAgICAgdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRFdhdGNo
cG9pbnQubm90aWZ5V3JpdGUoKTsKLSAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBj
YWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fY2FjaGVkSW5oZXJpdG9ySUQuCisg
ICAgICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGUuY2xlYXIoKTsKKyAgICAgICAg
dGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQubm90aWZ5V3JpdGUoKTsK
KyAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRd
XSBtdXN0IGNsZWFyIG1fYWxsb2NhdGlvblByb2ZpbGUuCiAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBkb250Q2FjaGU7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwogICAgICAgICByZXR1cm47CkBAIC00MDIsOCArNDAz
LDggQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAgICAgICAv
LyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Ci0gICAgICAgIHRoaXNPYmplY3QtPm1fY2FjaGVkSW5oZXJpdG9ySUQuY2xlYXIoKTsKLSAgICAg
ICAgdGhpc09iamVjdC0+bV9pbmhlcml0b3JJRFdhdGNocG9pbnQubm90aWZ5V3JpdGUoKTsKKyAg
ICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOworICAgICAgICB0
aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgpOwog
ICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKICAgICB9CiAKQEAgLTQ2OSw3
ICs0NzAsNiBAQCBDb25zdHJ1Y3RUeXBlIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhCiAgICAg
Y29uc3RydWN0RGF0YS5qcy5zY29wZSA9IHRoaXNPYmplY3QtPnNjb3BlKCk7CiAgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGVKUzsKIH0KLSAgICAKIAogU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5
TmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIG9iamVjdCkKIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDE0MDQ0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIK
KyNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMTYsNDEgKzExNyw0MiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgc2l6ZV90IG9m
ZnNldE9mU2NvcGVDaGFpbigpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNl
dE9mU2NvcGVDaGFpbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
aW5saW5lIHNpemVfdCBvZmZzZXRPZkV4ZWN1dGFibGUoKQorICAgICAgICBzdGF0aWMgaW5saW5l
IHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fZXhlY3V0YWJsZSk7CiAgICAgICAg
IH0KIAotICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZEluaGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhl
YykKKyAgICAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBbGxvY2F0aW9uUHJv
ZmlsZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbV9jYWNoZWRJbmhl
cml0b3JJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlSW5oZXJpdG9ySUQoZXhlYyk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9jYWNoZWRJbmhlcml0b3JJRC5nZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9hbGxvY2F0aW9uUHJvZmls
ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJ1Y3R1cmUqIHRyeUdldEtub3duSW5oZXJpdG9y
SUQoKQorICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2NhY2hlZEluaGVyaXRvcklEKQorICAgICAgICAgICAgaWYgKFVOTElL
RUxZKG1fYWxsb2NhdGlvblByb2ZpbGUuaXNOdWxsKCkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAg
ICAgICBBU1NFUlQoaW5saW5lQ2FwYWNpdHkgPD0gbV9hbGxvY2F0aW9uUHJvZmlsZS5zdHJ1Y3R1
cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fYWxsb2NhdGlv
blByb2ZpbGU7CisgICAgICAgIH0KKworICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSog
dHJ5R2V0QWxsb2NhdGlvblByb2ZpbGUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9h
bGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgICAgIGlmIChtX2luaGVyaXRvcklEV2F0Y2hwb2ludC5oYXNCZWVuSW52YWxpZGF0ZWQo
KSkKKyAgICAgICAgICAgIGlmIChtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5oYXNCZWVu
SW52YWxpZGF0ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHJl
dHVybiBtX2NhY2hlZEluaGVyaXRvcklELmdldCgpOworICAgICAgICAgICAgcmV0dXJuICZtX2Fs
bG9jYXRpb25Qcm9maWxlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGFkZElu
aGVyaXRvcklEV2F0Y2hwb2ludChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQodHJ5R2V0S25vd25Jbmhlcml0b3JJRCgpKTsKLSAgICAgICAgICAg
IG1faW5oZXJpdG9ySURXYXRjaHBvaW50LmFkZCh3YXRjaHBvaW50KTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgpCisgICAgICAg
IHZvaWQgYWRkQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9p
bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5j
dGlvbiwgbV9jYWNoZWRJbmhlcml0b3JJRCk7CisgICAgICAgICAgICBBU1NFUlQodHJ5R2V0QWxs
b2NhdGlvblByb2ZpbGUoKSk7CisgICAgICAgICAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludC5hZGQod2F0Y2hwb2ludCk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTE2
Miw3ICsxNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKICAgICAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CiAKLSAgICAgICAg
U3RydWN0dXJlKiBjYWNoZUluaGVyaXRvcklEKEV4ZWNTdGF0ZSopOworICAgICAgICBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZSogY3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiwgc2l6
ZV90IGlubGluZUNhcGFjaXR5KTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTE4Nyw4
ICsxODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0
YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1f
c2NvcGU7Ci0gICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkSW5oZXJpdG9y
SUQ7Ci0gICAgICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9pbmhlcml0b3JJRFdhdGNocG9pbnQ7
CisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIG1fYWxsb2NhdGlvblByb2ZpbGU7Cisg
ICAgICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNDA0NDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMyw4ICsyMjMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChK
U1ZhbHVlIHByb3RvCiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX3dpdGhTY29w
ZVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU1dpdGhTY29wZTo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxsKCkpKTsKIAotICAg
IG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xv
YmFsRGF0YSgpLnByb3RvdHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSht
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwotICAgIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVj
dHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoZ2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSkpOworICAgIG1fbnVsbFByb3Rv
dHlwZU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0ZpbmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSgpLCB0aGlzLCBqc051bGwoKSwgSlNG
aW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKTsKIAogICAgIG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNr
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CkBAIC01MTMsNyAr
NTEyLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tP
YmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGF0ZVN0
cnVjdHVyZTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lbXB0eU9iamVjdFN0
cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udWxsUHJvdG90eXBl
T2JqZWN0U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9y
U3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3Ry
dWN0dXJlOwpAQCAtMzAzLDcgKzMwMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBjYWxsYmFj
a09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICAgICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRlU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZW1wdHlP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgICAgIFN0cnVjdHVyZSogbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clN0cnVjdHVyZS5nZXQoKTsgfQogICAgICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpAQCAtNTE0LDE2
ICs1MTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEoKS5k
eW5hbWljR2xvYmFsT2JqZWN0OwogICAgIH0KIAotICAgIGlubGluZSBKU09iamVjdCogY29uc3Ry
dWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgfQotCi0gICAgaW5saW5l
IEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewot
ICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1w
dHlBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSAw
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxh
c3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpTQXJyYXk6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGluaXRpYWxMZW5ndGggPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCA/IGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aEFycmF5U3RvcmFnZSkgOiBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9yUHJvZmlsZUR1
cmluZ0FsbG9jYXRpb24ocHJvZmlsZSksIGluaXRpYWxMZW5ndGgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiAxNDA0NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkxvY2FsLmgiCiAjaW5jbHVkZSAi
TG9jYWxTY29wZS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTU5
LDcgKzk1OSw2IEBAIHByb3RlY3RlZDoKICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OwogfTsK
IAotCiAvLyBKU05vbkZpbmFsT2JqZWN0IGlzIGEgdHlwZSBvZiBKU09iamVjdCB0aGF0IGhhcyBz
b21lIGludGVybmFsIHN0b3JhZ2UsCiAvLyBidXQgYWxzbyBwcmVzZXJ2ZXMgc29tZSBzcGFjZSBp
biB0aGUgY29sbGVjdG9yIGNlbGwgZm9yIGFkZGl0aW9uYWwKIC8vIGRhdGEgbWVtYmVycyBpbiBk
ZXJpdmVkIHR5cGVzLgpAQCAtOTk4LDEwICs5OTcsMjIgQEAgY2xhc3MgSlNGaW5hbE9iamVjdCA6
IHB1YmxpYyBKU09iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOwog
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRTaXplID0gNjQ7CisgICAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIChkZWZhdWx0U2l6ZSAtIGFsbG9jYXRpb25TaXplKDApKSAvIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhT
aXplID0gNTEyOworICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbWF4SW5saW5lQ2FwYWNpdHko
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtYXhTaXplIC0gYWxsb2NhdGlvblNpemUoMCkpIC8g
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCiAgICAgc3RhdGljIEpTRmlu
YWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgdW5zaWduZWQgaW5saW5l
Q2FwYWNpdHkpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEZpbmFsT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvLCBOb25BcnJheSwgSU5MSU5FX1NUT1JBR0VfQ0FQQUNJ
VFkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEZpbmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCAmc19pbmZvLCBOb25BcnJheSwgaW5saW5lQ2FwYWNpdHkpOwogICAgIH0KIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKQEAgLTEwOTUsMTEgKzExMDYsNiBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0
QnV0dGVyZmx5V2l0aG91CiAgICAgbV9idXR0ZXJmbHkgPSBidXR0ZXJmbHk7CiB9CiAKLWlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLXsKLSAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMs
IHN0cnVjdHVyZSk7Ci19Ci0KIGlubGluZSBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU1ZhbHVlIHZh
bHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUu
aXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEodmFs
dWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlTm9uZTsKQEAgLTE0MDMsNyArMTQwOSw3
IEBAIGlubGluZSBzaXplX3Qgb2Zmc2V0SW5CdXR0ZXJmbHkoUHJvcGVydHkKICAgICByZXR1cm4g
b2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKyBCdXR0ZXJmbHk6OmluZGV4T2ZQcm9w
ZXJ0eVN0b3JhZ2UoKTsKIH0KIAotLy8gVGhpcyBpcyBhIGhlbHBlciBmb3IgcGF0Y2hpbmcgY29k
ZSB3aGVyZSB5b3Ugd2FudCB0byBlbWl0IGEgbG9hZCBvciBzdG9yZSBhbmQKKy8vIEhlbHBlcnMg
Zm9yIHBhdGNoaW5nIGNvZGUgd2hlcmUgeW91IHdhbnQgdG8gZW1pdCBhIGxvYWQgb3Igc3RvcmUg
YW5kCiAvLyB0aGUgYmFzZSBpczoKIC8vIEZvciBpbmxpbmUgb2Zmc2V0czogYSBwb2ludGVyIHRv
IHRoZSBvdXQtb2YtbGluZSBzdG9yYWdlIHBvaW50ZXIuCiAvLyBGb3Igb3V0LW9mLWxpbmUgb2Zm
c2V0czogdGhlIGJhc2Ugb2YgdGhlIG91dC1vZi1saW5lIHN0b3JhZ2UuCkBAIC0xNDE0LDYgKzE0
MjAsMTcgQEAgaW5saW5lIHNpemVfdCBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0bwogICAgIHJl
dHVybiBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLSBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb2Zmc2V0SW5JbmxpbmVTdG9y
YWdlKG9mZnNldCk7CiB9CiAKKy8vIFJldHVybnMgdGhlIG1heGltdW0gb2Zmc2V0IGEgbG9hZCBp
bnN0cnVjdGlvbiB3aWxsIGVuY29kZS4KK2lubGluZSBzaXplX3QgbWF4T2Zmc2V0UmVsYXRpdmVU
b1BhdGNoZWRTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKK3sKKyNpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgIHJldHVybiBvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uob2Zmc2V0
KQorICAgICAgICArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKTsKKyNlbHNlCisgICAgcmV0dXJuIG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFn
ZShvZmZzZXQpOworI2VuZGlmCit9CisKIGlubGluZSBpbnQgaW5kZXhSZWxhdGl2ZVRvQmFzZShQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNl
dCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2
aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDE2IEBAIHZvaWQgSlNQcm94eTo6c2V0VGFy
Z2V0KEpTR2xvYmFsRGF0YSYgZ2wKICAgICBBU1NFUlRfQVJHKGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0KTsKICAgICBtX3RhcmdldC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2xvYmFsT2JqZWN0
KTsKICAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LT5wcm90b3R5cGUo
KSk7Ci0gICAgZ2xvYmFsRGF0YS5wcm90b3R5cGVNYXAuY2xlYXJFbXB0eU9iamVjdFN0cnVjdHVy
ZUZvclByb3RvdHlwZSh0aGlzKTsKKworICAgIFByb3RvdHlwZU1hcCYgcHJvdG90eXBlTWFwID0g
Z2xvYmFsRGF0YS5wcm90b3R5cGVNYXA7CisgICAgaWYgKCFwcm90b3R5cGVNYXAuaXNQcm90b3R5
cGUodGhpcykpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgaXMgc2xvdyBidXQgY29u
c3RhbnQgdGltZS4gV2UgdGhpbmsgaXQncyB2ZXJ5IHJhcmUgZm9yIGEgcHJveHkKKyAgICAvLyB0
byBiZSBhIHByb3RvdHlwZSwgYW5kIHJlYXNvbmFibHkgcmFyZSB0byByZXRhcmdldCBhIHByb3h5
LAorICAgIC8vIHNvIHNsb3cgY29uc3RhbnQgdGltZSBpcyBPSy4KKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8PSBKU0ZpbmFsT2JqZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpOyArK2kpCisgICAg
ICAgIHByb3RvdHlwZU1hcC5jbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKHRo
aXMsIGkpOwogfQogCiBTdHJpbmcgSlNQcm94eTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBv
YmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJM
ZXhlci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsMTkgKzEwMiwxOSBAQCBib29sIE9iamVjdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURl
CiAgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywg
RXhlY1N0YXRlOjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0Q29u
c3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi0vLyBF
Q01BIDE1LjIuMgotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEFyZ0xpc3QgYXJncyhleGVj
KTsKICAgICBKU1ZhbHVlIGFyZyA9IGFyZ3MuYXQoMCk7CiAgICAgaWYgKGFyZy5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAgIHJldHVybiBhcmcudG9PYmplY3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RPYmplY3QoZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KCksIGFyZ3MpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dE9iamVjdChleGVjKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgT2JqZWN0Q29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKQEAg
LTEyNSw4ICsxMjUsNyBAQCBDb25zdHJ1Y3RUeXBlIE9iamVjdENvbnN0cnVjdG9yOjpnZXRDb25z
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0KGV4ZWMsIGFzSW50ZXJuYWxGdW5j
dGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RPYmplY3QoZXhlYykpOwogfQogCiBDYWxsVHlwZSBP
YmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRh
KQpAQCAtMzUxLDcgKzM1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVj
dCBvciBudWxsLiIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOwog
ICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCi0gICAgICAgID8gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3RvdHlwZU1hcC5l
bXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShhc09iamVjdChwcm90bykpKQorICAgICAg
ICA/IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGFzT2JqZWN0KHByb3RvKSkKICAgICAgICAg
OiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3T2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
OCBAQAogI2RlZmluZSBPYmplY3RDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RQ
cm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU4LDYgKzYwLDMwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKICAgICB9OwogCisgICAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0
eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpTRmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUpOworICAg
IH0KKworICAgIGlubGluZSBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKKyAg
ICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgICAgIFByb3RvdHlwZU1hcCYgcHJvdG90eXBlTWFwID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkucHJvdG90eXBlTWFwOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHByb3RvdHlwZU1hcC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlw
ZSgKKyAgICAgICAgICAgIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1
cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBp
bmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBwcm90b3R5cGUsIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0
eSgpKTsKKyAgICB9CisKKyAgICBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgp
KTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gT2JqZWN0Q29uc3Ry
dWN0b3JfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlPZmZz
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU9mZnNldC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsNiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0jZGVmaW5lIElOTElO
RV9TVE9SQUdFX0NBUEFDSVRZIDcKLSNlbHNlCi0jZGVmaW5lIElOTElORV9TVE9SQUdFX0NBUEFD
SVRZIDYKLSNlbmRpZgotCiB0eXBlZGVmIGludCBQcm9wZXJ0eU9mZnNldDsKIAogc3RhdGljIGNv
bnN0IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkocmV2aXNpb24gMTQwNDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsMTggKzUyLDI0IEBAIHZvaWQgUHJvdG90eXBlTWFwOjphZGRQcm90
b3R5cGUoSlNPYmplY3QKICAgICAvLyB1c2VkIGFzIGEgcHJvdG90eXBlLgogfQogCi1TdHJ1Y3R1
cmUqIFByb3RvdHlwZU1hcDo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmpl
Y3QqIG9iamVjdCkKK1N0cnVjdHVyZSogUHJvdG90eXBlTWFwOjplbXB0eU9iamVjdFN0cnVjdHVy
ZUZvclByb3RvdHlwZShKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSkKIHsKLSAgICBXZWFrR0NNYXA8SlNPYmplY3QqLCBTdHJ1Y3R1cmU+OjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gbV9zdHJ1Y3R1cmVzLmFkZChvYmplY3QsIG51bGxwdHIpOworICAgIFN0cnVjdHVy
ZU1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc3RydWN0dXJlcy5hZGQoc3RkOjptYWtlX3Bh
aXIocHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSksIG51bGxwdHIpOwogICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKGlzUHJvdG90eXBlKG9iamVjdCkpOwor
ICAgICAgICBBU1NFUlQoaXNQcm90b3R5cGUocHJvdG90eXBlKSk7CiAgICAgICAgIHJldHVybiBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KIAotICAgIGFkZFByb3RvdHlw
ZShvYmplY3QpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNGaW5hbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKG9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKSwgb2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0KTsKKyAgICBhZGRQcm90b3R5cGUocHJvdG90eXBlKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSgKKyAgICAgICAgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RydWN0dXJlOwogICAgIHJldHVybiBzdHJ1Y3R1
cmU7CiB9CiAKK3ZvaWQgUHJvdG90eXBlTWFwOjpjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9y
UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQorewor
ICAgIG1fc3RydWN0dXJlcy5yZW1vdmUoc3RkOjptYWtlX3BhaXIob2JqZWN0LCBpbmxpbmVDYXBh
Y2l0eSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oCShyZXZpc2lvbiAxNDA0NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTYgKzMzLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNPYmplY3Q7CiBjbGFz
cyBTdHJ1Y3R1cmU7CiAKKy8vIFRyYWNrcyB0aGUgY2Fub25pY2FsIHN0cnVjdHVyZSBhbiBvYmpl
Y3Qgc2hvdWxkIGJlIGFsbG9jYXRlZCB3aXRoIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgZ2l2ZW4g
cHJvdG90eXBlLgogY2xhc3MgUHJvdG90eXBlTWFwIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2Jq
ZWN0Kik7Ci0gICAgdm9pZCBjbGVhckVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpT
T2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0
cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCosIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsK
KyAgICB2b2lkIGNsZWFyRW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3Qq
LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgdm9pZCBhZGRQcm90b3R5cGUoSlNPYmpl
Y3QqKTsKICAgICBib29sIGlzUHJvdG90eXBlKEpTT2JqZWN0Kik7IC8vIFJldHVybnMgYSBjb25z
ZXJ2YXRpdmUgZXN0aW1hdGUuCiAKIHByaXZhdGU6CiAgICAgV2Vha0dDTWFwPEpTT2JqZWN0Kiwg
SlNPYmplY3Q+IG1fcHJvdG90eXBlczsKLSAgICBXZWFrR0NNYXA8SlNPYmplY3QqLCBTdHJ1Y3R1
cmU+IG1fc3RydWN0dXJlczsKKyAgICB0eXBlZGVmIFdlYWtHQ01hcDxzdGQ6OnBhaXI8SlNPYmpl
Y3QqLCB1bnNpZ25lZD4sIFN0cnVjdHVyZT4gU3RydWN0dXJlTWFwOworICAgIFN0cnVjdHVyZU1h
cCBtX3N0cnVjdHVyZXM7CiB9OwogCiBpbmxpbmUgYm9vbCBQcm90b3R5cGVNYXA6OmlzUHJvdG90
eXBlKEpTT2JqZWN0KiBvYmplY3QpCkBAIC01MCwxMSArNTIsNiBAQCBpbmxpbmUgYm9vbCBQcm90
b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTCiAgICAgcmV0dXJuIG1fcHJvdG90eXBlcy5jb250YWlu
cyhvYmplY3QpOwogfQogCi1pbmxpbmUgdm9pZCBQcm90b3R5cGVNYXA6OmNsZWFyRW1wdHlPYmpl
Y3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCkKLXsKLSAgICBtX3N0cnVj
dHVyZXMucmVtb3ZlKG9iamVjdCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gUHJvdG90eXBlTWFwX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAotU3RydWN0dXJl
OjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgUHJv
cGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkpCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVy
ZS5nZXQoKSkKICAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCiAgICAgLCBtX2luZGV4aW5nVHlw
ZShpbmRleGluZ1R5cGUpCkBAIC0xNzEsNiArMTcxLDggQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9kaWRUcmFuc2l0aW9uKGZhbHNlKQogICAgICwg
bV9zdGF0aWNGdW5jdGlvblJlaWZpZWQoZmFsc2UpCiB7CisgICAgQVNTRVJUKGlubGluZUNhcGFj
aXR5IDw9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VSVChp
bmxpbmVDYXBhY2l0eSA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KTsKIH0KIAogY29uc3QgQ2xhc3NJ
bmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAiU3RydWN0dXJlIiwgMCwgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShTdHJ1Y3R1cmUpIH07CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSgogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3By
ZXZpb3VzKTsKIAotICAgICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3By
b3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZz
ZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CisgICAgICAgICAgICBtX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBu
dW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjUzLDcgKzI1NSw3IEBAIHZvaWQg
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICB9CiAKICAgICBpZiAoIW1f
cHJvcGVydHlUYWJsZSkKLSAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8udHlwZSgpKSk7CisgICAgICAgIGNyZWF0
ZVByb3BlcnR5TWFwKG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGlu
ZUNhcGFjaXR5KSk7CiAKICAgICBmb3IgKHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkg
LSAyOyBpID49IDA7IC0taSkgewogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwpA
QCAtMzkzLDYgKzM5NSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXQKICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd091dE9mTGluZUNhcGFjaXR5KCk7CiAKICAgICB0
cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKKyAgICBjaGVja09mZnNldCh0cmFuc2l0aW9u
LT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgc3RydWN0dXJl
LT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgcmV0
dXJuIHRyYW5zaXRpb247CiB9CkBAIC01NjQsNiArNTY3LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdAogICAgIHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJl
dmlvdXMgPSBhdHRyaWJ1dGVzOwogICAgIHRyYW5zaXRpb24tPm1faW5kZXhpbmdUeXBlID0gaW5k
ZXhpbmdUeXBlOwogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNl
dDsKKyAgICBjaGVja09mZnNldCh0cmFuc2l0aW9uLT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5s
aW5lQ2FwYWNpdHkoKSk7CiAgICAgCiAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxl
KSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKQpAQCAt
NzE5LDcgKzcyMyw3IEBAIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gU3RydWN0dXJlOjpjb3AK
IAogUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxl
Rm9yUGlubmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogb3duZXIpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxl
KGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IG5ldyBQcm9wZXJ0eVRhYmxl
KG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX3R5cGVJbmZvLnR5cGUoKSkp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFi
bGUoZ2xvYmFsRGF0YSwgb3duZXIsICptX3Byb3BlcnR5VGFibGUpIDogbmV3IFByb3BlcnR5VGFi
bGUobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkp
KSk7CiB9CiAKIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAotICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJ
bmRleGluZ1R5cGUgPSBOb25BcnJheSwgUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkgPSAw
KTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xh
c3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
ID0gMCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMjIxLDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAg
ICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV90
eXBlSW5mby50eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KTsKICAgICAgICAgfQogICAgICAgICB1
bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0CiAgICAgICAgIHsKQEAgLTM1OSw3
ICszNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwgUHJv
cGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2ln
bmVkIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CiAKQEAg
LTQwMCw3ICs0MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHRyYW5zaXRpb25D
b3VudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBudW1iZXIg
b2YgdHJhbnNpdGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFzIG1fb2Zmc2V0LCB3ZSBrZWVwIHRo
ZSBzaXplIG9mIFN0cnVjdHVyZSBkb3duIGJ5IG5vdCBzdG9yaW5nIGJvdGguCi0gICAgICAgICAg
ICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1fdHlwZUluZm8u
dHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlz
VmFsaWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hh
aW4pIGNvbnN0OwpAQCAtNDU0LDcgKzQ1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1
bnNpZ25lZCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZDsKICAgICB9OwogCi0gICAgaW5saW5lIFN0
cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZSwgUHJvcGVydHlPZmZzZXQgaW5saW5lQ2FwYWNpdHkpCisgICAgaW5saW5lIFN0
cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgewogICAgICAgICBBU1NF
UlQoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwogICAgICAgICBBU1NFUlQoY2xhc3NJ
bmZvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAxLTI4ICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RhdGljIHNpemUg
aW5mZXJlbmNlIGZvciBKYXZhU2NyaXB0IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOiBBZGRlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwOiBJ
bmNsdWRlIE9iamVjdENvbnN0cnVjdG9yLmggYmVjYXVzZQorICAgICAgICB0aGF0J3Mgd2hlcmUg
Y3JlYXRlRW1wdHlPYmplY3QoKSBpcyBsb2NhdGVkIG5vdy4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURl
c2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOiBVcGRhdGVkIGZvciBpbnRlcmZhY2UgY2hhbmdlLgor
CiAyMDEzLTAxLTI4ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAg
ICBbQ1NTIEV4Y2x1c2lvbnNdIFJlZmFjdG9yIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB0byBt
b3JlIGdlbmVyYWwgRXhjbHVzaW9uU2hhcGVJbmZvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfT2JqZWN0Q29uc3RydWN0b3JfaAorI2RlZmluZSBXZWJDb3JlX0ZX
RF9PYmplY3RDb25zdHJ1Y3Rvcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29u
c3RydWN0b3IuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAJKHJldmlzaW9uIDE0MDQ0NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNJREJLZXkuaCIKIAogI2luY2x1ZGUg
PHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VN
b3Rpb25FdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25FdmVu
dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQwNDQ1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9K
U0FycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3QuaCIKKyNp
bmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMTQwNDQ1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNiArNjAsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHAuaD4KQEAgLTE2NzQsNyArMTY3NSw3IEBAIERlc2Vy
aWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjoKICAgICAgICAgY2FzZSBPYmplY3RT
dGFydFN0YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4g
bWF4aW11bUZpbHRlclJlY3Vyc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWly
KEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBv
dXRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCht
X2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgICAgICAgICBt
X2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3QpOwogICAgICAgICAgICAgb3V0cHV0T2JqZWN0U3Rh
Y2suYXBwZW5kKG91dE9iamVjdCk7CiAgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAo=
</data>
<flag name="review"
          id="204108"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>185298</attachid>
            <date>2013-01-29 13:34:14 -0800</date>
            <delta_ts>2013-01-29 13:34:14 -0800</delta_ts>
            <desc>Benchmark results</desc>
            <filename>BASE_PATCH_SunSpiderV8SpiderOctaneKrakenJSBenchJSRegressDSP_garen_20130128_1437_report.txt</filename>
            <type>text/plain</type>
            <size>23458</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBWOFNwaWRlciwgT2N0YW5lLCBLcmFrZW4s
IEpTQmVuY2gsIEpTUmVncmVzcywgYW5kIERTUCBvbiBnYXJlbiAoTWFjUHJvNSwxKS4KClZNcyB0
ZXN0ZWQ6CiJCQVNFIiBhdCAvVm9sdW1lcy9CaWcvZ2dhcmVuL2Jhc2VsaW5lLXdlYmtpdC9XZWJL
aXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlIChyMTQwMzg2KQoiUEFUQ0giIGF0IC9Wb2x1
bWVzL0JpZy9nZ2FyZW4vd2Via2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUg
KHIxNDA0NDUpCgpDb2xsZWN0ZWQgMTIgc2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDQg
Vk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFyay4gRW1pdHRlZCBhIGNhbGwgdG8gZ2MoKSBiZXR3
ZWVuIHNhbXBsZQptZWFzdXJlbWVudHMuIFVzZWQgMSBiZW5jaG1hcmsgaXRlcmF0aW9uIHBlciBW
TSBpbnZvY2F0aW9uIGZvciB3YXJtLXVwLiBVc2VkIHRoZSBqc2Mtc3BlY2lmaWMgcHJlY2lzZVRp
bWUoKSBmdW5jdGlvbiB0byBnZXQKbWljcm9zZWNvbmQtbGV2ZWwgdGltaW5nLiBSZXBvcnRpbmcg
YmVuY2htYXJrIGV4ZWN1dGlvbiB0aW1lcyB3aXRoIDk1JSBjb25maWRlbmNlIGludGVydmFscyBp
biBtaWxsaXNlY29uZHMuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJBU0UgICAgICAgICAgICAgICAgICAgICBQQVRDSCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIApTdW5TcGlkZXI6CiAgIDNkLWN1YmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuODgwNSstMC40ODU3ICAgICAgICAg
ICAxMC42MDk3Ky0wLjQzMzAgICAgICAgICAgbWlnaHQgYmUgMS4wMjU1eCBmYXN0ZXIKICAgM2Qt
bW9ycGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4yODg0Ky0wLjE0
NDAgICAgID8gICAgICA5LjM0ODYrLTAuMTQ5NyAgICAgICAgPwogICAzZC1yYXl0cmFjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjE4MjQrLTAuMzE2MSAgICAgPyAgICAg
MTEuMzI3MistMC4zMzIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzMHggc2xvd2VyCiAgIGFjY2Vz
cy1iaW5hcnktdHJlZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjI2MSstMC41NDEz
ICAgICAgICAgICAgMi41ODE1Ky0wLjUzMzQgICAgICAgICAgbWlnaHQgYmUgMS4wMTczeCBmYXN0
ZXIKICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy44
MTIzKy0wLjA2MTAgICAgIF4gICAgICA3LjY3MzErLTAuMDYzMiAgICAgICAgXiBkZWZpbml0ZWx5
IDEuMDE4MXggZmFzdGVyCiAgIGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuODA1NCstMC4wNzcyICAgICAgICAgICAgNC43Mzg1Ky0wLjA2MTUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTQxeCBmYXN0ZXIKICAgYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC44NDk5Ky0wLjA0MDcgICAgID8gICAgICA0Ljg2NDUrLTAu
MDQzNyAgICAgICAgPwogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAg
ICAgICAgICAxLjczODMrLTAuMDIzMSAgICAgPyAgICAgIDEuODAyOCstMC4wNjcwICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM3MXggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuNTA5NCstMC4wNjUwICAgICA/ICAgICAgNi41NjM1Ky0wLjEz
MzUgICAgICAgID8KICAgYml0b3BzLWJpdHdpc2UtYW5kICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi4zMTk1Ky0wLjA2MTggICAgID8gICAgICAyLjM2OTkrLTAuMDc3NSAgICAgICAgPyBt
aWdodCBiZSAxLjAyMTd4IHNsb3dlcgogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjA2MjArLTAuMDU1OCAgICAgICAgICAgIDQuMDU0MSstMC4wNDI5
ICAgICAgICAKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi44MzI0Ky0wLjAxMDUgICAgICEgICAgICAyLjg1ODQrLTAuMDA1OCAgICAgICAgISBkZWZp
bml0ZWx5IDEuMDA5Mnggc2xvd2VyCiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDguODI1NSstMC41MzkxICAgICAgICAgICAgOC42NTA3Ky0wLjUwMjkg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjAyeCBmYXN0ZXIKICAgY3J5cHRvLW1kNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wNTk1Ky0wLjAzNTQgICAgICAgICAgICAzLjk3
MzIrLTAuMTA2NyAgICAgICAgICBtaWdodCBiZSAxLjAyMTd4IGZhc3RlcgogICBjcnlwdG8tc2hh
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM4MDYrLTAuMTIzMSAgICAg
PyAgICAgIDMuMzg3NSstMC4wMzc3ICAgICAgICA/CiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTUuOTc2MystMS4wMDkzICAgICA/ICAgICAxNi40ODY2
Ky0xLjA5MDMgICAgICAgID8gbWlnaHQgYmUgMS4wMzE5eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQt
eHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi40MzEyKy0wLjg2OTIgICAgICAg
ICAgIDE2LjEwMDUrLTAuNzQ5NiAgICAgICAgICBtaWdodCBiZSAxLjAyMDV4IGZhc3RlcgogICBt
YXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc4MDUrLTAu
MDQ3MiAgICAgICAgICAgIDMuNzQ1MystMC4wMzU5ICAgICAgICAKICAgbWF0aC1wYXJ0aWFsLXN1
bXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4wMjYzKy0wLjA3MzMgICAgICAgICAg
IDEyLjAyNTUrLTAuMDUxNCAgICAgICAgCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMTczMSstMC4wMjM3ICAgICA/ICAgICAgMy4yNjYyKy0wLjA4
MjQgICAgICAgID8gbWlnaHQgYmUgMS4wMjkzeCBzbG93ZXIKICAgcmVnZXhwLWRuYSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC42MDc1Ky0wLjQ3NzYgICAgICAgICAgIDEw
LjQ4ODgrLTAuNDYwOSAgICAgICAgICBtaWdodCBiZSAxLjAxMTN4IGZhc3RlcgogICBzdHJpbmct
YmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE3NTkrLTAuNjUxMyAg
ICAgICAgICAgIDUuOTU3NystMC41NzM0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM2NnggZmFzdGVy
CiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNjQ4
NystMC4zNjEyICAgICAgICAgICAxMC42MjIzKy0wLjM3NDAgICAgICAgIAogICBzdHJpbmctdGFn
Y2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Ljk3MjgrLTAuNDEzMiAgICAg
PyAgICAgMTUuMTk0NSstMC4zMzA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OHggc2xvd2VyCiAg
IHN0cmluZy11bnBhY2stY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuNTc3OSst
MC43MTA4ICAgICA/ICAgICAyNy42NDMyKy0wLjc0MTUgICAgICAgID8KICAgc3RyaW5nLXZhbGlk
YXRlLWlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4yNjE3Ky0wLjYzMDkgICAgID8g
ICAgIDEwLjMyMTUrLTAuNTUwNiAgICAgICAgPwoKICAgPGFyaXRobWV0aWM+ICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC4zMzg2Ky0wLjE2NjggICAgICAgICAgICA4LjMzMjkr
LTAuMTYyNSAgICAgICAgICBtaWdodCBiZSAxLjAwMDd4IGZhc3RlcgogICA8Z2VvbWV0cmljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjYwMzIrLTAuMTMyNSAgICAgICAg
ICAgIDYuNTk5NystMC4xMTkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDAwNXggZmFzdGVyCiAgIDxo
YXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTk4MCstMC4x
MDYxICAgICA/ICAgICAgNS4yMTI4Ky0wLjA5MjEgICAgICAgID8gbWlnaHQgYmUgMS4wMDI4eCBz
bG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQkFTRSAgICAgICAgICAgICAgICAgICAgIFBBVENIICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgClY4U3BpZGVyOgogICBjcnlwdG8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgyLjA5NzMrLTAuNjQyNyAgICAgICAgICAgODEuNjI5Mist
MC40ODU0ICAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEzMi42MDI0Ky0xLjQ4NTUgICAgIF4gICAgMTI2LjI0ODgrLTAuNzIxMCAgICAgICAg
XiBkZWZpbml0ZWx5IDEuMDUwM3ggZmFzdGVyCiAgIGVhcmxleS1ib3llciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOTQuMDcxMSstMC44Njg2ICAgICBeICAgICA4Mi43MzY5Ky0x
LjA4NDAgICAgICAgIF4gZGVmaW5pdGVseSAxLjEzNzB4IGZhc3RlcgogICByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1LjM1ODYrLTAuMzk4NyAgICAgPyAg
ICAgNjYuMDk3NSstMi4xMjkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3ggc2xvd2VyCiAgIHJl
Z2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAuMjAwOSstMS44
NzU2ICAgICAgICAgICA5Ny45NzAxKy0wLjY1MTUgICAgICAgICAgbWlnaHQgYmUgMS4wMjI4eCBm
YXN0ZXIKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
My43NTc3Ky0xLjk3ODMgICAgICAgICAgMTEzLjI5NTUrLTEuNzY3MCAgICAgICAgCiAgIHNwbGF5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMDM5NSstMTQuMjgx
MyAgICBeICAgICA2MS4zMTUyKy0yLjg2NTMgICAgICAgIF4gZGVmaW5pdGVseSAxLjY4MDV4IGZh
c3RlcgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
OC43MzI1Ky0yLjE3OTAgICAgIF4gICAgIDg5Ljg5OTArLTAuNzI0NyAgICAgICAgXiBkZWZpbml0
ZWx5IDEuMDk4M3ggZmFzdGVyCiAgIDxnZW9tZXRyaWM+ICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOTYuMzY4MCstMS45Nzk0ICAgICBeICAgICA4Ny4xNjYwKy0wLjc4MzUgICAg
ICAgIF4gZGVmaW5pdGVseSAxLjEwNTZ4IGZhc3RlcgogICA8aGFybW9uaWM+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkzLjk4MDMrLTEuNzU0MCAgICAgXiAgICAgODQuNTE4
OSstMC44NTM1ICAgICAgICBeIGRlZmluaXRlbHkgMS4xMTE5eCBmYXN0ZXIKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFTRSAgICAgICAg
ICAgICAgICAgICAgIFBBVENIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ck9jdGFuZSBhbmQgVjh2NzoKICAgZW5jcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjQ0MjcyKy0wLjAwMTIxICAgICAgICAgIDAuNDQxNjIrLTAuMDAxMDAgICAg
ICAgCiAgIGRlY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy44
MTYwOCstMC4wMTY3OCAgICAhICAgICA3Ljg5NzAwKy0wLjAxNzU0ICAgICAgICEgZGVmaW5pdGVs
eSAxLjAxMDR4IHNsb3dlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgIDAuNTkzMjIrLTAuMDA1ODcgICAgICAgICAgMC41ODcxNCstMC4wMDU0MiAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEwNHggZmFzdGVyCiAgIGVhcmxleSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC45NTM2NCstMC4wMDUyOSAgICBeICAgICAwLjg3MDM2Ky0w
LjAwNTkxICAgICAgIF4gZGVmaW5pdGVseSAxLjA5NTd4IGZhc3RlcgogICBib3llciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNzA0NjQrLTAuMDU5MjggICAgXiAg
ICAxMi4zMzMxOSstMC4wNDkxOCAgICAgICBeIGRlZmluaXRlbHkgMS4xOTIzeCBmYXN0ZXIKICAg
cmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICA0LjcyNzAzKy0w
LjA1NzY2ICAgID8gICAgIDQuNzU3NzQrLTAuMTk0NzYgICAgICAgPwogICByZWdleHAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMzAuMjkyNTIrLTAuMTQzMTggICAgICAg
ICAzMC4wNDY2NCstMC4xMjc5MSAgICAgICAKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiAgICAgICAwLjI5Mjk1Ky0wLjAwMzI2ICAgICAgICAgIDAuMjg3ODYrLTAu
MDAyMjggICAgICAgICBtaWdodCBiZSAxLjAxNzd4IGZhc3RlcgogICBzcGxheSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuNzUzMDMrLTAuMDA0MTggICAgXiAgICAg
MC42ODc0OSstMC4wMTEyMyAgICAgICBeIGRlZmluaXRlbHkgMS4wOTUzeCBmYXN0ZXIKICAgbmF2
aWVyLXN0b2tlcyAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDExLjU1OTY2Ky0wLjA0
NDAxICAgICAgICAgMTEuNTIyNjArLTAuMDE1NTAgICAgICAgCiAgIGNsb3N1cmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41MDgxMistMC4wMDIzNiAgICAhICAgICAw
LjUxNjMyKy0wLjAwMjgzICAgICAgICEgZGVmaW5pdGVseSAxLjAxNjF4IHNsb3dlcgogICBqcXVl
cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjcwMjkrLTAuMDkz
MTYgICAgPyAgICAgNi42Nzg2NystMC4wNzc1MSAgICAgICA/CiAgIGdiZW11ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDI1My4yODc4NistMTQuMzczNjYgICA/ICAgMjU2
LjEwNDAwKy02LjA5NjUyICAgICAgID8gbWlnaHQgYmUgMS4wMTExeCBzbG93ZXIKICAgbWFuZHJl
ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgMTg2LjU3MjkzKy0wLjgzMjYz
ICAgID8gICAxODYuNjc3MDIrLTEuMDMxMzkgICAgICAgPwogICBwZGZqcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyICAgICAxMzAuMDM1MjgrLTAuMzg4ODQgICAgPyAgIDEzMC41
MzAwMSstMC42NTI2MyAgICAgICA/CiAgIGJveDJkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgICAzNi45NzM4MystMC4xODM5NiAgICA/ICAgIDM3LjE5NTQzKy0wLjIxMDk1
ICAgICAgID8KClY4djc6CiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNy41MjIxMistMC4wMjQyOSAgICBeICAgICA3LjMzMjU3Ky0wLjA0MDEyICAgICAg
IF4gZGVmaW5pdGVseSAxLjAyNTl4IGZhc3RlcgogICA8Z2VvbWV0cmljPiAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuNDk2MzcrLTAuMDA1NzggICAgXiAgICAgMi40MTgxMSst
MC4wMTc3MiAgICAgICBeIGRlZmluaXRlbHkgMS4wMzI0eCBmYXN0ZXIKICAgPGhhcm1vbmljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjkzOTk1Ky0wLjAwNDE0ICAgIF4g
ICAgIDAuOTExNzQrLTAuMDA0NTggICAgICAgXiBkZWZpbml0ZWx5IDEuMDMwOXggZmFzdGVyCgpP
Y3RhbmUgaW5jbHVkaW5nIFY4djc6CiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MS41ODczOSstMS4xNDA4MyAgICA/ICAgIDUxLjc1MTEyKy0wLjQ4MzU0
ICAgICAgID8gbWlnaHQgYmUgMS4wMDMyeCBzbG93ZXIKICAgPGdlb21ldHJpYz4gKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA4Mjk4Ky0wLjAzNTYyICAgIF4gICAgIDcuOTQ1
OTkrLTAuMDQxOTQgICAgICAgXiBkZWZpbml0ZWx5IDEuMDE3MnggZmFzdGVyCiAgIDxoYXJtb25p
Yz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zNTIxNistMC4wMDU0OCAg
ICBeICAgICAxLjMxODI0Ky0wLjAwNTc5ICAgICAgIF4gZGVmaW5pdGVseSAxLjAyNTd4IGZhc3Rl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCQVNFICAgICAgICAgICAgICAgICAgICAgUEFUQ0ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3RhciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDU1Mi45NjIrLTEuNTIwICAgICAgXiAgICAgNTE5LjQ5NCstMS41MDMg
ICAgICAgICBeIGRlZmluaXRlbHkgMS4wNjQ0eCBmYXN0ZXIKICAgYXVkaW8tYmVhdC1kZXRlY3Rp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAyNDIuOTg2Ky0xLjE1OSAgICAgICAgICAgIDI0
MC4wNzArLTIuMzcyICAgICAgICAgICBtaWdodCBiZSAxLjAxMjF4IGZhc3RlcgogICBhdWRpby1k
ZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwMC42OTUrLTIuMTY1ICAg
ICAgPyAgICAgMzAzLjA2NystNi4zMTggICAgICAgICA/CiAgIGF1ZGlvLWZmdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwLjAxNCstMC4zMTcgICAgICA/ICAgICAxNDAu
MDQ4Ky0wLjU2MiAgICAgICAgID8KICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyNDUuMDk0Ky0wLjUwNCAgICAgIF4gICAgIDIzOS4xNTcrLTAuNDk3ICAg
ICAgICAgXiBkZWZpbml0ZWx5IDEuMDI0OHggZmFzdGVyCiAgIGltYWdpbmctZGFya3Jvb20gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkyLjA3OCstMS44NDIgICAgICAgICAgICAyOTEu
MDQyKy0xLjc0NCAgICAgICAgIAogICBpbWFnaW5nLWRlc2F0dXJhdGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1MC42MjIrLTAuMzI5ICAgICAgICAgICAgMTUwLjIyNystMC4xOTggICAg
ICAgICAKICAgaW1hZ2luZy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICA0
MTAuMzA5Ky0xLjMxNyAgICAgID8gICAgIDQxMC45MzgrLTIuNTcwICAgICAgICAgPwogICBqc29u
LXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICA3My4wODUrLTAuNDUz
ICAgICAgISAgICAgIDc0LjQ4NistMC4yNzYgICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTkyeCBz
bG93ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAg
OTIuNDcxKy0wLjQ3MSAgICAgID8gICAgICA5Mi44NjYrLTAuNDU1ICAgICAgICAgPwogICBzdGFu
Zm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOS41MjkrLTAuNTY5
ICAgICAgICAgICAgMTE5LjI5MistMC42MTcgICAgICAgICAKICAgc3RhbmZvcmQtY3J5cHRvLWNj
bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzQuODQxKy0xLjY4NSAgICAgID8gICAgIDEz
NS4xMDIrLTAuNzA5ICAgICAgICAgPwogICBzdGFuZm9yZC1jcnlwdG8tcGJrZGYyICAgICAgICAg
ICAgICAgICAgICAgICAgIDI2MS41MTkrLTIuMDI2ICAgICAgPyAgICAgMjYyLjYwOCstMi4wNjYg
ICAgICAgICA/CiAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAg
ICAgMTIxLjgzNystMi4yMTAgICAgICAgICAgICAxMTkuNDI5Ky0wLjQ2MCAgICAgICAgICAgbWln
aHQgYmUgMS4wMjAyeCBmYXN0ZXIKCiAgIDxhcml0aG1ldGljPiAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjI0LjE0NistMC40MzYgICAgICBeICAgICAyMjEuMjczKy0wLjU0OCAg
ICAgICAgIF4gZGVmaW5pdGVseSAxLjAxMzB4IGZhc3RlcgogICA8Z2VvbWV0cmljPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5MS4xMjYrLTAuNDU0ICAgICAgXiAgICAgMTg5
LjkyNSstMC4zMDUgICAgICAgICBeIGRlZmluaXRlbHkgMS4wMDYzeCBmYXN0ZXIKICAgPGhhcm1v
bmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjQuMTQwKy0wLjU0MyAg
ICAgICAgICAgIDE2My45MjYrLTAuMTg5ICAgICAgICAgICBtaWdodCBiZSAxLjAwMTN4IGZhc3Rl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCQVNFICAgICAgICAgICAgICAgICAgICAgUEFUQ0ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKSlNCZW5jaDoKICAgYW1hem9uICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS45MTY3Ky0wLjE4MzQgICAgID8gICAgIDEwLjI1MDArLTAuMjg3
NCAgICAgICAgPyBtaWdodCBiZSAxLjAzMzZ4IHNsb3dlcgogICBmYWNlYm9vayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjE2NjcrLTEuOTMxNiAgICAgPyAgICAgMzku
MzMzMystMy4wODExICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwNnggc2xvd2VyCiAgIGdvb2dsZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODIuMDAwMCstMi40MjMyICAg
ICA/ICAgICA4Mi45MTY3Ky0yLjc2OTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTEyeCBzbG93ZXIK
ICAgdHdpdHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC41MDAw
Ky0xLjM0MTAgICAgICAgICAgICA5LjY2NjcrLTAuNDEzOCAgICAgICAgICBtaWdodCBiZSAxLjA4
NjJ4IGZhc3RlcgogICB5YWhvbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjMzMzMrLTAuMzEyOCAgICAgPyAgICAgIDMuNzUwMCstMC45NDM0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMTI1MHggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4gKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI4Ljc4MzMrLTAuOTkzOSAgICAgPyAgICAgMjkuMTgzMystMS4yNDkx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xvd2VyCiAgIDxnZW9tZXRyaWM+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMDUxOCstMC42MzU0ICAgICA/ICAgICAxNi4z
MTc1Ky0wLjk3MDUgICAgICAgID8gbWlnaHQgYmUgMS4wMTY1eCBzbG93ZXIKICAgPGhhcm1vbmlj
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4yNzQyKy0wLjUxMDIgICAg
ID8gICAgICA5LjYzMjQrLTEuMTQxNiAgICAgICAgPyBtaWdodCBiZSAxLjAzODZ4IHNsb3dlcgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
QVNFICAgICAgICAgICAgICAgICAgICAgUEFUQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKSlNSZWdyZXNzOgogICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAgICAgICAg
ICAgICAgICAgICAgICAgIDgzLjU1NjYrLTAuMTUxOSAgICAgICAgICAgODMuNDU2NCstMC4wODU2
ICAgICAgICAKICAgYWxpYXNlZC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAg
ICAgMS4wMzc3Ky0wLjAwODQgICAgICAgICAgICAxLjAzMzErLTAuMDExNyAgICAgICAgCiAgIGFs
bG9jYXRlLWJpZy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTM5MistMS44
MTI2ICAgICAgICAgICAgNC4zNzM5Ky0xLjU1NzggICAgICAgICAgbWlnaHQgYmUgMS4xNzUweCBm
YXN0ZXIKICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAg
MC43Njc1Ky0wLjAzNjUgICAgICAgICAgICAwLjc1NzIrLTAuMDE2MyAgICAgICAgICBtaWdodCBi
ZSAxLjAxMzZ4IGZhc3RlcgogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgIDYzLjE5MDgrLTAuNjg5MyAgICAgICAgICAgNjMuMTU2NystMC42NjA1ICAgICAg
ICAKICAgYXJyYXktd2l0aC1kb3VibGUtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4y
Nzg4Ky0wLjE0MDYgICAgID8gICAgICA1LjMxNzErLTAuMTMzMiAgICAgICAgPwogICBhcnJheS13
aXRoLWRvdWJsZS1pbmNyZW1lbnQgICAgICAgICAgICAgICAgICAgICAzLjgyNTcrLTAuMDY0MiAg
ICAgXiAgICAgIDMuNzI3MystMC4wMjQ3ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMjY0eCBmYXN0
ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAgNy4y
MzE0Ky0wLjI1MDcgICAgICAgICAgICA3LjIxMDcrLTAuMjIxMyAgICAgICAgCiAgIGFycmF5LXdp
dGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMzU3MCstMC4wMTQzICAg
ICA/ICAgICAgNy4zODU1Ky0wLjAyOTEgICAgICAgID8KICAgYXJyYXktd2l0aC1pbnQzMi1hZGQt
c3ViICAgICAgICAgICAgICAgICAgICAgICAgOS42MTM4Ky0wLjMyOTQgICAgID8gICAgICA5LjY5
NTErLTAuNDA5NCAgICAgICAgPwogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0gICAg
ICAgICAgICAgICAgICA3LjQ1MTkrLTAuMDEyMCAgICAgPyAgICAgIDcuNDUzNystMC4wMTAzICAg
ICAgICA/CiAgIGJpZy1pbnQtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNTgzOSstMC4wMTk3ICAgICA/ICAgICAgNC42MjA0Ky0wLjA1MDEgICAgICAgID8KICAgYm9v
bGVhbi10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yNzYzKy0wLjA0
MzEgICAgID8gICAgICA0LjM1NzQrLTAuMDY5NiAgICAgICAgPyBtaWdodCBiZSAxLjAxOTB4IHNs
b3dlcgogICBjYXN0LWludC10by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEz
LjExMTArLTAuMDEyMSAgICAgISAgICAgMTMuNDkyMSstMC4wMjM3ICAgICAgICAhIGRlZmluaXRl
bHkgMS4wMjkxeCBzbG93ZXIKICAgY2VsbC1hcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMy42MjUxKy0wLjAyMzQgICAgID8gICAgIDEzLjY3MTMrLTAuMDM2MiAgICAg
ICAgPwogICBjZmctc2ltcGxpZnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjUyMjArLTAuMDA0OSAgICAgPyAgICAgIDMuNTMzMSstMC4wMTk2ICAgICAgICA/CiAgIGNtcGVx
LW9iai10by1vYmotb3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNzc1MSstMC4yNTY0
ICAgICAhICAgICAxMS43NDQwKy0wLjI3NzAgICAgICAgICEgZGVmaW5pdGVseSAxLjA4OTl4IHNs
b3dlcgogICBjb25zdGFudC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
LjA4MzYrLTAuMTIzNyAgICAgPyAgICAgIDguMDkwNSstMC4xMTM2ICAgICAgICA/CiAgIGRpcmVj
dC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgIDAuOTQzNystMC4wMTMx
ICAgICAgICAgICAgMC45MzQ4Ky0wLjAwNTAgICAgICAgIAogICBkb3VibGUtcG9sbHV0aW9uLWdl
dGJ5dmFsICAgICAgICAgICAgICAgICAgICAgIDEwLjE2OTkrLTAuMDIwMyAgICAgICAgICAgMTAu
MTYxMistMC4wMTE1ICAgICAgICAKICAgZG91YmxlLXBvbGx1dGlvbi1wdXRieW9mZnNldCAgICAg
ICAgICAgICAgICAgICAgNi4yNTU5Ky0wLjkxOTUgICAgICAgICAgICA1LjcxNzUrLTAuNTc5OCAg
ICAgICAgICBtaWdodCBiZSAxLjA5NDJ4IGZhc3RlcgogICBleHRlcm5hbC1hcmd1bWVudHMtZ2V0
Ynl2YWwgICAgICAgICAgICAgICAgICAgICAyLjQzOTcrLTAuMjU4NyAgICAgPyAgICAgIDIuNTI2
MystMC4yODU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NXggc2xvd2VyCiAgIGV4dGVybmFsLWFy
Z3VtZW50cy1wdXRieXZhbCAgICAgICAgICAgICAgICAgICAgIDMuNTkwNystMC4zOTU2ICAgICA/
ICAgICAgMy45NDQyKy0wLjQyMDMgICAgICAgID8gbWlnaHQgYmUgMS4wOTg0eCBzbG93ZXIKICAg
RmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAxNS4yMjY0Ky0x
LjE3OTIgICAgICAgICAgIDE0LjY5MTIrLTEuMDU3OSAgICAgICAgICBtaWdodCBiZSAxLjAzNjR4
IGZhc3RlcgogICBmb2xkLWRvdWJsZS10by1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIzLjExMDIrLTAuMjc1MCAgICAgPyAgICAgMjMuMjc0NistMC4xMzMzICAgICAgICA/CiAgIGZ1
bmN0aW9uLWRvdC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTM5NistMC4w
MDgzICAgICA/ICAgICAgMi45NTQwKy0wLjAxNjIgICAgICAgID8KICAgZnVuY3Rpb24tdGVzdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41NTM1Ky0wLjE4MzAgICAgICAgICAg
ICA0LjQ2OTIrLTAuMDkyOSAgICAgICAgICBtaWdodCBiZSAxLjAxODl4IGZhc3RlcgogICBnZXQt
YnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICA3LjA0NzgrLTAuMDM1
NCAgICAgICAgICAgIDcuMDM2NSstMC4wOTMzICAgICAgICAKICAgaW5kZXhlZC1wcm9wZXJ0aWVz
LWluLW9iamVjdHMgICAgICAgICAgICAgICAgICAgNC4xNjA1Ky0wLjAxMTggICAgIF4gICAgICA0
LjEyMTYrLTAuMDIyNyAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDA5NHggZmFzdGVyCiAgIGlubGlu
ZS1hcmd1bWVudHMtYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjU5OCstMC4wMTEx
ICAgICA/ICAgICAgMS4yNzg5Ky0wLjAyMDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTUxeCBzbG93
ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1sb2NhbC1lc2NhcGUgICAgICAgICAgICAgICAgICAyMi41
NTU2Ky0xLjIxNjAgICAgICAgICAgIDIxLjU4MDQrLTAuMTE0NCAgICAgICAgICBtaWdodCBiZSAx
LjA0NTJ4IGZhc3RlcgogICBpbmxpbmUtZ2V0LXNjb3BlZC12YXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2LjE1OTArLTAuMDU3NiAgICAgPyAgICAgIDYuMTc0MystMC4wMjQ4ICAgICAgICA/
CiAgIGlubGluZWQtcHV0LWJ5LWlkLXRyYW5zaXRpb24gICAgICAgICAgICAgICAgICAgMTAuODM2
OCstMC42NTA4ICAgICAhICAgICAxNC45MTE0Ky0wLjUxMzAgICAgICAgICEgZGVmaW5pdGVseSAx
LjM3NjB4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICA4LjA5MDQrLTAuMTE2MSAgICAgPyAgICAgIDguMDk3NSstMC4wNjkyICAgICAgICA/
CiAgIGludC1vci1vdGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgMzUuNDYx
MSstMC42MDY3ICAgICAgICAgICAzNC44NTEyKy0wLjU1MzQgICAgICAgICAgbWlnaHQgYmUgMS4w
MTc1eCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAg
ICAgICAxMC4wODg2Ky0wLjA4MTMgICAgID8gICAgIDEwLjI4OTkrLTAuMjE1MyAgICAgICAgPyBt
aWdodCBiZSAxLjAxOTl4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWRkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEwLjE3ODMrLTAuMDE4MSAgICAgPyAgICAgMTAuMjczNistMC4xMDE1
ICAgICAgICA/CiAgIGludC1vci1vdGhlci1kaXYtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAg
ICAgIDcuNDk0MystMC4xMTMwICAgICAgICAgICAgNy40NDIyKy0wLjA2OTUgICAgICAgIAogICBp
bnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICA5LjM1MDkrLTAu
MjgyNCAgICAgICAgICAgIDkuMzExNSstMC4yMzUzICAgICAgICAKICAgaW50LW9yLW90aGVyLW1p
bi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgNy43MTEzKy0wLjA3OTYgICAgICAgICAg
ICA3LjYzOTIrLTAuMDQxMiAgICAgICAgCiAgIGludC1vci1vdGhlci1tb2QtdGhlbi1nZXQtYnkt
dmFsICAgICAgICAgICAgICAgIDcuNTMwMCstMC4wOTQ3ICAgICBeICAgICAgNy4zODY0Ky0wLjAz
NzUgICAgICAgIF4gZGVmaW5pdGVseSAxLjAxOTR4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbXVs
LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICA2Ljc4MDQrLTAuMDM5NCAgICAgICAgICAg
IDYuNjk2NistMC4xMDI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNXggZmFzdGVyCiAgIGludC1v
ci1vdGhlci1uZWctdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgIDcuNDQzNystMC4wMzA5
ICAgICAhICAgICAgNy45OTAzKy0wLjEwMDAgICAgICAgICEgZGVmaW5pdGVseSAxLjA3MzR4IHNs
b3dlcgogICBpbnQtb3Itb3RoZXItbmVnLXplcm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgIDM0
LjYwNjQrLTAuNDE2MCAgICAgICAgICAgMzMuOTQwNCstMC40ODA1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE5NnggZmFzdGVyCiAgIGludC1vci1vdGhlci1zdWItdGhlbi1nZXQtYnktdmFsICAgICAg
ICAgICAgICAgMTAuMTI1MystMC4xMTYyICAgICAgICAgICAxMC4wODUyKy0wLjAzNDEgICAgICAg
IAogICBpbnQtb3Itb3RoZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjE3
NjQrLTAuMTI0MSAgICAgXiAgICAgIDcuNzQ4MystMC4wMjA5ICAgICAgICBeIGRlZmluaXRlbHkg
MS4wNTUzeCBmYXN0ZXIKICAgaW50LW92ZXJmbG93LWxvY2FsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMwNC4yODAyKy0wLjQxOTkgICAgICAgICAgMzAzLjExMjcrLTMuMzkzNCAgICAgICAg
CiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgNzIuNzcy
NistMC43MTUxICAgICA/ICAgICA3NC44MDc5Ky0yLjczMzcgICAgICAgID8gbWlnaHQgYmUgMS4w
MjgweCBzbG93ZXIKICAgSW50MTZBcnJheS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAg
ICAgICAgMS43OTE0Ky0wLjAzNTEgICAgICAgICAgICAxLjc4NDArLTAuMDIwNiAgICAgICAgCiAg
IEludDhBcnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTgxOSst
MC4xMDk1ICAgICA/ICAgICAgNS4xOTU1Ky0wLjExMjUgICAgICAgID8KICAgaW50ZWdlci1kaXZp
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy45OTA0Ky0wLjA2ODcgICAgICAg
ICAgIDEzLjk2NzIrLTAuMDIwNiAgICAgICAgCiAgIG1ha2UtaW5kZXhlZC1zdG9yYWdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMzUxOSstMC42Mjk0ICAgICA/ICAgICAgNC4zNjcwKy0w
LjYwMjMgICAgICAgID8KICAgbWV0aG9kLW9uLW51bWJlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIxMi42MzY3Ky0xLjY0NjYgICAgICEgICAgMjIxLjg1NzMrLTEuNDMwOSAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDQzNHggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZmZXItZGVhZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNTgzNCstMC4xNzE5ICAgICAgICAgICAgMy41Mjk3Ky0w
LjE1MDIgICAgICAgICAgbWlnaHQgYmUgMS4wMTUyeCBmYXN0ZXIKICAgbmV3LWFycmF5LWJ1ZmZl
ci1wdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAzMC4wOTcxKy04LjQ1MjYgICAgICAgICAg
IDMwLjA0MjgrLTguNDM3NiAgICAgICAgCiAgIG5ldy1hcnJheS1kZWFkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjcuMTg4MistMC40MDc3ICAgICAgICAgICAyNi44Njk3Ky0wLjA2
ODYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE5eCBmYXN0ZXIKICAgbmV3LWFycmF5LXB1c2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC45OTc4Ky0wLjMxMDIgICAgID8gICAgIDEw
Ljk5ODYrLTAuMzA3NiAgICAgICAgPwogICBudW1iZXItdGVzdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjE4NzkrLTAuMDE3NiAgICAgICAgICAgIDQuMTU4NistMC4wMTY1
ICAgICAgICAKICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOC42OTc3Ky0wLjI1NjUgICAgICAgICAgICA4LjYwNzUrLTAuMjIyNSAgICAgICAgICBtaWdo
dCBiZSAxLjAxMDV4IGZhc3RlcgogICBvYmplY3QtdGVzdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjQwOTQrLTAuMDMyNyAgICAgISAgICAgIDQuNTUwOSstMC4wNzkwICAg
ICAgICAhIGRlZmluaXRlbHkgMS4wMzIxeCBzbG93ZXIKICAgcG9seS1zdHJpY3RlcSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4OC45NDc5Ky0xLjQyNzMgICAgICAgICAgIDg2Ljkz
NjArLTAuNjQ1OCAgICAgICAgICBtaWdodCBiZSAxLjAyMzF4IGZhc3RlcgogICBwb2x5bW9ycGhp
Yy1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjY3OTcrLTAuMTI1OCAgICAg
XiAgICAgMjAuOTQwMystMC4wNTgwICAgICAgICBeIGRlZmluaXRlbHkgMS4xMzA4eCBmYXN0ZXIK
ICAgcG9seXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAxMi41NjI2
Ky0wLjA0MzMgICAgIF4gICAgIDExLjc5NzErLTAuMDExMSAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MDY0OXggZmFzdGVyCiAgIHJhcmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAg
ICAgICAxODYuMTM3MCstMC4yMzk4ICAgICA/ICAgIDE4Ni4xNzM3Ky0wLjMxNTYgICAgICAgID8K
ICAgcmVnaXN0ZXItcHJlc3N1cmUtZnJvbS1vc3IgICAgICAgICAgICAgICAgICAgICAzMS40NTUx
Ky0wLjA5NzQgICAgIF4gICAgIDMwLjI3MzcrLTAuMTU4MCAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MDM5MHggZmFzdGVyCiAgIHNpbXBsZS1hY3RpdmF0aW9uLWRlbW8gICAgICAgICAgICAgICAgICAg
ICAgICAgMzMuNTM5MistMC4zNDY4ICAgICAgICAgICAzMy41MjM0Ky0wLjUwNjggICAgICAgIAog
ICBzbG93LWFycmF5LXByb2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICA0LjU0MjYr
LTAuMzI5MSAgICAgICAgICAgIDQuNDEyNCstMC4yNTY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5
NXggZmFzdGVyCiAgIHNsb3ctY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODEuMTY3OCstMC4xOTAxICAgICAgICAgICA4MC4zMzI0Ky0wLjY3NzAgICAgICAgICAgbWln
aHQgYmUgMS4wMTA0eCBmYXN0ZXIKICAgc3BhcnNlLWNvbmRpdGlvbmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMS4yODI1Ky0wLjAyMDMgICAgID8gICAgICAxLjMxNTYrLTAuMDQ2MSAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNTh4IHNsb3dlcgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ2Ljk3MTQrLTAuMTE4NCAgICAgPyAgICAgNDcuMDg3
MystMC4xNDU4ICAgICAgICA/CiAgIHN0cmluZy1oYXNoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNTAzMystMC4wMTEzICAgICAgICAgICAgMi41MDAzKy0wLjAxMTEgICAg
ICAgIAogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQy
LjMyNzIrLTAuNTczNSAgICAgPyAgICAgNDMuMTU3MistMC4zMjQ3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE5Nnggc2xvd2VyCiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgODEuOTA1MystMC43NzY4ICAgICA/ICAgICA4My4zMzAyKy0xLjA2NTEgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTc0eCBzbG93ZXIKICAgc3RyaW5nLXRlc3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4zNzE0Ky0wLjEwNzAgICAgICAgICAgICA0LjM2MTgrLTAu
MDg0OCAgICAgICAgCiAgIHN0cnVjdHVyZS1ob2lzdC1vdmVyLXRyYW5zaXRpb25zICAgICAgICAg
ICAgICAgIDQuMjA2OSstMC45MDQ2ICAgICAgICAgICAgMy44NDgxKy0wLjU4NTUgICAgICAgICAg
bWlnaHQgYmUgMS4wOTMyeCBmYXN0ZXIKICAgdGVhci1vZmYtYXJndW1lbnRzLXNpbXBsZSAgICAg
ICAgICAgICAgICAgICAgICAgMi4wMjk4Ky0wLjAxOTUgICAgID8gICAgICAyLjA0NTcrLTAuMDM0
NCAgICAgICAgPwogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjQyMjArLTAuMDE0NyAgICAgPyAgICAgIDMuNDM0MCstMC4wMjEwICAgICAgICA/CiAg
IHRlbXBvcmFsLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNzAzNyst
MC4yMjQxICAgICAgICAgICAyMy42MDg2Ky0wLjEwMTcgICAgICAgIAogICB0by1pbnQzMi1ib29s
ZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjY3ODYrLTAuMTQxNyAgICAgICAg
ICAgMjYuNjYyNistMC4xMjYyICAgICAgICAKICAgdW5kZWZpbmVkLXRlc3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4yMTI4Ky0wLjAyODAgICAgICEgICAgICA0LjQ3MjUrLTAu
MDI5MSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDYxNnggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjMzMTYrLTAuMDk2MyAgICAgPyAg
ICAgMjQuNDA4MystMC4xMDA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAzMnggc2xvd2VyCiAgIDxn
ZW9tZXRyaWM+ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzU4MistMC4w
NjU5ICAgICA/ICAgICAgOS43NjE5Ky0wLjA2MDYgICAgICAgID8gbWlnaHQgYmUgMS4wMDA0eCBz
bG93ZXIKICAgPGhhcm1vbmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4xNDgwKy0wLjA0MDkgICAgID8gICAgICA1LjE0OTErLTAuMDM3NSAgICAgICAgPyBtaWdodCBi
ZSAxLjAwMDJ4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCQVNFICAgICAgICAgICAgICAgICAgICAgUEFUQ0ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKRFNQOgogICBmaWx0cnItcG9zdGVyaXplLXRp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgIDUzLjEyOTArLTEuMzQ0MiAgICAgICAgICAgNTEu
Mzc0MCstMS4wOTQxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0MnggZmFzdGVyCiAgIGZpbHRyci10
aW50LWNvbnRyYXN0LXNhdC1icmlnaHQgICAgICAgICAgICAgICAgODIuODg1NCstMi44OTI3ICAg
ICAgICAgICA4MC40MjgwKy0zLjQxMDIgICAgICAgICAgbWlnaHQgYmUgMS4wMzA2eCBmYXN0ZXIK
ICAgZmlsdHJyLXRpbnQtc2F0LWFkai1jb250ci1tdWx0ICAgICAgICAgICAgICAgICA5Ny42MzAz
Ky0yLjE0NTUgICAgIF4gICAgIDkyLjA0ODUrLTIuNjIxMSAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MDYwNnggZmFzdGVyCiAgIGZpbHRyci1ibHVyLW92ZXJsYXktc2F0LWNvbnRyICAgICAgICAgICAg
ICAgICAyNDguMzcyOCstNy4wODM2ICAgICAgICAgIDI0Ni43OTM2Ky02LjMyMTEgICAgICAgIAog
ICBmaWx0cnItc2F0LWJsdXItbXVsdC1zaGFycGVuLWNvbnRyICAgICAgICAgICAgMjg0LjQ3NDUr
LTMuOTk0NiAgICAgICAgICAyNzguMzI1MystMy4yNzYxICAgICAgICAgIG1pZ2h0IGJlIDEuMDIy
MXggZmFzdGVyCiAgIGZpbHRyci1zZXBpYS1iaWFzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzguNDAzNSstMC44NTkzICAgICAgICAgICAzNi40NDUyKy0xLjQzNjkgICAgICAgICAgbWln
aHQgYmUgMS4wNTM3eCBmYXN0ZXIKICAgcm91dGU5LXZwOCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4NSAgICAgMTE4NS4zNzk3Ky0xMS4yMTI0ICAgID8gICAxMTkyLjU2MzArLTEyLjIxMzQg
ICAgICAgPwogICBzdGFyZmllbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg1ICAgICAx
MTY5LjUzODErLTUuMjA1NCAgICAgICAgIDExNjMuNzc0NCstMy44MTQ1ICAgICAgICAKICAgenlu
YXBzLXF1YWtlMyAgICAgICAgICAgICAgICAgICAgICAgICB4NSAgICAgMTI4Ni4xMzg5Ky0zMi41
OTkzICAgID8gICAxMjkzLjgwNTMrLTE5Ljg1NjIgICAgICAgPwogICB6eW5hcHMtbWFuZGVsYnJv
dCAgICAgICAgICAgICAgICAgICAgIHg1ICAgICAxMTIxLjIxNDArLTYuNjgwOCAgICAgPyAgIDEx
MzQuMDMyNistOC42MDM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNHggc2xvd2VyCgogICA8YXJp
dGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQ2Ljc3ODgrLTcuODY1
OSAgICAgPyAgICA5NTAuMjQyMCstNi4xMTE3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAzN3ggc2xv
d2VyCiAgIDxnZW9tZXRyaWM+ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NzUu
MzM4MystMi45NzM1ICAgICAgICAgIDY3Mi40NTk1Ky0xLjYwNzkgICAgICAgICAgbWlnaHQgYmUg
MS4wMDQzeCBmYXN0ZXIKICAgPGhhcm1vbmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI4My43ODIxKy00LjM0MjEgICAgICAgICAgMjc0LjU2OTYrLTYuMjYwOSAgICAgICAg
ICBtaWdodCBiZSAxLjAzMzZ4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCQVNFICAgICAgICAgICAgICAgICAgICAgUEFUQ0gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQWxsIGJlbmNobWFya3M6CiAg
IDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzQuNDIzNist
MS4zMzQwICAgICA/ICAgIDE3NC40MjQ5Ky0wLjk1MzMgICAgICAgID8gbWlnaHQgYmUgMS4wMDAw
eCBzbG93ZXIKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMi42ODk0Ky0wLjEyODEgICAgICAgICAgIDIyLjUzNTMrLTAuMTE5MCAgICAgICAgICBtaWdo
dCBiZSAxLjAwNjh4IGZhc3RlcgogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjUzNTMrLTAuMDIxOSAgICAgXiAgICAgIDQuNDgyNSstMC4wMjcyICAg
ICAgICBeIGRlZmluaXRlbHkgMS4wMTE4eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFTRSAgICAgICAgICAgICAgICAgICAg
IFBBVENIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkdlb21lYW4gb2Yg
cHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQzLjA4NjIrLTAuMzY3MiAgICAgXiAgICAgNDIuMzQ0NSstMC4zMTQ0ICAgICAg
ICBeIGRlZmluaXRlbHkgMS4wMTc1eCBmYXN0ZXIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>