<?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>193557</bug_id>
          
          <creation_ts>2019-01-17 16:35:17 -0800</creation_ts>
          <short_desc>Audit bytecode fields and ensure that LLInt instructions for accessing them are appropriate.</short_desc>
          <delta_ts>2019-01-20 12:33:22 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>193467</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495680</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 16:35:17 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495681</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-17 16:35:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/47369125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495682</commentid>
    <comment_count>2</comment_count>
      <attachid>359424</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 16:41:42 -0800</bug_when>
    <thetext>Created attachment 359424
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495697</commentid>
    <comment_count>3</comment_count>
      <attachid>359424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-17 17:17:38 -0800</bug_when>
    <thetext>Comment on attachment 359424
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1331
&gt; +    loadp OpGetByIdDirect::Metadata::m_structureID[t5], t1

I prefer using loadi for StructureID, but either is OK to me if it is consistent.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:918
&gt; +    loadi CodeBlock::m_numParameters[temp1], temp1

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495698</commentid>
    <comment_count>4</comment_count>
      <attachid>359424</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-17 17:22:51 -0800</bug_when>
    <thetext>Comment on attachment 359424
proposed patch.

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:737
&gt; -    loadi JSCallee::m_scope[t0], t0
&gt; +    loadp JSCallee::m_scope[t0], t0

we should really have some static analysis for this where we&apos;d just fail to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495699</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 17:25:21 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; Comment on attachment 359424 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359424&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:737
&gt; &gt; -    loadi JSCallee::m_scope[t0], t0
&gt; &gt; +    loadp JSCallee::m_scope[t0], t0
&gt; 
&gt; we should really have some static analysis for this where we&apos;d just fail to
&gt; compile

Totally agree.  That&apos;s what I&apos;m hoping to do as a feature for the offlineasm later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495705</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 17:33:12 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to Yusuke Suzuki from comment #3)
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1331
&gt; &gt; +    loadp OpGetByIdDirect::Metadata::m_structureID[t5], t1
&gt; 
&gt; I prefer using loadi for StructureID, but either is OK to me if it is
&gt; consistent.

I think I&apos;ll switch back to loadi, storei, and bi* instructions for structureID on 32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495706</commentid>
    <comment_count>7</comment_count>
      <attachid>359432</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 17:34:16 -0800</bug_when>
    <thetext>Created attachment 359432
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495717</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 18:12:28 -0800</bug_when>
    <thetext>Landed in r240138: &lt;http://trac.webkit.org/r240138&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496345</commentid>
    <comment_count>9</comment_count>
      <attachid>359432</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-20 12:33:22 -0800</bug_when>
    <thetext>Comment on attachment 359432
patch for landing.

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

&gt; Source/JavaScriptCore/ChangeLog:52
&gt; +             4. The following should be read with loadi (not loadis) because they are

Does loadis sign extend to 64-bit?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359424</attachid>
            <date>2019-01-17 16:41:42 -0800</date>
            <delta_ts>2019-01-17 17:34:16 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-193557.patch</filename>
            <type>text/plain</type>
            <size>122241</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBA
QAorMjAxOS0wMS0xNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXVkaXQgYnl0ZWNvZGUgZmllbGRzIGFuZCBlbnN1cmUgdGhhdCBMTEludCBpbnN0cnVjdGlvbnMg
Zm9yIGFjY2Vzc2luZyB0aGVtIGFyZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzU1NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDczNjkxMjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgMS4gUmVuYW1lIHNvbWUgYnl0ZWNvZGUgZmllbGRzIHNvIHRoYXQgaXQncyBlYXNpZXIg
dG8gZGlzY2VybiB3aGV0aGVyIHRoZSBMTEludAorICAgICAgICAgICBpcyBhY2Nlc3NpbmcgdGhl
bSB0aGUgcmlnaHQgd2F5OgorICAgICAgICAgICAtIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGFyZ2V0
VmlydHVhbFJlZ2lzdGVyIGFuZCB0YXJnZXRMYWJlbC4KKyAgICAgICAgICAgLSBuYW1lIGFsbCBT
dHJ1Y3R1cmVJRCBmaWVsZHMgYXMgc3RydWN0dXJlSUQgKG9sZFN0cnVjdHVyZUlELCBuZXdTdHJ1
Y3R1cmVJRCkKKyAgICAgICAgICAgICBpbnN0ZWFkIG9mIHN0cnVjdHVyZSAob2xkU3RydWN0dXJl
LCBuZXdTdHJ1Y3R1cmUpLgorCisgICAgICAgIDIuIFVzZSBiaXR3aXNlX2Nhc3QgaW4gc3RydWN0
IEZpdHMgd2hlbiBzaXplb2YoVCkgPT0gc2l6ZS4KKyAgICAgICAgICAgVGhpcyBwcmV2ZW50cyBw
b3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIGlzc3VlcyBhcmlzaW5nIGZyb20gZG9pbmcKKyAg
ICAgICAgICAgYXNzaWdubWVudHMgd2l0aCByZWludGVycHJldF9jYXN0J2VkIHBvaW50ZXJzLgor
CisgICAgICAgIDMuIE1ha2UgU3BlY2lhbDo6UG9pbnRlciBhbiB1bnNpZ25lZCB0eXBlIChwcmV2
aW91c2x5IGludCkuCisgICAgICAgICAgIE1ha2UgUmVzb2x2ZVR5cGUgYW4gdW5zaWduZWQgdHlw
ZSAocHJldmlvdXNseSBpbnQpLgorCisgICAgICAgIDQuIEluIExvd0xldmVsSW50ZXJwcmV0ZXIq
LmFzbToKKworICAgICAgICAgICAtIHJlbmFtZSB0aGUgb3AgbWFjcm8gYXJndW1lbnQgdG8gb3Bj
b2RlTmFtZSBvciBvcGNvZGVTdHJ1Y3QgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgIFRoaXMg
bWFrZXMgaXQgY2xlYXJlciB3aGljaCBhcmd1bWVudCB0eXBlIHRoZSBtYWNybyBpcyB3b3JraW5n
IHdpdGguCisKKyAgICAgICAgICAgLSByZW5hbWUgdGhlIG5hbWUgbWFjcm8gYXJndW1lbnQgdG8g
b3Bjb2RlTmFtZS4KKworICAgICAgICAgICAtIGZpeCBvcGVyYXRvciB0eXBlcyB0byBtYXRjaCB0
aGUgZmllbGQgdHlwZSBiZWluZyBhY2Nlc3NlZC4gIFRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAg
ICBtYXkgaGF2ZSByZXN1bHRlZCBpbiBidWdzIGJlZm9yZToKKworICAgICAgICAgICAgIDEuIFRo
ZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlYWQgd2l0aCBnZXR1KCkgaW5zdGVhZCBvZiBnZXQoKSBi
ZWNhdXNlIHRoZXkKKyAgICAgICAgICAgICAgICBhcmUgdW5zaWduZWQgaW50czoKKyAgICAgICAg
ICAgICAgICAgICAgT3BTd2l0Y2hJbW06Om1fdGFibGVJbmRleAorICAgICAgICAgICAgICAgICAg
ICBPcFN3aXRjaENoYXI6Om1fdGFibGVJbmRleAorICAgICAgICAgICAgICAgICAgICBPcEdldEZy
b21Bcmd1bWVudHM6Om1faW5kZXgKKyAgICAgICAgICAgICAgICAgICAgT3BQdXRUb0FyZ3VtZW50
czo6bV9pbmRleAorICAgICAgICAgICAgICAgICAgICBPcEdldFJlc3RMZW5ndGg6Om1fbnVtUGFy
YW1ldGVyc1RvU2tpcAorCisgICAgICAgICAgICAgICAgT3BKbmVxUHRyOjptX3NwZWNpYWxQb2lu
dGVyIHNob3VsZCBhbHNvIGJlIHJlYWQgd2l0aCBnZXR1KCkgdGhvdWdoIHRoaXMKKyAgICAgICAg
ICAgICAgICB3YXNuJ3QgYSBidWcgYmVjYXVzZSBpdCB3YXMgcHJldmlvdXNseSBhbiBpbnQgYnkg
ZGVmYXVsdCwgYW5kIGlzIG9ubHkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHRvIGFuIHVuc2ln
bmVkIGludCBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICAgICAgMi5UaGUgZm9sbG93aW5nIHNo
b3VsZCBiZSByZWFkIHdpdGggbG9hZGkgKG5vdCBsb2FkcCkgYmVjYXVzZSB0aGV5IGFyZSBvZgor
ICAgICAgICAgICAgICAgdW5zaWduZWQgdHlwZSAobm90IGEgcG9pbnRlcik6CisgICAgICAgICAg
ICAgICAgICAgIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9yZXNvbHZlVHlwZQorICAgICAg
ICAgICAgICAgICAgICBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVycyAoc2VlIHByZXBhcmVGb3JU
YWlsQ2FsbCkKKworICAgICAgICAgICAgIDMuIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fb3Bl
cmFuZCBzaG91bGQgYmUgcmVhZCB3aXRoIGxvYWRwIChub3QgbG9hZGlzKQorICAgICAgICAgICAg
ICAgIGJlY2F1c2UgaXQgaXMgYSB1aW50cHRyX3QuCisKKyAgICAgICAgICAgICA0LiBUaGUgZm9s
bG93aW5nIHNob3VsZCBiZSByZWFkIHdpdGggbG9hZGkgKG5vdCBsb2FkaXMpIGJlY2F1c2UgdGhl
eSBhcmUKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnRzOgorICAgICAgICAgICAgICAgICAg
ICBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHMKKyAgICAgICAgICAgICAgICAgICAgT3BQdXRCeUlkOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1
cmVJRAorICAgICAgICAgICAgICAgICAgICBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjptX2dldFB1
dEluZm8gKyBHZXRQdXRJbmZvOjptX29wZXJhbmQKKworICAgICAgICAgICAgICAgIFRoZXNlIG1h
eSBub3QgaGF2ZSBtYW5pZmVzdGVkIGluIGJ1Z3MgYmVjYXVzZSB0aGUgb3BlcmF0aW9ucyB0aGF0
IGZvbGxvdworICAgICAgICAgICAgICAgIHRoZSBsb2FkIGFyZSAzMi1iaXQgaW5zdHJ1Y3Rpb25z
IHdoaWNoIGlnbm9yZSB0aGUgaGlnaCB3b3JkLgorCisgICAgICAgIDUuIEdpdmUgY2xhc3MgR2V0
UHV0SW5mbyBhIGRlZmF1bHQgY29uc3RydWN0b3Igc28gdGhhdCB3ZSBjYW4gdXNlIGJpdHdpc2Vf
Y2FzdAorICAgICAgICAgICBvbiBpdC4gIEFsc28gYmVmcmllbmQgTExJbnRPZmZzZXRzRXh0cmFj
dG9yIHNvIHRoYXQgd2UgY2FuIHRha2UgdGhlIG9mZnNldCBvZgorICAgICAgICAgICBtX29wZXJh
bmQgaW4gaXQuCisKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgICogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKToKKyAgICAgICAgKiBieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Omp1bXBUYXJnZXRG
b3JJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OnVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9y
SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBi
eXRlY29kZS9TcGVjaWFsUG9pbnRlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxhYmVsOjpzZXRMb2NhdGlvbik6CisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXApOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRC
aW5hcnlEb3VibGVPcCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfam1wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pmYWxz
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5l
cV9wdHIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3Rkeik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamVxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVf
dHlwZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9qbXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamZhbHNlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9qZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2plcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9qbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pzdHJpY3RlcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5zdHJpY3RlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jaGVja190ZHopOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBl
KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdl
dEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0dldFB1dEluZm8uaDoK
KwogMjAxOS0wMS0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTREtfVkFSSUFOVCBidWlsZCBkZXN0aW5hdGlvbnMgc2hvdWxkIGJlIHNlcGFyYXRlIGZyb20g
bm9uLVNES19WQVJJQU5UIGJ1aWxkcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwNiw2ICsz
MDYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Qml0KGludCBtYXNrKSB7IG1fYml0cyB8PSBt
YXNrOyB9CiAKICAgICB1aW50MzJfdCBtX2JpdHMgeyAwIH07IC8vIFdlIHRha2UgY2FyZSB0byB1
cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBXZSBkb24ndCBldmVyIHN0
b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8gaXQuCisKKyAgICBmcmll
bmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNyArMTQyLDcgQEAgb3AgOnRvX3RoaXMsCiAK
IG9wIDpjaGVja190ZHosCiAgICAgYXJnczogewotICAgICAgICB0YXJnZXQ6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICAgICAgdGFyZ2V0VmlydHVhbFJlZ2lzdGVyOiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgfQogCiBvcCA6bmV3X29iamVjdCwKQEAgLTQ0OSw3ICs0NDksNyBAQCBvcCA6Z2V0X2J5X2lk
X2RpcmVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAotICAgICAgICBzdHJ1Y3R1cmU6IFN0cnVjdHVy
ZUlELAorICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDog
dW5zaWduZWQsCiAgICAgfQogCkBAIC00NzEsOSArNDcxLDkgQEAgb3AgOnB1dF9ieV9pZCwKICAg
ICAgICAgZmxhZ3M6IFB1dEJ5SWRGbGFncywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIG9sZFN0cnVjdHVyZTogU3RydWN0dXJlSUQsCisgICAgICAgIG9sZFN0cnVjdHVyZUlEOiBT
dHJ1Y3R1cmVJRCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKLSAgICAgICAgbmV3U3RydWN0
dXJlOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAog
ICAgICAgICBzdHJ1Y3R1cmVDaGFpbjogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVDaGFpbl0s
CiAgICAgfQogCkBAIC01OTgsMzggKzU5OCwzOCBAQCBvcCA6ZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5LAogCiBvcCA6am1wLAogICAgIGFyZ3M6IHsKLSAgICAgICAgdGFyZ2V0OiBCb3VuZExhYmVs
LAorICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKIG9wIDpqdHJ1ZSwK
ICAgICBhcmdzOiB7CiAgICAgICAgIGNvbmRpdGlvbjogVmlydHVhbFJlZ2lzdGVyLAotICAgICAg
ICB0YXJnZXQ6IEJvdW5kTGFiZWwsCisgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAog
ICAgIH0KIAogb3AgOmpmYWxzZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGNvbmRpdGlvbjogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICB0YXJnZXQ6IEJvdW5kTGFiZWwsCisgICAgICAgIHRhcmdl
dExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0KIAogb3AgOmplcV9udWxsLAogICAgIGFyZ3M6IHsK
ICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgdGFyZ2V0OiBCb3VuZExh
YmVsLAorICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9CiAKIG9wIDpqbmVx
X251bGwsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAg
ICAgICB0YXJnZXQ6IEJvdW5kTGFiZWwsCisgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVs
LAogICAgIH0KIAogb3AgOmpuZXFfcHRyLAogICAgIGFyZ3M6IHsKICAgICAgICAgdmFsdWU6IFZp
cnR1YWxSZWdpc3RlciwKICAgICAgICAgc3BlY2lhbFBvaW50ZXI6IFNwZWNpYWw6OlBvaW50ZXIs
Ci0gICAgICAgIHRhcmdldDogQm91bmRMYWJlbCwKKyAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5k
TGFiZWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBoYXNKdW1wZWQ6IGJvb2ws
CkBAIC02NTUsNyArNjU1LDcgQEAgb3BfZ3JvdXAgOkJpbmFyeUptcCwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGxoczogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICByaHM6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgdGFyZ2V0OiBCb3VuZExhYmVsLAorICAgICAgICB0YXJnZXRMYWJlbDogQm91
bmRMYWJlbCwKICAgICB9CiAKIG9wIDpsb29wX2hpbnQKQEAgLTk2NSw3ICs5NjUsNyBAQCBvcCA6
ZW5kLAogCiBvcCA6cHJvZmlsZV90eXBlLAogICAgIGFyZ3M6IHsKLSAgICAgICAgdGFyZ2V0OiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHRhcmdldFZpcnR1YWxSZWdpc3RlcjogVmlydHVhbFJl
Z2lzdGVyLAogICAgICAgICBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aDogaW50LAogICAgICAgICBm
bGFnOiBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICAgICAgaWRlbnRpZmllcj86IHVuc2ln
bmVkLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5NCw5IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKIAogICAgIFVTRVMoT3BHZXRT
Y29wZSwgZHN0KQogICAgIFVTRVMoT3BUb1RoaXMsIHNyY0RzdCkKLSAgICBVU0VTKE9wQ2hlY2tU
ZHosIHRhcmdldCkKKyAgICBVU0VTKE9wQ2hlY2tUZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikK
ICAgICBVU0VTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQotICAgIFVTRVMoT3BQcm9m
aWxlVHlwZSwgdGFyZ2V0KTsKKyAgICBVU0VTKE9wUHJvZmlsZVR5cGUsIHRhcmdldFZpcnR1YWxS
ZWdpc3Rlcik7CiAgICAgVVNFUyhPcFRocm93LCB2YWx1ZSkKICAgICBVU0VTKE9wVGhyb3dTdGF0
aWNFcnJvciwgbWVzc2FnZSkKICAgICBVU0VTKE9wRW5kLCB2YWx1ZSkKQEAgLTQ0OCw3ICs0NDgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgREVGUyhP
cE1vdiwgZHN0KQogICAgIERFRlMoT3BOZXdPYmplY3QsIGRzdCkKICAgICBERUZTKE9wVG9UaGlz
LCBzcmNEc3QpCi0gICAgREVGUyhPcENoZWNrVGR6LCB0YXJnZXQpCisgICAgREVGUyhPcENoZWNr
VGR6LCB0YXJnZXRWaXJ0dWFsUmVnaXN0ZXIpCiAgICAgREVGUyhPcEdldFNjb3BlLCBkc3QpCiAg
ICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BDcmVhdGVT
Y29wZWRBcmd1bWVudHMsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5NSw4ICsx
MDk1LDggQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbgogICAgICAg
ICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLT5hdChwcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uc1tpXSk7CiAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24tPmlzPE9wUHV0
QnlJZD4oKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wUHV0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlOwotICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1
cmU7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBpZiAo
IW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPQpAQCAt
MTIyNiw3ICsxMjI2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZQogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BHZXRC
eUlkPigpLm1ldGFkYXRhKHRoaXMpOwogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZSAh
PSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
ZGVmYXVsdE1vZGUuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsK
ICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgSGVhcDo6aXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQpAQCAtMTIz
NiwxOSArMTIzNiwxOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hl
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0OiB7CiAgICAgICAg
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+
KCkubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKCFvbGRT
dHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOwotICAgICAgICAgICAgbWV0YWRhdGEu
bV9zdHJ1Y3R1cmUgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7
CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpLm1ldGFkYXRhKHRo
aXMpOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X29sZFN0cnVjdHVyZTsKLSAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0g
bWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLmdl
dCgpOwogICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgSGVhcDo6aXNNYXJrZWQo
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCiAgICAgICAg
ICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkKQEAgLTEyNTYsOSArMTI1Niw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGUKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uLlxuIik7
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZSA9IDA7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zm
c2V0ID0gMDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlID0gMDsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAkocmV2aXNpb24gMjQw
MTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MiwxMCArNTIsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgT3Bjb2RlU2l6ZSBzaXpl
Pgogc3RydWN0IEZpdHM8VCwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6
ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAgc3RhdGljIGJvb2wgY2hlY2soVCkgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgc3RhdGljIHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnR5cGUgY29u
dmVydChUIHQpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8
c2l6ZT46OnR5cGUqPigmdCk7IH0KKyAgICBzdGF0aWMgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXpl
Pjo6dHlwZSBjb252ZXJ0KFQgdCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVC
eVNpemU8c2l6ZT46OnR5cGU+KHQpOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUMSA9IFQsIE9w
Y29kZVNpemUgc2l6ZTEgPSBzaXplLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfc2FtZTxUMSwgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplMT46OnR5cGU+Ojp2YWx1ZSwgc3Rk
Ojp0cnVlX3R5cGU+PgotICAgIHN0YXRpYyBUMSBjb252ZXJ0KHR5cGVuYW1lIFR5cGVCeVNpemU8
c2l6ZTE+Ojp0eXBlIHQpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFQxKj4oJnQpOyB9Cisg
ICAgc3RhdGljIFQxIGNvbnZlcnQodHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplMT46OnR5cGUgdCkg
eyByZXR1cm4gYml0d2lzZV9jYXN0PFQxPih0KTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgT3Bjb2RlU2l6ZSBzaXplPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRNZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDE2ICszOSwxNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB7IH0KIAogICAg
IHN0cnVjdCBEZWZhdWx0IHsKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlOworICAgICAg
ICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0OwogICAgIH0gZGVmYXVsdE1vZGU7CiAKICAgICBzdHJ1Y3QgVW5zZXQgewotICAgICAg
ICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlE
OwogICAgIH0gdW5zZXRNb2RlOwogCiAgICAgc3RydWN0IFByb3RvTG9hZCB7Ci0gICAgICAgIFN0
cnVjdHVyZUlEIHN0cnVjdHVyZTsKKyAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKICAgICAgICAgSlNPYmplY3QqIGNh
Y2hlZFNsb3Q7CiAgICAgfSBwcm90b0xvYWRNb2RlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjQwMTM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NiwxMSArNjYsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRnJvbQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU4MDM5CiAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgIT0gR2V0QnlJZE1v
ZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBmYWxzZSk7Ci0gICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlOworICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGlyZWN0OgotICAgICAgICBzdHJ1Y3R1cmVJ
RCA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCkubWV0YWRhdGEocHJvZmlsZWRC
bG9jaykubV9zdHJ1Y3R1cmU7CisgICAgICAgIHN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZERpcmVjdD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKS5tX3N0cnVjdHVyZUlE
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6IHsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIHRyeV9nZXRfYnlf
aWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZQogewogICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0OwogICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNh
Y2hlZE9mZnNldCA9IDA7Ci0gICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUu
c3RydWN0dXJlID0gMDsKKyAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRCA9IDA7CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCShyZXZpc2lv
biAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEJsb2NrPgogaW5saW5lIGludCBqdW1wVGFyZ2V0Rm9y
SW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtOjpS
ZWYmIGluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3A+KCk7Ci0gICAgcmV0dXJuIGp1bXBUYXJnZXRGb3JJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgcmV0dXJuIGp1bXBUYXJnZXRGb3JJ
bnN0cnVjdGlvbihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVs
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uPgpAQCAt
MTM5LDcgKzEzOSw3IEBAIGlubGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW4K
ICAgICBjYXNlIF9fb3A6Om9wY29kZUlEOiB7IFwKICAgICAgICAgaW50MzJfdCB0YXJnZXQgPSBq
dW1wVGFyZ2V0Rm9ySW5zdHJ1Y3Rpb248X19vcD4oY29kZUJsb2NrT3JIYXNoTWFwLCBpbnN0cnVj
dGlvbik7IFwKICAgICAgICAgaW50MzJfdCBuZXdUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpOyBc
Ci0gICAgICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3A+KCktPnNldFRhcmdldChCb3VuZExhYmVs
KG5ld1RhcmdldCksIFsmXSgpIHsgXAorICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wPigp
LT5zZXRUYXJnZXRMYWJlbChCb3VuZExhYmVsKG5ld1RhcmdldCksIFsmXSgpIHsgXAogICAgICAg
ICAgICAgY29kZUJsb2NrLT5hZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KGZpbmFsT2Zmc2V0ICsgaW5z
dHJ1Y3Rpb24ub2Zmc2V0KCksIG5ld1RhcmdldCk7IFwKICAgICAgICAgICAgIHJldHVybiBCb3Vu
ZExhYmVsKCk7IFwKICAgICAgICAgfSk7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTUsMTMgKzU1LDEzIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZyb20KICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4o
KTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2sp
OwogCi0gICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVy
ZTsKKyAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJl
SUQ7CiAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbik7CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpOwogCi0gICAgU3RydWN0dXJlSUQg
bmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJ
RCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CiAgICAgaWYgKCFu
ZXdTdHJ1Y3R1cmVJRCkgewogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zm
c2V0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFs
UG9pbnRlci5oCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNz
IENvZGVCbG9jazsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogCiBuYW1lc3BhY2UgU3BlY2lhbCB7
Ci1lbnVtIFBvaW50ZXIgeworZW51bSBQb2ludGVyIDogdW5zaWduZWQgewogICAgIENhbGxGdW5j
dGlvbiwKICAgICBBcHBseUZ1bmN0aW9uLAogICAgIE9iamVjdENvbnN0cnVjdG9yLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBMYWJlbDo6c2V0TG9jYXRpb24oQnl0ZWNvZGVHZW5lcmF0bwog
CiAjZGVmaW5lIENBU0UoX19vcCkgXAogICAgIGNhc2UgX19vcDo6b3Bjb2RlSUQ6ICBcCi0gICAg
ICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3A+KCktPnNldFRhcmdldChCb3VuZExhYmVsKHRhcmdl
dCksIFsmXSgpIHsgXAorICAgICAgICBpbnN0cnVjdGlvbi0+Y2FzdDxfX29wPigpLT5zZXRUYXJn
ZXRMYWJlbChCb3VuZExhYmVsKHRhcmdldCksIFsmXSgpIHsgXAogICAgICAgICAgICAgZ2VuZXJh
dG9yLm1fY29kZUJsb2NrLT5hZGRPdXRPZkxpbmVKdW1wVGFyZ2V0KGluc3RydWN0aW9uLm9mZnNl
dCgpLCB0YXJnZXQpOyBcCiAgICAgICAgICAgICByZXR1cm4gQm91bmRMYWJlbCgpOyBcCiAgICAg
ICAgIH0pOyBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwOTAsNyArNTA5
MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAg
ICBjYXNlIG9wX2NoZWNrX3RkejogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgo
Q2hlY2tOb3RFbXB0eSwgZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KSk7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrTm90RW1wdHksIGdldChieXRlY29kZS5tX3RhcmdldFZpcnR1YWxSZWdpc3Rl
cikpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2hlY2tfdGR6KTsKICAgICAgICAgfQog
CkBAIC01NTk4LDcgKzU1OTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFByb2ZpbGVUeXBlPigpOwogICAg
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwot
ICAgICAgICAgICAgTm9kZSogdmFsdWVUb1Byb2ZpbGUgPSBnZXQoYnl0ZWNvZGUubV90YXJnZXQp
OworICAgICAgICAgICAgTm9kZSogdmFsdWVUb1Byb2ZpbGUgPSBnZXQoYnl0ZWNvZGUubV90YXJn
ZXRWaXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChQcm9maWxlVHlwZSwg
T3BJbmZvKG1ldGFkYXRhLm1fdHlwZUxvY2F0aW9uKSwgdmFsdWVUb1Byb2ZpbGUpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfcHJvZmlsZV90eXBlKTsKICAgICAgICAgfQpAQCAtNTYxNSw3
ICs1NjE1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICBjYXNlIG9wX2ptcDogewogICAgICAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+
dGVybWluYWwoKSk7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEptcD4oKTsKLSAgICAgICAgICAgIGludCByZWxhdGl2ZU9mZnNldCA9IGp1bXBU
YXJnZXQoYnl0ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgaW50IHJlbGF0aXZlT2Zmc2V0
ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIGFkZFRv
R3JhcGgoSnVtcCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKTsKICAg
ICAgICAgICAgIGlmIChyZWxhdGl2ZU9mZnNldCA8PSAwKQogICAgICAgICAgICAgICAgIGZsdXNo
Rm9yVGVybWluYWwoKTsKQEAgLTU2MjQsNyArNTYyNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2p0cnVlOiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwot
ICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2Rl
Lm1fdGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRh
cmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlv
biA9IGdldChieXRlY29kZS5tX2NvbmRpdGlvbik7CiAgICAgICAgICAgICBhZGRUb0dyYXBoKEJy
YW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNldCwg
bV9jdXJyZW50SW5kZXggKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSkpLCBjb25kaXRpb24p
OwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfanRydWUpOwpAQCAtNTYzMiw3ICs1NjMyLDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgIGNh
c2Ugb3BfamZhbHNlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zm
c2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25l
ZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAg
ICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBnZXQoYnl0ZWNvZGUubV9jb25kaXRpb24pOwog
ICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVu
dEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uLT5zaXplKCksIG1fY3VycmVudEluZGV4ICsgcmVs
YXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pm
YWxzZSk7CkBAIC01NjQwLDcgKzU2NDAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFOdWxsPigpOwotICAg
ICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1f
dGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdl
dChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgTm9kZSogbnVsbENvbnN0YW50ID0gYWRk
VG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudE51bGwpKTsKICAgICAgICAgICAg
IE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxLCB2YWx1ZSwgbnVsbENvbnN0
YW50KTsKQEAgLTU2NTAsNyArNTY1MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxTnVsbD4oKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5t
X3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJn
ZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdl
dChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIE5vZGUqIG51bGxDb25zdGFudCA9IGFk
ZFRvR3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnROdWxsKSk7CiAgICAgICAgICAg
ICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcSwgdmFsdWUsIG51bGxDb25z
dGFudCk7CkBAIC01NjYwLDcgKzU2NjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qbGVzczogewogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbGVzcz4oKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3Rhcmdl
dCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNv
ZGUubV9saHMpOwogICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsK
ICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUxlc3MsIG9w
MSwgb3AyKTsKQEAgLTU2NzAsNyArNTY3MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKICAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmxlc3NlcT4oKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5t
X3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJn
ZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQo
Ynl0ZWNvZGUubV9saHMpOwogICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1f
cmhzKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUxl
c3NFcSwgb3AxLCBvcDIpOwpAQCAtNTY4MCw3ICs1NjgwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmdyZWF0
ZXI+KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQo
Ynl0ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQg
PSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSog
b3AxID0gZ2V0KGJ5dGVjb2RlLm1fbGhzKTsKICAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChi
eXRlY29kZS5tX3Jocyk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBo
KENvbXBhcmVHcmVhdGVyLCBvcDEsIG9wMik7CkBAIC01NjkwLDcgKzU2OTAsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qZ3Jl
YXRlcmVxOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEpncmVhdGVyZXE+KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNl
dCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQg
cmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAg
ICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLm1fbGhzKTsKICAgICAgICAgICAgIE5v
ZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jocyk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRp
b24gPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIG9wMSwgb3AyKTsKQEAgLTU3MDAsNyAr
NTcwMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAg
ICAgICBjYXNlIG9wX2plcTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9m
ZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWdu
ZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwog
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLm1fbGhzKTsKICAgICAgICAgICAg
IE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jocyk7CiAgICAgICAgICAgICBOb2RlKiBjb25k
aXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpOwpAQCAtNTcxMCw3ICs1NzEw
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAg
IGNhc2Ugb3BfanN0cmljdGVxOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEpzdHJpY3RlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJl
bGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRM
YWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubV9saHMpOwogICAg
ICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsKICAgICAgICAgICAgIE5v
ZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxLCBvcDEsIG9wMik7CkBA
IC01NzIwLDcgKzU3MjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAKICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5sZXNzPigpOwotICAgICAgICAgICAgdW5z
aWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5t
X3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5tX2xo
cyk7CiAgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwogICAgICAg
ICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlTGVzcywgb3AxLCBvcDIp
OwpAQCAtNTczMCw3ICs1NzMwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6IHsKICAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5sZXNzZXE+KCk7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJn
ZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5
dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVj
b2RlLm1fbGhzKTsKICAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jocyk7
CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzRXEs
IG9wMSwgb3AyKTsKQEAgLTU3NDAsNyArNTc0MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmdyZWF0ZXI+
KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0
ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBq
dW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogb3Ax
ID0gZ2V0KGJ5dGVjb2RlLm1fbGhzKTsKICAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRl
Y29kZS5tX3Jocyk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENv
bXBhcmVHcmVhdGVyLCBvcDEsIG9wMik7CkBAIC01NzUwLDcgKzU3NTAsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qbmdyZWF0
ZXJlcTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKbmdyZWF0ZXJlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0
ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCBy
ZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAg
ICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubV9saHMpOwogICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlv
biA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOwpAQCAtNTc2MCw3ICs1
NzYwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAg
ICAgIGNhc2Ugb3Bfam5lcTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwotICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVP
ZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
ICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5tX2xocyk7CiAgICAgICAgICAg
ICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwogICAgICAgICAgICAgTm9kZSogY29u
ZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXEsIG9wMSwgb3AyKTsKQEAgLTU3NzAsNyArNTc3
MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAg
ICBjYXNlIG9wX2puc3RyaWN0ZXE6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5zdHJpY3RlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVk
IHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubV9saHMpOwog
ICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsKICAgICAgICAgICAg
IE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxLCBvcDEsIG9wMik7
CkBAIC01NzgwLDcgKzU3ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qYmVsb3c6IHsKICAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmJlbG93PigpOwotICAgICAgICAgICAg
dW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29k
ZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5t
X2xocyk7CiAgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwogICAg
ICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlQmVsb3csIG9wMSwg
b3AyKTsKQEAgLTU3OTAsNyArNTc5MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2piZWxvd2VxOiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpiZWxvd2VxPigpOwotICAg
ICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1f
dGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdl
dChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChi
eXRlY29kZS5tX2xocyk7CiAgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9y
aHMpOwogICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlQmVs
b3dFcSwgb3AxLCBvcDIpOwpAQCAtNjEwNyw3ICs2MTA3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVy
ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oCiAgICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZv
cihtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKICAgICAg
ICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFs
UG9pbnRlcik7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJn
ZXQoYnl0ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZz
ZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9k
ZSogY2hpbGQgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2hhc0p1bXBlZCkgewogICAgICAgICAgICAgICAgIE5v
ZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxUHRyLCBPcEluZm8oZnJvemVuUG9p
bnRlciksIGNoaWxkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0CiAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBpbnQgb3AxID0gYnl0
ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNl
dCgpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVj
b2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAgIC8vIENoYXJhY3RlciBsZXNzLgog
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudENoYXIob3AxKSkgewpAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY28KICAgICBhdXRvIGJ5dGVj
b2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xo
cy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7Ci0gICAg
dW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVj
b2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkp
IHsKICAgICAgICAgZW1pdExvYWQob3AyLCByZWdUMywgcmVnVDIpOwpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAKICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5t
X2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7Ci0g
ICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5
dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApA
QCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgSklUOjplbWl0QmluYXJ5RG91YmxlT3AoY29uc3QgSW5z
dHIKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50
IG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwotICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGlu
c3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgaW50IHRhcmdldCA9IGp1bXBUYXJn
ZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIGludCBvcDEgPSBi
eXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zm
c2V0KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgSklU
OjplbWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEluc3QKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQo
KTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQg
dGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAg
IHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFy
Z2V0TGFiZWwpOwogICAgIGlmIChpc09wZXJhbmRDb25zdGFudENoYXIob3AxKSkgewogICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDApOwogICAgICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdENlbGwocmVnVDApKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvCiAgICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcD4oKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7
CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwotICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rhcmdl
dExhYmVsKTsKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgewogICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwogICAgICAgICBpbnQzMl90IG9wMmlt
bSA9IGdldE9wZXJhbmRDb25zdGFudEludChvcDIpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQg
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAKICAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZz
ZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7Ci0gICAgdW5zaWdu
ZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOwor
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwogCiAgICAgLy8gV2UgZ2VuZXJhdGUgaW5saW5lIGNvZGUgZm9yIHRoZSBm
b2xsb3dpbmcgY2FzZXMgaW4gdGhlIHNsb3cgcGF0aDoKICAgICAvLyAtIGZsb2F0aW5nLXBvaW50
IG51bWJlciB0byBjb25zdGFudCBpbnQgaW1tZWRpYXRlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyNDAxMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0
aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKbXA+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgYWRk
SnVtcChqdW1wKCksIHRhcmdldCk7CiB9CiAKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3RpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZmFsc2U+KCk7CiAgICAgaW50IGNvbmQgPSBieXRlY29k
ZS5tX2NvbmRpdGlvbi5vZmZzZXQoKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKIAogICAgIGVtaXRMb2FkKGNvbmQsIHJlZ1QxLCByZWdUMCk7CiAKQEAgLTM4Nyw3ICsz
ODcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBJbnN0cnVjdGlvCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKdHJ1ZT4oKTsKICAgICBp
bnQgY29uZCA9IGJ5dGVjb2RlLm1fY29uZGl0aW9uLm9mZnNldCgpOwotICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7
CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5
dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWQoY29uZCwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1
YwogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxTnVs
bD4oKTsKICAgICBpbnQgc3JjID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICB1bnNp
Z25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEs
IHJlZ1QwKTsKIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVs
bChjb25zdCBJbnN0cnUKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEpuZXFOdWxsPigpOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNl
dCgpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9u
LCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChj
dXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExv
YWQoc3JjLCByZWdUMSwgcmVnVDApOwogCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1YwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVl
Lm9mZnNldCgpOwogICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFs
UG9pbnRlcjsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJn
ZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAgIGVt
aXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5v
dENlbGwocmVnVDEpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9l
cShjb25zdCBJbnN0cnVjdGkKIHZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQo
Y3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFi
ZWwpOwogICAgIGludCBzcmMxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IHNy
YzIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKIApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQg
SklUOjpjb21waWxlT3BFcUp1bXBTbG93KFZlY3RvcjxTbG8KIHZvaWQgSklUOjplbWl0U2xvd19v
cF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEplcT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVk
IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rhcmdl
dExhYmVsKTsKICAgICBjb21waWxlT3BFcUp1bXBTbG93KGl0ZXIsIENvbXBpbGVPcEVxVHlwZTo6
RXEsIHRhcmdldCk7CiB9CiAKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfbmVxKGNvbnN0IEluc3RydWN0CiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFy
Z2V0TGFiZWwpOwogICAgIGludCBzcmMxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAg
aW50IHNyYzIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKIApAQCAtNjIxLDcgKzYyMSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24KIHZvaWQgSklUOjplbWl0
U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAg
dW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2Rl
Lm1fdGFyZ2V0TGFiZWwpOwogICAgIGNvbXBpbGVPcEVxSnVtcFNsb3coaXRlciwgQ29tcGlsZU9w
RXFUeXBlOjpORXEsIHRhcmdldCk7CiB9CiAKQEAgLTY2OSw3ICs2NjksNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHR5cGUpCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAg
aW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldCk7CisgICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBi
eXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICBpbnQgc3JjMSA9IGJ5dGVjb2RlLm1fbGhzLm9m
ZnNldCgpOwogICAgIGludCBzcmMyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CiAKQEAgLTcw
OCw3ICs3MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluCiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSnN0cmljdGVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1
bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsK
ICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVH
UFIpLCB0YXJnZXQpOwogfQpAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9qbnN0cmljdGVxKGNvbnN0IEkKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbnN0cmljdGVxPigpOwot
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRl
Y29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpKTsKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0
MzIoWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQpAQCAtMTA1OCw3ICsxMDU4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdAogdm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4o
KTsKLSAgICBlbWl0TG9hZFRhZyhieXRlY29kZS5tX3RhcmdldC5vZmZzZXQoKSwgcmVnVDApOwor
ICAgIGVtaXRMb2FkVGFnKGJ5dGVjb2RlLm1fdGFyZ2V0VmlydHVhbFJlZ2lzdGVyLm9mZnNldCgp
LCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogfQogCkBA
IC0xMjcxLDcgKzEyNzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3Qg
SW5zCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQcm9maWxl
VHlwZT4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKICAgICBUeXBlTG9jYXRpb24qIGNhY2hlZFR5cGVMb2NhdGlvbiA9IG1ldGFkYXRhLm1f
dHlwZUxvY2F0aW9uOwotICAgIGludCB2YWx1ZVRvUHJvZmlsZSA9IGJ5dGVjb2RlLm1fdGFyZ2V0
Lm9mZnNldCgpOworICAgIGludCB2YWx1ZVRvUHJvZmlsZSA9IGJ5dGVjb2RlLm1fdGFyZ2V0Vmly
dHVhbFJlZ2lzdGVyLm9mZnNldCgpOwogCiAgICAgLy8gTG9hZCBwYXlsb2FkIGluIFQwLiBMb2Fk
IHRhZyBpbiBUMy4KICAgICBlbWl0TG9hZFBheWxvYWQodmFsdWVUb1Byb2ZpbGUsIHJlZ1QwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24g
MjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEptcD4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
ICAgICBhZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25vdChjb25zdCBJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29w
X2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmZhbHNlPigpOwotICAgIHVu
c2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5t
X3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgR1BSUmVnIHZhbHVlID0gcmVn
VDA7CiAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1YwogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxTnVsbD4oKTsKICAgICBpbnQgc3JjID0g
Ynl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFy
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVk
IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rhcmdl
dExhYmVsKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAgICAg
SnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CkBAIC00MjIsNyArNDIy
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKGNvbnN0IEluc3RydQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcU51bGw+KCk7CiAgICAg
aW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0
ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVn
VDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwpAQCAt
NDQ4LDcgKzQ0OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWMK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAg
ICBpbnQgc3JjID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKICAgICBTcGVjaWFsOjpQb2lu
dGVyIHB0ciA9IGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXI7Ci0gICAgdW5zaWduZWQgdGFyZ2V0
ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMs
IHJlZ1QwKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWws
IHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikp
KTsKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShjb25zdCBJbnN0cnVj
dGlvbiogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEplcT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVycyhieXRlY29kZS5tX2xocy5vZmZzZXQoKSwgcmVnVDAsIGJ5
dGVjb2RlLm1fcmhzLm9mZnNldCgpLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW50KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWwsIHJl
Z1QwLCByZWdUMSksIHRhcmdldCk7CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfamVxKGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAg
dW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2Rl
Lm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgR1BSUmVnIHZhbHVlID0gcmVnVDA7CiAgICAgR1BSUmVn
IHNjcmF0Y2gxID0gcmVnVDE7CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmVxKGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1w
VGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2ln
bmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldExhYmVsKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhieXRlY29kZS5tX2xocy5v
ZmZzZXQoKSwgcmVnVDAsIGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpLCByZWdUMSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIGFkZEp1bXAo
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMSksIHRhcmdldCk7CkBAIC01NjYsNyArNTY2
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFK
dW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmlj
dEVxVHlwZSB0eXBlKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wPigpOwotICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
biwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgaW50IHNyYzEgPSBi
eXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzLm9m
ZnNldCgpOwogCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pzdHJp
Y3RlcShjb25zdCBJbgogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpzdHJpY3RlcT4oKTsKLSAgICB1bnNp
Z25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcSwgcmVnVDAsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dUb0hvdChi
cmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQpAQCAtNjE3
LDcgKzYxNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKGNvbnN0IEkKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKbnN0cmljdGVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1
bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
LCByZWdUMCwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihaZXJv
LCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdAogdm9pZCBKSVQ6OmVtaXRfb3BfY2hl
Y2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGFyZ2V0Lm9mZnNldCgpLCByZWdUMCk7
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3RhcmdldFZpcnR1YWxSZWdp
c3Rlci5vZmZzZXQoKSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVn
VDApKTsKIH0KIApAQCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qZXEo
Y29uc3QgSW5zdHJ1Y3QKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXE+KCk7Ci0gICAgdW5zaWduZWQg
dGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0
KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwg
Ynl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21w
YXJlRXEsIHJlZ1QwLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMy
KE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KQEAgLTk3NSw3ICs5NzUsNyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5lcShjb25zdCBJbnN0cnVjCiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSm5lcT4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1
bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVFcSwgcmVnVDAsIHJlZ1QxKTsKICAgICBl
bWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJn
ZXQpOwogfQpAQCAtMTM5OSw3ICsxMzk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90
eXBlKGNvbnN0IElucwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHJvZmlsZVR5cGU+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CiAgICAgVHlwZUxvY2F0aW9uKiBjYWNoZWRUeXBlTG9jYXRpb24gPSBt
ZXRhZGF0YS5tX3R5cGVMb2NhdGlvbjsKLSAgICBpbnQgdmFsdWVUb1Byb2ZpbGUgPSBieXRlY29k
ZS5tX3RhcmdldC5vZmZzZXQoKTsKKyAgICBpbnQgdmFsdWVUb1Byb2ZpbGUgPSBieXRlY29kZS5t
X3RhcmdldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIodmFsdWVUb1Byb2ZpbGUsIHJlZ1QwKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNDAxMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIsOCArMTIyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CiAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
fSB3aGlsZSAoZmFsc2UpCiAKLSNkZWZpbmUgSlVNUF9PRkZTRVQodGFyZ2V0KSBcCi0gICAgKCh0
YXJnZXQpID8gKHRhcmdldCkgOiBleGVjLT5jb2RlQmxvY2soKS0+b3V0T2ZMaW5lSnVtcE9mZnNl
dChwYykpCisjZGVmaW5lIEpVTVBfT0ZGU0VUKHRhcmdldE9mZnNldCkgXAorICAgICgodGFyZ2V0
T2Zmc2V0KSA/ICh0YXJnZXRPZmZzZXQpIDogZXhlYy0+Y29kZUJsb2NrKCktPm91dE9mTGluZUp1
bXBPZmZzZXQocGMpKQogCiAjZGVmaW5lIEpVTVBfVE8odGFyZ2V0KSBkbyB7IFwKICAgICAgICAg
cGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGMpICsgKHRhcmdldCkpOyBcCkBAIC0xMzMsNyArMTMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgICAgIGJvb2wgX19iX2NvbmRp
dGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICBKVU1QX1RPKEpVTVBfT0ZGU0VUKGJ5dGVjb2RlLm1f
dGFyZ2V0KSk7IFwKKyAgICAgICAgICAgIEpVTVBfVE8oSlVNUF9PRkZTRVQoYnl0ZWNvZGUubV90
YXJnZXRMYWJlbCkpOyAgICAgICAgIFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIEpVTVBfVE8o
cGMtPnNpemUoKSk7IFwKICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTY1Niw3ICs2NTYsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUND
RVNTX1NMT1cgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmU7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmUqIGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOwog
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0
cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAg
Ly8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICAgICAg
bWV0YWRhdGEubV9zdHJ1Y3R1cmUgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1
cmVJRCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CiAKICAgICAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKQpAQCAtNjgx
LDcgKzY4MSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKIAog
ICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwogCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUt
PmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVy
ZS0+aWQoKTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczNiwxMyArNzM2LDEzIEBA
IHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEUKIAogICAgIGlmIChzbG90
LmlzVW5zZXQoKSkgewogICAgICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6VW5z
ZXQ7Ci0gICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0
TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBBU1NFUlQoc2xvdC5pc1ZhbHVlKCkpOwogCiAgICAgbWV0YWRhdGEubV9tb2RlID0g
R2V0QnlJZE1vZGU6OlByb3RvTG9hZDsKLSAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90
b0xvYWRNb2RlLnN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwog
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0ID0g
b2Zmc2V0OwogICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVk
U2xvdCA9IHNsb3Quc2xvdEJhc2UoKTsKICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBwb2ludGVy
IHdpbGwgcmVtYWluIHZhbGlkIGJlY2F1c2UgaXQgd2lsbCBiZSBjbGVhcmVkIGJ5IGVpdGhlciBh
IHdhdGNocG9pbnQgZmlyZSBvcgpAQCAtNzczLDEzICs3NzMsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAgICAgYXV0byBtb2RlID0gbWV0YWRh
dGEubV9tb2RlOwogICAgICAgICAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgICAgICAgICBjYXNl
IEdldEJ5SWRNb2RlOjpEZWZhdWx0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0g
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlOworICAgICAgICAg
ICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEdldEJ5SWRNb2RlOjpVbnNldDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICAg
ICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3Ry
dWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdldEJ5
SWRNb2RlOjpQcm90b0xvYWQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZTsKKyAgICAgICAgICAg
ICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gMDsKQEAgLTgwMCw3ICs4MDAs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgIGlm
IChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAg
ICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCiAgICAg
ICAgICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZSA9IDA7Cisg
ICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5j
YWNoZWRPZmZzZXQgPSAwOwogCiAgICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUg
Y2FjaGUgZnJvbSBldmVyIGhhcHBlbmluZy4KQEAgLTgxMiw3ICs4MTIsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAK
LSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChzbG90
LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CkBAIC04NTcsNyArODU3LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAmJiBzbG90Lmlz
Q2FjaGVhYmxlUHV0KCkpIHsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBv
bGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlOworICAgICAgICAgICAgU3Ry
dWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOwogICAg
ICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJl
KiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKICAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSk7CkBAIC04NzIsOSArODcyLDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV9pZAogICAgICAgICB9CiAKICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5n
IG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZSA9IDA7
CisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOwogICAgICAgICBtZXRhZGF0
YS5tX29mZnNldCA9IDA7Ci0gICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlID0gMDsKKyAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CiAgICAgICAgIG1ldGFkYXRhLm1f
c3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogYmFzZUNl
bGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CkBAIC04OTYsOSArODk2LDkgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsLCBzYXdQb2x5UHJv
dG8pOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRQcm90b3R5cGVD
aGFpbiAmJiAhc2F3UG9seVByb3RvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+
aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQg
PSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlID0gc3RydWN0dXJlLT5pZCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IHN0cnVjdHVy
ZS0+aWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGJ5dGVjb2RlLm1fZmxhZ3Mg
JiBQdXRCeUlkSXNEaXJlY3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0
dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjLCBhc09iamVj
dChiYXNlQ2VsbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7
CkBAIC05MDgsNyArOTA4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgc3RydWN0dXJlLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlID0g
c3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJl
SUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQg
PSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM1
LDIwICszNSwyMCBAQCBtYWNybyBuZXh0SW5zdHJ1Y3Rpb25XaWRlKCkKICAgICBqbXAgW3QxLCB0
MCwgNF0sIEJ5dGVjb2RlUHRyVGFnCiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmROYXJyb3cob3As
IGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRiIGNvbnN0ZXhwciAlb3AlXyVmaWVsZE5hbWUlX2lu
ZGV4W1BDXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZE5hcnJvdyhvcGNvZGVTdHJ1Y3QsIGZpZWxk
TmFtZSwgZHN0KQorICAgIGxvYWRiIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1l
JV9pbmRleFtQQ10sIGRzdAogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmROYXJyb3cob3AsIGZpZWxk
TmFtZSwgZHN0KQotICAgIGxvYWRic3AgY29uc3RleHByICVvcCVfJWZpZWxkTmFtZSVfaW5kZXhb
UENdLCBkc3QKK21hY3JvIGdldE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKKyAgICBsb2FkYnNwIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9p
bmRleFtQQ10sIGRzdAogZW5kCiAKLW1hY3JvIGdldHVPcGVyYW5kV2lkZShvcCwgZmllbGROYW1l
LCBkc3QpCi0gICAgbG9hZGkgY29uc3RleHByICVvcCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsg
MVtQQ10sIGRzdAorbWFjcm8gZ2V0dU9wZXJhbmRXaWRlKG9wY29kZVN0cnVjdCwgZmllbGROYW1l
LCBkc3QpCisgICAgbG9hZGkgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2lu
ZGV4ICogNCArIDFbUENdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZShvcCwgZmll
bGROYW1lLCBkc3QpCi0gICAgbG9hZGlzIGNvbnN0ZXhwciAlb3AlXyVmaWVsZE5hbWUlX2luZGV4
ICogNCArIDFbUENdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRXaWRlKG9wY29kZVN0cnVjdCwgZmll
bGROYW1lLCBkc3QpCisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGRO
YW1lJV9pbmRleCAqIDQgKyAxW1BDXSwgZHN0CiBlbmQKIAogbWFjcm8gbWFrZVJldHVybihnZXQs
IGRpc3BhdGNoLCBmbikKQEAgLTYyLDEzICs2MiwxMyBAQCBtYWNybyBtYWtlUmV0dXJuKGdldCwg
ZGlzcGF0Y2gsIGZuKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQo
b3AsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKK21hY3JvIG1ha2VSZXR1cm5Qcm9maWxl
ZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEsIGRpc3BhdGNoLCBmbikKICAgICBmbihtYWNy
byAodGFnLCBwYXlsb2FkKQogICAgICAgICBtb3ZlIHRhZywgdDEKICAgICAgICAgbW92ZSBwYXls
b2FkLCB0MAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxl
KG9wLCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0NSwg
dDEsIHQwKQogICAgICAgICBnZXQobV9kc3QsIHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQogICAgICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KQEAgLTc3LDEzICs3NywxMyBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3AsIGdl
dCwgbWV0YWRhCiBlbmQKIAogCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcCwgZGlz
cGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKLSAgICBn
ZXQoc2l6ZSwgb3AsIG1fZHN0LCB0MykKKyAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Rz
dCwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkg
cjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBtZXRhZGF0YShzaXplLCBvcCwgdDIs
IHQzKQotICAgIHZhbHVlUHJvZmlsZShvcCwgdDIsIHIxLCByMCkKKyAgICBtZXRhZGF0YShzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MykKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB0
MiwgcjEsIHIwKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC01OTgsOSArNTk4LDkgQEAgbWFj
cm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbgogICAgICAgICBlbmQpCiBlbmQK
IAotbWFjcm8gdmFsdWVQcm9maWxlKG9wLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0
b3JlaSB0YWcsICVvcCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgVGFnT2Zmc2V0
W21ldGFkYXRhXQotICAgIHN0b3JlaSBwYXlsb2FkLCAlb3AlOjpNZXRhZGF0YTo6bV9wcm9maWxl
Lm1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQorICAgIHN0b3JlaSB0YWcsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFtt
ZXRhZGF0YV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X3Byb2ZpbGUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KIGVuZAogCiAKQEAg
LTY4Miw3ICs2ODIsNyBAQCBtYWNybyBicmFuY2hJZkV4Y2VwdGlvbihsYWJlbCkKICAgICBsb2Fk
cCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgYW5kcCBNYXJrZWRCbG9ja01h
c2ssIHQzCiAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6
Rm9vdGVyOjptX3ZtW3QzXSwgdDMKLSAgICBidGl6IFZNOjptX2V4Y2VwdGlvblt0M10sIC5ub0V4
Y2VwdGlvbgorICAgIGJ0cHogVk06Om1fZXhjZXB0aW9uW3QzXSwgLm5vRXhjZXB0aW9uCiAgICAg
am1wIGxhYmVsCiAubm9FeGNlcHRpb246CiBlbmQKQEAgLTczNCw3ICs3MzQsNyBAQCBlbmQpCiAK
IGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9zY29wZSwgT3BHZXRTY29wZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQwCi0gICAgbG9hZGkgSlNDYWxsZWU6Om1fc2NvcGVbdDBdLCB0MAorICAgIGxvYWRw
IEpTQ2FsbGVlOjptX3Njb3BlW3QwXSwgdDAKICAgICByZXR1cm4gKENlbGxUYWcsIHQwKQogZW5k
KQogCkBAIC03NTYsNyArNzU2LDcgQEAgZW5kKQogCiAKIGxsaW50T3Aob3BfY2hlY2tfdGR6LCBP
cENoZWNrVGR6LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBnZXQobV90YXJnZXQs
IHQwKQorICAgIGdldChtX3RhcmdldFZpcnR1YWxSZWdpc3RlciwgdDApCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVRhZyhzaXplLCB0MCwgdDEpCiAgICAgYmluZXEgdDEsIEVtcHR5VmFsdWVU
YWcsIC5vcE5vdFREWgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93X3Rkel9lcnJv
cikKQEAgLTc4Niw4ICs3ODYsOCBAQCBsbGludE9wV2l0aFJldHVybihvcF9ub3QsIE9wTm90LCBt
YWNybyAoCiBlbmQpCiAKIAotbWFjcm8gZXF1YWxpdHlDb21wYXJpc29uT3AobmFtZSwgb3AsIGlu
dGVnZXJDb21wYXJpc29uKQotICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wXyVuYW1lJSwgb3AsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCittYWNybyBlcXVhbGl0eUNvbXBhcmlz
b25PcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJDb21wYXJpc29uKQorICAgIGxs
aW50T3BXaXRoUmV0dXJuKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQyKQogICAgICAg
ICBnZXQobV9saHMsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQy
LCB0MywgdDEpCkBAIC03OTksMTQgKzc5OSwxNCBAQCBtYWNybyBlcXVhbGl0eUNvbXBhcmlzb25P
cChuYW1lLCBvcCwgaW50CiAgICAgICAgIHJldHVybihCb29sZWFuVGFnLCB0MCkKIAogICAgIC5v
cEVxU2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNo
KCkKICAgICBlbmQpCiBlbmQKIAogCi1tYWNybyBlcXVhbGl0eUp1bXBPcChuYW1lLCBvcCwgaW50
ZWdlckNvbXBhcmlzb24pCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3Jv
IChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFjcm8gZXF1YWxpdHlKdW1wT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyQ29tcGFyaXNvbikKKyAgICBsbGludE9wV2l0aEp1
bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAs
IGRpc3BhdGNoKQogICAgICAgICBnZXQobV9yaHMsIHQyKQogICAgICAgICBnZXQobV9saHMsIHQw
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MywgdDEpCkBAIC04
MTgsMTcgKzgxOCwxNyBAQCBtYWNybyBlcXVhbGl0eUp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNv
CiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1f
dGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiAKICAgICAuc2xvdzoKLSAgICAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIG5leHRJbnN0cnVj
dGlvbigpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbk9wKG5h
bWUsIG9wLCBmbikKLSAgICBsbGludE9wV2l0aFJldHVybihuYW1lLCBvcCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKK21hY3JvIGVxdWFsTnVsbENvbXBhcmlzb25PcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGZuKQorICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAg
ICAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUs
IHQwKQogICAgICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCkBAIC04NjksOCAr
ODY5LDggQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfdW5kZWZpbmVkX29yX251bAogZW5kKQog
CiAKLW1hY3JvIHN0cmljdEVxT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxs
aW50T3BXaXRoUmV0dXJuKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCittYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1
YWxpdHlPcGVyYXRpb24pCisgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBv
cGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAg
IGdldChtX3JocywgdDIpCiAgICAgICAgIGdldChtX2xocywgdDApCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQzLCB0MSkKQEAgLTg4NSwxNCArODg1LDE0IEBAIG1h
Y3JvIHN0cmljdEVxT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmEKICAgICAgICAgcmV0dXJuKEJv
b2xlYW5UYWcsIHQwKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19w
YXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUl
KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gc3RyaWN0RXF1
YWxpdHlKdW1wT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxsaW50T3BXaXRo
SnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKK21h
Y3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxp
dHlPcGVyYXRpb24pCisgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1f
cmhzLCB0MikKICAgICAgICAgZ2V0KG1fbGhzLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCB0MiwgdDMsIHQxKQpAQCAtOTA3LDEwICs5MDcsMTAgQEAgbWFjcm8gc3Ry
aWN0RXF1YWxpdHlKdW1wT3AobmFtZSwgb3AsIGVxdQogICAgICAgICBkaXNwYXRjaCgpCiAKICAg
ICAuanVtcFRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAganVtcChtX3Rh
cmdldExhYmVsKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9w
Y29kZU5hbWUlKQogICAgICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQogICAgIGVuZCkKIGVuZApAQCAt
OTMyLDggKzkzMiw4IEBAIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHIK
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmluZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQpCiAKIAotbWFjcm8gcHJlT3AobmFtZSwgb3AsIG9wZXJhdGlvbikKLSAgICBsbGludE9w
KG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorbWFjcm8gcHJlT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24pCisgICAgbGxpbnRPcChvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCiAgICAg
ICAgIGdldChtX3NyY0RzdCwgdDApCiAgICAgICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgSW50MzJUYWcsIC5zbG93CiAgICAgICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCkBAIC05NDIsNyArOTQyLDcgQEAgbWFjcm8gcHJlT3AobmFtZSwgb3AsIG9wZXJhdGlv
bikKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9w
Y29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCkBAIC05OTIsNyAr
OTkyLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKIAogICAgIG1hY3Jv
IGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRh
OjptX2FyaXRoUHJvZmlsZVt0NV0KKyAgICAgICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KICAgICBlbmQKIAog
ICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTEwMTUsMTAgKzEwMTUsMTAgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLAogZW5kKQogCiAKLW1hY3JvIGJpbmFyeU9wQ3Vz
dG9tU3RvcmUobmFtZSwgb3AsIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0
aW9uKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBiaW5hcnlPcEN1c3RvbVN0
b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBk
b3VibGVPcGVyYXRpb24pCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCiAgICAgICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5
cGUsICVvcCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZVt0NV0KKyAgICAgICAgICAgIG9yaSB0
eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9m
aWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikK
QEAgLTEwNjMsMTMgKzEwNjMsMTMgQEAgbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShuYW1lLCBv
cCwgaW50ZQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAotbWFj
cm8gYmluYXJ5T3AobmFtZSwgb3AsIGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbikK
LSAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKG5hbWUsIG9wLAorbWFjcm8gYmluYXJ5T3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24pCisg
ICAgYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsCiAgICAgICAg
IG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQogICAgICAgICAgICAg
aW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKICAgICAgICAgICAgIHN0b3JlaSBp
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCkBAIC0xMTMwLDggKzExMzAsOCBAQCBs
bGludE9wV2l0aFJldHVybihvcF91bnNpZ25lZCwgT3BVbnNpZ25lCiBlbmQpCiAKIAotbWFjcm8g
Y29tbW9uQml0T3Aob3BLaW5kLCBuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIG9wS2luZChvcF8l
bmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gY29t
bW9uQml0T3Aob3BLaW5kLCBvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9wZXJhdGlvbikKKyAg
ICBvcEtpbmQob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX3JocywgdDIpCiAgICAgICAgIGdldCht
X2xocywgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQzLCB0
MSkKQEAgLTExNDIsMTcgKzExNDIsMTcgQEAgbWFjcm8gY29tbW9uQml0T3Aob3BLaW5kLCBuYW1l
LCBvcCwgb3BlcgogICAgICAgICByZXR1cm4gKHQzLCB0MCkKIAogICAgIC5zbG93OgotICAgICAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lbmFtZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChf
c2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVu
ZAogCi1tYWNybyBiaXRPcChuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIGNvbW1vbkJpdE9wKGxs
aW50T3BXaXRoUmV0dXJuLCBuYW1lLCBvcCwgb3BlcmF0aW9uKQorbWFjcm8gYml0T3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24pCisgICAgY29tbW9uQml0T3AobGxpbnRPcFdp
dGhSZXR1cm4sIG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3BlcmF0aW9uKQogZW5kCiAKLW1h
Y3JvIGJpdE9wUHJvZmlsZWQobmFtZSwgb3AsIG9wZXJhdGlvbikKLSAgICBjb21tb25CaXRPcChs
bGludE9wV2l0aFByb2ZpbGUsIG5hbWUsIG9wLCBvcGVyYXRpb24pCittYWNybyBiaXRPcFByb2Zp
bGVkKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3BlcmF0aW9uKQorICAgIGNvbW1vbkJpdE9w
KGxsaW50T3BXaXRoUHJvZmlsZSwgb3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24p
CiBlbmQKIAogCkBAIC0xMzI4LDEwICsxMzI4LDEwIEBAIGVuZAogbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1LCB0MCkKICAgICBn
ZXQobV9iYXNlLCB0MCkKLSAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX3N0
cnVjdHVyZVt0NV0sIHQxCisgICAgbG9hZHAgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9z
dHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkRGlyZWN0U2xvdykKICAgICBsb2FkaSBPcEdl
dEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCi0gICAgYmluZXEgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CisgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwgdDEpCkBA
IC0xMzQ5LDEwICsxMzQ5LDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBP
cEdldEIKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRBcnJheUxlbmd0aAotICAgIGxvYWRpIE9w
R2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJl
W3Q1XSwgdDEKKyAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5w
cm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxv
YWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNh
Y2hlZE9mZnNldFt0NV0sIHQyCi0gICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEsIC5vcEdldEJ5SWRTbG93CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2Rl
TWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3Q1XSwgdDMKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQogICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5SWQsIHQ1LCB0MCwgdDEpCkBAIC0xMzczLDE3ICsxMzczLDE3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGJibmVx
IHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlVuc2V0LCAub3BHZXRCeUlkRGVmYXVsdAotICAg
IGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVbdDVdLCB0MQorICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBi
aW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQogICAgIHJldHVybihV
bmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWREZWZhdWx0OgotICAgIGxvYWRpIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZVt0NV0sIHQx
CisgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlzIE9wR2V0
QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0
NV0sIHQyCi0gICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkK
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgdDAsIHQxKQogICAgIHJldHVybih0MCwg
dDEpCkBAIC0xMzk5LDggKzEzOTksOCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9p
ZCwgT3BQdXRCCiAgICAgbWV0YWRhdGEodDUsIHQzKQogICAgIGdldChtX2Jhc2UsIHQzKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCi0gICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKLSAg
ICBiaW5lcSB0MiwgT3BQdXRCeUlkOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVbdDVdLCAub3BQ
dXRCeUlkU2xvdworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCisgICAg
YnBuZXEgdDIsIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCAub3BQ
dXRCeUlkU2xvdwogCiAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgogICAgICMgdDUgLT4g
bWV0YWRhdGEKQEAgLTE0MDgsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0
X2J5X2lkLCBPcFB1dEIKICAgICAjIHQwIC0+IG9iamVjdCBiYXNlCiAgICAgIyBXZSB3aWxsIGxv
c2UgY3VycmVudFN0cnVjdHVyZUlEIGluIHRoZSBzaGVuYW5pZ2FucyBiZWxvdy4KIAotICAgIGxv
YWRpIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlW3Q1XSwgdDEKKyAgICBsb2Fk
cCBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKIAogICAgIGJ0
aXogdDEsIC5vcFB1dEJ5SWROb3RUcmFuc2l0aW9uCiAKQEAgLTE0MTcsNyArMTQxNyw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEIKICAgICBsb2FkcCBPcFB1dEJ5
SWQ6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUNoYWluW3Q1XSwgdDMKICAgICBidHB6IHQzLCAub3BQ
dXRCeUlkVHJhbnNpdGlvbkRpcmVjdAogCi0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6
bV9vbGRTdHJ1Y3R1cmVbdDVdLCB0MiAjIE5lZWQgb2xkIHN0cnVjdHVyZSBhZ2Fpbi4KKyAgICBs
b2FkcCBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIgIyBOZWVk
IG9sZCBzdHJ1Y3R1cmUgYWdhaW4uCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3QzXSwgdDMKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiB0Mywgb2sgZW5kKQogCkBAIC0x
NDMxLDEwICsxNDMxLDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1
dEIKICAgICBidHBueiB0MiwgLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxvb3AKIAogLm9wUHV0
QnlJZFRyYW5zaXRpb25DaGFpbkRvbmU6Ci0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6
bV9uZXdTdHJ1Y3R1cmVbdDVdLCB0MQorICAgIGxvYWRwIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1f
bmV3U3RydWN0dXJlSURbdDVdLCB0MQogCiAub3BQdXRCeUlkVHJhbnNpdGlvbkRpcmVjdDoKLSAg
ICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICBzdG9yZXAgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KICAgICBnZXQobV92YWx1ZSwgdDEpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIsIHQzKQogICAgIGxvYWRpIE9wUHV0QnlJZDo6
TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDEKQEAgLTE1MDcsOCArMTUwNyw4IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIGVuZCkKIAogCi1tYWNybyBwdXRCeVZh
bE9wKG5hbWUsIG9wKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW5hbWUlLCBvcCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBwdXRCeVZh
bE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9w
XyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3Jl
Q2FsbGJhY2spCiAgICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgLm91dE9mQm91bmRz
CiAgICAgICAgIC5zdG9yZVJlc3VsdDoKQEAgLTE1MTgsNyArMTUxOCw3IEBAIG1hY3JvIHB1dEJ5
VmFsT3AobmFtZSwgb3ApCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlh
ZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0
b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0
NV0KKyAgICAgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0
MgogICAgICAgICAgICAgc3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0
b3JlUmVzdWx0CkBAIC0xNTI5LDcgKzE1MjksNyBAQCBtYWNybyBwdXRCeVZhbE9wKG5hbWUsIG9w
KQogICAgICAgICBnZXQobV9iYXNlLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAg
IG1vdmUgdDEsIHQyCi0gICAgICAgIGFycmF5UHJvZmlsZSglb3AlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQogICAgICAgICBnZXQobV9w
cm9wZXJ0eSwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQwLCBJbnQzMlRhZywgdDMsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fYnV0dGVyZmx5W3QxXSwgdDAKQEAgLTE1ODMsNyArMTU4Myw3IEBAIG1hY3JvIHB1dEJ5
VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJy
YXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgc3RvcmViIDEsICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KICAg
ICAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAg
ICAgIGJpYiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxl
bmd0aHMucHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3Vs
dAogICAgICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTU5MSw5ICsxNTkxLDkgQEAgbWFjcm8gcHV0
QnlWYWxPcChuYW1lLCBvcCkKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3Rv
cmVSZXN1bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAx
LCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRPZkJvdW5kc1t0NV0KKyAgICAg
ICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9v
dXRPZkJvdW5kc1t0NV0KICAgICAub3BQdXRCeVZhbFNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5k
CkBAIC0xNjA0LDI1ICsxNjA0LDI1IEBAIHB1dEJ5VmFsT3AocHV0X2J5X3ZhbCwgT3BQdXRCeVZh
bCkKIHB1dEJ5VmFsT3AocHV0X2J5X3ZhbF9kaXJlY3QsIE9wUHV0QnlWYWxEaXJlY3QpCiAKIAot
bWFjcm8gbGxpbnRKdW1wVHJ1ZU9yRmFsc2VPcChuYW1lLCBvcCwgY29uZGl0aW9uT3ApCi0gICAg
bGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRp
c3BhdGNoKQorbWFjcm8gbGxpbnRKdW1wVHJ1ZU9yRmFsc2VPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGNvbmRpdGlvbk9wKQorICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAg
IGdldChtX2NvbmRpdGlvbiwgdDEpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCiAgICAgICAgIGNvbmRpdGlvbk9w
KHQwLCAudGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAudGFyZ2V0OgotICAgICAg
ICBqdW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiAKICAgICAuc2xv
dzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIG5l
eHRJbnN0cnVjdGlvbigpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gZXF1YWxOdWxsSnVtcE9w
KG5hbWUsIG9wLCBjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKLSAgICBsbGludE9wV2l0
aEp1bXAob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCitt
YWNybyBlcXVhbE51bGxKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBjZWxsSGFuZGxl
ciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUl
LCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAg
ICBnZXQobV92YWx1ZSwgdDApCiAgICAgICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUsIHQwKQog
ICAgICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCkBAIC0xNjMzLDcgKzE2MzMs
NyBAQCBtYWNybyBlcXVhbE51bGxKdW1wT3AobmFtZSwgb3AsIGNlbGxIYW5kCiAgICAgICAgIGRp
c3BhdGNoKCkKIAogICAgIC50YXJnZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXQpCisgICAgICAg
IGp1bXAobV90YXJnZXRMYWJlbCkKIAogICAgIC5pbW1lZGlhdGU6CiAgICAgICAgIG9yaSAxLCB0
MQpAQCAtMTY2NSw3ICsxNjY1LDcgQEAgZXF1YWxOdWxsSnVtcE9wKGpuZXFfbnVsbCwgT3BKbmVx
TnVsbCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1
ZSwgdDApCi0gICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGdldHUoc2l6ZSwgT3BK
bmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKICAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKQEAgLTE2
NzQsMTUgKzE2NzQsMTUgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVx
UAogLm9wSm5lcVB0ckJyYW5jaDoKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAgICAgc3RvcmViIDEs
IE9wSm5lcVB0cjo6TWV0YWRhdGE6Om1faGFzSnVtcGVkW3Q1XQotICAgIGdldChtX3RhcmdldCwg
dDApCisgICAgZ2V0KG1fdGFyZ2V0TGFiZWwsIHQwKQogICAgIGp1bXBJbXBsKHQwKQogLm9wSm5l
cVB0ckZhbGxUaHJvdWdoOgogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAogCi1tYWNybyBjb21wYXJl
VW5zaWduZWRKdW1wT3AobmFtZSwgb3AsIGludGVnZXJDb21wYXJlKQotICAgIGxsaW50T3BXaXRo
SnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKK21h
Y3JvIGNvbXBhcmVVbnNpZ25lZEp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVn
ZXJDb21wYXJlKQorICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0
cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xo
cywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDIsIHQwLCB0MSkKQEAgLTE2OTEsMTMgKzE2OTEsMTMgQEAgbWFjcm8gY29t
cGFyZVVuc2lnbmVkSnVtcE9wKG5hbWUsIG9wLCBpbgogICAgICAgICBkaXNwYXRjaCgpCiAKICAg
ICAuanVtcFRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAganVtcChtX3Rh
cmdldExhYmVsKQogICAgIGVuZCkKIGVuZAogCiAKLW1hY3JvIGNvbXBhcmVVbnNpZ25lZE9wKG5h
bWUsIG9wLCBpbnRlZ2VyQ29tcGFyZUFuZFNldCkKLSAgICBsbGludE9wV2l0aFJldHVybihvcF8l
bmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gY29t
cGFyZVVuc2lnbmVkT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyQ29tcGFyZUFu
ZFNldCkKKyAgICBsbGludE9wV2l0aFJldHVybihvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAgICAgZ2V0KG1fcmhz
LCB0MikKICAgICAgICAgZ2V0KG1fbGhzLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MiwgdDMsIHQxKQpAQCAtMTcwOCw4ICsxNzA4LDggQEAgbWFjcm8gY29tcGFy
ZVVuc2lnbmVkT3AobmFtZSwgb3AsIGludGVnZQogZW5kCiAKIAotbWFjcm8gY29tcGFyZUp1bXBP
cChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUpCi0gICAgbGxpbnRPcFdp
dGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQor
bWFjcm8gY29tcGFyZUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJDb21w
YXJlLCBkb3VibGVDb21wYXJlKQorICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAg
IGdldChtX2xocywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwLCB0MSkKQEAgLTE3NDAsMTAgKzE3NDAsMTAgQEAg
bWFjcm8gY29tcGFyZUp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNvbQogICAgICAgICBkaXNwYXRj
aCgpCiAKICAgICAuanVtcFRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAg
anVtcChtX3RhcmdldExhYmVsKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQogICAgIGVuZCkK
IGVuZApAQCAtMTc1MSw3ICsxNzUxLDcgQEAgZW5kCiAKIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0
Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAg
ICAgZ2V0KG1fc2NydXRpbmVlLCB0MikKLSAgICBnZXQobV90YWJsZUluZGV4LCB0MykKKyAgICBn
ZXR1KHNpemUsIE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgpAQCAtMTc3OSw3ICsx
Nzc5LDcgQEAgZW5kKQogCiBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNo
Q2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0KG1fc2NydXRp
bmVlLCB0MikKLSAgICBnZXQobV90YWJsZUluZGV4LCB0MykKKyAgICBnZXR1KHNpemUsIE9wU3dp
dGNoQ2hhciwgbV90YWJsZUluZGV4LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQyLCB0MSwgdDApCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKQEAgLTE4MTQsNDMgKzE4MTQsNDMgQEAgbGxp
bnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaAogZW5kKQogCiAKLW1hY3JvIGFy
cmF5UHJvZmlsZUZvckNhbGwob3AsIGdldHUpCittYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9w
Y29kZVN0cnVjdCwgZ2V0dSkKICAgICBnZXR1KG1fYXJndiwgdDMpCiAgICAgbmVnaSB0MwogICAg
IGJpbmVxIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgQ2VsbFRh
ZywgLmRvbmUKICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdLCB0MAogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCi0g
ICAgc3RvcmVwIHQwLCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0
cnVjdHVyZUlEW3Q1XQorICAgIHN0b3JlcCB0MCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCiAuZG9uZToKIGVuZAogCi1t
YWNybyBjb21tb25DYWxsT3AobmFtZSwgc2xvd1BhdGgsIG9wLCBwcmVwYXJlQ2FsbCwgcHJvbG9n
dWUpCi0gICAgbGxpbnRPcFdpdGhNZXRhZGF0YShuYW1lLCBvcCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFt
ZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQorICAgIGxs
aW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWV0YWRhdGEodDUsIHQw
KQogCiAgICAgICAgIHByb2xvZ3VlKG1hY3JvIChmaWVsZE5hbWUsIGRzdCkKLSAgICAgICAgICAg
IGdldHUoc2l6ZSwgb3AsIGZpZWxkTmFtZSwgZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBv
cGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCiAg
ICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5jYWxsZWVbdDVdLCB0MgorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNs
b3cpCiAgICAgICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXpl
LCBvcCwgbV9hcmd2LCB0MykKKyAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJn
diwgdDMpCiAgICAgICAgIGxzaGlmdGkgMywgdDMKICAgICAgICAgbmVnaSB0MwogICAgICAgICBh
ZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKICAgICAgICAg
c3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBnZXR1KHNpemUs
IG9wLCBtX2FyZ2MsIHQyKQorICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdj
LCB0MikKICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0K
ICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KICAg
ICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICAgICAgbW92
ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wJTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAg
ICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgJW9wJTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykK
KyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisg
ICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgotICAgICAgICBzbG93UGF0
aEZvckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAg
ICAgIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0
aCwgcHJlcGFyZUNhbGwpCiAgICAgZW5kKQogZW5kCiAKQEAgLTE5MDUsOCArMTkwNSw4IEBAIGNv
bW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybygpIGVuZCwgbWEKICAgICBhbmRwIE1hcmtlZEJs
b2NrTWFzaywgdDMKICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJs
b2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwogCi0gICAgbG9hZGkgVk06Om1fZXhjZXB0aW9uW3Qz
XSwgdDAKLSAgICBzdG9yZWkgMCwgVk06Om1fZXhjZXB0aW9uW3QzXQorICAgIGxvYWRwIFZNOjpt
X2V4Y2VwdGlvblt0M10sIHQwCisgICAgc3RvcmVwIDAsIFZNOjptX2V4Y2VwdGlvblt0M10KICAg
ICBnZXQoc2l6ZSwgT3BDYXRjaCwgbV9leGNlcHRpb24sIHQyKQogICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQogICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KQEAgLTIwMTMsNyArMjAxMyw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5l
KGV4ZWN1dGFibGVPZmYKICAgICAgICAgZXJyb3IKICAgICBlbmQKICAgICAKLSAgICBidGlueiBW
TTo6bV9leGNlcHRpb25bdDNdLCAuaGFuZGxlRXhjZXB0aW9uCisgICAgYnRwbnogVk06Om1fZXhj
ZXB0aW9uW3QzXSwgLmhhbmRsZUV4Y2VwdGlvbgogCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAg
ICAgcmV0CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBtYWNybyBpbnRlcm5hbEZ1bmN0aW9uQ2FsbFRy
YW1wb2xpbmUob2ZmCiAgICAgICAgIGVycm9yCiAgICAgZW5kCiAKLSAgICBidGlueiBWTTo6bV9l
eGNlcHRpb25bdDNdLCAuaGFuZGxlRXhjZXB0aW9uCisgICAgYnRwbnogVk06Om1fZXhjZXB0aW9u
W3QzXSwgLmhhbmRsZUV4Y2VwdGlvbgogCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0
CkBAIC0yMTEzLDcgKzIxMTMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2Nv
cGUsIE9wCiAgICAgZW5kCiAKICAgICBtZXRhZGF0YSh0NSwgdDApCi0gICAgbG9hZHAgT3BSZXNv
bHZlU2NvcGU6Ok1ldGFkYXRhOjptX3Jlc29sdmVUeXBlW3Q1XSwgdDAKKyAgICBsb2FkaSBPcFJl
c29sdmVTY29wZTo6TWV0YWRhdGE6Om1fcmVzb2x2ZVR5cGVbdDVdLCB0MAogCiAjckdsb2JhbFBy
b3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnJHbG9iYWxWYXIKQEAgLTIx
NjEsMTAgKzIxNjEsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBP
cAogZW5kKQogCiAKLW1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3AsIGdldCwgb3BlcmFu
ZCwgc2xvd1BhdGgpCittYWNybyBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKG9wY29kZVN0cnVjdCwg
Z2V0LCBvcGVyYW5kLCBzbG93UGF0aCkKICAgICBnZXQobV9zY29wZSwgdDApCiAgICAgbG9hZHAg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCAlb3AlOjpNZXRhZGF0YTo6
bV9zdHJ1Y3R1cmVbdDVdLCB0MQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9zdHJ1Y3R1cmVbdDVdLCB0MQogICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQxLCBzbG93UGF0aAogZW5kCiAKQEAgLTIxOTUsNyArMjE5NSw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICBlbmQKIAogICAgIG1ldGFkYXRhKHQ1LCB0
MCkKLSAgICBsb2FkaSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fZ2V0UHV0SW5mb1t0NV0s
IHQwCisgICAgbG9hZGkgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX2dldFB1dEluZm8gKyBH
ZXRQdXRJbmZvOjptX29wZXJhbmRbdDVdLCB0MAogICAgIGFuZGkgUmVzb2x2ZVR5cGVNYXNrLCB0
MAogCiAjZ0dsb2JhbFByb3BlcnR5OgpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAogICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKICAg
ICAgICAgZ2V0KG1fdmFsdWUsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQxLCB0MiwgdDMpCi0gICAgICAgIGxvYWRpcyBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MSwgdDAsIHQyLCB0MykKICAgICBlbmQKIApAQCAtMjI3MCw3ICsyMjcwLDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAogICAgIG1hY3JvIHB1dENsb3N1cmVWYXIo
KQogICAgICAgICBnZXQobV92YWx1ZSwgdDEpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQyLCB0MykKLSAgICAgICAgbG9hZGlzIE9wUHV0VG9TY29wZTo6TWV0YWRh
dGE6Om1fb3BlcmFuZFt0NV0sIHQxCisgICAgICAgIGxvYWRwIE9wUHV0VG9TY29wZTo6TWV0YWRh
dGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIHN0b3JlaSB0MiwgSlNMZXhpY2FsRW52aXJv
bm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KICAgICAgICAgc3RvcmVpIHQz
LCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwg
OF0KICAgICBlbmQKQEAgLTIyODIsMTQgKzIyODIsMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9wdXRfdG9fc2NvcGUsIE9wUAogICAgICAgICBidHB6IHQxLCAubm9WYXJpYWJsZVdhdGNocG9p
bnRTZXQKICAgICAgICAgbm90aWZ5V3JpdGUodDEsIC5wRHluYW1pYykKICAgICAubm9WYXJpYWJs
ZVdhdGNocG9pbnRTZXQ6Ci0gICAgICAgIGxvYWRpcyBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZWkgdDIsIEpTTGV4aWNhbEVudmlyb25tZW50
X3ZhcmlhYmxlcyArIFRhZ09mZnNldFt0MCwgdDEsIDhdCiAgICAgICAgIHN0b3JlaSB0MywgSlNM
ZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCiAg
ICAgZW5kCiAKIAogICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBsb2FkaSBPcFB1dFRvU2NvcGU6
Ok1ldGFkYXRhOjptX2dldFB1dEluZm9bdDVdLCB0MAorICAgIGxvYWRpIE9wUHV0VG9TY29wZTo6
TWV0YWRhdGE6Om1fZ2V0UHV0SW5mbyArIEdldFB1dEluZm86Om1fb3BlcmFuZFt0NV0sIHQwCiAg
ICAgYW5kaSBSZXNvbHZlVHlwZU1hc2ssIHQwCiAKICNwTG9jYWxDbG9zdXJlVmFyOgpAQCAtMjM2
OCw3ICsyMzY4LDcgQEAgZW5kKQogbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9mcm9tX2FyZ3Vt
ZW50cywgT3BHZXRGcm9tQXJndW1lbnRzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgIGdldChtX2FyZ3VtZW50cywgdDApCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBnZXQobV9pbmRleCwgdDEpCisgICAgZ2V0dShzaXplLCBPcEdl
dEZyb21Bcmd1bWVudHMsIG1faW5kZXgsIHQxKQogICAgIGxvYWRpIERpcmVjdEFyZ3VtZW50c19z
dG9yYWdlICsgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCiAgICAgbG9hZGkgRGlyZWN0QXJndW1l
bnRzX3N0b3JhZ2UgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCiAgICAgcmV0dXJuKHQy
LCB0MykKQEAgLTIzODEsNyArMjM4MSw3IEBAIGxsaW50T3Aob3BfcHV0X3RvX2FyZ3VtZW50cywg
T3BQdXRUb0FyZ3UKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAg
IGdldChtX3ZhbHVlLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0
MiwgdDMpCi0gICAgZ2V0KG1faW5kZXgsIHQxKQorICAgIGdldHUoc2l6ZSwgT3BQdXRUb0FyZ3Vt
ZW50cywgbV9pbmRleCwgdDEpCiAgICAgc3RvcmVpIHQyLCBEaXJlY3RBcmd1bWVudHNfc3RvcmFn
ZSArIFRhZ09mZnNldFt0MCwgdDEsIDhdCiAgICAgc3RvcmVpIHQzLCBEaXJlY3RBcmd1bWVudHNf
c3RvcmFnZSArIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQogICAgIGRpc3BhdGNoKCkKQEAgLTI0
MDQsNyArMjQwNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHJvZmlsZV90eXBlLCBPcFAK
ICAgICBsb2FkcCBWTTo6bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogCiAgICAgIyB0MCBpcyBo
b2xkaW5nIHRoZSBwYXlsb2FkLCB0NSBpcyBob2xkaW5nIHRoZSB0YWcuCi0gICAgZ2V0KG1fdGFy
Z2V0LCB0MikKKyAgICBnZXQobV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIsIHQyKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQ1LCB0MCkKIAogICAgIGJpZXEgdDUsIEVtcHR5
VmFsdWVUYWcsIC5vcFByb2ZpbGVUeXBlRG9uZQpAQCAtMjQyNSw3ICsyNDI1LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9wcm9maWxlX3R5cGUsIE9wUAogICAgIHN0b3JlaSAwLCBUeXBlUHJv
ZmlsZXJMb2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJRFt0Ml0KICAgICBqbXAgLm9wUHJvZmlsZVR5
cGVTa2lwSXNDZWxsCiAub3BQcm9maWxlVHlwZUlzQ2VsbDoKLSAgICBsb2FkaSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDBdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQzCiAgICAgc3RvcmVpIHQzLCBUeXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJ
RFt0Ml0KIC5vcFByb2ZpbGVUeXBlU2tpcElzQ2VsbDoKICAgICAKQEAgLTI0NTYsNyArMjQ1Niw3
IEBAIGVuZCkKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0
TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MAotICAg
IGdldChtX251bVBhcmFtZXRlcnNUb1NraXAsIHQxKQorICAgIGdldHUoc2l6ZSwgT3BHZXRSZXN0
TGVuZ3RoLCBtX251bVBhcmFtZXRlcnNUb1NraXAsIHQxKQogICAgIGJpbHRlcSB0MCwgdDEsIC5z
dG9yZVplcm8KICAgICBzdWJpIHQxLCB0MAogICAgIGptcCAuZmluaXNoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM2LDIwICszNiwyMCBAQCBt
YWNybyBuZXh0SW5zdHJ1Y3Rpb25XaWRlKCkKICAgICBqbXAgW3QxLCB0MCwgUHRyU2l6ZV0sIEJ5
dGVjb2RlUHRyVGFnCiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmROYXJyb3cob3AsIGZpZWxkTmFt
ZSwgZHN0KQotICAgIGxvYWRiIGNvbnN0ZXhwciAlb3AlXyVmaWVsZE5hbWUlX2luZGV4W1BCLCBQ
QywgMV0sIGRzdAorbWFjcm8gZ2V0dU9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0LCBmaWVsZE5h
bWUsIGRzdCkKKyAgICBsb2FkYiBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVf
aW5kZXhbUEIsIFBDLCAxXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZE5hcnJvdyhvcCwg
ZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGJzcCBjb25zdGV4cHIgJW9wJV8lZmllbGROYW1lJV9p
bmRleFtQQiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmROYXJyb3cob3Bjb2RlU3RydWN0
LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkYnNwIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8l
ZmllbGROYW1lJV9pbmRleFtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFu
ZFdpZGUob3AsIGZpZWxkTmFtZSwgZHN0KQotICAgIGxvYWRpIGNvbnN0ZXhwciAlb3AlXyVmaWVs
ZE5hbWUlX2luZGV4ICogNCArIDFbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdp
ZGUob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9w
Y29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgMVtQQiwgUEMsIDFdLCBkc3QKIGVu
ZAogCi1tYWNybyBnZXRPcGVyYW5kV2lkZShvcCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGlz
IGNvbnN0ZXhwciAlb3AlXyVmaWVsZE5hbWUlX2luZGV4ICogNCArIDFbUEIsIFBDLCAxXSwgZHN0
CittYWNybyBnZXRPcGVyYW5kV2lkZShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAg
IGxvYWRpcyBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsg
MVtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCiBtYWNybyBtYWtlUmV0dXJuKGdldCwgZGlzcGF0Y2gs
IGZuKQpAQCAtNjEsMzAgKzYxLDMwIEBAIG1hY3JvIG1ha2VSZXR1cm4oZ2V0LCBkaXNwYXRjaCwg
Zm4pCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcCwgZ2V0LCBt
ZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQorbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0
cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3JvICh2YWx1ZSkK
ICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAg
ICB2YWx1ZVByb2ZpbGUob3AsIHQxLCB0MykKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgdDEsIHQzKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMs
IFtjZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3Jv
IHZhbHVlUHJvZmlsZShvcCwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwgJW9w
JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCBtZXRhZGF0YSwgdmFsdWUpCisgICAgc3RvcmVxIHZhbHVlLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHNbbWV0YWRhdGFdCiBl
bmQKIAotbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoKQorbWFjcm8g
ZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKICAgICBsb2Fk
aSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJb
UEJdLCBQQgogICAgIHVucG9pc29uKF9nX0NvZGVCbG9ja1BvaXNvbiwgUEIsIHQxKQotICAgIGdl
dChzaXplLCBvcCwgbV9kc3QsIHQxKQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0
LCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQotICAgIG1ldGFkYXRhKHNpemUsIG9w
LCB0MiwgdDEpCi0gICAgdmFsdWVQcm9maWxlKG9wLCB0MiwgcjApCisgICAgbWV0YWRhdGEoc2l6
ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dDIsIHIwKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC03MTAsNyArNzEwLDcgQEAgZW5kKQog
CiAKIGxsaW50T3Aob3BfY2hlY2tfdGR6LCBPcENoZWNrVGR6LCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCkKLSAgICBnZXQobV90YXJnZXQsIHQwKQorICAgIGdldChtX3RhcmdldFZpcnR1YWxS
ZWdpc3RlciwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCiAg
ICAgYnFuZXEgdDEsIFZhbHVlRW1wdHksIC5vcE5vdFREWgogICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoX3Rocm93X3Rkel9lcnJvcikKQEAgLTc0MSw4ICs3NDEsOCBAQCBsbGludE9wV2l0aFJl
dHVybihvcF9ub3QsIE9wTm90LCBtYWNybyAoCiBlbmQpCiAKIAotbWFjcm8gZXF1YWxpdHlDb21w
YXJpc29uT3AobmFtZSwgb3AsIGludGVnZXJDb21wYXJpc29uKQotICAgIGxsaW50T3BXaXRoUmV0
dXJuKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCitt
YWNybyBlcXVhbGl0eUNvbXBhcmlzb25PcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVn
ZXJDb21wYXJpc29uKQorICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wXyVvcGNvZGVOYW1lJSwgb3Bj
b2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBn
ZXQobV9yaHMsIHQwKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQxLCAuc2xvdykKQEAgLTc1MiwxNCArNzUyLDE0
IEBAIG1hY3JvIGVxdWFsaXR5Q29tcGFyaXNvbk9wKG5hbWUsIG9wLCBpbnQKICAgICAgICAgcmV0
dXJuKHQwKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVu
YW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gZXF1YWxOdWxsQ29tcGFy
aXNvbk9wKG5hbWUsIG9wLCBmbikKLSAgICBsbGludE9wV2l0aFJldHVybihuYW1lLCBvcCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKK21hY3JvIGVxdWFsTnVsbENvbXBhcmlz
b25PcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGZuKQorICAgIGxsaW50T3BXaXRoUmV0dXJu
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKICAgICAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgICAgIGxvYWRxIFtjZnIsIHQw
LCA4XSwgdDAKICAgICAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKQEAgLTc5OSw4
ICs3OTksOCBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc191bmRlZmluZWRfb3JfbnVsCiBlbmQp
CiAKIAotbWFjcm8gc3RyaWN0RXFPcChuYW1lLCBvcCwgZXF1YWxpdHlPcGVyYXRpb24pCi0gICAg
bGxpbnRPcFdpdGhSZXR1cm4ob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIHJldHVybikKK21hY3JvIHN0cmljdEVxT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBl
cXVhbGl0eU9wZXJhdGlvbikKKyAgICBsbGludE9wV2l0aFJldHVybihvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAg
ICAgZ2V0KG1fcmhzLCB0MCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCkBAIC04MTksNyArODE5LDcgQEAgbWFjcm8g
c3RyaWN0RXFPcChuYW1lLCBvcCwgZXF1YWxpdHlPcGVyYQogICAgICAgICByZXR1cm4odDApCiAK
ICAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW5hbWUlKQorICAg
ICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3Bh
dGNoKCkKICAgICBlbmQpCiBlbmQKQEAgLTgzMyw4ICs4MzMsOCBAQCBzdHJpY3RFcU9wKG5zdHJp
Y3RlcSwgT3BOc3RyaWN0ZXEsCiAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxbmVx
IGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9w
KG5hbWUsIG9wLCBlcXVhbGl0eU9wZXJhdGlvbikKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5h
bWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCittYWNybyBzdHJpY3RF
cXVhbGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9u
KQorICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFj
cm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xocywgdDIpCiAg
ICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDIsIHQwKQpAQCAtODUyLDEwICs4NTIsMTAgQEAgbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1w
T3AobmFtZSwgb3AsIGVxdQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAuanVtcFRhcmdldDoK
LSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAganVtcChtX3RhcmdldExhYmVsKQogCiAg
ICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkK
KyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAg
ICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQogICAgIGVuZCkKIGVuZApAQCAtODY5LDggKzg2OSw4IEBA
IHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHIKICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCiAKIAotbWFj
cm8gcHJlT3AobmFtZSwgb3AsIGFyaXRobWV0aWNPcGVyYXRpb24pCi0gICAgbGxpbnRPcChvcF8l
bmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKK21hY3JvIHByZU9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgYXJpdGhtZXRpY09wZXJhdGlvbikKKyAgICBsbGludE9wKG9w
XyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkK
ICAgICAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKICAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0
MQogICAgICAgICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CkBAIC04NzksNyArODc5LDcg
QEAgbWFjcm8gcHJlT3AobmFtZSwgb3AsIGFyaXRobWV0aWNPcGVyYXRpbwogICAgICAgICBzdG9y
ZXEgdDEsIFtjZnIsIHQwLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgLnNsb3c6Ci0gICAg
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQog
ZW5kCkBAIC05MjksMTkgKzkyOSwxOSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwg
T3BOZWdhdGUsCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpcyBPcE5l
Z2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlW3QxXSwgdDIKKyAgICBsb2FkaSBPcE5lZ2F0
ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdLCB0
MgogICAgIGJxYiB0MywgdGFnVHlwZU51bWJlciwgLm9wTmVnYXRlTm90SW50CiAgICAgYnRpeiB0
MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDMKICAgICBvcnEgdGFnVHlw
ZU51bWJlciwgdDMKICAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0Miwg
T3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZVt0MV0KKyAgICBzdG9yZWkgdDIsIE9w
TmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0
MV0KICAgICByZXR1cm4odDMpCiAub3BOZWdhdGVOb3RJbnQ6CiAgICAgYnRxeiB0MywgdGFnVHlw
ZU51bWJlciwgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0Mwog
ICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6
TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlW3QxXQorICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1l
dGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQogICAgIHJl
dHVybih0MykKIAogLm9wTmVnYXRlU2xvdzoKQEAgLTk1MCwxMiArOTUwLDEyIEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwKIGVuZCkKIAogCi1tYWNybyBiaW5hcnlP
cEN1c3RvbVN0b3JlKG5hbWUsIG9wLCBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9w
ZXJhdGlvbikKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorbWFjcm8gYmluYXJ5T3BDdXN0
b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb25BbmRTdG9y
ZSwgZG91YmxlT3BlcmF0aW9uKQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5h
bWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCiAKICAgICAgICAgbWFjcm8gcHJvZmls
ZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZVt0NV0KKyAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAog
CiAgICAgICAgIGdldChtX3JocywgdDApCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBtYWNybyBiaW5h
cnlPcEN1c3RvbVN0b3JlKG5hbWUsIG9wLCBpbnRlCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAg
IC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lbmFtZSUpCisgICAgICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2go
KQogICAgIGVuZCkKIGVuZApAQCAtMTA1Miw4ICsxMDUyLDggQEAgYmluYXJ5T3BDdXN0b21TdG9y
ZShtdWwsIE9wTXVsLAogICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBl
bmQpCiAKIAotbWFjcm8gYmluYXJ5T3AobmFtZSwgb3AsIGludGVnZXJPcGVyYXRpb24sIGRvdWJs
ZU9wZXJhdGlvbikKLSAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKG5hbWUsIG9wLAorbWFjcm8gYmlu
YXJ5T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVP
cGVyYXRpb24pCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsCiAgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCiAgICAgICAgICAg
ICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQogICAgICAgICAgICAgb3JxIHRh
Z1R5cGVOdW1iZXIsIHJpZ2h0CkBAIC0xMDgzLDggKzEwODMsOCBAQCBsbGludE9wV2l0aFJldHVy
bihvcF91bnNpZ25lZCwgT3BVbnNpZ25lCiBlbmQpCiAKIAotbWFjcm8gY29tbW9uQml0T3Aob3BL
aW5kLCBuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIG9wS2luZChvcF8lbmFtZSUsIG9wLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gY29tbW9uQml0T3Aob3BLaW5k
LCBvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9wZXJhdGlvbikKKyAgICBvcEtpbmQob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgICAgIGdldChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQpAQCAtMTA5NiwxNyArMTA5
NiwxNyBAQCBtYWNybyBjb21tb25CaXRPcChvcEtpbmQsIG5hbWUsIG9wLCBvcGVyCiAgICAgICAg
IHJldHVybih0MCkKIAogICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF8lbmFtZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkK
ICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBiaXRPcChuYW1lLCBv
cCwgb3BlcmF0aW9uKQotICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRoUmV0dXJuLCBuYW1lLCBv
cCwgb3BlcmF0aW9uKQorbWFjcm8gYml0T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVy
YXRpb24pCisgICAgY29tbW9uQml0T3AobGxpbnRPcFdpdGhSZXR1cm4sIG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgb3BlcmF0aW9uKQogZW5kCiAKLW1hY3JvIGJpdE9wUHJvZmlsZWQobmFtZSwg
b3AsIG9wZXJhdGlvbikKLSAgICBjb21tb25CaXRPcChsbGludE9wV2l0aFByb2ZpbGUsIG5hbWUs
IG9wLCBvcGVyYXRpb24pCittYWNybyBiaXRPcFByb2ZpbGVkKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjdCwgb3BlcmF0aW9uKQorICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRoUHJvZmlsZSwgb3Bj
b2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24pCiBlbmQKIAogYml0T3AobHNoaWZ0LCBP
cExzaGlmdCwKQEAgLTEyNjksNyArMTI2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X2lkX2RpcmVjdCwKICAgICBnZXQobV9iYXNlLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWREaXJlY3RTbG93KQogICAgIGxvYWRp
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0
OjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGxvYWRpIE9wR2V0QnlJZERpcmVj
dDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgLm9w
R2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjpt
X29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMs
IHQwKQpAQCAtMTI5MSw3ICsxMjkxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWQsIE9wR2V0QgogLm9wR2V0QnlJZERlZmF1bHQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBH
ZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAogICAgIGxvYWRpIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6
bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlW3QyXSwgdDAKKyAgICBsb2FkaSBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RFt0Ml0sIHQwCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRpcyBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkK
QEAgLTEzMDEsNyArMTMwMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBP
cEdldEIKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRC
eUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKICAgICBsb2FkaSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6
Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlW3QyXSwgdDMKKyAgICBsb2Fk
aSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVj
dHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0MywgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9h
ZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2Fj
aGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVN
ZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwpAQCAtMTMyNCw3ICsxMzI0
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QgogCiAub3BHZXRC
eUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBs
b2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0
dXJlW3QyXSwgdDAKKyAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0
YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0
QnlJZFNsb3cKICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0MiwgVmFsdWVVbmRlZmluZWQp
CiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QgogICAgIGdldChtX2Jhc2UsIHQzKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wUHV0QnlJZFNs
b3cpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgIGxvYWRpcyBPcFB1dEJ5SWQ6Ok1ldGFkYXRh
OjptX29sZFN0cnVjdHVyZVt0NV0sIHQyCisgICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6
bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCiAgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIC5vcFB1dEJ5SWRTbG93CiAKICAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmU6
CkBAIC0xMzQ3LDcgKzEzNDcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwg
T3BQdXRCCiAgICAgIyB0MiAtPiBjdXJyZW50IHN0cnVjdHVyZSBJRAogICAgICMgdDUgLT4gbWV0
YWRhdGEKIAotICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlW3Q1
XSwgdDEKKyAgICBsb2FkaSBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1
XSwgdDEKICAgICBidGl6IHQxLCAub3BQdXRCeUlkTm90VHJhbnNpdGlvbgogCiAgICAgIyBUaGlz
IGlzIHRoZSB0cmFuc2l0aW9uIGNhc2UuIHQxIGhvbGRzIHRoZSBuZXcgc3RydWN0dXJlSUQuIHQy
IGhvbGRzIHRoZSBvbGQgc3RydWN0dXJlIElELgpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QgogCiAub3BQdXRCeUlkVHJhbnNpdGlv
bkNoYWluRG9uZToKICAgICAjIFJlbG9hZCB0aGUgbmV3IHN0cnVjdHVyZSwgc2luY2Ugd2UgY2xv
YmJlcmVkIGl0IGFib3ZlLgotICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fbmV3U3Ry
dWN0dXJlW3Q1XSwgdDEKKyAgICBsb2FkaSBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX25ld1N0cnVj
dHVyZUlEW3Q1XSwgdDEKIAogLm9wUHV0QnlJZFRyYW5zaXRpb25EaXJlY3Q6CiAgICAgc3RvcmVp
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCkBAIC0xNTc0LDggKzE1NzQsOCBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiBlbmQpCiAKIAotbWFjcm8gcHV0
QnlWYWxPcChuYW1lLCBvcCkKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVuYW1lJSwgb3As
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorbWFjcm8gcHV0
QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChz
dG9yZUNhbGxiYWNrKQogICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vdXRPZkJv
dW5kcwogICAgICAgICAuc3RvcmVSZXN1bHQ6CkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBtYWNybyBw
dXRCeVZhbE9wKG5hbWUsIG9wKQogCiAgICAgICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAgICAg
IGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAgICAg
ICBzdG9yZWIgMSwgJW9wJTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hv
bGVbdDVdCisgICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQogICAgICAgICAgICAgYWRkaSAxLCB0
MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXQogICAgICAgICAgICAgam1w
IC5zdG9yZVJlc3VsdApAQCAtMTU5NSw3ICsxNTk1LDcgQEAgbWFjcm8gcHV0QnlWYWxPcChuYW1l
LCBvcCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQxLCAu
b3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCiAgICAgICAgIG1ldGFkYXRhKHQ1
LCB0MCkKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MCkKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCiAgICAgICAgIGdldChtX3Byb3BlcnR5
LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQwLCB0Mywg
Lm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKQEAgLTE2NTAsNyArMTY1MCw3
IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAg
IC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3AlOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgc3Rv
cmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9y
ZVRvSG9sZVt0NV0KICAgICAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5W
ZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0
b3JhZ2VTdG9yZVJlc3VsdAogICAgICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTY1OCw5ICsxNjU4
LDkgQEAgbWFjcm8gcHV0QnlWYWxPcChuYW1lLCBvcCkKICAgICAgICAgam1wIC5vcFB1dEJ5VmFs
QXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0g
ICAgICAgIHN0b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRPZkJv
dW5kc1t0NV0KKyAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGUubV9vdXRPZkJvdW5kc1t0NV0KICAgICAub3BQdXRCeVZhbFNsb3c6Ci0gICAg
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgp
CiAgICAgZW5kKQogZW5kCkBAIC0xNjcwLDggKzE2NzAsOCBAQCBwdXRCeVZhbE9wKHB1dF9ieV92
YWwsIE9wUHV0QnlWYWwpCiBwdXRCeVZhbE9wKHB1dF9ieV92YWxfZGlyZWN0LCBPcFB1dEJ5VmFs
RGlyZWN0KQogCiAKLW1hY3JvIGxsaW50SnVtcFRydWVPckZhbHNlT3AobmFtZSwgb3AsIGNvbmRp
dGlvbk9wKQotICAgIGxsaW50T3BXaXRoSnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwg
Z2V0LCBqdW1wLCBkaXNwYXRjaCkKK21hY3JvIGxsaW50SnVtcFRydWVPckZhbHNlT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBjb25kaXRpb25PcCkKKyAgICBsbGludE9wV2l0aEp1bXAob3Bf
JW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3Bh
dGNoKQogICAgICAgICBnZXQobV9jb25kaXRpb24sIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MCkKICAgICAgICAgYnRxbnogdDAsIH4weGYsIC5zbG93CkBA
IC0xNjc5LDE3ICsxNjc5LDE3IEBAIG1hY3JvIGxsaW50SnVtcFRydWVPckZhbHNlT3AobmFtZSwg
b3AsIGMKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLnRhcmdldDoKLSAgICAgICAganVtcCht
X3RhcmdldCkKKyAgICAgICAganVtcChtX3RhcmdldExhYmVsKQogCiAgICAgLnNsb3c6Ci0gICAg
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBuZXh0SW5zdHJ1
Y3Rpb24oKQogICAgIGVuZCkKIGVuZAogCiAKLW1hY3JvIGVxdWFsTnVsbEp1bXBPcChuYW1lLCBv
cCwgY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9w
XyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFjcm8gZXF1
YWxOdWxsSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgY2VsbEhhbmRsZXIsIGltbWVk
aWF0ZUhhbmRsZXIpCisgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1f
dmFsdWUsIHQwKQogICAgICAgICBhc3NlcnROb3RDb25zdGFudChzaXplLCB0MCkKICAgICAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MApAQCAtMTY5OSw3ICsxNjk5LDcgQEAgbWFjcm8gZXF1YWxO
dWxsSnVtcE9wKG5hbWUsIG9wLCBjZWxsSGFuZAogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAu
dGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFi
ZWwpCiAKICAgICAuaW1tZWRpYXRlOgogICAgICAgICBhbmRxIH5UYWdCaXRVbmRlZmluZWQsIHQw
CkBAIC0xNzMxLDcgKzE3MzEsNyBAQCBlcXVhbE51bGxKdW1wT3Aoam5lcV9udWxsLCBPcEpuZXFO
dWxsLAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQdHIsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldChtX3ZhbHVl
LCB0MCkKLSAgICBnZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisgICAgZ2V0dShzaXplLCBPcEpu
ZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgogICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX3NwZWNpYWxQb2ludGVyc1t0MiwgdDEsIFB0clNpemVdLCB0MQpA
QCAtMTc0MSwxMyArMTc0MSwxMyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBP
cEpuZXFQCiAub3BKbmVxUHRyVGFyZ2V0OgogICAgIG1ldGFkYXRhKHQ1LCB0MCkKICAgICBzdG9y
ZWIgMSwgT3BKbmVxUHRyOjpNZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCi0gICAgZ2V0KG1fdGFy
Z2V0LCB0MCkKKyAgICBnZXQobV90YXJnZXRMYWJlbCwgdDApCiAgICAganVtcEltcGwodDApCiBl
bmQpCiAKIAotbWFjcm8gY29tcGFyZUp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmUsIGRv
dWJsZUNvbXBhcmUpCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChz
aXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFjcm8gY29tcGFyZUp1bXBPcChvcGNvZGVOYW1l
LCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlKQorICAgIGxsaW50
T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGdldCht
X3JocywgdDMpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQpA
QCAtMTc4MSwxNyArMTc4MSwxNyBAQCBtYWNybyBjb21wYXJlSnVtcE9wKG5hbWUsIG9wLCBpbnRl
Z2VyQ29tCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBq
dW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiAKICAgICAuc2xvdzoK
LSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIG5leHRJ
bnN0cnVjdGlvbigpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gZXF1YWxpdHlKdW1wT3AobmFt
ZSwgb3AsIGludGVnZXJDb21wYXJpc29uKQotICAgIGxsaW50T3BXaXRoSnVtcChvcF8lbmFtZSUs
IG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKK21hY3JvIGVxdWFsaXR5SnVt
cE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlckNvbXBhcmlzb24pCisgICAgbGxp
bnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgZ2V0
KG1fcmhzLCB0MykKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQy
LCB0MCwgLnNsb3cpCkBAIC0xODAwLDE3ICsxODAwLDE3IEBAIG1hY3JvIGVxdWFsaXR5SnVtcE9w
KG5hbWUsIG9wLCBpbnRlZ2VyQ28KICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLmp1bXBUYXJn
ZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXQpCisgICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkK
IAogICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lbmFt
ZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkK
ICAgICAgICAgbmV4dEluc3RydWN0aW9uKCkKICAgICBlbmQpCiBlbmQKIAogCi1tYWNybyBjb21w
YXJlVW5zaWduZWRKdW1wT3AobmFtZSwgb3AsIGludGVnZXJDb21wYXJlTWFjcm8pCi0gICAgbGxp
bnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3Bh
dGNoKQorbWFjcm8gY29tcGFyZVVuc2lnbmVkSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgaW50ZWdlckNvbXBhcmVNYWNybykKKyAgICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29kZU5h
bWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAg
ICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBnZXQobV9yaHMsIHQzKQogICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkKQEAgLTE4MTksMTMgKzE4MTksMTMgQEAg
bWFjcm8gY29tcGFyZVVuc2lnbmVkSnVtcE9wKG5hbWUsIG9wLCBpbgogICAgICAgICBkaXNwYXRj
aCgpCiAKICAgICAuanVtcFRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAg
anVtcChtX3RhcmdldExhYmVsKQogICAgIGVuZCkKIGVuZAogCiAKLW1hY3JvIGNvbXBhcmVVbnNp
Z25lZE9wKG5hbWUsIG9wLCBpbnRlZ2VyQ29tcGFyZUFuZFNldCkKLSAgICBsbGludE9wV2l0aFJl
dHVybihvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQor
bWFjcm8gY29tcGFyZVVuc2lnbmVkT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2Vy
Q29tcGFyZUFuZFNldCkKKyAgICBsbGludE9wV2l0aFJldHVybihvcF8lb3Bjb2RlTmFtZSUsIG9w
Y29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAgICAg
Z2V0KG1fbGhzLCB0MikKICAgICAgICAgZ2V0KG1fcmhzLCAgdDApCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQpAQCAtMTgzOSw3ICsxODM5LDcgQEAgZW5kCiAK
IGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUs
IGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgZ2V0KG1fc2NydXRpbmVlLCB0MikKLSAgICBnZXQo
bV90YWJsZUluZGV4LCB0MykKKyAgICBnZXR1KHNpemUsIE9wU3dpdGNoSW1tLCBtX3RhYmxlSW5k
ZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0
Ml0sIHQyCkBAIC0xODY3LDcgKzE4NjcsNyBAQCBlbmQpCiAKIGxsaW50T3BXaXRoSnVtcChvcF9z
d2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRj
aCkKICAgICBnZXQobV9zY3J1dGluZWUsIHQyKQotICAgIGdldChtX3RhYmxlSW5kZXgsIHQzKQor
ICAgIGdldHUoc2l6ZSwgT3BTd2l0Y2hDaGFyLCBtX3RhYmxlSW5kZXgsIHQzKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCkBAIC0xOTAzLDQ5
ICsxOTAzLDQ5IEBAIGVuZCkKIAogCiAjIHdlIGFzc3VtZSB0NSBjb250YWlucyB0aGUgbWV0YWRh
dGEsIGFuZCB3ZSBzaG91bGQgbm90IHNjcmF0Y2ggdGhhdAotbWFjcm8gYXJyYXlQcm9maWxlRm9y
Q2FsbChvcCwgZ2V0dSkKK21hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBn
ZXR1KQogICAgIGdldHUobV9hcmd2LCB0MykKICAgICBuZWdwIHQzCiAgICAgbG9hZHEgVGhpc0Fy
Z3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuZG9u
ZQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQzCi0gICAgc3RvcmVpIHQz
LCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1
XQorICAgIHN0b3JlaSB0MywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCiAuZG9uZToKIGVuZAogCi1tYWNybyBjb21tb25D
YWxsT3AobmFtZSwgc2xvd1BhdGgsIG9wLCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCi0gICAgbGxp
bnRPcFdpdGhNZXRhZGF0YShuYW1lLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCittYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgs
IG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQorICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAg
IHByb2xvZ3VlKG1hY3JvIChmaWVsZE5hbWUsIGRzdCkKLSAgICAgICAgICAgIGdldHUoc2l6ZSwg
b3AsIGZpZWxkTmFtZSwgZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IGZpZWxkTmFtZSwgZHN0KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCiAgICAgICAgIGdldCht
X2NhbGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5jYWxsZWVbdDVdLCB0MgorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDAsIHQzKQogICAgICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0g
ICAgICAgIGdldHUoc2l6ZSwgb3AsIG1fYXJndiwgdDMpCisgICAgICAgIGdldHUoc2l6ZSwgb3Bj
b2RlU3RydWN0LCBtX2FyZ3YsIHQzKQogICAgICAgICBsc2hpZnRpIDMsIHQzCiAgICAgICAgIG5l
Z3AgdDMKICAgICAgICAgYWRkcCBjZnIsIHQzCiAgICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3Qz
XQotICAgICAgICBnZXR1KHNpemUsIG9wLCBtX2FyZ2MsIHQyKQorICAgICAgICBnZXR1KHNpemUs
IG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikKICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0KICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKICAgICAgICAgaWYgUE9JU09O
CiAgICAgICAgICAgICBsb2FkcCBfZ19KSVRDb2RlUG9pc29uLCB0MgotICAgICAgICAgICAgeG9y
cCAlb3AlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0
MgorICAgICAgICAgICAgeG9ycCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIKICAgICAgICAgICAgIHByZXBhcmVDYWxsKHQy
LCB0MSwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0
aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgdDIsIEpTRW50cnlQdHJUYWcpCisgICAgICAgICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgdDIsIEpTRW50
cnlQdHJUYWcpCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByZXBhcmVDYWxsKCVvcCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQs
IEpTRW50cnlQdHJUYWcpCi0gICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3As
IGRpc3BhdGNoLCAlb3AlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24o
c2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAgICAg
ICAgIGVuZAogCiAgICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChzaXpl
LCBvcCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgc2xvd1BhdGhG
b3JDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjE3MCw3ICsyMTcwLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcAogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAK
LSAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fcmVzb2x2ZVR5cGVbdDVdLCB0
MAorICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9yZXNvbHZlVHlwZVt0NV0s
IHQwCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAu
ckdsb2JhbFZhcgpAQCAtMjIxOCwxMSArMjIxOCwxMSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X3Jlc29sdmVfc2NvcGUsIE9wCiBlbmQpCiAKIAotbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVj
ayhvcCwgZ2V0LCBzbG93UGF0aCkKK21hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3Bjb2Rl
U3RydWN0LCBnZXQsIHNsb3dQYXRoKQogICAgIGdldChtX3Njb3BlLCB0MCkKICAgICBsb2FkcSBb
Y2ZyLCB0MCwgOF0sIHQwCiAgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEs
IHQzKQotICAgIGxvYWRwICVvcCU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZVt0NV0sIHQxCisgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZVt0NV0sIHQxCiAgICAg
YnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCiAKQEAgLTIyNTEsNyArMjI1MSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICAgICAgcmV0dXJuKHQwKQog
ICAgIGVuZAogCi0gICAgbG9hZGkgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX2dldFB1dElu
Zm9bdDVdLCB0MAorICAgIGxvYWRpIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9nZXRQdXRJ
bmZvICsgR2V0UHV0SW5mbzo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICBhbmRpIFJlc29sdmVUeXBl
TWFzaywgdDAKIAogI2dHbG9iYWxQcm9wZXJ0eToKQEAgLTIzMDksNyArMjMwOSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFAKICAgICBtYWNybyBwdXRQcm9wZXJ0
eSgpCiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDIpCi0gICAgICAgIGxvYWRpcyBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRh
OjptX29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRh
OjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDAsIHQyKQogICAgIGVuZAogCkBAIC0yMzI1LDcgKzIzMjUsNyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQCiAgICAgbWFjcm8gcHV0Q2xvc3VyZVZhcigp
CiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MSwgdDIpCi0gICAgICAgIGxvYWRpcyBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjpt
X29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZXEgdDIsIEpTTGV4aWNhbEVudmlyb25tZW50
X3ZhcmlhYmxlc1t0MCwgdDEsIDhdCiAgICAgZW5kCiAKQEAgLTIzMzYsMTIgKzIzMzYsMTIgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAogICAgICAgICBidHB6IHQz
LCAubm9WYXJpYWJsZVdhdGNocG9pbnRTZXQKICAgICAgICAgbm90aWZ5V3JpdGUodDMsIC5wRHlu
YW1pYykKICAgICAubm9WYXJpYWJsZVdhdGNocG9pbnRTZXQ6Ci0gICAgICAgIGxvYWRpcyBPcFB1
dFRvU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBPcFB1
dFRvU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZXEgdDIs
IEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdCiAgICAgZW5kCiAKICAg
ICBtYWNybyBjaGVja1REWkluR2xvYmFsUHV0VG9TY29wZUlmTmVjZXNzYXJ5KCkKLSAgICAgICAg
bG9hZGlzIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fZ2V0UHV0SW5mb1t0NV0sIHQwCisgICAg
ICAgIGxvYWRpIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fZ2V0UHV0SW5mbyArIEdldFB1dElu
Zm86Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGFuZGkgSW5pdGlhbGl6YXRpb25Nb2RlTWFz
aywgdDAKICAgICAgICAgcnNoaWZ0aSBJbml0aWFsaXphdGlvbk1vZGVTaGlmdCwgdDAKICAgICAg
ICAgYmluZXEgdDAsIE5vdEluaXRpYWxpemF0aW9uLCAubm9OZWVkRm9yVERaQ2hlY2sKQEAgLTIz
NTIsNyArMjM1Miw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFAK
ICAgICBlbmQKIAogICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBsb2FkaSBPcFB1dFRvU2NvcGU6
Ok1ldGFkYXRhOjptX2dldFB1dEluZm9bdDVdLCB0MAorICAgIGxvYWRpIE9wUHV0VG9TY29wZTo6
TWV0YWRhdGE6Om1fZ2V0UHV0SW5mbyArIEdldFB1dEluZm86Om1fb3BlcmFuZFt0NV0sIHQwCiAg
ICAgYW5kaSBSZXNvbHZlVHlwZU1hc2ssIHQwCiAKICNwTG9jYWxDbG9zdXJlVmFyOgpAQCAtMjQ2
Niw3ICsyNDY2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wcm9maWxlX3R5cGUsIE9wUAog
ICAgIGxvYWRwIFR5cGVQcm9maWxlckxvZzo6bV9jdXJyZW50TG9nRW50cnlQdHJbdDFdLCB0Mgog
CiAgICAgIyB0MCBpcyBob2xkaW5nIHRoZSBKU1ZhbHVlIGFyZ3VtZW50LgotICAgIGdldChtX3Rh
cmdldCwgdDMpCisgICAgZ2V0KG1fdGFyZ2V0VmlydHVhbFJlZ2lzdGVyLCB0MykKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQzLCB0MCkKIAogICAgIGJxZXEgdDAsIFZhbHVlRW1w
dHksIC5vcFByb2ZpbGVUeXBlRG9uZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjQwMTM1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODUsMzYgKzI4NSwzNiBAQCBlbHNlCiAgICAgZW5kCiBlbmQKIAotbWFj
cm8gZGlzcGF0Y2goYWR2YW5jZSkKLSAgICBhZGRwIGFkdmFuY2UsIFBDCittYWNybyBkaXNwYXRj
aChhZHZhbmNlUmVnKQorICAgIGFkZHAgYWR2YW5jZVJlZywgUEMKICAgICBuZXh0SW5zdHJ1Y3Rp
b24oKQogZW5kCiAKLW1hY3JvIGRpc3BhdGNoSW5kaXJlY3Qob2Zmc2V0KQotICAgIGRpc3BhdGNo
KG9mZnNldCkKK21hY3JvIGRpc3BhdGNoSW5kaXJlY3Qob2Zmc2V0UmVnKQorICAgIGRpc3BhdGNo
KG9mZnNldFJlZykKIGVuZAogCi1tYWNybyBkaXNwYXRjaE9wKHNpemUsIG9wKQorbWFjcm8gZGlz
cGF0Y2hPcChzaXplLCBvcGNvZGVOYW1lKQogICAgIG1hY3JvIGRpc3BhdGNoTmFycm93KCkKLSAg
ICAgICAgZGlzcGF0Y2goY29uc3RleHByICVvcCVfbGVuZ3RoKQorICAgICAgICBkaXNwYXRjaChj
b25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCkKICAgICBlbmQKIAogICAgIG1hY3JvIGRpc3Bh
dGNoV2lkZSgpCi0gICAgICAgIGRpc3BhdGNoKGNvbnN0ZXhwciAlb3AlX2xlbmd0aCAqIDQgKyAx
KQorICAgICAgICBkaXNwYXRjaChjb25zdGV4cHIgJW9wY29kZU5hbWUlX2xlbmd0aCAqIDQgKyAx
KQogICAgIGVuZAogCiAgICAgc2l6ZShkaXNwYXRjaE5hcnJvdywgZGlzcGF0Y2hXaWRlLCBtYWNy
byAoZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogZW5kCiAKLW1hY3JvIGdldHUoc2l6ZSwgb3As
IGZpZWxkTmFtZSwgZHN0KQorbWFjcm8gZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFt
ZSwgZHN0KQogICAgIHNpemUoZ2V0dU9wZXJhbmROYXJyb3csIGdldHVPcGVyYW5kV2lkZSwgbWFj
cm8gKGdldHUpCi0gICAgICAgIGdldHUob3AsIGZpZWxkTmFtZSwgZHN0KQorICAgICAgICBnZXR1
KG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIGdl
dChzaXplLCBvcCwgZmllbGROYW1lLCBkc3QpCittYWNybyBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBmaWVsZE5hbWUsIGRzdCkKICAgICBzaXplKGdldE9wZXJhbmROYXJyb3csIGdldE9wZXJhbmRX
aWRlLCBtYWNybyAoZ2V0KQotICAgICAgICBnZXQob3AsIGZpZWxkTmFtZSwgZHN0KQorICAgICAg
ICBnZXQob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBlbmQpCiBlbmQKIApAQCAt
MzM0LDkgKzMzNCw5IEBAIG1hY3JvIG1ldGFkYXRhKHNpemUsIG9wY29kZSwgZHN0LCBzY3JhdGMK
ICAgICBhZGRwIG1ldGFkYXRhVGFibGUsIGRzdCAjIHJldHVybiAmbWV0YWRhdGFUYWJsZVtvZmZz
ZXRdCiBlbmQKIAotbWFjcm8ganVtcEltcGwodGFyZ2V0KQotICAgIGJ0aXogdGFyZ2V0LCAub3V0
T2ZMaW5lSnVtcFRhcmdldAotICAgIGRpc3BhdGNoSW5kaXJlY3QodGFyZ2V0KQorbWFjcm8ganVt
cEltcGwodGFyZ2V0T2Zmc2V0UmVnKQorICAgIGJ0aXogdGFyZ2V0T2Zmc2V0UmVnLCAub3V0T2ZM
aW5lSnVtcFRhcmdldAorICAgIGRpc3BhdGNoSW5kaXJlY3QodGFyZ2V0T2Zmc2V0UmVnKQogLm91
dE9mTGluZUp1bXBUYXJnZXQ6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfb3V0
X29mX2xpbmVfanVtcF90YXJnZXQpCiAgICAgbmV4dEluc3RydWN0aW9uKCkKQEAgLTM1OCwzOSAr
MzU4LDM5IEBAIG1hY3JvIG9wKGwsIGZuKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBsbGludE9w
KG5hbWUsIG9wLCBmbikKLSAgICBjb21tb25PcChsbGludF8lbmFtZSUsIHRyYWNlRXhlY3V0aW9u
LCBtYWNybyhzaXplKQorbWFjcm8gbGxpbnRPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGZu
KQorICAgIGNvbW1vbk9wKGxsaW50XyVvcGNvZGVOYW1lJSwgdHJhY2VFeGVjdXRpb24sIG1hY3Jv
KHNpemUpCiAgICAgICAgIG1hY3JvIGdldEltcGwoZmllbGROYW1lLCBkc3QpCi0gICAgICAgICAg
ICBnZXQoc2l6ZSwgb3AsIGZpZWxkTmFtZSwgZHN0KQorICAgICAgICAgICAgZ2V0KHNpemUsIG9w
Y29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZAogCiAgICAgICAgIG1hY3Jv
IGRpc3BhdGNoSW1wbCgpCi0gICAgICAgICAgICBkaXNwYXRjaE9wKHNpemUsIG5hbWUpCisgICAg
ICAgICAgICBkaXNwYXRjaE9wKHNpemUsIG9wY29kZU5hbWUpCiAgICAgICAgIGVuZAogCiAgICAg
ICAgIGZuKHNpemUsIGdldEltcGwsIGRpc3BhdGNoSW1wbCkKICAgICBlbmQpCiBlbmQKIAotbWFj
cm8gbGxpbnRPcFdpdGhSZXR1cm4obmFtZSwgb3AsIGZuKQotICAgIGxsaW50T3AobmFtZSwgb3As
IG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gpCittYWNybyBsbGludE9wV2l0aFJldHVybihvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGZuKQorICAgIGxsaW50T3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoKQogICAgICAgICBtYWtlUmV0dXJuKGdl
dCwgZGlzcGF0Y2gsIG1hY3JvIChyZXR1cm4pCiAgICAgICAgICAgICBmbihzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGVuZCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbGxp
bnRPcFdpdGhNZXRhZGF0YShuYW1lLCBvcCwgZm4pCi0gICAgbGxpbnRPcFdpdGhSZXR1cm4obmFt
ZSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCittYWNybyBsbGludE9w
V2l0aE1ldGFkYXRhKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZm4pCisgICAgbGxpbnRPcFdp
dGhSZXR1cm4ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgcmV0dXJuKQogICAgICAgICBtYWNybyBtZXRhKGRzdCwgc2NyYXRjaCkKLSAgICAgICAg
ICAgIG1ldGFkYXRhKHNpemUsIG9wLCBkc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBtZXRhZGF0
YShzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdCwgc2NyYXRjaCkKICAgICAgICAgZW5kCiAgICAgICAg
IGZuKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGEsIHJldHVybikKICAgICBlbmQpCiBlbmQKIAot
bWFjcm8gbGxpbnRPcFdpdGhKdW1wKG5hbWUsIG9wLCBpbXBsKQotICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEobmFtZSwgb3AsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCittYWNybyBsbGludE9wV2l0aEp1bXAob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbXBs
KQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNy
byhzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBq
dW1wKGZpZWxkTmFtZSkKICAgICAgICAgICAgIGdldChmaWVsZE5hbWUsIHQwKQogICAgICAgICAg
ICAganVtcEltcGwodDApCkBAIC00MDAsOSArNDAwLDkgQEAgbWFjcm8gbGxpbnRPcFdpdGhKdW1w
KG5hbWUsIG9wLCBpbXBsKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBsbGludE9wV2l0aFByb2Zp
bGUobmFtZSwgb3AsIGZuKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEobmFtZSwgb3AsIG1hY3Jv
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgICAgIG1ha2VSZXR1
cm5Qcm9maWxlZChvcCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIG1hY3JvIChyZXR1cm5Qcm9m
aWxlZCkKK21hY3JvIGxsaW50T3BXaXRoUHJvZmlsZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IGZuKQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBt
YWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgICAgICBtYWtl
UmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgbWFj
cm8gKHJldHVyblByb2ZpbGVkKQogICAgICAgICAgICAgZm4oc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuUHJvZmlsZWQpCiAgICAgICAgIGVuZCkKICAgICBlbmQpCkBAIC04OTUsMTQgKzg5NSwx
NCBAQCBtYWNybyB0cmFjZUV4ZWN1dGlvbigpCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gY2FsbFRh
cmdldEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQorbWFj
cm8gY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxl
ZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1AKICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlv
biBjYWxsZWUKICAgICBlbHNlCiAgICAgICAgIGNhbGwgY2FsbGVlLCBjYWxsUHRyVGFnCiAgICAg
ZW5kCiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gpCiBlbmQKIAogbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxs
KGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKQEAgLTkxNSw3ICs5MTUs
NyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgCiAKICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0ZW1wMgogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0ZW1wMQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJz
W3RlbXAxXSwgdGVtcDEKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0ZW1w
MV0sIHRlbXAxCiAgICAgYmlsdGVxIHRlbXAxLCB0ZW1wMiwgLm5vQXJpdHlGaXh1cAogICAgIG1v
dmUgdGVtcDEsIHRlbXAyCiAKQEAgLTk3MCw3ICs5NzAsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFp
bENhbGwoY2FsbGVlLCB0ZW1wMSwgCiAgICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZwogZW5kCiAK
LW1hY3JvIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbENhbGxTbG93UGF0aCgKICAgICAg
ICAgc2xvd1BhdGgsCiAgICAgICAgICMgVGhvc2UgYXJlIHIwIGFuZCByMQpAQCAtOTc5LDcgKzk3
OSw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcCwgZGlzcGF0Y2gKICAgICAgICAg
ICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxs
ZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgot
ICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wLCBkaXNwYXRjaCwgY2FsbGVl
LCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICBl
bmQpCiBlbmQKIApAQCAtMTE5Miw4ICsxMTkyLDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXph
dGlvbihwcm9maWxlQXJnUwogICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXMgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0MV0sIHQzCiAgICAgYnRweiB0MywgLmFy
Z3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxsb2NhdGUg
YW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmls
ZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKLSAgICBsc2hp
ZnRwIDMsIHQwCi0gICAgYWRkcCB0MiwgdDMKKyAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9m
IGxhc3QgSlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgorICAgIGFkZHAgdDIsIHQzICMg
cG9pbnRlciB0byBlbmQgb2YgVmFsdWVQcm9maWxlIGFycmF5IGluIENvZGVCbG9jazo6bV9hcmd1
bWVudFZhbHVlUHJvZmlsZXMuCiAuYXJndW1lbnRQcm9maWxlTG9vcDoKICAgICBpZiBKU1ZBTFVF
NjQKICAgICAgICAgbG9hZHEgVGhpc0FyZ3VtZW50T2Zmc2V0IC0gOCArIHByb2ZpbGVBcmdTa2lw
ICogOFtjZnIsIHQwXSwgdDIKQEAgLTE0MzMsOSArMTQzMyw5IEBAIGVuZAogCiAKICMgVmFsdWUt
cmVwcmVzZW50YXRpb24tYWdub3N0aWMgY29kZS4KLW1hY3JvIHNsb3dQYXRoT3Aob3ApCi0gICAg
bGxpbnRPcChvcF8lb3AlLCB1bnVzZWQsIG1hY3JvICh1bnVzZWQsIHVudXNlZCwgZGlzcGF0Y2gp
Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcCUpCittYWNybyBzbG93UGF0aE9w
KG9wY29kZU5hbWUpCisgICAgbGxpbnRPcChvcF8lb3Bjb2RlTmFtZSUsIHVudXNlZCwgbWFjcm8g
KHVudXNlZCwgdW51c2VkLCBkaXNwYXRjaCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCkBAIC0x
NDgxLDkgKzE0ODEsOSBAQCBzbG93UGF0aE9wKHRvX2luZGV4X3N0cmluZykKIHNsb3dQYXRoT3Ao
dHlwZW9mKQogc2xvd1BhdGhPcCh1bnJlYWNoYWJsZSkKIAotbWFjcm8gbGxpbnRTbG93UGF0aE9w
KG9wKQotICAgIGxsaW50T3Aob3BfJW9wJSwgdW51c2VkLCBtYWNybyAodW51c2VkLCB1bnVzZWQs
IGRpc3BhdGNoKQotICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3AlKQor
bWFjcm8gbGxpbnRTbG93UGF0aE9wKG9wY29kZU5hbWUpCisgICAgbGxpbnRPcChvcF8lb3Bjb2Rl
TmFtZSUsIHVudXNlZCwgbWFjcm8gKHVudXNlZCwgdW51c2VkLCBkaXNwYXRjaCkKKyAgICAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNw
YXRjaCgpCiAgICAgZW5kKQogZW5kCkBAIC0xNTM4LDcgKzE1MzgsNyBAQCBjb21wYXJlVW5zaWdu
ZWRPcChiZWxvd2VxLCBPcEJlbG93ZXEsCiAKIAogbGxpbnRPcFdpdGhKdW1wKG9wX2ptcCwgT3BK
bXAsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQotICAgIGp1bXAobV90YXJnZXQp
CisgICAganVtcChtX3RhcmdldExhYmVsKQogZW5kKQogCiAKQEAgLTE2NzQsOCArMTY3NCw4IEBA
IGNvbW1vbkNhbGxPcChvcF9jYWxsLCBfbGxpbnRfc2xvd19wYXRoX2MKIGVuZCkKIAogCi1tYWNy
byBjYWxsT3AobmFtZSwgb3AsIHByZXBhcmVDYWxsLCBmbikKLSAgICBjb21tb25DYWxsT3Aob3Bf
JW5hbWUlLCBfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSwgb3AsIHByZXBhcmVDYWxsLCBmbikKK21h
Y3JvIGNhbGxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBmbikKKyAg
ICBjb21tb25DYWxsT3Aob3BfJW9wY29kZU5hbWUlLCBfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgZm4pCiBlbmQKIAogCkBAIC0xNjkwLDcg
KzE2OTAsNyBAQCBlbmQpCiBjYWxsT3AoY29uc3RydWN0LCBPcENvbnN0cnVjdCwgcHJlcGFyZUZv
clJlZ3VsYXJDYWxsLCBtYWNybyAoZ2V0dSwgbWV0YWRhdGEpIGVuZCkKIAogCi1tYWNybyBkb0Nh
bGxWYXJhcmdzKHNpemUsIG9wLCBkaXNwYXRjaCwgZnJhbWVTbG93UGF0aCwgc2xvd1BhdGgsIHBy
ZXBhcmVDYWxsKQorbWFjcm8gZG9DYWxsVmFyYXJncyhzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoLCBmcmFtZVNsb3dQYXRoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiAgICAgY2FsbFNsb3dQ
YXRoKGZyYW1lU2xvd1BhdGgpCiAgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zy
b21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCiAgICAgIyBjYWxsZWVGcmFtZSBpbiByMQpAQCAtMTcw
NSw3ICsxNzA1LDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhzaXplLCBvcCwgZGlzcGF0Y2gsIAog
ICAgICAgICAgICAgc3VicCByMSwgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIGVu
ZAogICAgIGVuZAotICAgIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcCwgZGlzcGF0Y2gsIHNsb3dQ
YXRoLCBwcmVwYXJlQ2FsbCkKKyAgICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogZW5kCiAKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsOCArMTI1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgYkNvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChiQ29uZGl0aW9uKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwYyA9IGJ5dGVjb2RlLm1f
dGFyZ2V0IFwKLSAgICAgICAgICAgICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBieXRlY29kZS5t
X3RhcmdldCkgXAorICAgICAgICAgICAgcGMgPSBieXRlY29kZS5tX3RhcmdldExhYmVsIFwKKyAg
ICAgICAgICAgICAgICA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBieXRlY29kZS5tX3RhcmdldExhYmVs
KSBcCiAgICAgICAgICAgICAgICAgOiBleGVjLT5jb2RlQmxvY2soKS0+b3V0T2ZMaW5lSnVtcFRh
cmdldChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBlbHNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgcGMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGMpICsgcGMtPnNpemUoKSk7IFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgJKHJldmlzaW9uIDI0MDEz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
OSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBSZXNvbHZlTW9kZSB7CiAgICAgRG9Ob3RU
aHJvd0lmTm90Rm91bmQKIH07CiAKLWVudW0gUmVzb2x2ZVR5cGUgeworZW51bSBSZXNvbHZlVHlw
ZSA6IHVuc2lnbmVkIHsKICAgICAvLyBMZXhpY2FsIHNjb3BlIGd1YXJhbnRlZWQgYSBjZXJ0YWlu
IHR5cGUgb2YgdmFyaWFibGUgYWNjZXNzLgogICAgIEdsb2JhbFByb3BlcnR5LAogICAgIEdsb2Jh
bFZhciwKQEAgLTIxMCw2ICsyMTAsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG1vZGVCaXRzID0gKCgxIDw8IDMwKSAtIDEpICYgfmluaXRpYWxpemF0aW9uQml0cyAmIH50
eXBlQml0czsKICAgICBzdGF0aWNfYXNzZXJ0KChtb2RlQml0cyAmIGluaXRpYWxpemF0aW9uQml0
cyAmIHR5cGVCaXRzKSA9PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJl
dHdlZW4gUmVzb2x2ZU1vZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwog
CisgICAgR2V0UHV0SW5mbygpID0gZGVmYXVsdDsKKwogICAgIEdldFB1dEluZm8oUmVzb2x2ZU1v
ZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1v
ZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQogICAgICAgICA6IG1fb3BlcmFuZCgocmVzb2x2ZU1vZGUg
PDwgbW9kZVNoaWZ0KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2Rl
KSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSB8IHJlc29sdmVUeXBlKQogICAgIHsKQEAgLTIyOCw3
ICsyMzAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgT3BlcmFuZCBtX29wZXJhbmQ7CisgICAgT3BlcmFuZCBtX29wZXJhbmQg
eyAwIH07CisKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CiB9
OwogCiBlbnVtIEdldE9yUHV0IHsgR2V0LCBQdXQgfTsK
</data>
<flag name="review"
          id="376190"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359432</attachid>
            <date>2019-01-17 17:34:16 -0800</date>
            <delta_ts>2019-01-17 17:34:16 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-193557.patch</filename>
            <type>text/plain</type>
            <size>122711</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBA
QAorMjAxOS0wMS0xNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXVkaXQgYnl0ZWNvZGUgZmllbGRzIGFuZCBlbnN1cmUgdGhhdCBMTEludCBpbnN0cnVjdGlvbnMg
Zm9yIGFjY2Vzc2luZyB0aGVtIGFyZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzU1NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDczNjkxMjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAxLiBSZW5hbWUgc29tZSBieXRlY29kZSBmaWVsZHMgc28gdGhhdCBpdCdzIGVhc2llciB0
byBkaXNjZXJuIHdoZXRoZXIgdGhlIExMSW50CisgICAgICAgICAgIGlzIGFjY2Vzc2luZyB0aGVt
IHRoZSByaWdodCB3YXk6CisgICAgICAgICAgIC0gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0YXJnZXRW
aXJ0dWFsUmVnaXN0ZXIgYW5kIHRhcmdldExhYmVsLgorICAgICAgICAgICAtIG5hbWUgYWxsIFN0
cnVjdHVyZUlEIGZpZWxkcyBhcyBzdHJ1Y3R1cmVJRCAob2xkU3RydWN0dXJlSUQsIG5ld1N0cnVj
dHVyZUlEKQorICAgICAgICAgICAgIGluc3RlYWQgb2Ygc3RydWN0dXJlIChvbGRTdHJ1Y3R1cmUs
IG5ld1N0cnVjdHVyZSkuCisKKyAgICAgICAgMi4gVXNlIGJpdHdpc2VfY2FzdCBpbiBzdHJ1Y3Qg
Rml0cyB3aGVuIHNpemVvZihUKSA9PSBzaXplLgorICAgICAgICAgICBUaGlzIHByZXZlbnRzIHBv
dGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgaXNzdWVzIGFyaXNpbmcgZnJvbSBkb2luZworICAg
ICAgICAgICBhc3NpZ25tZW50cyB3aXRoIHJlaW50ZXJwcmV0X2Nhc3QnZWQgcG9pbnRlcnMuCisK
KyAgICAgICAgMy4gTWFrZSBTcGVjaWFsOjpQb2ludGVyIGFuIHVuc2lnbmVkIHR5cGUgKHByZXZp
b3VzbHkgaW50KS4KKyAgICAgICAgICAgTWFrZSBSZXNvbHZlVHlwZSBhbiB1bnNpZ25lZCB0eXBl
IChwcmV2aW91c2x5IGludCkuCisKKyAgICAgICAgNC4gSW4gTG93TGV2ZWxJbnRlcnByZXRlciou
YXNtOgorCisgICAgICAgICAgIC0gcmVuYW1lIHRoZSBvcCBtYWNybyBhcmd1bWVudCB0byBvcGNv
ZGVOYW1lIG9yIG9wY29kZVN0cnVjdCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgVGhpcyBt
YWtlcyBpdCBjbGVhcmVyIHdoaWNoIGFyZ3VtZW50IHR5cGUgdGhlIG1hY3JvIGlzIHdvcmtpbmcg
d2l0aC4KKworICAgICAgICAgICAtIHJlbmFtZSB0aGUgbmFtZSBtYWNybyBhcmd1bWVudCB0byBv
cGNvZGVOYW1lLgorCisgICAgICAgICAgIC0gZml4IG9wZXJhdG9yIHR5cGVzIHRvIG1hdGNoIHRo
ZSBmaWVsZCB0eXBlIGJlaW5nIGFjY2Vzc2VkLiAgVGhlIGZvbGxvd2luZworICAgICAgICAgICAg
IG1heSBoYXZlIHJlc3VsdGVkIGluIGJ1Z3MgYmVmb3JlOgorCisgICAgICAgICAgICAgMS4gVGhl
IGZvbGxvd2luZyBzaG91bGQgYmUgcmVhZCB3aXRoIGdldHUoKSBpbnN0ZWFkIG9mIGdldCgpIGJl
Y2F1c2UgdGhleQorICAgICAgICAgICAgICAgIGFyZSB1bnNpZ25lZCBpbnRzOgorICAgICAgICAg
ICAgICAgICAgICBPcFN3aXRjaEltbTo6bV90YWJsZUluZGV4CisgICAgICAgICAgICAgICAgICAg
IE9wU3dpdGNoQ2hhcjo6bV90YWJsZUluZGV4CisgICAgICAgICAgICAgICAgICAgIE9wR2V0RnJv
bUFyZ3VtZW50czo6bV9pbmRleAorICAgICAgICAgICAgICAgICAgICBPcFB1dFRvQXJndW1lbnRz
OjptX2luZGV4CisgICAgICAgICAgICAgICAgICAgIE9wR2V0UmVzdExlbmd0aDo6bV9udW1QYXJh
bWV0ZXJzVG9Ta2lwCisKKyAgICAgICAgICAgICAgICBPcEpuZXFQdHI6Om1fc3BlY2lhbFBvaW50
ZXIgc2hvdWxkIGFsc28gYmUgcmVhZCB3aXRoIGdldHUoKSB0aG91Z2ggdGhpcworICAgICAgICAg
ICAgICAgIHdhc24ndCBhIGJ1ZyBiZWNhdXNlIGl0IHdhcyBwcmV2aW91c2x5IGFuIGludCBieSBk
ZWZhdWx0LCBhbmQgaXMgb25seQorICAgICAgICAgICAgICAgIGNoYW5nZWQgdG8gYW4gdW5zaWdu
ZWQgaW50IGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgICAgICAyLlRoZSBmb2xsb3dpbmcgc2hv
dWxkIGJlIHJlYWQgd2l0aCBsb2FkaSAobm90IGxvYWRwKSBiZWNhdXNlIHRoZXkgYXJlIG9mCisg
ICAgICAgICAgICAgICB1bnNpZ25lZCB0eXBlIChub3QgYSBwb2ludGVyKToKKyAgICAgICAgICAg
ICAgICAgICAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX3Jlc29sdmVUeXBlCisgICAgICAg
ICAgICAgICAgICAgIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzIChzZWUgcHJlcGFyZUZvclRh
aWxDYWxsKQorCisgICAgICAgICAgICAgMy4gT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6bV9vcGVy
YW5kIHNob3VsZCBiZSByZWFkIHdpdGggbG9hZHAgKG5vdCBsb2FkaXMpCisgICAgICAgICAgICAg
ICAgYmVjYXVzZSBpdCBpcyBhIHVpbnRwdHJfdC4KKworICAgICAgICAgICAgIDQuIFRoZSBmb2xs
b3dpbmcgc2hvdWxkIGJlIHJlYWQgd2l0aCBsb2FkaSAobm90IGxvYWRpcykgYmVjYXVzZSB0aGV5
IGFyZQorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludHM6CisgICAgICAgICAgICAgICAgICAg
IE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0
cworICAgICAgICAgICAgICAgICAgICBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVy
ZUlECisgICAgICAgICAgICAgICAgICAgIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fZ2V0UHV0
SW5mbyArIEdldFB1dEluZm86Om1fb3BlcmFuZAorCisgICAgICAgICAgICAgICAgVGhlc2UgbWF5
IG5vdCBoYXZlIG1hbmlmZXN0ZWQgaW4gYnVncyBiZWNhdXNlIHRoZSBvcGVyYXRpb25zIHRoYXQg
Zm9sbG93CisgICAgICAgICAgICAgICAgdGhlIGxvYWQgYXJlIDMyLWJpdCBpbnN0cnVjdGlvbnMg
d2hpY2ggaWdub3JlIHRoZSBoaWdoIHdvcmQuCisKKyAgICAgICAgNS4gR2l2ZSBjbGFzcyBHZXRQ
dXRJbmZvIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBzbyB0aGF0IHdlIGNhbiB1c2UgYml0d2lzZV9j
YXN0CisgICAgICAgICAgIG9uIGl0LiAgQWxzbyBiZWZyaWVuZCBMTEludE9mZnNldHNFeHRyYWN0
b3Igc28gdGhhdCB3ZSBjYW4gdGFrZSB0aGUgb2Zmc2V0IG9mCisgICAgICAgICAgIG1fb3BlcmFu
ZCBpbiBpdC4KKworICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcm9wYWdhdGVU
cmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGlu
ZUNhY2hlcyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAg
ICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6anVtcFRhcmdldEZv
ckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6dXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJ
bnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAg
ICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TGFiZWw6OnNldExvY2F0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJp
bmFyeURvdWJsZU9wKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamZhbHNl
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVx
X3B0cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfanRydWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2puc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZXEpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90
eXBlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2ptcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfanRydWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2plcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamVxKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanN0cmljdGVxKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9qbnN0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2NoZWNrX3Rkeik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUp
OgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldHVwR2V0
QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvR2V0UHV0SW5mby5oOgor
CiAyMDE5LTAxLTE3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFNES19WQVJJQU5UIGJ1aWxkIGRlc3RpbmF0aW9ucyBzaG91bGQgYmUgc2VwYXJhdGUgZnJvbSBu
b24tU0RLX1ZBUklBTlQgYnVpbGRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5oCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzA2LDYgKzMw
Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1h
c2s7IH0KIAogICAgIHVpbnQzMl90IG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVw
ZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3Rv
cmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KKworICAgIGZyaWVu
ZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw3ICsxNDIsNyBAQCBvcCA6dG9fdGhpcywKIAog
b3AgOmNoZWNrX3RkeiwKICAgICBhcmdzOiB7Ci0gICAgICAgIHRhcmdldDogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICB0YXJnZXRWaXJ0dWFsUmVnaXN0ZXI6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICB9CiAKIG9wIDpuZXdfb2JqZWN0LApAQCAtNDQ5LDcgKzQ0OSw3IEBAIG9wIDpnZXRfYnlfaWRf
ZGlyZWN0LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLCAjIG5vdCB1c2VkIGluIGxsaW50Ci0gICAgICAgIHN0cnVjdHVyZTogU3RydWN0dXJl
SUQsCisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgb2Zmc2V0OiB1
bnNpZ25lZCwKICAgICB9CiAKQEAgLTQ3MSw5ICs0NzEsOSBAQCBvcCA6cHV0X2J5X2lkLAogICAg
ICAgICBmbGFnczogUHV0QnlJZEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAg
ICAgb2xkU3RydWN0dXJlOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgb2xkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAogICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAotICAgICAgICBuZXdTdHJ1Y3R1
cmU6IFN0cnVjdHVyZUlELAorICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAg
ICAgICAgIHN0cnVjdHVyZUNoYWluOiBXcml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZUNoYWluXSwK
ICAgICB9CiAKQEAgLTU5OCwzOCArNTk4LDM4IEBAIG9wIDpkZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHksCiAKIG9wIDpqbXAsCiAgICAgYXJnczogewotICAgICAgICB0YXJnZXQ6IEJvdW5kTGFiZWws
CisgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0KIAogb3AgOmp0cnVlLAog
ICAgIGFyZ3M6IHsKICAgICAgICAgY29uZGl0aW9uOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IHRhcmdldDogQm91bmRMYWJlbCwKKyAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCiAg
ICAgfQogCiBvcCA6amZhbHNlLAogICAgIGFyZ3M6IHsKICAgICAgICAgY29uZGl0aW9uOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIHRhcmdldDogQm91bmRMYWJlbCwKKyAgICAgICAgdGFyZ2V0
TGFiZWw6IEJvdW5kTGFiZWwsCiAgICAgfQogCiBvcCA6amVxX251bGwsCiAgICAgYXJnczogewog
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICB0YXJnZXQ6IEJvdW5kTGFi
ZWwsCisgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0KIAogb3AgOmpuZXFf
bnVsbCwKICAgICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAg
ICAgIHRhcmdldDogQm91bmRMYWJlbCwKKyAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWws
CiAgICAgfQogCiBvcCA6am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBzcGVjaWFsUG9pbnRlcjogU3BlY2lhbDo6UG9pbnRlciwK
LSAgICAgICAgdGFyZ2V0OiBCb3VuZExhYmVsLAorICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRM
YWJlbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGhhc0p1bXBlZDogYm9vbCwK
QEAgLTY1NSw3ICs2NTUsNyBAQCBvcF9ncm91cCA6QmluYXJ5Sm1wLAogICAgIGFyZ3M6IHsKICAg
ICAgICAgbGhzOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVy
LAotICAgICAgICB0YXJnZXQ6IEJvdW5kTGFiZWwsCisgICAgICAgIHRhcmdldExhYmVsOiBCb3Vu
ZExhYmVsLAogICAgIH0KIAogb3AgOmxvb3BfaGludApAQCAtOTY1LDcgKzk2NSw3IEBAIG9wIDpl
bmQsCiAKIG9wIDpwcm9maWxlX3R5cGUsCiAgICAgYXJnczogewotICAgICAgICB0YXJnZXQ6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgdGFyZ2V0VmlydHVhbFJlZ2lzdGVyOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoOiBpbnQsCiAgICAgICAgIGZs
YWc6IFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgICAgICBpZGVudGlmaWVyPzogdW5zaWdu
ZWQsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDkgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKgogCiAgICAgVVNFUyhPcEdldFNj
b3BlLCBkc3QpCiAgICAgVVNFUyhPcFRvVGhpcywgc3JjRHN0KQotICAgIFVTRVMoT3BDaGVja1Rk
eiwgdGFyZ2V0KQorICAgIFVTRVMoT3BDaGVja1RkeiwgdGFyZ2V0VmlydHVhbFJlZ2lzdGVyKQog
ICAgIFVTRVMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCi0gICAgVVNFUyhPcFByb2Zp
bGVUeXBlLCB0YXJnZXQpOworICAgIFVTRVMoT3BQcm9maWxlVHlwZSwgdGFyZ2V0VmlydHVhbFJl
Z2lzdGVyKTsKICAgICBVU0VTKE9wVGhyb3csIHZhbHVlKQogICAgIFVTRVMoT3BUaHJvd1N0YXRp
Y0Vycm9yLCBtZXNzYWdlKQogICAgIFVTRVMoT3BFbmQsIHZhbHVlKQpAQCAtNDQ4LDcgKzQ0OCw3
IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBERUZTKE9w
TW92LCBkc3QpCiAgICAgREVGUyhPcE5ld09iamVjdCwgZHN0KQogICAgIERFRlMoT3BUb1RoaXMs
IHNyY0RzdCkKLSAgICBERUZTKE9wQ2hlY2tUZHosIHRhcmdldCkKKyAgICBERUZTKE9wQ2hlY2tU
ZHosIHRhcmdldFZpcnR1YWxSZWdpc3RlcikKICAgICBERUZTKE9wR2V0U2NvcGUsIGRzdCkKICAg
ICBERUZTKE9wQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZVNj
b3BlZEFyZ3VtZW50cywgZHN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk1LDggKzEw
OTUsOCBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uCiAgICAgICAg
ICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMtPmF0KHByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zW2ldKTsKICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbi0+aXM8T3BQdXRC
eUlkPigpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+
YXM8T3BQdXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmU7Ci0gICAgICAgICAg
ICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVy
ZTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0
dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGlmICgh
b2xkU3RydWN0dXJlSUQgfHwgIW5ld1N0cnVjdHVyZUlEKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CkBAIC0x
MjI2LDcgKzEyMjYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hl
CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcEdldEJ5
SWQ+KCkubWV0YWRhdGEodGhpcyk7CiAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlICE9
IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5k
ZWZhdWx0TW9kZS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwog
ICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCkBAIC0xMjM2
LDE5ICsxMjM2LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGUK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9kaXJlY3Q6IHsKICAgICAgICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4o
KS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlE
ID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1
Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAoIW9sZFN0
cnVjdHVyZUlEIHx8IEhlYXA6OmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChvbGRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xl
YXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLlxuIik7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X3N0cnVjdHVyZSA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsK
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAgICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCkubWV0YWRhdGEodGhp
cyk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
b2xkU3RydWN0dXJlOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX25ld1N0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uZ2V0
KCk7CiAgICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01hcmtlZCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAg
ICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IEhlYXA6OmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKQpAQCAtMTI1Niw5ICsxMjU2LDkg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgcHV0IHRyYW5zaXRpb24uXG4iKTsK
LSAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlID0gMDsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZz
ZXQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmUgPSAwOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCShyZXZpc2lvbiAyNDAx
MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTUyLDEwICs1MiwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBPcGNvZGVTaXplIHNpemU+
CiBzdHJ1Y3QgRml0czxULCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihUKSA9PSBzaXpl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBzdGF0aWMgYm9vbCBjaGVjayhUKSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBzdGF0aWMgdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dHlwZSBjb252
ZXJ0KFQgdCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dHlwZW5hbWUgVHlwZUJ5U2l6ZTxz
aXplPjo6dHlwZSo+KCZ0KTsgfQorICAgIHN0YXRpYyB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+
Ojp0eXBlIGNvbnZlcnQoVCB0KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgVHlwZUJ5
U2l6ZTxzaXplPjo6dHlwZT4odCk7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIFQxID0gVCwgT3Bj
b2RlU2l6ZSBzaXplMSA9IHNpemUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjpp
c19zYW1lPFQxLCB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemUxPjo6dHlwZT46OnZhbHVlLCBzdGQ6
OnRydWVfdHlwZT4+Ci0gICAgc3RhdGljIFQxIGNvbnZlcnQodHlwZW5hbWUgVHlwZUJ5U2l6ZTxz
aXplMT46OnR5cGUgdCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VDEqPigmdCk7IH0KKyAg
ICBzdGF0aWMgVDEgY29udmVydCh0eXBlbmFtZSBUeXBlQnlTaXplPHNpemUxPjo6dHlwZSB0KSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8VDE+KHQpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBPcGNvZGVTaXplIHNpemU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzks
MTYgKzM5LDE2IEBAIHVuaW9uIEdldEJ5SWRNb2RlTWV0YWRhdGEgewogICAgIHsgfQogCiAgICAg
c3RydWN0IERlZmF1bHQgewotICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmU7CisgICAgICAg
IFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQ7CiAgICAgfSBkZWZhdWx0TW9kZTsKIAogICAgIHN0cnVjdCBVbnNldCB7Ci0gICAgICAg
IFN0cnVjdHVyZUlEIHN0cnVjdHVyZTsKKyAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7
CiAgICAgfSB1bnNldE1vZGU7CiAKICAgICBzdHJ1Y3QgUHJvdG9Mb2FkIHsKLSAgICAgICAgU3Ry
dWN0dXJlSUQgc3RydWN0dXJlOworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKICAg
ICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwogICAgICAgICBKU09iamVjdCogY2Fj
aGVkU2xvdDsKICAgICB9IHByb3RvTG9hZE1vZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAyNDAxMzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDExICs2NiwxMSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGcm9tCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgwMzkKICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9k
ZTo6RGVmYXVsdCkKICAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIGZhbHNlKTsKLSAgICAgICAgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmU7CisgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIG9wX2dldF9ieV9pZF9kaXJlY3Q6Ci0gICAgICAgIHN0cnVjdHVyZUlE
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKS5tZXRhZGF0YShwcm9maWxlZEJs
b2NrKS5tX3N0cnVjdHVyZTsKKyAgICAgICAgc3RydWN0dXJlSUQgPSBpbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkRGlyZWN0PigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spLm1fc3RydWN0dXJlSUQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogewogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBqdXN0IGJhaWwgaWYgd2Ugc2VlIGEgdHJ5X2dldF9ieV9p
ZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlCiB7CiAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1v
ZGU6OkRlZmF1bHQ7CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2Fj
aGVkT2Zmc2V0ID0gMDsKLSAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmUgPSAwOworICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0
cnVjdHVyZUlEID0gMDsKIH0KIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgJKHJldmlzaW9u
IDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgQmxvY2s+CiBpbmxpbmUgaW50IGp1bXBUYXJnZXRGb3JJ
bnN0cnVjdGlvbihCbG9jayYmIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06OlJl
ZiYgaW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cD4oKTsKLSAgICByZXR1cm4ganVtcFRhcmdldEZvckluc3RydWN0aW9uKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICByZXR1cm4ganVtcFRhcmdldEZvcklu
c3RydWN0aW9uKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24+CkBAIC0x
MzksNyArMTM5LDcgQEAgaW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbgog
ICAgIGNhc2UgX19vcDo6b3Bjb2RlSUQ6IHsgXAogICAgICAgICBpbnQzMl90IHRhcmdldCA9IGp1
bXBUYXJnZXRGb3JJbnN0cnVjdGlvbjxfX29wPihjb2RlQmxvY2tPckhhc2hNYXAsIGluc3RydWN0
aW9uKTsgXAogICAgICAgICBpbnQzMl90IG5ld1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCk7IFwK
LSAgICAgICAgaW5zdHJ1Y3Rpb24tPmNhc3Q8X19vcD4oKS0+c2V0VGFyZ2V0KEJvdW5kTGFiZWwo
bmV3VGFyZ2V0KSwgWyZdKCkgeyBcCisgICAgICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3A+KCkt
PnNldFRhcmdldExhYmVsKEJvdW5kTGFiZWwobmV3VGFyZ2V0KSwgWyZdKCkgeyBcCiAgICAgICAg
ICAgICBjb2RlQmxvY2stPmFkZE91dE9mTGluZUp1bXBUYXJnZXQoZmluYWxPZmZzZXQgKyBpbnN0
cnVjdGlvbi5vZmZzZXQoKSwgbmV3VGFyZ2V0KTsgXAogICAgICAgICAgICAgcmV0dXJuIEJvdW5k
TGFiZWwoKTsgXAogICAgICAgICB9KTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjQwMTM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSwxMyArNTUsMTMgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbQogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigp
OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEocHJvZmlsZWRCbG9jayk7
CiAKLSAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJl
OworICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RDsKICAgICBpZiAoIXN0cnVjdHVyZUlEKQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCk7CiAKLSAgICBTdHJ1Y3R1cmVJRCBu
ZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlE
IG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICBpZiAoIW5l
d1N0cnVjdHVyZUlEKSB7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0Q29uY3VycmVudGx5KHVpZCk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZz
ZXQpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmgJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjaWFsUG9pbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3Mg
Q29kZUJsb2NrOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIG5hbWVzcGFjZSBTcGVjaWFsIHsK
LWVudW0gUG9pbnRlciB7CitlbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7CiAgICAgQ2FsbEZ1bmN0
aW9uLAogICAgIEFwcGx5RnVuY3Rpb24sCiAgICAgT2JqZWN0Q29uc3RydWN0b3IsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Miw3ICsxMDIsNyBAQCB2b2lkIExhYmVsOjpzZXRMb2NhdGlvbihCeXRlY29kZUdlbmVyYXRvCiAK
ICNkZWZpbmUgQ0FTRShfX29wKSBcCiAgICAgY2FzZSBfX29wOjpvcGNvZGVJRDogIFwKLSAgICAg
ICAgaW5zdHJ1Y3Rpb24tPmNhc3Q8X19vcD4oKS0+c2V0VGFyZ2V0KEJvdW5kTGFiZWwodGFyZ2V0
KSwgWyZdKCkgeyBcCisgICAgICAgIGluc3RydWN0aW9uLT5jYXN0PF9fb3A+KCktPnNldFRhcmdl
dExhYmVsKEJvdW5kTGFiZWwodGFyZ2V0KSwgWyZdKCkgeyBcCiAgICAgICAgICAgICBnZW5lcmF0
b3IubV9jb2RlQmxvY2stPmFkZE91dE9mTGluZUp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0
KCksIHRhcmdldCk7IFwKICAgICAgICAgICAgIHJldHVybiBCb3VuZExhYmVsKCk7IFwKICAgICAg
ICAgfSk7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5MCw3ICs1MDkw
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAg
IGNhc2Ugb3BfY2hlY2tfdGR6OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcENoZWNrVGR6PigpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja05vdEVtcHR5LCBnZXQoYnl0ZWNvZGUubV90YXJnZXQpKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tOb3RFbXB0eSwgZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0VmlydHVhbFJlZ2lzdGVy
KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jaGVja190ZHopOwogICAgICAgICB9CiAK
QEAgLTU1OTgsNyArNTU5OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGU6IHsKICAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHJvZmlsZVR5cGU+KCk7CiAgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0g
ICAgICAgICAgICBOb2RlKiB2YWx1ZVRvUHJvZmlsZSA9IGdldChieXRlY29kZS5tX3RhcmdldCk7
CisgICAgICAgICAgICBOb2RlKiB2YWx1ZVRvUHJvZmlsZSA9IGdldChieXRlY29kZS5tX3Rhcmdl
dFZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAgICAgICBhZGRUb0dyYXBoKFByb2ZpbGVUeXBlLCBP
cEluZm8obWV0YWRhdGEubV90eXBlTG9jYXRpb24pLCB2YWx1ZVRvUHJvZmlsZSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wcm9maWxlX3R5cGUpOwogICAgICAgICB9CkBAIC01NjE1LDcg
KzU2MTUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgIGNhc2Ugb3Bfam1wOiB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fY3VycmVudEJsb2NrLT50
ZXJtaW5hbCgpKTsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm1wPigpOwotICAgICAgICAgICAgaW50IHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRh
cmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICBpbnQgcmVsYXRpdmVPZmZzZXQg
PSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgYWRkVG9H
cmFwaChKdW1wLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNldCkpOwogICAg
ICAgICAgICAgaWYgKHJlbGF0aXZlT2Zmc2V0IDw9IDApCiAgICAgICAgICAgICAgICAgZmx1c2hG
b3JUZXJtaW5hbCgpOwpAQCAtNTYyNCw3ICs1NjI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKICAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnRydWU+KCk7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUu
bV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFy
Z2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogY29uZGl0aW9u
ID0gZ2V0KGJ5dGVjb2RlLm1fY29uZGl0aW9uKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJh
bmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBt
X2N1cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlvbi0+c2l6ZSgpKSksIGNvbmRpdGlvbik7
CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qdHJ1ZSk7CkBAIC01NjMyLDcgKzU2MzIsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2Fz
ZSBvcF9qZmFsc2U6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSmZhbHNlPigpOwotICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZz
ZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAg
ICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGdldChieXRlY29kZS5tX2NvbmRpdGlvbik7CiAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50
SW5kZXggKyBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSwgbV9jdXJyZW50SW5kZXggKyByZWxh
dGl2ZU9mZnNldCkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfamZh
bHNlKTsKQEAgLTU2NDAsNyArNTY0MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2plcV9udWxsOiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcU51bGw+KCk7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90
YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0
KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQo
Ynl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICBOb2RlKiBudWxsQ29uc3RhbnQgPSBhZGRU
b0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TnVsbCkpOwogICAgICAgICAgICAg
Tm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXEsIHZhbHVlLCBudWxsQ29uc3Rh
bnQpOwpAQCAtNTY1MCw3ICs1NjUwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFOdWxsPigpOwotICAg
ICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1f
dGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdl
dChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgTm9kZSogbnVsbENvbnN0YW50ID0gYWRk
VG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudE51bGwpKTsKICAgICAgICAgICAg
IE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxLCB2YWx1ZSwgbnVsbENvbnN0
YW50KTsKQEAgLTU2NjAsNyArNTY2MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2psZXNzOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpsZXNzPigpOwotICAgICAgICAg
ICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRl
Y29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29k
ZS5tX2xocyk7CiAgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwog
ICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlTGVzcywgb3Ax
LCBvcDIpOwpAQCAtNTY3MCw3ICs1NjcwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3Bfamxlc3NlcTogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbGVzc2VxPigpOwotICAg
ICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1f
dGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdl
dChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChi
eXRlY29kZS5tX2xocyk7CiAgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9y
aHMpOwogICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlTGVz
c0VxLCBvcDEsIG9wMik7CkBAIC01NjgwLDcgKzU2ODAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjogewogICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZ3JlYXRl
cj4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChi
eXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9
IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXQoYnl0ZWNvZGUubV9saHMpOwogICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5
dGVjb2RlLm1fcmhzKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgo
Q29tcGFyZUdyZWF0ZXIsIG9wMSwgb3AyKTsKQEAgLTU2OTAsNyArNTY5MCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2pncmVh
dGVyZXE6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSmdyZWF0ZXJlcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0
ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCBy
ZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAg
ICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubV9saHMpOwogICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlv
biA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOwpAQCAtNTcwMCw3ICs1
NzAwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAg
ICAgIGNhc2Ugb3BfamVxOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEplcT4oKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zm
c2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25l
ZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAg
ICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNvZGUubV9saHMpOwogICAgICAgICAgICAg
Tm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRp
dGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxLCBvcDEsIG9wMik7CkBAIC01NzEwLDcgKzU3MTAs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAg
Y2FzZSBvcF9qc3RyaWN0ZXE6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSnN0cmljdGVxPigpOwotICAgICAgICAgICAgdW5zaWduZWQgcmVs
YXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5tX2xocyk7CiAgICAg
ICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwogICAgICAgICAgICAgTm9k
ZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9wMSwgb3AyKTsKQEAg
LTU3MjAsNyArNTcyMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKIAogICAgICAgICBjYXNlIG9wX2pubGVzczogewogICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmxlc3M+KCk7Ci0gICAgICAgICAgICB1bnNp
Z25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXQpOworICAg
ICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLm1fbGhz
KTsKICAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jocyk7CiAgICAgICAg
ICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMik7
CkBAIC01NzMwLDcgKzU3MzAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAKICAgICAgICAgY2FzZSBvcF9qbmxlc3NlcTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmxlc3NlcT4oKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3Rhcmdl
dCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoYnl0ZWNv
ZGUubV9saHMpOwogICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVjb2RlLm1fcmhzKTsK
ICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUxlc3NFcSwg
b3AxLCBvcDIpOwpAQCAtNTc0MCw3ICs1NzQwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZ3JlYXRlcj4o
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRl
Y29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1
bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXQoYnl0ZWNvZGUubV9saHMpOwogICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGJ5dGVj
b2RlLm1fcmhzKTsKICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29t
cGFyZUdyZWF0ZXIsIG9wMSwgb3AyKTsKQEAgLTU3NTAsNyArNTc1MCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICBjYXNlIG9wX2puZ3JlYXRl
cmVxOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEpuZ3JlYXRlcmVxPigpOwotICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQg
PSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJl
bGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAg
ICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5tX2xocyk7CiAgICAgICAgICAgICBOb2Rl
KiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwogICAgICAgICAgICAgTm9kZSogY29uZGl0aW9u
ID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlckVxLCBvcDEsIG9wMik7CkBAIC01NzYwLDcgKzU3
NjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAg
ICAgY2FzZSBvcF9qbmVxOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEpuZXE+KCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9m
ZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXQpOworICAgICAgICAgICAgdW5zaWdu
ZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwog
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLm1fbGhzKTsKICAgICAgICAgICAg
IE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jocyk7CiAgICAgICAgICAgICBOb2RlKiBjb25k
aXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcSwgb3AxLCBvcDIpOwpAQCAtNTc3MCw3ICs1Nzcw
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAg
IGNhc2Ugb3Bfam5zdHJpY3RlcTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKbnN0cmljdGVxPigpOwotICAgICAgICAgICAgdW5zaWduZWQg
cmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdldChieXRlY29kZS5tX3Rhcmdl
dExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChieXRlY29kZS5tX2xocyk7CiAg
ICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoYnl0ZWNvZGUubV9yaHMpOwogICAgICAgICAgICAg
Tm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9wMSwgb3AyKTsK
QEAgLTU3ODAsNyArNTc4MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKIAogICAgICAgICBjYXNlIG9wX2piZWxvdzogewogICAgICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKYmVsb3c+KCk7Ci0gICAgICAgICAgICB1
bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXQpOwor
ICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2Rl
Lm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5dGVjb2RlLm1f
bGhzKTsKICAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jocyk7CiAgICAg
ICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVCZWxvdywgb3AxLCBv
cDIpOwpAQCAtNTc5MCw3ICs1NzkwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogCiAgICAgICAgIGNhc2Ugb3BfamJlbG93ZXE6IHsKICAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmJlbG93ZXE+KCk7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90
YXJnZXQpOworICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBqdW1wVGFyZ2V0
KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGJ5
dGVjb2RlLm1fbGhzKTsKICAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChieXRlY29kZS5tX3Jo
cyk7CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVCZWxv
d0VxLCBvcDEsIG9wMik7CkBAIC02MTA3LDcgKzYxMDcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXIg
PSBzdGF0aWNfY2FzdDxKU0NlbGwqPigKICAgICAgICAgICAgICAgICBhY3R1YWxQb2ludGVyRm9y
KG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLCBzcGVjaWFsUG9pbnRlcikpOwogICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZShhY3R1YWxQ
b2ludGVyKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdl
dChieXRlY29kZS5tX3RhcmdldCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNl
dCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2Rl
KiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFQdHIsIE9wSW5mbyhmcm96ZW5Qb2lu
dGVyKSwgY2hpbGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYzMyXzY0LmNwcAkocmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEluc3QKICAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCBvcDEgPSBieXRl
Y29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0
KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgLy8gQ2hhcmFjdGVyIGxlc3MuCiAg
ICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDEpKSB7CkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkQW5kSnVtcChjbwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhz
Lm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKLSAgICB1
bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rhcmdl
dCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkg
ewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7CkBAIC0xNDUsNyArMTQ1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IAogICAgIGF1dG8gYnl0
ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1f
bGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKLSAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChjb25zdCBJbnN0
cgogCiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBpbnQg
b3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7Ci0gICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoaW5z
dHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdl
dChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgaW50IG9wMSA9IGJ5
dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZz
ZXQoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSW5zdAogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0
cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgp
OwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKLSAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAg
dW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDEpKSB7CiAgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMCk7CiAgICAgICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90Q2VsbChyZWdUMCkpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgSklUOjpl
bWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY28KICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wPigpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsK
ICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVu
c2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0
TGFiZWwpOwogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7CiAgICAgICAgIGludDMyX3Qgb3AyaW1t
ID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMik7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IAogICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNl
dCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKLSAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7Cisg
ICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXRMYWJlbCk7CiAKICAgICAvLyBXZSBnZW5lcmF0ZSBpbmxpbmUgY29kZSBmb3IgdGhlIGZv
bGxvd2luZyBjYXNlcyBpbiB0aGUgc2xvdyBwYXRoOgogICAgIC8vIC0gZmxvYXRpbmctcG9pbnQg
bnVtYmVyIHRvIGNvbnN0YW50IGludCBpbW1lZGlhdGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEptcD4oKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJn
ZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICBhZGRK
dW1wKGp1bXAoKSwgdGFyZ2V0KTsKIH0KIApAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGkKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICBpbnQgY29uZCA9IGJ5dGVjb2Rl
Lm1fY29uZGl0aW9uLm9mZnNldCgpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQo
Y3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFi
ZWwpOwogCiAgICAgZW1pdExvYWQoY29uZCwgcmVnVDEsIHJlZ1QwKTsKIApAQCAtMzg3LDcgKzM4
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW8KIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIGlu
dCBjb25kID0gYnl0ZWNvZGUubV9jb25kaXRpb24ub2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgdGFy
Z2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsK
KyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBlbWl0TG9hZChjb25kLCByZWdUMSwgcmVnVDAp
OwogICAgIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKQEAg
LTQwMSw3ICs0MDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVj
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFOdWxs
PigpOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAgIHVuc2ln
bmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwg
cmVnVDApOwogCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxs
KGNvbnN0IEluc3RydQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSm5lcU51bGw+KCk7CiAgICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0
KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBlbWl0TG9h
ZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVjCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUu
b2Zmc2V0KCk7CiAgICAgU3BlY2lhbDo6UG9pbnRlciBwdHIgPSBieXRlY29kZS5tX3NwZWNpYWxQ
b2ludGVyOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdl
dChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1p
dExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMSk7CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Vx
KGNvbnN0IEluc3RydWN0aQogdm9pZCBKSVQ6OmVtaXRfb3BfamVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BKZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChj
dXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJl
bCk7CiAgICAgaW50IHNyYzEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgc3Jj
MiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwogCkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcEVxSnVtcFNsb3coVmVjdG9yPFNsbwogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJn
ZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQg
dGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0
TGFiZWwpOwogICAgIGNvbXBpbGVPcEVxSnVtcFNsb3coaXRlciwgQ29tcGlsZU9wRXFUeXBlOjpF
cSwgdGFyZ2V0KTsKIH0KIApAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9uZXEoY29uc3QgSW5zdHJ1Y3QKIHZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEpuZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRh
cmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CiAgICAgaW50IHNyYzEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBp
bnQgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwogCkBAIC02MjEsNyArNjIxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbgogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUu
bV90YXJnZXRMYWJlbCk7CiAgICAgY29tcGlsZU9wRXFKdW1wU2xvdyhpdGVyLCBDb21waWxlT3BF
cVR5cGU6Ok5FcSwgdGFyZ2V0KTsKIH0KIApAQCAtNjY5LDcgKzY2OSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5cGUgdHlwZSkKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBp
bnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFy
Z2V0KTsKKyAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5
dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIGludCBzcmMxID0gYnl0ZWNvZGUubV9saHMub2Zm
c2V0KCk7CiAgICAgaW50IHNyYzIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKIApAQCAtNzA4
LDcgKzcwOCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qc3RyaWN0ZXEoY29uc3QgSW4KICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKc3RyaWN0ZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVt
cFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNp
Z25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXRMYWJlbCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEs
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOwog
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQ
UiksIHRhcmdldCk7CiB9CkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2puc3RyaWN0ZXEoY29uc3QgSQogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuc3RyaWN0ZXE+KCk7Ci0g
ICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVj
b2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMikpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3Qz
MihaZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CkBAIC0xMDU4LDcgKzEwNTgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0CiB2b2lkIEpJVDo6ZW1p
dF9vcF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrVGR6Pigp
OwotICAgIGVtaXRMb2FkVGFnKGJ5dGVjb2RlLm1fdGFyZ2V0Lm9mZnNldCgpLCByZWdUMCk7Cisg
ICAgZW1pdExvYWRUYWcoYnl0ZWNvZGUubV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCks
IHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiB9CiAKQEAg
LTEyNzEsNyArMTI3MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShjb25zdCBJ
bnMKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFByb2ZpbGVU
eXBlPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwogICAgIFR5cGVMb2NhdGlvbiogY2FjaGVkVHlwZUxvY2F0aW9uID0gbWV0YWRhdGEubV90
eXBlTG9jYXRpb247Ci0gICAgaW50IHZhbHVlVG9Qcm9maWxlID0gYnl0ZWNvZGUubV90YXJnZXQu
b2Zmc2V0KCk7CisgICAgaW50IHZhbHVlVG9Qcm9maWxlID0gYnl0ZWNvZGUubV90YXJnZXRWaXJ0
dWFsUmVnaXN0ZXIub2Zmc2V0KCk7CiAKICAgICAvLyBMb2FkIHBheWxvYWQgaW4gVDAuIExvYWQg
dGFnIGluIFQzLgogICAgIGVtaXRMb2FkUGF5bG9hZCh2YWx1ZVRvUHJvZmlsZSwgcmVnVDApOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAy
NDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VuZChjb25zdCBJ
bnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX2ptcChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSm1wPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVu
dEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwog
ICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwogfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3Bf
amZhbHNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZmFsc2U+KCk7Ci0gICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0KTsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBHUFJSZWcgdmFsdWUgPSByZWdU
MDsKICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZXFOdWxsPigpOwogICAgIGludCBzcmMgPSBi
eXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJn
ZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQg
dGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0
TGFiZWwpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJlZ1QwKTsKICAgICBK
dW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKQEAgLTQyMiw3ICs0MjIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5zdHJ1CiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxTnVsbD4oKTsKICAgICBp
bnQgc3JjID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICB1bnNpZ25lZCB0YXJnZXQg
PSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAg
IHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29k
ZS5tX3RhcmdldExhYmVsKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdU
MCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CkBAIC00
NDgsNyArNDQ4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Ywog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAg
IGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwogICAgIFNwZWNpYWw6OlBvaW50
ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKLSAgICB1bnNpZ25lZCB0YXJnZXQg
PSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQpOworICAg
IHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29k
ZS5tX3RhcmdldExhYmVsKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywg
cmVnVDApOwogICAgIENDYWxsSGVscGVyczo6SnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkp
OwpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0
aW9uKiAKIHZvaWQgSklUOjplbWl0X29wX2plcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3Ry
dWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRh
cmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpLCByZWdUMCwgYnl0
ZWNvZGUubV9yaHMub2Zmc2V0KCksIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bnQocmVnVDAsIHJlZ1QxLCByZWdUMik7CiAgICAgYWRkSnVtcChicmFuY2gzMihFcXVhbCwgcmVn
VDAsIHJlZ1QxKSwgdGFyZ2V0KTsKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnRydWU+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUu
bV90YXJnZXRMYWJlbCk7CiAKICAgICBHUFJSZWcgdmFsdWUgPSByZWdUMDsKICAgICBHUFJSZWcg
c2NyYXRjaDEgPSByZWdUMTsKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFy
Z2V0TGFiZWwpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJ5dGVjb2RlLm1fbGhzLm9m
ZnNldCgpLCByZWdUMCwgYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCksIHJlZ1QxKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDAsIHJlZ1QxLCByZWdUMik7CiAgICAgYWRkSnVtcChi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QxKSwgdGFyZ2V0KTsKQEAgLTU2Niw3ICs1NjYs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1
bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0
RXFUeXBlIHR5cGUpCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3A+KCk7Ci0gICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9u
LCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgaW50IHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVu
dEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICBpbnQgc3JjMSA9IGJ5
dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBzcmMyID0gYnl0ZWNvZGUubV9yaHMub2Zm
c2V0KCk7CiAKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanN0cmlj
dGVxKGNvbnN0IEluCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnN0cmljdGVxPigpOwotICAgIHVuc2ln
bmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rh
cmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxLCByZWdUMCwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90KGJy
YW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiB9CkBAIC02MTcs
NyArNjE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSQogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEpuc3RyaWN0ZXE+KCk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0ganVt
cFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0KTsKKyAgICB1bnNp
Z25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXRMYWJlbCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEs
IHJlZ1QwLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKFplcm8s
IHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0CiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVj
a190ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrVGR6PigpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV90YXJnZXQub2Zmc2V0KCksIHJlZ1QwKTsK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGFyZ2V0VmlydHVhbFJlZ2lz
dGVyLm9mZnNldCgpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdU
MCkpOwogfQogCkBAIC05NjUsNyArOTY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2plcShj
b25zdCBJbnN0cnVjdAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcT4oKTsKLSAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXQp
OworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBi
eXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBh
cmVFcSwgcmVnVDAsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQpAQCAtOTc1LDcgKzk3NSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9qbmVxKGNvbnN0IEluc3RydWMKICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKbmVxPigpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudElu
c3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldCk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVt
cFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwgcmVnVDEpOwogICAgIGVt
aXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihaZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdl
dCk7CiB9CkBAIC0xMzk5LDcgKzEzOTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5
cGUoY29uc3QgSW5zCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQcm9maWxlVHlwZT4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKICAgICBUeXBlTG9jYXRpb24qIGNhY2hlZFR5cGVMb2NhdGlvbiA9IG1l
dGFkYXRhLm1fdHlwZUxvY2F0aW9uOwotICAgIGludCB2YWx1ZVRvUHJvZmlsZSA9IGJ5dGVjb2Rl
Lm1fdGFyZ2V0Lm9mZnNldCgpOworICAgIGludCB2YWx1ZVRvUHJvZmlsZSA9IGJ5dGVjb2RlLm1f
dGFyZ2V0VmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZVRvUHJvZmlsZSwgcmVnVDApOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw4ICsxMjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
ICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
IHdoaWxlIChmYWxzZSkKIAotI2RlZmluZSBKVU1QX09GRlNFVCh0YXJnZXQpIFwKLSAgICAoKHRh
cmdldCkgPyAodGFyZ2V0KSA6IGV4ZWMtPmNvZGVCbG9jaygpLT5vdXRPZkxpbmVKdW1wT2Zmc2V0
KHBjKSkKKyNkZWZpbmUgSlVNUF9PRkZTRVQodGFyZ2V0T2Zmc2V0KSBcCisgICAgKCh0YXJnZXRP
ZmZzZXQpID8gKHRhcmdldE9mZnNldCkgOiBleGVjLT5jb2RlQmxvY2soKS0+b3V0T2ZMaW5lSnVt
cE9mZnNldChwYykpCiAKICNkZWZpbmUgSlVNUF9UTyh0YXJnZXQpIGRvIHsgXAogICAgICAgICBw
YyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwYykgKyAodGFyZ2V0KSk7IFwKQEAgLTEzMyw3ICsxMzMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgYm9vbCBfX2JfY29uZGl0
aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgIEpVTVBfVE8oSlVNUF9PRkZTRVQoYnl0ZWNvZGUubV90
YXJnZXQpKTsgXAorICAgICAgICAgICAgSlVNUF9UTyhKVU1QX09GRlNFVChieXRlY29kZS5tX3Rh
cmdldExhYmVsKSk7ICAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgSlVNUF9UTyhw
Yy0+c2l6ZSgpKTsgXAogICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNjU2LDcgKzY1Niw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NF
U1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICAgICAgewotICAgICAgICAgICAgU3RydWN0
dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZTsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgewogICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogYSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CiAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUodm0pOwpAQCAtNjcyLDcgKzY3Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfaWQKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICAv
LyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBt
ZXRhZGF0YS5tX3N0cnVjdHVyZSA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVy
ZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKIAogICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCkBAIC02ODEs
NyArNjgxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogCiAg
ICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7CiAKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZSA9IHN0cnVjdHVyZS0+
aWQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gc3RydWN0dXJl
LT5pZCgpOwogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzM2LDEzICs3MzYsMTMgQEAg
c3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoRQogCiAgICAgaWYgKHNsb3Qu
aXNVbnNldCgpKSB7CiAgICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpVbnNl
dDsKLSAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZSA9
IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRN
b2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7CiAKICAgICBtZXRhZGF0YS5tX21vZGUgPSBH
ZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOwotICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3Rv
TG9hZE1vZGUuc3RydWN0dXJlID0gc3RydWN0dXJlLT5pZCgpOworICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRT
bG90ID0gc2xvdC5zbG90QmFzZSgpOwogICAgIC8vIFdlIGtub3cgdGhhdCB0aGlzIHBvaW50ZXIg
d2lsbCByZW1haW4gdmFsaWQgYmVjYXVzZSBpdCB3aWxsIGJlIGNsZWFyZWQgYnkgZWl0aGVyIGEg
d2F0Y2hwb2ludCBmaXJlIG9yCkBAIC03NzMsMTMgKzc3MywxMyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgICAgICBhdXRvIG1vZGUgPSBtZXRhZGF0
YS5tX21vZGU7CiAgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICAgICAgICAgIGNhc2Ug
R2V0QnlJZE1vZGU6OkRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmU7CisgICAgICAgICAg
ICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9k
ZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
R2V0QnlJZE1vZGU6OlVuc2V0OgotICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZTsKKyAgICAgICAgICAgICAg
ICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZE1vZGU6OlByb3RvTG9hZDoKLSAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlOworICAgICAgICAgICAg
ICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9k
ZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSAwOwpAQCAtODAwLDcgKzgwMCw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgaWYg
KHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAg
ICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlE
ID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNh
Y2hlZE9mZnNldCA9IDA7CiAKICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBj
YWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgpAQCAtODEyLDcgKzgxMiw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAot
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVj
dHVyZSA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZz
ZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKFVOTElLRUxZKG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgKHNsb3Qu
aXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSkpIHsKQEAgLTg1Nyw3ICs4NTcsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICYmIHNsb3QuaXND
YWNoZWFibGVQdXQoKSkgewogCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CiAgICAg
ICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUq
IGEgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOwogICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKTsKQEAgLTg3Miw5ICs4NzIsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkCiAgICAgICAgIH0KIAogICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcg
b3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlID0gMDsK
KyAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CiAgICAgICAgIG1ldGFkYXRh
Lm1fb2Zmc2V0ID0gMDsKLSAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmUgPSAwOworICAg
ICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKICAgICAgICAgbWV0YWRhdGEubV9z
dHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwogICAgICAgICAKICAgICAgICAgSlNDZWxsKiBiYXNlQ2Vs
bCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKQEAgLTg5Niw5ICs4OTYsOSBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwsIHNhd1BvbHlQcm90
byk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZFByb3RvdHlwZUNo
YWluICYmICFzYXdQb2x5UHJvdG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5p
ZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9
IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gc3RydWN0dXJl
LT5pZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYnl0ZWNvZGUubV9mbGFncyAm
IFB1dEJ5SWRJc0RpcmVjdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMsIGFzT2JqZWN0
KGJhc2VDZWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsK
QEAgLTkwOCw3ICs5MDgsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X2lkCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmUgPSBz
dHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJ
RCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzUs
MjAgKzM1LDIwIEBAIG1hY3JvIG5leHRJbnN0cnVjdGlvbldpZGUoKQogICAgIGptcCBbdDEsIHQw
LCA0XSwgQnl0ZWNvZGVQdHJUYWcKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZE5hcnJvdyhvcCwg
ZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGIgY29uc3RleHByICVvcCVfJWZpZWxkTmFtZSVfaW5k
ZXhbUENdLCBkc3QKK21hY3JvIGdldHVPcGVyYW5kTmFycm93KG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCisgICAgbG9hZGIgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUl
X2luZGV4W1BDXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0T3BlcmFuZE5hcnJvdyhvcCwgZmllbGRO
YW1lLCBkc3QpCi0gICAgbG9hZGJzcCBjb25zdGV4cHIgJW9wJV8lZmllbGROYW1lJV9pbmRleFtQ
Q10sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZE5hcnJvdyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwg
ZHN0KQorICAgIGxvYWRic3AgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2lu
ZGV4W1BDXSwgZHN0CiBlbmQKIAotbWFjcm8gZ2V0dU9wZXJhbmRXaWRlKG9wLCBmaWVsZE5hbWUs
IGRzdCkKLSAgICBsb2FkaSBjb25zdGV4cHIgJW9wJV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyAx
W1BDXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZFdpZGUob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUs
IGRzdCkKKyAgICBsb2FkaSBjb25zdGV4cHIgJW9wY29kZVN0cnVjdCVfJWZpZWxkTmFtZSVfaW5k
ZXggKiA0ICsgMVtQQ10sIGRzdAogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlKG9wLCBmaWVs
ZE5hbWUsIGRzdCkKLSAgICBsb2FkaXMgY29uc3RleHByICVvcCVfJWZpZWxkTmFtZSVfaW5kZXgg
KiA0ICsgMVtQQ10sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZFdpZGUob3Bjb2RlU3RydWN0LCBmaWVs
ZE5hbWUsIGRzdCkKKyAgICBsb2FkaXMgY29uc3RleHByICVvcGNvZGVTdHJ1Y3QlXyVmaWVsZE5h
bWUlX2luZGV4ICogNCArIDFbUENdLCBkc3QKIGVuZAogCiBtYWNybyBtYWtlUmV0dXJuKGdldCwg
ZGlzcGF0Y2gsIGZuKQpAQCAtNjIsMTMgKzYyLDEzIEBAIG1hY3JvIG1ha2VSZXR1cm4oZ2V0LCBk
aXNwYXRjaCwgZm4pCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChv
cCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQorbWFjcm8gbWFrZVJldHVyblByb2ZpbGVk
KG9wY29kZVN0cnVjdCwgZ2V0LCBtZXRhZGF0YSwgZGlzcGF0Y2gsIGZuKQogICAgIGZuKG1hY3Jv
ICh0YWcsIHBheWxvYWQpCiAgICAgICAgIG1vdmUgdGFnLCB0MQogICAgICAgICBtb3ZlIHBheWxv
YWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUo
b3AsIHQ1LCB0MSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQ1LCB0
MSwgdDApCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQpAQCAtNzcsMTMgKzc3LDEzIEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcCwgZ2V0
LCBtZXRhZGEKIGVuZAogCiAKLW1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wLCBkaXNw
YXRjaCkKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gpCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwotICAgIGdl
dChzaXplLCBvcCwgbV9kc3QsIHQzKQorICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0
LCB0MykKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSBy
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIG1ldGFkYXRhKHNpemUsIG9wLCB0Miwg
dDMpCi0gICAgdmFsdWVQcm9maWxlKG9wLCB0MiwgcjEsIHIwKQorICAgIG1ldGFkYXRhKHNpemUs
IG9wY29kZVN0cnVjdCwgdDIsIHQzKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHQy
LCByMSwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTU5OCw5ICs1OTgsOSBAQCBtYWNy
byB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9uCiAgICAgICAgIGVuZCkKIGVuZAog
Ci1tYWNybyB2YWx1ZVByb2ZpbGUob3AsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCi0gICAgc3Rv
cmVpIHRhZywgJW9wJTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRb
bWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUu
bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCisgICAgc3RvcmVpIHRhZywgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21l
dGFkYXRhXQorICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
cHJvZmlsZS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQogZW5kCiAKIApAQCAt
NjgyLDcgKzY4Miw3IEBAIG1hY3JvIGJyYW5jaElmRXhjZXB0aW9uKGxhYmVsKQogICAgIGxvYWRw
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMKICAgICBhbmRwIE1hcmtlZEJsb2NrTWFz
aywgdDMKICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpG
b290ZXI6Om1fdm1bdDNdLCB0MwotICAgIGJ0aXogVk06Om1fZXhjZXB0aW9uW3QzXSwgLm5vRXhj
ZXB0aW9uCisgICAgYnRweiBWTTo6bV9leGNlcHRpb25bdDNdLCAubm9FeGNlcHRpb24KICAgICBq
bXAgbGFiZWwKIC5ub0V4Y2VwdGlvbjoKIGVuZApAQCAtNzM0LDcgKzczNCw3IEBAIGVuZCkKIAog
bGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNjb3BlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIENhbGxlZSArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDAKLSAgICBsb2FkaSBKU0NhbGxlZTo6bV9zY29wZVt0MF0sIHQwCisgICAgbG9hZHAg
SlNDYWxsZWU6Om1fc2NvcGVbdDBdLCB0MAogICAgIHJldHVybiAoQ2VsbFRhZywgdDApCiBlbmQp
CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9w
VG9UaGlzCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5v
cFRvVGhpc1Nsb3cKICAgICBtZXRhZGF0YSh0MiwgdDMpCiAgICAgbG9hZHAgT3BUb1RoaXM6Ok1l
dGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIHQyCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBiaW5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKCkKIAogLm9wVG9U
aGlzU2xvdzoKQEAgLTc1Niw3ICs3NTYsNyBAQCBlbmQpCiAKIAogbGxpbnRPcChvcF9jaGVja190
ZHosIE9wQ2hlY2tUZHosIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldChtX3Rh
cmdldCwgdDApCisgICAgZ2V0KG1fdGFyZ2V0VmlydHVhbFJlZ2lzdGVyLCB0MCkKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlVGFnKHNpemUsIHQwLCB0MSkKICAgICBiaW5lcSB0MSwgRW1wdHlW
YWx1ZVRhZywgLm9wTm90VERaCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfdGR6
X2Vycm9yKQpAQCAtNzg2LDggKzc4Niw4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX25vdCwgT3BO
b3QsIG1hY3JvICgKIGVuZCkKIAogCi1tYWNybyBlcXVhbGl0eUNvbXBhcmlzb25PcChuYW1lLCBv
cCwgaW50ZWdlckNvbXBhcmlzb24pCi0gICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW5hbWUlLCBv
cCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKK21hY3JvIGVxdWFsaXR5Q29t
cGFyaXNvbk9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlckNvbXBhcmlzb24pCisg
ICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX3JocywgdDIpCiAg
ICAgICAgIGdldChtX2xocywgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDIsIHQzLCB0MSkKQEAgLTc5OSwxNCArNzk5LDE0IEBAIG1hY3JvIGVxdWFsaXR5Q29tcGFy
aXNvbk9wKG5hbWUsIG9wLCBpbnQKICAgICAgICAgcmV0dXJuKEJvb2xlYW5UYWcsIHQwKQogCiAg
ICAgLm9wRXFTbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lbmFtZSUpCisg
ICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlz
cGF0Y2goKQogICAgIGVuZCkKIGVuZAogCiAKLW1hY3JvIGVxdWFsaXR5SnVtcE9wKG5hbWUsIG9w
LCBpbnRlZ2VyQ29tcGFyaXNvbikKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5hbWUlLCBvcCwg
bWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCittYWNybyBlcXVhbGl0eUp1bXBPcChv
cGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJDb21wYXJpc29uKQorICAgIGxsaW50T3BX
aXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwg
anVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX3JocywgdDIpCiAgICAgICAgIGdldChtX2xo
cywgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQzLCB0MSkK
QEAgLTgxOCwxNyArODE4LDE3IEBAIG1hY3JvIGVxdWFsaXR5SnVtcE9wKG5hbWUsIG9wLCBpbnRl
Z2VyQ28KICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAgIGp1
bXAobV90YXJnZXQpCisgICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkKIAogICAgIC5zbG93Ogot
ICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lbmFtZSUpCisgICAgICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgbmV4dElu
c3RydWN0aW9uKCkKICAgICBlbmQpCiBlbmQKIAogCi1tYWNybyBlcXVhbE51bGxDb21wYXJpc29u
T3AobmFtZSwgb3AsIGZuKQotICAgIGxsaW50T3BXaXRoUmV0dXJuKG5hbWUsIG9wLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbk9w
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZm4pCisgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3Bj
b2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJu
KQogICAgICAgICBnZXQobV9vcGVyYW5kLCB0MCkKICAgICAgICAgYXNzZXJ0Tm90Q29uc3RhbnQo
c2l6ZSwgdDApCiAgICAgICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKQEAgLTgz
OCw3ICs4MzgsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uT3AobmFtZSwgb3AsIGZuCiAg
ICAgICAgIG1vdmUgMCwgdDEKICAgICAgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQogICAg
IC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6Ci0gICAgICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCisgICAgICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIHQxCiAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICAgICAgY3BlcSBTdHJ1Y3R1
cmU6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDAsIHQxCkBAIC04NjksOCArODY5LDggQEAgbGxpbnRP
cFdpdGhSZXR1cm4ob3BfaXNfdW5kZWZpbmVkX29yX251bAogZW5kKQogCiAKLW1hY3JvIHN0cmlj
dEVxT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxsaW50T3BXaXRoUmV0dXJu
KG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCittYWNy
byBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24p
CisgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX3JocywgdDIp
CiAgICAgICAgIGdldChtX2xocywgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDIsIHQzLCB0MSkKQEAgLTg4NSwxNCArODg1LDE0IEBAIG1hY3JvIHN0cmljdEVxT3Ao
bmFtZSwgb3AsIGVxdWFsaXR5T3BlcmEKICAgICAgICAgcmV0dXJuKEJvb2xlYW5UYWcsIHQwKQog
CiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVuYW1lJSkKKyAg
ICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNw
YXRjaCgpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3AobmFt
ZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxsaW50T3BXaXRoSnVtcChvcF8lbmFtZSUs
IG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKK21hY3JvIHN0cmljdEVxdWFs
aXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCisg
ICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAo
c2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fcmhzLCB0MikKICAgICAg
ICAgZ2V0KG1fbGhzLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDMsIHQxKQpAQCAtOTA3LDEwICs5MDcsMTAgQEAgbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1w
T3AobmFtZSwgb3AsIGVxdQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAuanVtcFRhcmdldDoK
LSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAganVtcChtX3RhcmdldExhYmVsKQogCiAg
ICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkK
KyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAg
ICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQogICAgIGVuZCkKIGVuZApAQCAtOTMyLDggKzkzMiw4IEBA
IHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHIKICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmluZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCiAKIAotbWFj
cm8gcHJlT3AobmFtZSwgb3AsIG9wZXJhdGlvbikKLSAgICBsbGludE9wKG9wXyVuYW1lJSwgb3As
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorbWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBvcGVyYXRpb24pCisgICAgbGxpbnRPcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX3NyY0Rz
dCwgdDApCiAgICAgICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5z
bG93CiAgICAgICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCkBAIC05NDIs
NyArOTQyLDcgQEAgbWFjcm8gcHJlT3AobmFtZSwgb3AsIG9wZXJhdGlvbikKICAgICAgICAgZGlz
cGF0Y2goKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVu
YW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCkBAIC05OTIsNyArOTkyLDcgQEAgZW5kKQog
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKIAogICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0
eXBlKQotICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmls
ZVt0NV0KKyAgICAgICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KICAgICBlbmQKIAogICAgIG1ldGFkYXRhKHQ1
LCB0MCkKQEAgLTEwMTUsMTAgKzEwMTUsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdh
dGUsIE9wTmVnYXRlLAogZW5kKQogCiAKLW1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUobmFtZSwg
b3AsIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQotICAgIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24p
CisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1h
Y3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcCU6Ok1ldGFk
YXRhOjptX2FyaXRoUHJvZmlsZVt0NV0KKyAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVd
CiAgICAgICAgIGVuZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKQEAgLTEwNjMsMTMgKzEw
NjMsMTMgQEAgbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShuYW1lLCBvcCwgaW50ZQogICAgICAg
ICBkaXNwYXRjaCgpCiAKICAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfJW5hbWUlKQorICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUp
CiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gYmluYXJ5T3AobmFt
ZSwgb3AsIGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbikKLSAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKG5hbWUsIG9wLAorbWFjcm8gYmluYXJ5T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24pCisgICAgYmluYXJ5T3BDdXN0
b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsCiAgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQogICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKICAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCkBAIC0xMTMwLDggKzExMzAsOCBAQCBsbGludE9wV2l0aFJldHVy
bihvcF91bnNpZ25lZCwgT3BVbnNpZ25lCiBlbmQpCiAKIAotbWFjcm8gY29tbW9uQml0T3Aob3BL
aW5kLCBuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIG9wS2luZChvcF8lbmFtZSUsIG9wLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gY29tbW9uQml0T3Aob3BLaW5k
LCBvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9wZXJhdGlvbikKKyAgICBvcEtpbmQob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgICAgIGdldChtX3JocywgdDIpCiAgICAgICAgIGdldChtX2xocywgdDApCiAgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQzLCB0MSkKQEAgLTExNDIsMTcg
KzExNDIsMTcgQEAgbWFjcm8gY29tbW9uQml0T3Aob3BLaW5kLCBuYW1lLCBvcCwgb3BlcgogICAg
ICAgICByZXR1cm4gKHQzLCB0MCkKIAogICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgo
X3Nsb3dfcGF0aF8lbmFtZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNv
ZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyBiaXRP
cChuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRoUmV0dXJu
LCBuYW1lLCBvcCwgb3BlcmF0aW9uKQorbWFjcm8gYml0T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBvcGVyYXRpb24pCisgICAgY29tbW9uQml0T3AobGxpbnRPcFdpdGhSZXR1cm4sIG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgb3BlcmF0aW9uKQogZW5kCiAKLW1hY3JvIGJpdE9wUHJvZmls
ZWQobmFtZSwgb3AsIG9wZXJhdGlvbikKLSAgICBjb21tb25CaXRPcChsbGludE9wV2l0aFByb2Zp
bGUsIG5hbWUsIG9wLCBvcGVyYXRpb24pCittYWNybyBiaXRPcFByb2ZpbGVkKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgb3BlcmF0aW9uKQorICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRoUHJv
ZmlsZSwgb3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24pCiBlbmQKIAogCkBAIC0x
MjM2LDcgKzEyMzYsNyBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc191bmRlZmluZWQsIE9wSXNV
CiAgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QzXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Lm9wSXNVbmRlZmluZWRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgcmV0dXJuKEJvb2xlYW5U
YWcsIDApCiAub3BJc1VuZGVmaW5lZE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6Ci0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDNdLCB0MQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MwogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MwogICAgIGNwZXEgU3RydWN0dXJlOjptX2ds
b2JhbE9iamVjdFt0MV0sIHQzLCB0MQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgZW5kCiBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDUs
IHQwKQogICAgIGdldChtX2Jhc2UsIHQwKQotICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0
YWRhdGE6Om1fc3RydWN0dXJlW3Q1XSwgdDEKKyAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1l
dGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWREaXJlY3RTbG93KQogICAg
IGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKICAgICBi
aW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cK
QEAgLTEzNDksNyArMTM0OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBP
cEdldEIKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRBcnJheUxlbmd0aAotICAgIGxvYWRpIE9w
R2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJl
W3Q1XSwgdDEKKyAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5w
cm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIGxv
YWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNh
Y2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEsIC5vcEdldEJ5SWRTbG93CkBAIC0xMzczLDE0ICsxMzczLDE0IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGJibmVx
IHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlVuc2V0LCAub3BHZXRCeUlkRGVmYXVsdAotICAg
IGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1
Y3R1cmVbdDVdLCB0MQorICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBi
aW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQogICAgIHJldHVybihV
bmRlZmluZWRUYWcsIDApCiAKIC5vcEdldEJ5SWREZWZhdWx0OgotICAgIGxvYWRpIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZVt0NV0sIHQx
CisgICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbG9hZGlzIE9wR2V0
QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0
NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93CkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9i
eV9pZCwgT3BQdXRCCiAgICAgZ2V0KG1fYmFzZSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKICAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgotICAgIGJpbmVxIHQyLCBPcFB1dEJ5
SWQ6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZVt0NV0sIC5vcFB1dEJ5SWRTbG93CisgICAgYmlu
ZXEgdDIsIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCAub3BQdXRC
eUlkU2xvdwogCiAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlOgogICAgICMgdDUgLT4gbWV0
YWRhdGEKQEAgLTE0MDgsNyArMTQwOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5
X2lkLCBPcFB1dEIKICAgICAjIHQwIC0+IG9iamVjdCBiYXNlCiAgICAgIyBXZSB3aWxsIGxvc2Ug
Y3VycmVudFN0cnVjdHVyZUlEIGluIHRoZSBzaGVuYW5pZ2FucyBiZWxvdy4KIAotICAgIGxvYWRp
IE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlW3Q1XSwgdDEKKyAgICBsb2FkaSBP
cFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKIAogICAgIGJ0aXog
dDEsIC5vcFB1dEJ5SWROb3RUcmFuc2l0aW9uCiAKQEAgLTE0MTcsNyArMTQxNyw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEIKICAgICBsb2FkcCBPcFB1dEJ5SWQ6
Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUNoYWluW3Q1XSwgdDMKICAgICBidHB6IHQzLCAub3BQdXRC
eUlkVHJhbnNpdGlvbkRpcmVjdAogCi0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6bV9v
bGRTdHJ1Y3R1cmVbdDVdLCB0MiAjIE5lZWQgb2xkIHN0cnVjdHVyZSBhZ2Fpbi4KKyAgICBsb2Fk
aSBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIgIyBOZWVkIG9s
ZCBzdHJ1Y3R1cmUgYWdhaW4uCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3Qz
XSwgdDMKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiB0Mywgb2sgZW5kKQogCkBAIC0xNDI1
LDEzICsxNDI1LDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEIK
ICAgICBidHB6IHQyLCAub3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRy
YW5zaXRpb25DaGFpbkxvb3A6CiAgICAgbG9hZHAgW3QzXSwgdDEKLSAgICBicG5lcSB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBiaW5lcSB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDQsIHQzCiAg
ICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0MV0sIHQyCiAgICAgYnRwbnogdDIsIC5v
cFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Mb29wCiAKIC5vcFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5E
b25lOgotICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlW3Q1XSwg
dDEKKyAgICBsb2FkaSBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwg
dDEKIAogLm9wUHV0QnlJZFRyYW5zaXRpb25EaXJlY3Q6CiAgICAgc3RvcmVpIHQxLCBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDBdCkBAIC0xNTA3LDggKzE1MDcsOCBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiBlbmQpCiAKIAotbWFjcm8gcHV0QnlWYWxPcChuYW1l
LCBvcCkKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorbWFjcm8gcHV0QnlWYWxPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2Rl
TmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNr
KQogICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGlu
Z0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vdXRPZkJvdW5kcwogICAgICAg
ICAuc3RvcmVSZXN1bHQ6CkBAIC0xNTE4LDcgKzE1MTgsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG5h
bWUsIG9wKQogCiAgICAgICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JM
ZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwg
JW9wJTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCisgICAg
ICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQogICAgICAgICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAg
ICAgICAgIHN0b3JlaSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXQogICAgICAgICAgICAgam1wIC5zdG9yZVJlc3Vs
dApAQCAtMTUyOSw3ICsxNTI5LDcgQEAgbWFjcm8gcHV0QnlWYWxPcChuYW1lLCBvcCkKICAgICAg
ICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBtb3ZlIHQx
LCB0MgotICAgICAgICBhcnJheVByb2ZpbGUoJW9wJTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxl
LCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKICAgICAgICAgZ2V0KG1fcHJvcGVydHks
IHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgSW50
MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1
dHRlcmZseVt0MV0sIHQwCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG5h
bWUsIG9wKQogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFn
ZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wJTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxl
Lm1fbWF5U3RvcmVUb0hvbGVbdDVdCisgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCiAgICAgICAgIGFk
ZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQogICAgICAgICBiaWIg
dDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKICAgICAg
ICAgYWRkaSAxLCB0MywgdDEKQEAgLTE1OTEsOSArMTU5MSw5IEBAIG1hY3JvIHB1dEJ5VmFsT3Ao
bmFtZSwgb3ApCiAgICAgICAgIGptcCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0
CiAKICAgICAub3BQdXRCeVZhbE91dE9mQm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wJTo6
TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisgICAgICAgIHN0b3Jl
YiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3Vu
ZHNbdDVdCiAgICAgLm9wUHV0QnlWYWxTbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF8lbmFtZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
XyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZApAQCAtMTYw
NCwzNiArMTYwNCwzNiBAQCBwdXRCeVZhbE9wKHB1dF9ieV92YWwsIE9wUHV0QnlWYWwpCiBwdXRC
eVZhbE9wKHB1dF9ieV92YWxfZGlyZWN0LCBPcFB1dEJ5VmFsRGlyZWN0KQogCiAKLW1hY3JvIGxs
aW50SnVtcFRydWVPckZhbHNlT3AobmFtZSwgb3AsIGNvbmRpdGlvbk9wKQotICAgIGxsaW50T3BX
aXRoSnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkK
K21hY3JvIGxsaW50SnVtcFRydWVPckZhbHNlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBj
b25kaXRpb25PcCkKKyAgICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVT
dHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9j
b25kaXRpb24sIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQogICAgICAgICBjb25kaXRpb25PcCh0MCwgLnRh
cmdldCkKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLnRhcmdldDoKLSAgICAgICAganVtcCht
X3RhcmdldCkKKyAgICAgICAganVtcChtX3RhcmdldExhYmVsKQogCiAgICAgLnNsb3c6Ci0gICAg
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBuZXh0SW5zdHJ1
Y3Rpb24oKQogICAgIGVuZCkKIGVuZAogCiAKLW1hY3JvIGVxdWFsTnVsbEp1bXBPcChuYW1lLCBv
cCwgY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9w
XyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFjcm8gZXF1
YWxOdWxsSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgY2VsbEhhbmRsZXIsIGltbWVk
aWF0ZUhhbmRsZXIpCisgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1f
dmFsdWUsIHQwKQogICAgICAgICBhc3NlcnROb3RDb25zdGFudChzaXplLCB0MCkKICAgICAgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAogICAgICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0
ZQotICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgorICAgICAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgICAgICBjZWxsSGFuZGxlcih0
MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICAgICAgZGlzcGF0Y2goKQogCiAg
ICAgLnRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAganVtcChtX3Rhcmdl
dExhYmVsKQogCiAgICAgLmltbWVkaWF0ZToKICAgICAgICAgb3JpIDEsIHQxCkBAIC0xNjY1LDcg
KzE2NjUsNyBAQCBlcXVhbE51bGxKdW1wT3Aoam5lcV9udWxsLCBPcEpuZXFOdWxsLAogCiBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQdHIsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldChtX3ZhbHVlLCB0MCkKLSAgICBn
ZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisgICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3Bl
Y2lhbFBvaW50ZXIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgogICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgogICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaApAQCAtMTY3NCwxNSArMTY3NCwx
NSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQCiAub3BKbmVxUHRy
QnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVxUHRyOjpN
ZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCi0gICAgZ2V0KG1fdGFyZ2V0LCB0MCkKKyAgICBnZXQo
bV90YXJnZXRMYWJlbCwgdDApCiAgICAganVtcEltcGwodDApCiAub3BKbmVxUHRyRmFsbFRocm91
Z2g6CiAgICAgZGlzcGF0Y2goKQogZW5kKQogCiAKLW1hY3JvIGNvbXBhcmVVbnNpZ25lZEp1bXBP
cChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmUpCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1l
JSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFjcm8gY29tcGFyZVVu
c2lnbmVkSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlckNvbXBhcmUpCisg
ICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAo
c2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAg
ICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDAsIHQxKQpAQCAtMTY5MSwxMyArMTY5MSwxMyBAQCBtYWNybyBjb21wYXJlVW5zaWduZWRK
dW1wT3AobmFtZSwgb3AsIGluCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5qdW1wVGFyZ2V0
OgotICAgICAgICBqdW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiAg
ICAgZW5kKQogZW5kCiAKIAotbWFjcm8gY29tcGFyZVVuc2lnbmVkT3AobmFtZSwgb3AsIGludGVn
ZXJDb21wYXJlQW5kU2V0KQotICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wXyVuYW1lJSwgb3AsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCittYWNybyBjb21wYXJlVW5zaWduZWRP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJDb21wYXJlQW5kU2V0KQorICAgIGxs
aW50T3BXaXRoUmV0dXJuKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQyKQogICAgICAg
ICBnZXQobV9saHMsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQy
LCB0MywgdDEpCkBAIC0xNzA4LDggKzE3MDgsOCBAQCBtYWNybyBjb21wYXJlVW5zaWduZWRPcChu
YW1lLCBvcCwgaW50ZWdlCiBlbmQKIAogCi1tYWNybyBjb21wYXJlSnVtcE9wKG5hbWUsIG9wLCBp
bnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSkKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5h
bWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCittYWNybyBjb21wYXJl
SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNv
bXBhcmUpCisgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fbGhzLCB0
MikKICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCB0MiwgdDAsIHQxKQpAQCAtMTc0MCwxMCArMTc0MCwxMCBAQCBtYWNybyBjb21wYXJl
SnVtcE9wKG5hbWUsIG9wLCBpbnRlZ2VyQ29tCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5q
dW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0
TGFiZWwpCiAKICAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfJW5hbWUlKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2Rl
TmFtZSUpCiAgICAgICAgIG5leHRJbnN0cnVjdGlvbigpCiAgICAgZW5kKQogZW5kCkBAIC0xNzUx
LDcgKzE3NTEsNyBAQCBlbmQKIAogbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dp
dGNoSW1tLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXQobV9zY3J1
dGluZWUsIHQyKQotICAgIGdldChtX3RhYmxlSW5kZXgsIHQzKQorICAgIGdldHUoc2l6ZSwgT3BT
d2l0Y2hJbW0sIG1fdGFibGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MiwgdDEsIHQwKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgogICAgIGxvYWRw
IENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCkBAIC0xNzc5LDcgKzE3NzksNyBAQCBlbmQp
CiAKIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAo
c2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXQobV9zY3J1dGluZWUsIHQyKQotICAg
IGdldChtX3RhYmxlSW5kZXgsIHQzKQorICAgIGdldHUoc2l6ZSwgT3BTd2l0Y2hDaGFyLCBtX3Rh
YmxlSW5kZXgsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQxLCB0
MCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
cmFyZURhdGFbdDJdLCB0MgpAQCAtMTgxNCw0MyArMTgxNCw0MyBAQCBsbGludE9wV2l0aEp1bXAo
b3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoCiBlbmQpCiAKIAotbWFjcm8gYXJyYXlQcm9maWxlRm9y
Q2FsbChvcCwgZ2V0dSkKK21hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBn
ZXR1KQogICAgIGdldHUobV9hcmd2LCB0MykKICAgICBuZWdpIHQzCiAgICAgYmluZXEgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCBDZWxsVGFnLCAuZG9uZQogICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQw
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKLSAgICBzdG9yZXAgdDAs
ICVvcCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVd
CisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKKyAgICBzdG9yZWkgdDAs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVj
dHVyZUlEW3Q1XQogLmRvbmU6CiBlbmQKIAotbWFjcm8gY29tbW9uQ2FsbE9wKG5hbWUsIHNsb3dQ
YXRoLCBvcCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
bmFtZSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQor
bWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHBy
ZXBhcmVDYWxsLCBwcm9sb2d1ZSkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAogICAgICAgICBwcm9sb2d1ZShtYWNybyAo
ZmllbGROYW1lLCBkc3QpCi0gICAgICAgICAgICBnZXR1KHNpemUsIG9wLCBmaWVsZE5hbWUsIGRz
dCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkK
ICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAogICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAg
ICAgICBsb2FkcCAlb3AlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8uY2FsbGVlW3Q1XSwgdDIK
KyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5j
YWxsZWVbdDVdLCB0MgogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQogICAgICAgICBiaW5lcSB0MywgdDIsIC5v
cENhbGxTbG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3AsIG1fYXJndiwgdDMpCisgICAgICAgIGdl
dHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQogICAgICAgICBsc2hpZnRpIDMsIHQz
CiAgICAgICAgIG5lZ2kgdDMKICAgICAgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRo
ZSBuZXcgdmFsdWUgb2YgY2ZyCiAgICAgICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9m
ZnNldFt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcCwgbV9hcmdjLCB0MikKKyAgICAgICAgZ2V0
dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgdDIpCiAgICAgICAgIHN0b3JlaSBQQywgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCiAgICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRD
b3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUg
KyBUYWdPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxs
KCVvcCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXpl
LCBvcCwgZGlzcGF0Y2gsICVvcCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0
MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6
ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAu
b3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wLCBkaXNwYXRjaCwg
c2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgICAgICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAgIGVuZCkKIGVu
ZAogCkBAIC0xOTA1LDggKzE5MDUsOCBAQCBjb21tb25PcChsbGludF9vcF9jYXRjaCwgbWFjcm8o
KSBlbmQsIG1hCiAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCiAgICAgbG9hZHAgTWFya2Vk
QmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKIAot
ICAgIGxvYWRpIFZNOjptX2V4Y2VwdGlvblt0M10sIHQwCi0gICAgc3RvcmVpIDAsIFZNOjptX2V4
Y2VwdGlvblt0M10KKyAgICBsb2FkcCBWTTo6bV9leGNlcHRpb25bdDNdLCB0MAorICAgIHN0b3Jl
cCAwLCBWTTo6bV9leGNlcHRpb25bdDNdCiAgICAgZ2V0KHNpemUsIE9wQ2F0Y2gsIG1fZXhjZXB0
aW9uLCB0MikKICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBz
dG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCkBAIC0yMDEzLDcgKzIwMTMsNyBA
QCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2ZmCiAgICAgICAgIGVycm9y
CiAgICAgZW5kCiAgICAgCi0gICAgYnRpbnogVk06Om1fZXhjZXB0aW9uW3QzXSwgLmhhbmRsZUV4
Y2VwdGlvbgorICAgIGJ0cG56IFZNOjptX2V4Y2VwdGlvblt0M10sIC5oYW5kbGVFeGNlcHRpb24K
IAogICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldApAQCAtMjA2OCw3ICsyMDY4LDcgQEAg
bWFjcm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZgogICAgICAgICBlcnJvcgog
ICAgIGVuZAogCi0gICAgYnRpbnogVk06Om1fZXhjZXB0aW9uW3QzXSwgLmhhbmRsZUV4Y2VwdGlv
bgorICAgIGJ0cG56IFZNOjptX2V4Y2VwdGlvblt0M10sIC5oYW5kbGVFeGNlcHRpb24KIAogICAg
IGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldApAQCAtMjExMyw3ICsyMTEzLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcAogICAgIGVuZAogCiAgICAgbWV0YWRh
dGEodDUsIHQwKQotICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9yZXNvbHZl
VHlwZVt0NV0sIHQwCisgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX3Jlc29s
dmVUeXBlW3Q1XSwgdDAKIAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFs
UHJvcGVydHksIC5yR2xvYmFsVmFyCkBAIC0yMTYxLDExICsyMTYxLDExIEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3AKIGVuZCkKIAogCi1tYWNybyBsb2FkV2l0aFN0
cnVjdHVyZUNoZWNrKG9wLCBnZXQsIG9wZXJhbmQsIHNsb3dQYXRoKQorbWFjcm8gbG9hZFdpdGhT
dHJ1Y3R1cmVDaGVjayhvcGNvZGVTdHJ1Y3QsIGdldCwgb3BlcmFuZCwgc2xvd1BhdGgpCiAgICAg
Z2V0KG1fc2NvcGUsIHQwKQogICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
Ci0gICAgbG9hZHAgJW9wJTo6TWV0YWRhdGE6Om1fc3RydWN0dXJlW3Q1XSwgdDEKLSAgICBicG5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBsb2FkcCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fc3RydWN0dXJlW3Q1XSwgdDEKKyAgICBiaW5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKIGVuZAogCiAKQEAgLTIxOTUsNyAr
MjE5NSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICBl
bmQKIAogICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBsb2FkaSBPcEdldEZyb21TY29wZTo6TWV0
YWRhdGE6Om1fZ2V0UHV0SW5mb1t0NV0sIHQwCisgICAgbG9hZGkgT3BHZXRGcm9tU2NvcGU6Ok1l
dGFkYXRhOjptX2dldFB1dEluZm8gKyBHZXRQdXRJbmZvOjptX29wZXJhbmRbdDVdLCB0MAogICAg
IGFuZGkgUmVzb2x2ZVR5cGVNYXNrLCB0MAogCiAjZ0dsb2JhbFByb3BlcnR5OgpAQCAtMjI1Myw3
ICsyMjUzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAogICAg
IG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQogICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCi0gICAgICAgIGxvYWRpcyBP
cFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBP
cFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZVBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyLCB0MykKICAgICBlbmQKIApAQCAtMjI3
MCw3ICsyMjcwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAog
ICAgIG1hY3JvIHB1dENsb3N1cmVWYXIoKQogICAgICAgICBnZXQobV92YWx1ZSwgdDEpCiAgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKLSAgICAgICAgbG9h
ZGlzIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCisgICAgICAgIGxv
YWRwIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIHN0
b3JlaSB0MiwgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0
MSwgOF0KICAgICAgICAgc3RvcmVpIHQzLCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMg
KyBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KICAgICBlbmQKQEAgLTIyODIsMTQgKzIyODIsMTQg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAogICAgICAgICBidHB6
IHQxLCAubm9WYXJpYWJsZVdhdGNocG9pbnRTZXQKICAgICAgICAgbm90aWZ5V3JpdGUodDEsIC5w
RHluYW1pYykKICAgICAubm9WYXJpYWJsZVdhdGNocG9pbnRTZXQ6Ci0gICAgICAgIGxvYWRpcyBP
cFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQorICAgICAgICBsb2FkcCBP
cFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBzdG9yZWkg
dDIsIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRhZ09mZnNldFt0MCwgdDEsIDhd
CiAgICAgICAgIHN0b3JlaSB0MywgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5
bG9hZE9mZnNldFt0MCwgdDEsIDhdCiAgICAgZW5kCiAKIAogICAgIG1ldGFkYXRhKHQ1LCB0MCkK
LSAgICBsb2FkaSBPcFB1dFRvU2NvcGU6Ok1ldGFkYXRhOjptX2dldFB1dEluZm9bdDVdLCB0MAor
ICAgIGxvYWRpIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fZ2V0UHV0SW5mbyArIEdldFB1dElu
Zm86Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgYW5kaSBSZXNvbHZlVHlwZU1hc2ssIHQwCiAKICNw
TG9jYWxDbG9zdXJlVmFyOgpAQCAtMjM2OCw3ICsyMzY4LDcgQEAgZW5kKQogbGxpbnRPcFdpdGhQ
cm9maWxlKG9wX2dldF9mcm9tX2FyZ3VtZW50cywgT3BHZXRGcm9tQXJndW1lbnRzLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2FyZ3VtZW50cywgdDApCiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBnZXQobV9pbmRleCwg
dDEpCisgICAgZ2V0dShzaXplLCBPcEdldEZyb21Bcmd1bWVudHMsIG1faW5kZXgsIHQxKQogICAg
IGxvYWRpIERpcmVjdEFyZ3VtZW50c19zdG9yYWdlICsgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQy
CiAgICAgbG9hZGkgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0
MSwgOF0sIHQzCiAgICAgcmV0dXJuKHQyLCB0MykKQEAgLTIzODEsNyArMjM4MSw3IEBAIGxsaW50
T3Aob3BfcHV0X3RvX2FyZ3VtZW50cywgT3BQdXRUb0FyZ3UKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGdldChtX3ZhbHVlLCB0MSkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCi0gICAgZ2V0KG1faW5kZXgsIHQxKQorICAg
IGdldHUoc2l6ZSwgT3BQdXRUb0FyZ3VtZW50cywgbV9pbmRleCwgdDEpCiAgICAgc3RvcmVpIHQy
LCBEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSArIFRhZ09mZnNldFt0MCwgdDEsIDhdCiAgICAgc3Rv
cmVpIHQzLCBEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSArIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4
XQogICAgIGRpc3BhdGNoKCkKQEAgLTI0MDQsNyArMjQwNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHJvZmlsZV90eXBlLCBPcFAKICAgICBsb2FkcCBWTTo6bV90eXBlUHJvZmlsZXJMb2db
dDFdLCB0MQogCiAgICAgIyB0MCBpcyBob2xkaW5nIHRoZSBwYXlsb2FkLCB0NSBpcyBob2xkaW5n
IHRoZSB0YWcuCi0gICAgZ2V0KG1fdGFyZ2V0LCB0MikKKyAgICBnZXQobV90YXJnZXRWaXJ0dWFs
UmVnaXN0ZXIsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQ1LCB0
MCkKIAogICAgIGJpZXEgdDUsIEVtcHR5VmFsdWVUYWcsIC5vcFByb2ZpbGVUeXBlRG9uZQpAQCAt
MjQ1Niw3ICsyNDU2LDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVu
Z3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4p
CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKICAgICBz
dWJpIDEsIHQwCi0gICAgZ2V0KG1fbnVtUGFyYW1ldGVyc1RvU2tpcCwgdDEpCisgICAgZ2V0dShz
aXplLCBPcEdldFJlc3RMZW5ndGgsIG1fbnVtUGFyYW1ldGVyc1RvU2tpcCwgdDEpCiAgICAgYmls
dGVxIHQwLCB0MSwgLnN0b3JlWmVybwogICAgIHN1YmkgdDEsIHQwCiAgICAgam1wIC5maW5pc2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzYs
MjAgKzM2LDIwIEBAIG1hY3JvIG5leHRJbnN0cnVjdGlvbldpZGUoKQogICAgIGptcCBbdDEsIHQw
LCBQdHJTaXplXSwgQnl0ZWNvZGVQdHJUYWcKIGVuZAogCi1tYWNybyBnZXR1T3BlcmFuZE5hcnJv
dyhvcCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGIgY29uc3RleHByICVvcCVfJWZpZWxkTmFt
ZSVfaW5kZXhbUEIsIFBDLCAxXSwgZHN0CittYWNybyBnZXR1T3BlcmFuZE5hcnJvdyhvcGNvZGVT
dHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRiIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0
JV8lZmllbGROYW1lJV9pbmRleFtQQiwgUEMsIDFdLCBkc3QKIGVuZAogCi1tYWNybyBnZXRPcGVy
YW5kTmFycm93KG9wLCBmaWVsZE5hbWUsIGRzdCkKLSAgICBsb2FkYnNwIGNvbnN0ZXhwciAlb3Al
XyVmaWVsZE5hbWUlX2luZGV4W1BCLCBQQywgMV0sIGRzdAorbWFjcm8gZ2V0T3BlcmFuZE5hcnJv
dyhvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRic3AgY29uc3RleHByICVv
cGNvZGVTdHJ1Y3QlXyVmaWVsZE5hbWUlX2luZGV4W1BCLCBQQywgMV0sIGRzdAogZW5kCiAKLW1h
Y3JvIGdldHVPcGVyYW5kV2lkZShvcCwgZmllbGROYW1lLCBkc3QpCi0gICAgbG9hZGkgY29uc3Rl
eHByICVvcCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgMVtQQiwgUEMsIDFdLCBkc3QKK21hY3Jv
IGdldHVPcGVyYW5kV2lkZShvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQorICAgIGxvYWRp
IGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1lJV9pbmRleCAqIDQgKyAxW1BCLCBQ
QywgMV0sIGRzdAogZW5kCiAKLW1hY3JvIGdldE9wZXJhbmRXaWRlKG9wLCBmaWVsZE5hbWUsIGRz
dCkKLSAgICBsb2FkaXMgY29uc3RleHByICVvcCVfJWZpZWxkTmFtZSVfaW5kZXggKiA0ICsgMVtQ
QiwgUEMsIDFdLCBkc3QKK21hY3JvIGdldE9wZXJhbmRXaWRlKG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCisgICAgbG9hZGlzIGNvbnN0ZXhwciAlb3Bjb2RlU3RydWN0JV8lZmllbGROYW1l
JV9pbmRleCAqIDQgKyAxW1BCLCBQQywgMV0sIGRzdAogZW5kCiAKIG1hY3JvIG1ha2VSZXR1cm4o
Z2V0LCBkaXNwYXRjaCwgZm4pCkBAIC02MSwzMCArNjEsMzAgQEAgbWFjcm8gbWFrZVJldHVybihn
ZXQsIGRpc3BhdGNoLCBmbikKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbWFrZVJldHVyblByb2Zp
bGVkKG9wLCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCittYWNybyBtYWtlUmV0dXJuUHJv
ZmlsZWQob3Bjb2RlU3RydWN0LCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgZm4pCiAgICAgZm4o
bWFjcm8gKHZhbHVlKQogICAgICAgICBtb3ZlIHZhbHVlLCB0MwogICAgICAgICBtZXRhZGF0YSh0
MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcCwgdDEsIHQzKQorICAgICAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB0MSwgdDMpCiAgICAgICAgIGdldChtX2RzdCwgdDEpCiAgICAg
ICAgIHN0b3JlcSB0MywgW2NmciwgdDEsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQp
CiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wLCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3Rv
cmVxIHZhbHVlLCAlb3AlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0c1ttZXRhZGF0YV0K
K21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1ldGFkYXRhLCB2YWx1ZSkKKyAgICBz
dG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0
c1ttZXRhZGF0YV0KIGVuZAogCi1tYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcCwgZGlz
cGF0Y2gpCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rp
b25zUmF3UG9pbnRlcltQQl0sIFBCCiAgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCBQ
QiwgdDEpCi0gICAgZ2V0KHNpemUsIG9wLCBtX2RzdCwgdDEpCisgICAgZ2V0KHNpemUsIG9wY29k
ZVN0cnVjdCwgbV9kc3QsIHQxKQogICAgIHN0b3JlcSByMCwgW2NmciwgdDEsIDhdCi0gICAgbWV0
YWRhdGEoc2l6ZSwgb3AsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3AsIHQyLCByMCkKKyAg
ICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB0MiwgcjApCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTcxMCw3ICs3
MTAsNyBAQCBlbmQpCiAKIAogbGxpbnRPcChvcF9jaGVja190ZHosIE9wQ2hlY2tUZHosIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGdldChtX3RhcmdldCwgdDApCisgICAgZ2V0KG1f
dGFyZ2V0VmlydHVhbFJlZ2lzdGVyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQwLCB0MSkKICAgICBicW5lcSB0MSwgVmFsdWVFbXB0eSwgLm9wTm90VERaCiAgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKQpAQCAtNzQxLDggKzc0MSw4IEBA
IGxsaW50T3BXaXRoUmV0dXJuKG9wX25vdCwgT3BOb3QsIG1hY3JvICgKIGVuZCkKIAogCi1tYWNy
byBlcXVhbGl0eUNvbXBhcmlzb25PcChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmlzb24pCi0gICAg
bGxpbnRPcFdpdGhSZXR1cm4ob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIHJldHVybikKK21hY3JvIGVxdWFsaXR5Q29tcGFyaXNvbk9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgaW50ZWdlckNvbXBhcmlzb24pCisgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgICAgIGdldChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MCwgdDEsIC5zbG93KQpAQCAt
NzUyLDE0ICs3NTIsMTQgQEAgbWFjcm8gZXF1YWxpdHlDb21wYXJpc29uT3AobmFtZSwgb3AsIGlu
dAogICAgICAgICByZXR1cm4odDApCiAKICAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bj
b2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAogCi1tYWNybyBl
cXVhbE51bGxDb21wYXJpc29uT3AobmFtZSwgb3AsIGZuKQotICAgIGxsaW50T3BXaXRoUmV0dXJu
KG5hbWUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gZXF1
YWxOdWxsQ29tcGFyaXNvbk9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZm4pCisgICAgbGxp
bnRPcFdpdGhSZXR1cm4ob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBnZXQobV9vcGVyYW5kLCB0MCkKICAgICAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgICAgICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVk
aWF0ZQpAQCAtNzk5LDggKzc5OSw4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5l
ZF9vcl9udWwKIGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcU9wKG5hbWUsIG9wLCBlcXVhbGl0eU9w
ZXJhdGlvbikKLSAgICBsbGludE9wV2l0aFJldHVybihvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBv
cGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQorICAgIGxsaW50T3BXaXRoUmV0dXJuKG9w
XyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQwKQogICAgICAgICBnZXQobV9saHMsIHQyKQog
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKQEAgLTgxOSw3ICs4
MTksNyBAQCBtYWNybyBzdHJpY3RFcU9wKG5hbWUsIG9wLCBlcXVhbGl0eU9wZXJhCiAgICAgICAg
IHJldHVybih0MCkKIAogICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF8lbmFtZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkK
ICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZApAQCAtODMzLDggKzgzMyw4IEBAIHN0
cmljdEVxT3AobnN0cmljdGVxLCBPcE5zdHJpY3RlcSwKICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHJlc3VsdCkgY3FuZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0
RXF1YWxpdHlKdW1wT3AobmFtZSwgb3AsIGVxdWFsaXR5T3BlcmF0aW9uKQotICAgIGxsaW50T3BX
aXRoSnVtcChvcF8lbmFtZSUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkK
K21hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1
YWxpdHlPcGVyYXRpb24pCisgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bj
b2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0
KG1fbGhzLCB0MikKICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCkBAIC04NTIsMTAgKzg1MiwxMCBAQCBtYWNybyBzdHJp
Y3RFcXVhbGl0eUp1bXBPcChuYW1lLCBvcCwgZXF1CiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAg
IC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFy
Z2V0TGFiZWwpCiAKICAgICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfJW5hbWUlKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bj
b2RlTmFtZSUpCiAgICAgICAgIG5leHRJbnN0cnVjdGlvbigpCiAgICAgZW5kKQogZW5kCkBAIC04
NjksOCArODY5LDggQEAgc3RyaWN0RXF1YWxpdHlKdW1wT3Aoam5zdHJpY3RlcSwgT3BKbnN0cgog
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBicW5lcSBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCkKIAogCi1tYWNybyBwcmVPcChuYW1lLCBvcCwgYXJpdGhtZXRpY09wZXJhdGlvbikKLSAg
ICBsbGludE9wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorbWFj
cm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBhcml0aG1ldGljT3BlcmF0aW9uKQor
ICAgIGxsaW50T3Aob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9zcmNEc3QsIHQwKQogICAgICAgICBsb2FkcSBb
Y2ZyLCB0MCwgOF0sIHQxCiAgICAgICAgIGJxYiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKQEAg
LTg3OSw3ICs4NzksNyBAQCBtYWNybyBwcmVPcChuYW1lLCBvcCwgYXJpdGhtZXRpY09wZXJhdGlv
CiAgICAgICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKICAg
ICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW5hbWUlKQorICAgICAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNo
KCkKICAgICBlbmQpCiBlbmQKQEAgLTkyOSwxOSArOTI5LDE5IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwKICAgICBnZXQobV9vcGVyYW5kLCB0MCkKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MykKICAgICBtZXRhZGF0YSh0MSwgdDIpCi0g
ICAgbG9hZGlzIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGVbdDFdLCB0MgorICAg
IGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCB0YWdUeXBlTnVtYmVyLCAub3BOZWdhdGVOb3RJ
bnQKICAgICBidGl6IHQzLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CiAgICAgbmVnaSB0Mwog
ICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCi0g
ICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlW3QxXQorICAg
IHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3QxXQogICAgIHJldHVybih0MykKIC5vcE5lZ2F0ZU5vdEludDoKICAgICBi
dHF6IHQzLCB0YWdUeXBlTnVtYmVyLCAub3BOZWdhdGVTbG93CiAgICAgeG9ycSAweDgwMDAwMDAw
MDAwMDAwMDAsIHQzCiAgICAgb3JpIEFyaXRoUHJvZmlsZU51bWJlciwgdDIKLSAgICBzdG9yZWkg
dDIsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGVbdDFdCisgICAgc3RvcmVpIHQy
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHNbdDFdCiAgICAgcmV0dXJuKHQzKQogCiAub3BOZWdhdGVTbG93OgpAQCAtOTUwLDEyICs5NTAs
MTIgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLAogZW5kKQogCiAK
LW1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUobmFtZSwgb3AsIGludGVnZXJPcGVyYXRpb25BbmRT
dG9yZSwgZG91YmxlT3BlcmF0aW9uKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW5hbWUl
LCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCittYWNy
byBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24pCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAogICAgICAg
ICBtYWNybyBwcm9maWxlKHR5cGUpCi0gICAgICAgICAgICBvcmkgdHlwZSwgJW9wJTo6TWV0YWRh
dGE6Om1fYXJpdGhQcm9maWxlW3Q1XQorICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0K
ICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKQEAgLTEwMDcsNyArMTAwNyw3
IEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUobmFtZSwgb3AsIGludGUKICAgICAgICAgZGlz
cGF0Y2goKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVu
YW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCkBAIC0xMDUyLDggKzEwNTIsOCBAQCBiaW5h
cnlPcEN1c3RvbVN0b3JlKG11bCwgT3BNdWwsCiAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCkKIAogCi1tYWNybyBiaW5hcnlPcChuYW1lLCBvcCwgaW50ZWdlck9w
ZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uKQotICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUobmFtZSwg
b3AsCittYWNybyBiaW5hcnlPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVy
YXRpb24sIGRvdWJsZU9wZXJhdGlvbikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjdCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkKICAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCiAgICAg
ICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgcmlnaHQKQEAgLTEwODMsOCArMTA4Myw4IEBAIGxs
aW50T3BXaXRoUmV0dXJuKG9wX3Vuc2lnbmVkLCBPcFVuc2lnbmUKIGVuZCkKIAogCi1tYWNybyBj
b21tb25CaXRPcChvcEtpbmQsIG5hbWUsIG9wLCBvcGVyYXRpb24pCi0gICAgb3BLaW5kKG9wXyVu
YW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCittYWNybyBjb21t
b25CaXRPcChvcEtpbmQsIG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3BlcmF0aW9uKQorICAg
IG9wS2luZChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKICAgICAgICAgZ2V0KG1f
bGhzLCB0MikKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCkBA
IC0xMDk2LDE3ICsxMDk2LDE3IEBAIG1hY3JvIGNvbW1vbkJpdE9wKG9wS2luZCwgbmFtZSwgb3As
IG9wZXIKICAgICAgICAgcmV0dXJuKHQwKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93
UGF0aChfc2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
JW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3Jv
IGJpdE9wKG5hbWUsIG9wLCBvcGVyYXRpb24pCi0gICAgY29tbW9uQml0T3AobGxpbnRPcFdpdGhS
ZXR1cm4sIG5hbWUsIG9wLCBvcGVyYXRpb24pCittYWNybyBiaXRPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG9wZXJhdGlvbikKKyAgICBjb21tb25CaXRPcChsbGludE9wV2l0aFJldHVybiwg
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24pCiBlbmQKIAotbWFjcm8gYml0T3BQ
cm9maWxlZChuYW1lLCBvcCwgb3BlcmF0aW9uKQotICAgIGNvbW1vbkJpdE9wKGxsaW50T3BXaXRo
UHJvZmlsZSwgbmFtZSwgb3AsIG9wZXJhdGlvbikKK21hY3JvIGJpdE9wUHJvZmlsZWQob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBvcGVyYXRpb24pCisgICAgY29tbW9uQml0T3AobGxpbnRPcFdp
dGhQcm9maWxlLCBvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9wZXJhdGlvbikKIGVuZAogCiBi
aXRPcChsc2hpZnQsIE9wTHNoaWZ0LApAQCAtMTI2OSw3ICsxMjY5LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogICAgIGdldChtX2Jhc2UsIHQwKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZERpcmVjdFNs
b3cpCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBP
cEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgbG9hZGkg
T3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYmlu
ZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVj
dDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQxLCB0MywgdDApCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAub3BHZXRCeUlkRGVmYXVsdDoKICAgICBiYm5lcSB0
MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0LCAub3BHZXRCeUlkUHJvdG9Mb2FkCiAg
ICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKLSAgICBsb2FkaSBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVbdDJdLCB0
MAorICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKICAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWRTbG93
CiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRN
b2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDMsIHQwKQpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWQsIE9wR2V0QgogLm9wR2V0QnlJZFByb3RvTG9hZDoKICAgICBiYm5lcSB0MSwg
Y29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRBcnJheUxlbmd0aAog
ICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCi0gICAgbG9hZGkgT3BHZXRC
eUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVbdDJd
LCB0MworICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3Rv
TG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MwogICAgIGJpbmVxIHQzLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKICAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJv
dG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0
YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCkBA
IC0xMzI0LDcgKzEzMjQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDNdLCB0MQotICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVu
c2V0TW9kZS5zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6
Om1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYmluZXEg
dDAsIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIHQyLCBW
YWx1ZVVuZGVmaW5lZCkKICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCkBAIC0xMzM5LDcgKzEz
MzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCCiAgICAgZ2V0
KG1fYmFzZSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQw
LCAub3BQdXRCeUlkU2xvdykKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgbG9hZGlzIE9wUHV0
QnlJZDo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlW3Q1XSwgdDIKKyAgICBsb2FkaSBPcFB1dEJ5
SWQ6Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKICAgICBiaW5lcSB0MiwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wUHV0QnlJZFNsb3cKIAogICAgICMgQXQgdGhpcyBw
b2ludCwgd2UgaGF2ZToKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X2J5X2lkLCBPcFB1dEIKICAgICAjIHQyIC0+IGN1cnJlbnQgc3RydWN0dXJlIElECiAg
ICAgIyB0NSAtPiBtZXRhZGF0YQogCi0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRhZGF0YTo6bV9u
ZXdTdHJ1Y3R1cmVbdDVdLCB0MQorICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fbmV3
U3RydWN0dXJlSURbdDVdLCB0MQogICAgIGJ0aXogdDEsIC5vcFB1dEJ5SWROb3RUcmFuc2l0aW9u
CiAKICAgICAjIFRoaXMgaXMgdGhlIHRyYW5zaXRpb24gY2FzZS4gdDEgaG9sZHMgdGhlIG5ldyBz
dHJ1Y3R1cmVJRC4gdDIgaG9sZHMgdGhlIG9sZCBzdHJ1Y3R1cmUgSUQuCkBAIC0xMzgwLDcgKzEz
ODAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCCiAKIC5vcFB1
dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Eb25lOgogICAgICMgUmVsb2FkIHRoZSBuZXcgc3RydWN0dXJl
LCBzaW5jZSB3ZSBjbG9iYmVyZWQgaXQgYWJvdmUuCi0gICAgbG9hZGkgT3BQdXRCeUlkOjpNZXRh
ZGF0YTo6bV9uZXdTdHJ1Y3R1cmVbdDVdLCB0MQorICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0YWRh
dGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQogCiAub3BQdXRCeUlkVHJhbnNpdGlvbkRpcmVj
dDoKICAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KQEAgLTE1NzQsOCAr
MTU3NCw4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIGVuZCkK
IAogCi1tYWNybyBwdXRCeVZhbE9wKG5hbWUsIG9wKQotICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCittYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCkKKyAgICBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gY29udGln
dW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCiAgICAgICAgICAgICBiaWFlcSB0MywgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgLm91dE9mQm91bmRzCiAgICAgICAgIC5zdG9yZVJlc3VsdDoKQEAgLTE1ODUsNyArMTU4
NSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAKICAgICAgICAgLm91dE9mQm91bmRz
OgogICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGlu
Z0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3Vu
ZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAlb3AlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUu
bV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCiAgICAgICAg
ICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAgc3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAg
ICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBtYWNybyBw
dXRCeVZhbE9wKG5hbWUsIG9wKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChz
aXplLCB0MCwgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAgbW92ZSB0MSwgdDIKICAgICAg
ICAgbWV0YWRhdGEodDUsIHQwKQotICAgICAgICBhcnJheVByb2ZpbGUoJW9wJTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKICAgICAgICAg
Z2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIo
c2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIHN4aTJxIHQzLCB0MwpAQCAt
MTY1MCw3ICsxNjUwLDcgQEAgbWFjcm8gcHV0QnlWYWxPcChuYW1lLCBvcCkKICAgICAgICAgZGlz
cGF0Y2goKQogCiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKLSAgICAgICAgc3Rv
cmViIDEsICVvcCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1
XQorICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJv
ZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6
bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBA
IC0xNjU4LDkgKzE2NTgsOSBAQCBtYWNybyBwdXRCeVZhbE9wKG5hbWUsIG9wKQogICAgICAgICBq
bXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxP
dXRPZkJvdW5kczoKLSAgICAgICAgc3RvcmViIDEsICVvcCU6Ok1ldGFkYXRhOjptX2FycmF5UHJv
ZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQogICAgIC5vcFB1dEJ5
VmFsU2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW5hbWUlKQor
ICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAg
ICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKQEAgLTE2NzAsOCArMTY3MCw4IEBAIHB1dEJ5
VmFsT3AocHV0X2J5X3ZhbCwgT3BQdXRCeVZhbCkKIHB1dEJ5VmFsT3AocHV0X2J5X3ZhbF9kaXJl
Y3QsIE9wUHV0QnlWYWxEaXJlY3QpCiAKIAotbWFjcm8gbGxpbnRKdW1wVHJ1ZU9yRmFsc2VPcChu
YW1lLCBvcCwgY29uZGl0aW9uT3ApCi0gICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVuYW1lJSwgb3As
IG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFjcm8gbGxpbnRKdW1wVHJ1ZU9y
RmFsc2VPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGNvbmRpdGlvbk9wKQorICAgIGxsaW50
T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2NvbmRpdGlvbiwgdDEpCiAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQogICAgICAgICBidHFueiB0MCwg
fjB4ZiwgLnNsb3cKQEAgLTE2NzksMTcgKzE2NzksMTcgQEAgbWFjcm8gbGxpbnRKdW1wVHJ1ZU9y
RmFsc2VPcChuYW1lLCBvcCwgYwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAudGFyZ2V0Ogot
ICAgICAgICBqdW1wKG1fdGFyZ2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiAKICAg
ICAuc2xvdzoKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW5hbWUlKQor
ICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAg
ICAgIG5leHRJbnN0cnVjdGlvbigpCiAgICAgZW5kKQogZW5kCiAKIAotbWFjcm8gZXF1YWxOdWxs
SnVtcE9wKG5hbWUsIG9wLCBjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKLSAgICBsbGlu
dE9wV2l0aEp1bXAob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0
Y2gpCittYWNybyBlcXVhbE51bGxKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBjZWxs
SGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29k
ZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQog
ICAgICAgICBnZXQobV92YWx1ZSwgdDApCiAgICAgICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUs
IHQwKQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCkBAIC0xNjk5LDcgKzE2OTksNyBA
QCBtYWNybyBlcXVhbE51bGxKdW1wT3AobmFtZSwgb3AsIGNlbGxIYW5kCiAgICAgICAgIGRpc3Bh
dGNoKCkKIAogICAgIC50YXJnZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXQpCisgICAgICAgIGp1
bXAobV90YXJnZXRMYWJlbCkKIAogICAgIC5pbW1lZGlhdGU6CiAgICAgICAgIGFuZHEgflRhZ0Jp
dFVuZGVmaW5lZCwgdDAKQEAgLTE3MzEsNyArMTczMSw3IEBAIGVxdWFsTnVsbEp1bXBPcChqbmVx
X251bGwsIE9wSm5lcU51bGwsCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9w
Sm5lcVB0ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgZ2V0KG1fdmFsdWUsIHQwKQotICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBn
ZXR1KHNpemUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRlciwgdDEpCiAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0Ml0s
IHQyCiAgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwg
UHRyU2l6ZV0sIHQxCkBAIC0xNzQxLDEzICsxNzQxLDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3Bfam5lcV9wdHIsIE9wSm5lcVAKIC5vcEpuZXFQdHJUYXJnZXQ6CiAgICAgbWV0YWRhdGEodDUs
IHQwKQogICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1ldGFkYXRhOjptX2hhc0p1bXBlZFt0NV0K
LSAgICBnZXQobV90YXJnZXQsIHQwKQorICAgIGdldChtX3RhcmdldExhYmVsLCB0MCkKICAgICBq
dW1wSW1wbCh0MCkKIGVuZCkKIAogCi1tYWNybyBjb21wYXJlSnVtcE9wKG5hbWUsIG9wLCBpbnRl
Z2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSkKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5hbWUl
LCBvcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCittYWNybyBjb21wYXJlSnVt
cE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBh
cmUpCisgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBt
YWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikK
ICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MiwgdDApCkBAIC0xNzgxLDE3ICsxNzgxLDE3IEBAIG1hY3JvIGNvbXBhcmVKdW1wT3Ao
bmFtZSwgb3AsIGludGVnZXJDb20KICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLmp1bXBUYXJn
ZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXQpCisgICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkK
IAogICAgIC5zbG93OgotICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lbmFt
ZSUpCisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkK
ICAgICAgICAgbmV4dEluc3RydWN0aW9uKCkKICAgICBlbmQpCiBlbmQKIAogCi1tYWNybyBlcXVh
bGl0eUp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmlzb24pCi0gICAgbGxpbnRPcFdpdGhK
dW1wKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQorbWFj
cm8gZXF1YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyQ29tcGFy
aXNvbikKKyAgICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3Qs
IG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9saHMsIHQy
KQogICAgICAgICBnZXQobV9yaHMsIHQzKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
SW50MzIoc2l6ZSwgdDIsIHQwLCAuc2xvdykKQEAgLTE4MDAsMTcgKzE4MDAsMTcgQEAgbWFjcm8g
ZXF1YWxpdHlKdW1wT3AobmFtZSwgb3AsIGludGVnZXJDbwogICAgICAgICBkaXNwYXRjaCgpCiAK
ICAgICAuanVtcFRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldCkKKyAgICAgICAganVtcCht
X3RhcmdldExhYmVsKQogCiAgICAgLnNsb3c6Ci0gICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoXyVuYW1lJSkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
JW9wY29kZU5hbWUlKQogICAgICAgICBuZXh0SW5zdHJ1Y3Rpb24oKQogICAgIGVuZCkKIGVuZAog
CiAKLW1hY3JvIGNvbXBhcmVVbnNpZ25lZEp1bXBPcChuYW1lLCBvcCwgaW50ZWdlckNvbXBhcmVN
YWNybykKLSAgICBsbGludE9wV2l0aEp1bXAob3BfJW5hbWUlLCBvcCwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCittYWNybyBjb21wYXJlVW5zaWduZWRKdW1wT3Aob3Bjb2RlTmFt
ZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyQ29tcGFyZU1hY3JvKQorICAgIGxsaW50T3BXaXRoSnVt
cChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwg
ZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMp
CiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQpAQCAtMTgxOSwx
MyArMTgxOSwxMyBAQCBtYWNybyBjb21wYXJlVW5zaWduZWRKdW1wT3AobmFtZSwgb3AsIGluCiAg
ICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFy
Z2V0KQorICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiAgICAgZW5kKQogZW5kCiAKIAotbWFj
cm8gY29tcGFyZVVuc2lnbmVkT3AobmFtZSwgb3AsIGludGVnZXJDb21wYXJlQW5kU2V0KQotICAg
IGxsaW50T3BXaXRoUmV0dXJuKG9wXyVuYW1lJSwgb3AsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCByZXR1cm4pCittYWNybyBjb21wYXJlVW5zaWduZWRPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGludGVnZXJDb21wYXJlQW5kU2V0KQorICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wXyVv
cGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBnZXQobV9yaHMsICB0MCkKICAg
ICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCkBAIC0xODM5LDcgKzE4
MzksNyBAQCBlbmQKIAogbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dpdGNoSW1t
LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBnZXQobV9zY3J1dGluZWUs
IHQyKQotICAgIGdldChtX3RhYmxlSW5kZXgsIHQzKQorICAgIGdldHUoc2l6ZSwgT3BTd2l0Y2hJ
bW0sIG1fdGFibGVJbmRleCwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKQEAgLTE4NjcsNyArMTg2Nyw3IEBAIGVuZCkKIAogbGxpbnRP
cFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQs
IGp1bXAsIGRpc3BhdGNoKQogICAgIGdldChtX3NjcnV0aW5lZSwgdDIpCi0gICAgZ2V0KG1fdGFi
bGVJbmRleCwgdDMpCisgICAgZ2V0dShzaXplLCBPcFN3aXRjaENoYXIsIG1fdGFibGVJbmRleCwg
dDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDEpCiAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwg
dDIKQEAgLTE5MDMsNDkgKzE5MDMsNDkgQEAgZW5kKQogCiAKICMgd2UgYXNzdW1lIHQ1IGNvbnRh
aW5zIHRoZSBtZXRhZGF0YSwgYW5kIHdlIHNob3VsZCBub3Qgc2NyYXRjaCB0aGF0Ci1tYWNybyBh
cnJheVByb2ZpbGVGb3JDYWxsKG9wLCBnZXR1KQorbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChv
cGNvZGVTdHJ1Y3QsIGdldHUpCiAgICAgZ2V0dShtX2FyZ3YsIHQzKQogICAgIG5lZ3AgdDMKICAg
ICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCiAgICAgYnRxbnogdDAs
IHRhZ01hc2ssIC5kb25lCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDMK
LSAgICBzdG9yZWkgdDMsICVvcCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVu
U3RydWN0dXJlSURbdDVdCisgICAgc3RvcmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgogZW5kCiAK
LW1hY3JvIGNvbW1vbkNhbGxPcChuYW1lLCBzbG93UGF0aCwgb3AsIHByZXBhcmVDYWxsLCBwcm9s
b2d1ZSkKLSAgICBsbGludE9wV2l0aE1ldGFkYXRhKG5hbWUsIG9wLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKK21hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVO
YW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCisgICAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwg
dDApCiAKICAgICAgICAgcHJvbG9ndWUobWFjcm8gKGZpZWxkTmFtZSwgZHN0KQotICAgICAgICAg
ICAgZ2V0dShzaXplLCBvcCwgZmllbGROYW1lLCBkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUs
IG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEpCiAK
ICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9wJTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8uY2FsbGVlW3Q1XSwgdDIKICAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgICAgIGJxbmVxIHQzLCB0Miwg
Lm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcCwgbV9hcmd2LCB0MykKKyAgICAgICAg
Z2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCiAgICAgICAgIGxzaGlmdGkgMywg
dDMKICAgICAgICAgbmVncCB0MwogICAgICAgICBhZGRwIGNmciwgdDMKICAgICAgICAgc3RvcmVx
IHQyLCBDYWxsZWVbdDNdCi0gICAgICAgIGdldHUoc2l6ZSwgb3AsIG1fYXJnYywgdDIpCisgICAg
ICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQogICAgICAgICBzdG9yZWkg
UEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQogICAgICAgICBzdG9yZWkgdDIsIEFy
Z3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAogICAg
ICAgICBpZiBQT0lTT04KICAgICAgICAgICAgIGxvYWRwIF9nX0pJVENvZGVQb2lzb24sIHQyCi0g
ICAgICAgICAgICB4b3JwICVvcCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQyCisgICAgICAgICAgICB4b3JwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MgogICAgICAgICAgICAg
cHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3AsIGRpc3BhdGNoLCB0MiwgSlNFbnRyeVB0clRhZykK
KyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3Bh
dGNoLCB0MiwgSlNFbnRyeVB0clRhZykKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJlcGFy
ZUNhbGwoJW9wJTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5j
dGlvbihzaXplLCBvcCwgZGlzcGF0Y2gsICVvcCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
YWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgICAgICBwcmVwYXJl
Q2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRy
eVB0clRhZykKICAgICAgICAgZW5kCiAKICAgICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1Bh
dGhGb3JDYWxsKHNpemUsIG9wLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAg
ICAgICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1Bh
dGgsIHByZXBhcmVDYWxsKQogICAgIGVuZCkKIGVuZAogCkBAIC0yMTcwLDcgKzIxNzAsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wCiAgICAgICAgIHJldHVybih0
MCkKICAgICBlbmQKIAotICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9yZXNv
bHZlVHlwZVt0NV0sIHQwCisgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX3Jl
c29sdmVUeXBlW3Q1XSwgdDAKIAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xv
YmFsUHJvcGVydHksIC5yR2xvYmFsVmFyCkBAIC0yMjE4LDExICsyMjE4LDExIEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3AKIGVuZCkKIAogCi1tYWNybyBsb2FkV2l0
aFN0cnVjdHVyZUNoZWNrKG9wLCBnZXQsIHNsb3dQYXRoKQorbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1
cmVDaGVjayhvcGNvZGVTdHJ1Y3QsIGdldCwgc2xvd1BhdGgpCiAgICAgZ2V0KG1fc2NvcGUsIHQw
KQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCi0gICAgbG9hZHAgJW9wJTo6TWV0YWRhdGE6Om1fc3RydWN0dXJl
W3Q1XSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fc3RydWN0dXJl
W3Q1XSwgdDEKICAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIApAQCAtMjI1MSw3ICsy
MjUxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAg
ICByZXR1cm4odDApCiAgICAgZW5kCiAKLSAgICBsb2FkaSBPcEdldEZyb21TY29wZTo6TWV0YWRh
dGE6Om1fZ2V0UHV0SW5mb1t0NV0sIHQwCisgICAgbG9hZGkgT3BHZXRGcm9tU2NvcGU6Ok1ldGFk
YXRhOjptX2dldFB1dEluZm8gKyBHZXRQdXRJbmZvOjptX29wZXJhbmRbdDVdLCB0MAogICAgIGFu
ZGkgUmVzb2x2ZVR5cGVNYXNrLCB0MAogCiAjZ0dsb2JhbFByb3BlcnR5OgpAQCAtMjMwOSw3ICsy
MzA5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUAogICAgIG1h
Y3JvIHB1dFByb3BlcnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQogICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MikKLSAgICAgICAgbG9hZGlzIE9wUHV0VG9T
Y29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCisgICAgICAgIGxvYWRwIE9wUHV0VG9T
Y29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIHN0b3JlUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCiAgICAgZW5kCiAKQEAgLTIzMjUsNyArMjMyNSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFAKICAgICBtYWNybyBw
dXRDbG9zdXJlVmFyKCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQogICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MikKLSAgICAgICAgbG9hZGlzIE9wUHV0VG9TY29w
ZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCisgICAgICAgIGxvYWRwIE9wUHV0VG9TY29w
ZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIHN0b3JlcSB0MiwgSlNMZXhp
Y2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0KICAgICBlbmQKIApAQCAtMjMzNiwx
MiArMjMzNiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQCiAg
ICAgICAgIGJ0cHogdDMsIC5ub1ZhcmlhYmxlV2F0Y2hwb2ludFNldAogICAgICAgICBub3RpZnlX
cml0ZSh0MywgLnBEeW5hbWljKQogICAgIC5ub1ZhcmlhYmxlV2F0Y2hwb2ludFNldDoKLSAgICAg
ICAgbG9hZGlzIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCisgICAg
ICAgIGxvYWRwIE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAg
ICAgIHN0b3JlcSB0MiwgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0K
ICAgICBlbmQKIAogICAgIG1hY3JvIGNoZWNrVERaSW5HbG9iYWxQdXRUb1Njb3BlSWZOZWNlc3Nh
cnkoKQotICAgICAgICBsb2FkaXMgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6bV9nZXRQdXRJbmZv
W3Q1XSwgdDAKKyAgICAgICAgbG9hZGkgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6bV9nZXRQdXRJ
bmZvICsgR2V0UHV0SW5mbzo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgYW5kaSBJbml0aWFs
aXphdGlvbk1vZGVNYXNrLCB0MAogICAgICAgICByc2hpZnRpIEluaXRpYWxpemF0aW9uTW9kZVNo
aWZ0LCB0MAogICAgICAgICBiaW5lcSB0MCwgTm90SW5pdGlhbGl6YXRpb24sIC5ub05lZWRGb3JU
RFpDaGVjawpAQCAtMjM1Miw3ICsyMzUyLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRf
dG9fc2NvcGUsIE9wUAogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQotICAgIGxvYWRp
IE9wUHV0VG9TY29wZTo6TWV0YWRhdGE6Om1fZ2V0UHV0SW5mb1t0NV0sIHQwCisgICAgbG9hZGkg
T3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6bV9nZXRQdXRJbmZvICsgR2V0UHV0SW5mbzo6bV9vcGVy
YW5kW3Q1XSwgdDAKICAgICBhbmRpIFJlc29sdmVUeXBlTWFzaywgdDAKIAogI3BMb2NhbENsb3N1
cmVWYXI6CkBAIC0yNDY2LDcgKzI0NjYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Byb2Zp
bGVfdHlwZSwgT3BQCiAgICAgbG9hZHAgVHlwZVByb2ZpbGVyTG9nOjptX2N1cnJlbnRMb2dFbnRy
eVB0clt0MV0sIHQyCiAKICAgICAjIHQwIGlzIGhvbGRpbmcgdGhlIEpTVmFsdWUgYXJndW1lbnQu
Ci0gICAgZ2V0KG1fdGFyZ2V0LCB0MykKKyAgICBnZXQobV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIs
IHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDMsIHQwKQogCiAgICAgYnFl
cSB0MCwgVmFsdWVFbXB0eSwgLm9wUHJvZmlsZVR5cGVEb25lCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAyNDAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI4NSwzNiArMjg1LDM2IEBAIGVsc2UKICAgICBl
bmQKIGVuZAogCi1tYWNybyBkaXNwYXRjaChhZHZhbmNlKQotICAgIGFkZHAgYWR2YW5jZSwgUEMK
K21hY3JvIGRpc3BhdGNoKGFkdmFuY2VSZWcpCisgICAgYWRkcCBhZHZhbmNlUmVnLCBQQwogICAg
IG5leHRJbnN0cnVjdGlvbigpCiBlbmQKIAotbWFjcm8gZGlzcGF0Y2hJbmRpcmVjdChvZmZzZXQp
Ci0gICAgZGlzcGF0Y2gob2Zmc2V0KQorbWFjcm8gZGlzcGF0Y2hJbmRpcmVjdChvZmZzZXRSZWcp
CisgICAgZGlzcGF0Y2gob2Zmc2V0UmVnKQogZW5kCiAKLW1hY3JvIGRpc3BhdGNoT3Aoc2l6ZSwg
b3ApCittYWNybyBkaXNwYXRjaE9wKHNpemUsIG9wY29kZU5hbWUpCiAgICAgbWFjcm8gZGlzcGF0
Y2hOYXJyb3coKQotICAgICAgICBkaXNwYXRjaChjb25zdGV4cHIgJW9wJV9sZW5ndGgpCisgICAg
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVfbGVuZ3RoKQogICAgIGVuZAogCiAg
ICAgbWFjcm8gZGlzcGF0Y2hXaWRlKCkKLSAgICAgICAgZGlzcGF0Y2goY29uc3RleHByICVvcCVf
bGVuZ3RoICogNCArIDEpCisgICAgICAgIGRpc3BhdGNoKGNvbnN0ZXhwciAlb3Bjb2RlTmFtZSVf
bGVuZ3RoICogNCArIDEpCiAgICAgZW5kCiAKICAgICBzaXplKGRpc3BhdGNoTmFycm93LCBkaXNw
YXRjaFdpZGUsIG1hY3JvIChkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCiBlbmQKIAotbWFjcm8g
Z2V0dShzaXplLCBvcCwgZmllbGROYW1lLCBkc3QpCittYWNybyBnZXR1KHNpemUsIG9wY29kZVN0
cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgc2l6ZShnZXR1T3BlcmFuZE5hcnJvdywgZ2V0dU9w
ZXJhbmRXaWRlLCBtYWNybyAoZ2V0dSkKLSAgICAgICAgZ2V0dShvcCwgZmllbGROYW1lLCBkc3Qp
CisgICAgICAgIGdldHUob3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICBlbmQpCiBl
bmQKIAotbWFjcm8gZ2V0KHNpemUsIG9wLCBmaWVsZE5hbWUsIGRzdCkKK21hY3JvIGdldChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIHNpemUoZ2V0T3BlcmFuZE5hcnJv
dywgZ2V0T3BlcmFuZFdpZGUsIG1hY3JvIChnZXQpCi0gICAgICAgIGdldChvcCwgZmllbGROYW1l
LCBkc3QpCisgICAgICAgIGdldChvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgIGVu
ZCkKIGVuZAogCkBAIC0zMzQsOSArMzM0LDkgQEAgbWFjcm8gbWV0YWRhdGEoc2l6ZSwgb3Bjb2Rl
LCBkc3QsIHNjcmF0YwogICAgIGFkZHAgbWV0YWRhdGFUYWJsZSwgZHN0ICMgcmV0dXJuICZtZXRh
ZGF0YVRhYmxlW29mZnNldF0KIGVuZAogCi1tYWNybyBqdW1wSW1wbCh0YXJnZXQpCi0gICAgYnRp
eiB0YXJnZXQsIC5vdXRPZkxpbmVKdW1wVGFyZ2V0Ci0gICAgZGlzcGF0Y2hJbmRpcmVjdCh0YXJn
ZXQpCittYWNybyBqdW1wSW1wbCh0YXJnZXRPZmZzZXRSZWcpCisgICAgYnRpeiB0YXJnZXRPZmZz
ZXRSZWcsIC5vdXRPZkxpbmVKdW1wVGFyZ2V0CisgICAgZGlzcGF0Y2hJbmRpcmVjdCh0YXJnZXRP
ZmZzZXRSZWcpCiAub3V0T2ZMaW5lSnVtcFRhcmdldDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9vdXRfb2ZfbGluZV9qdW1wX3RhcmdldCkKICAgICBuZXh0SW5zdHJ1Y3Rpb24o
KQpAQCAtMzU4LDM5ICszNTgsMzkgQEAgbWFjcm8gb3AobCwgZm4pCiAgICAgZW5kKQogZW5kCiAK
LW1hY3JvIGxsaW50T3AobmFtZSwgb3AsIGZuKQotICAgIGNvbW1vbk9wKGxsaW50XyVuYW1lJSwg
dHJhY2VFeGVjdXRpb24sIG1hY3JvKHNpemUpCittYWNybyBsbGludE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgZm4pCisgICAgY29tbW9uT3AobGxpbnRfJW9wY29kZU5hbWUlLCB0cmFjZUV4
ZWN1dGlvbiwgbWFjcm8oc2l6ZSkKICAgICAgICAgbWFjcm8gZ2V0SW1wbChmaWVsZE5hbWUsIGRz
dCkKLSAgICAgICAgICAgIGdldChzaXplLCBvcCwgZmllbGROYW1lLCBkc3QpCisgICAgICAgICAg
ICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBmaWVsZE5hbWUsIGRzdCkKICAgICAgICAgZW5kCiAK
ICAgICAgICAgbWFjcm8gZGlzcGF0Y2hJbXBsKCkKLSAgICAgICAgICAgIGRpc3BhdGNoT3Aoc2l6
ZSwgbmFtZSkKKyAgICAgICAgICAgIGRpc3BhdGNoT3Aoc2l6ZSwgb3Bjb2RlTmFtZSkKICAgICAg
ICAgZW5kCiAKICAgICAgICAgZm4oc2l6ZSwgZ2V0SW1wbCwgZGlzcGF0Y2hJbXBsKQogICAgIGVu
ZCkKIGVuZAogCi1tYWNybyBsbGludE9wV2l0aFJldHVybihuYW1lLCBvcCwgZm4pCi0gICAgbGxp
bnRPcChuYW1lLCBvcCwgbWFjcm8oc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKK21hY3JvIGxsaW50T3BX
aXRoUmV0dXJuKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZm4pCisgICAgbGxpbnRPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gpCiAgICAgICAg
IG1ha2VSZXR1cm4oZ2V0LCBkaXNwYXRjaCwgbWFjcm8gKHJldHVybikKICAgICAgICAgICAgIGZu
KHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAgICAgZW5kKQogICAgIGVuZCkKIGVu
ZAogCi1tYWNybyBsbGludE9wV2l0aE1ldGFkYXRhKG5hbWUsIG9wLCBmbikKLSAgICBsbGludE9w
V2l0aFJldHVybihuYW1lLCBvcCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
K21hY3JvIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBmbikK
KyAgICBsbGludE9wV2l0aFJldHVybihvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIG1ldGEoZHN0LCBzY3Jh
dGNoKQotICAgICAgICAgICAgbWV0YWRhdGEoc2l6ZSwgb3AsIGRzdCwgc2NyYXRjaCkKKyAgICAg
ICAgICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgZHN0LCBzY3JhdGNoKQogICAgICAg
ICBlbmQKICAgICAgICAgZm4oc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YSwgcmV0dXJuKQogICAg
IGVuZCkKIGVuZAogCi1tYWNybyBsbGludE9wV2l0aEp1bXAobmFtZSwgb3AsIGltcGwpCi0gICAg
bGxpbnRPcFdpdGhNZXRhZGF0YShuYW1lLCBvcCwgbWFjcm8oc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKK21hY3JvIGxsaW50T3BXaXRoSnVtcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIGltcGwpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1hY3JvIGp1bXAoZmllbGROYW1lKQogICAgICAgICAgICAgZ2V0KGZpZWxkTmFtZSwg
dDApCiAgICAgICAgICAgICBqdW1wSW1wbCh0MCkKQEAgLTQwMCw5ICs0MDAsOSBAQCBtYWNybyBs
bGludE9wV2l0aEp1bXAobmFtZSwgb3AsIGltcGwpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIGxs
aW50T3BXaXRoUHJvZmlsZShuYW1lLCBvcCwgZm4pCi0gICAgbGxpbnRPcFdpdGhNZXRhZGF0YShu
YW1lLCBvcCwgbWFjcm8oc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAg
ICAgICAgbWFrZVJldHVyblByb2ZpbGVkKG9wLCBnZXQsIG1ldGFkYXRhLCBkaXNwYXRjaCwgbWFj
cm8gKHJldHVyblByb2ZpbGVkKQorbWFjcm8gbGxpbnRPcFdpdGhQcm9maWxlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgZm4pCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBv
cGNvZGVTdHJ1Y3QsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisgICAgICAgIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGdldCwgbWV0YWRhdGEs
IGRpc3BhdGNoLCBtYWNybyAocmV0dXJuUHJvZmlsZWQpCiAgICAgICAgICAgICBmbihzaXplLCBn
ZXQsIGRpc3BhdGNoLCByZXR1cm5Qcm9maWxlZCkKICAgICAgICAgZW5kKQogICAgIGVuZCkKQEAg
LTg5NSwxNCArODk1LDE0IEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9uKCkKICAgICBlbmQKIGVuZAog
Ci1tYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3AsIGRpc3BhdGNoLCBjYWxsZWUsIGNh
bGxQdHJUYWcpCittYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQogICAgIGlmIENfTE9PUAogICAgICAgICBjbG9v
cENhbGxKU0Z1bmN0aW9uIGNhbGxlZQogICAgIGVsc2UKICAgICAgICAgY2FsbCBjYWxsZWUsIGNh
bGxQdHJUYWcKICAgICBlbmQKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAg
ICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcCwgZGlzcGF0Y2gpCisgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKIGVuZAogCiBtYWNybyBwcmVwYXJl
Rm9yUmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQpA
QCAtOTE1LDcgKzkxNSw3IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAx
LCAKIAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHRlbXAy
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRlbXAxCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpt
X251bVBhcmFtZXRlcnNbdGVtcDFdLCB0ZW1wMQorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1Q
YXJhbWV0ZXJzW3RlbXAxXSwgdGVtcDEKICAgICBiaWx0ZXEgdGVtcDEsIHRlbXAyLCAubm9Bcml0
eUZpeHVwCiAgICAgbW92ZSB0ZW1wMSwgdGVtcDIKIApAQCAtOTcwLDcgKzk3MCw3IEBAIG1hY3Jv
IHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCAKICAgICBqbXAgY2FsbGVlLCBjYWxs
UHRyVGFnCiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wLCBkaXNwYXRjaCwg
c2xvd1BhdGgsIHByZXBhcmVDYWxsKQorbWFjcm8gc2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wY29k
ZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBjYWxsQ2FsbFNs
b3dQYXRoKAogICAgICAgICBzbG93UGF0aCwKICAgICAgICAgIyBUaG9zZSBhcmUgcjAgYW5kIHIx
CkBAIC05NzksNyArOTc5LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wLCBkaXNw
YXRjaAogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AKICAgICAgICAgICAgIHBy
ZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgU2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIC5k
b250VXBkYXRlU1A6Ci0gICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3AsIGRp
c3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJU
YWcpCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC0xMTkyLDggKzExOTIsOCBAQCBtYWNybyBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Fy
Z3VtZW50VmFsdWVQcm9maWxlcyArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMKICAg
ICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3ZSBk
b24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMuCiAgICAgbXVscCBzaXpl
b2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0
aW9uIQotICAgIGxzaGlmdHAgMywgdDAKLSAgICBhZGRwIHQyLCB0MworICAgIGxzaGlmdHAgMywg
dDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2suCisgICAg
YWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBvZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4gQ29k
ZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcy4KIC5hcmd1bWVudFByb2ZpbGVMb29wOgog
ICAgIGlmIEpTVkFMVUU2NAogICAgICAgICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXQgLSA4ICsg
cHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgpAQCAtMTQzMyw5ICsxNDMzLDkgQEAgZW5k
CiAKIAogIyBWYWx1ZS1yZXByZXNlbnRhdGlvbi1hZ25vc3RpYyBjb2RlLgotbWFjcm8gc2xvd1Bh
dGhPcChvcCkKLSAgICBsbGludE9wKG9wXyVvcCUsIHVudXNlZCwgbWFjcm8gKHVudXNlZCwgdW51
c2VkLCBkaXNwYXRjaCkKLSAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wJSkKK21h
Y3JvIHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKKyAgICBsbGludE9wKG9wXyVvcGNvZGVOYW1lJSwg
dW51c2VkLCBtYWNybyAodW51c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQorICAgICAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBl
bmQpCiBlbmQKQEAgLTE0ODEsOSArMTQ4MSw5IEBAIHNsb3dQYXRoT3AodG9faW5kZXhfc3RyaW5n
KQogc2xvd1BhdGhPcCh0eXBlb2YpCiBzbG93UGF0aE9wKHVucmVhY2hhYmxlKQogCi1tYWNybyBs
bGludFNsb3dQYXRoT3Aob3ApCi0gICAgbGxpbnRPcChvcF8lb3AlLCB1bnVzZWQsIG1hY3JvICh1
bnVzZWQsIHVudXNlZCwgZGlzcGF0Y2gpCi0gICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoXyVvcCUpCittYWNybyBsbGludFNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKKyAgICBsbGlu
dE9wKG9wXyVvcGNvZGVOYW1lJSwgdW51c2VkLCBtYWNybyAodW51c2VkLCB1bnVzZWQsIGRpc3Bh
dGNoKQorICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUp
CiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCiBlbmQKQEAgLTE1MzgsNyArMTUzOCw3IEBA
IGNvbXBhcmVVbnNpZ25lZE9wKGJlbG93ZXEsIE9wQmVsb3dlcSwKIAogCiBsbGludE9wV2l0aEp1
bXAob3Bfam1wLCBPcEptcCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCi0gICAg
anVtcChtX3RhcmdldCkKKyAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCiBlbmQpCiAKIApAQCAtMTY3
NCw4ICsxNjc0LDggQEAgY29tbW9uQ2FsbE9wKG9wX2NhbGwsIF9sbGludF9zbG93X3BhdGhfYwog
ZW5kKQogCiAKLW1hY3JvIGNhbGxPcChuYW1lLCBvcCwgcHJlcGFyZUNhbGwsIGZuKQotICAgIGNv
bW1vbkNhbGxPcChvcF8lbmFtZSUsIF9sbGludF9zbG93X3BhdGhfJW5hbWUlLCBvcCwgcHJlcGFy
ZUNhbGwsIGZuKQorbWFjcm8gY2FsbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgcHJlcGFy
ZUNhbGwsIGZuKQorICAgIGNvbW1vbkNhbGxPcChvcF8lb3Bjb2RlTmFtZSUsIF9sbGludF9zbG93
X3BhdGhfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBmbikKIGVuZAog
CiAKQEAgLTE2OTAsNyArMTY5MCw3IEBAIGVuZCkKIGNhbGxPcChjb25zdHJ1Y3QsIE9wQ29uc3Ry
dWN0LCBwcmVwYXJlRm9yUmVndWxhckNhbGwsIG1hY3JvIChnZXR1LCBtZXRhZGF0YSkgZW5kKQog
CiAKLW1hY3JvIGRvQ2FsbFZhcmFyZ3Moc2l6ZSwgb3AsIGRpc3BhdGNoLCBmcmFtZVNsb3dQYXRo
LCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCittYWNybyBkb0NhbGxWYXJhcmdzKHNpemUsIG9wY29k
ZVN0cnVjdCwgZGlzcGF0Y2gsIGZyYW1lU2xvd1BhdGgsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
ICAgICBjYWxsU2xvd1BhdGgoZnJhbWVTbG93UGF0aCkKICAgICBicmFuY2hJZkV4Y2VwdGlvbihf
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKICAgICAjIGNhbGxlZUZyYW1l
IGluIHIxCkBAIC0xNzA1LDcgKzE3MDUsNyBAQCBtYWNybyBkb0NhbGxWYXJhcmdzKHNpemUsIG9w
LCBkaXNwYXRjaCwgCiAgICAgICAgICAgICBzdWJwIHIxLCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwg
c3AKICAgICAgICAgZW5kCiAgICAgZW5kCi0gICAgc2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wLCBk
aXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQorICAgIHNsb3dQYXRoRm9yQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKIAog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDI0MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw4ICsxMjUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBiQ29uZGl0aW9uID0gKGNvbmRpdGlvbik7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKGJDb25kaXRpb24p
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHBj
ID0gYnl0ZWNvZGUubV90YXJnZXQgXAotICAgICAgICAgICAgICAgID8gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBj
KSArIGJ5dGVjb2RlLm1fdGFyZ2V0KSBcCisgICAgICAgICAgICBwYyA9IGJ5dGVjb2RlLm1fdGFy
Z2V0TGFiZWwgXAorICAgICAgICAgICAgICAgID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0
cnVjdGlvbio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBjKSArIGJ5dGVjb2Rl
Lm1fdGFyZ2V0TGFiZWwpIFwKICAgICAgICAgICAgICAgICA6IGV4ZWMtPmNvZGVCbG9jaygpLT5v
dXRPZkxpbmVKdW1wVGFyZ2V0KHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgICBwYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1
Y3Rpb24qPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYykgKyBwYy0+c2l6ZSgp
KTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaAko
cmV2aXNpb24gMjQwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBlbnVtIFJlc29sdmVNb2Rl
IHsKICAgICBEb05vdFRocm93SWZOb3RGb3VuZAogfTsKIAotZW51bSBSZXNvbHZlVHlwZSB7Citl
bnVtIFJlc29sdmVUeXBlIDogdW5zaWduZWQgewogICAgIC8vIExleGljYWwgc2NvcGUgZ3VhcmFu
dGVlZCBhIGNlcnRhaW4gdHlwZSBvZiB2YXJpYWJsZSBhY2Nlc3MuCiAgICAgR2xvYmFsUHJvcGVy
dHksCiAgICAgR2xvYmFsVmFyLApAQCAtMjEwLDYgKzIxMCw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbW9kZUJpdHMgPSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6
YXRpb25CaXRzICYgfnR5cGVCaXRzOwogICAgIHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5p
dGlhbGl6YXRpb25CaXRzICYgdHlwZUJpdHMpID09IDB4MCwgIlRoZXJlIHNob3VsZCBiZSBubyBp
bnRlcnNlY3Rpb24gYmV0d2VlbiBSZXNvbHZlTW9kZSBSZXNvbHZlVHlwZSBhbmQgSW5pdGlhbGl6
YXRpb25Nb2RlIik7CiAKKyAgICBHZXRQdXRJbmZvKCkgPSBkZWZhdWx0OworCiAgICAgR2V0UHV0
SW5mbyhSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUsIElu
aXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUpCiAgICAgICAgIDogbV9vcGVyYW5k
KChyZXNvbHZlTW9kZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0
aWFsaXphdGlvbk1vZGUpIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2ZVR5cGUpCiAg
ICAgewpAQCAtMjI4LDcgKzIzMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBPcGVyYW5kIG1fb3BlcmFuZDsKKyAgICBPcGVy
YW5kIG1fb3BlcmFuZCB7IDAgfTsKKworICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIH07CiAKIGVudW0gR2V0T3JQdXQgeyBHZXQsIFB1dCB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>