<?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>141388</bug_id>
          
          <creation_ts>2015-02-09 09:47:02 -0800</creation_ts>
          <short_desc>Varargs frame set-up should be factored out for use by other JITs</short_desc>
          <delta_ts>2015-02-09 19:28:05 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>141332</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1067835</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-09 09:47:02 -0800</bug_when>
    <thetext>Currently there is a lot of code that is tightly-coupled to the baseline engines&apos; view of the world - i.e. literal execution of bytecode.  There is even more code that does smart things for varargs that is inside the baseline JIT itself.

We should move that code out and make it more general, for example make it respect the notion that not everyone executes bytecode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067839</commentid>
    <comment_count>1</comment_count>
      <attachid>246274</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-09 09:56:45 -0800</bug_when>
    <thetext>Created attachment 246274
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067861</commentid>
    <comment_count>2</comment_count>
      <attachid>246278</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-09 10:52:41 -0800</bug_when>
    <thetext>Created attachment 246278
the patch

Some 32-bit fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067880</commentid>
    <comment_count>3</comment_count>
      <attachid>246282</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-09 12:13:04 -0800</bug_when>
    <thetext>Created attachment 246282
the patch

32-bit works again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067901</commentid>
    <comment_count>4</comment_count>
      <attachid>246282</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-02-09 13:58:40 -0800</bug_when>
    <thetext>Comment on attachment 246282
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067977</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-09 19:28:05 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/179862</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246274</attachid>
            <date>2015-02-09 09:56:45 -0800</date>
            <delta_ts>2015-02-09 10:52:41 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>59704</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDE1LTAyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFyYXJncyBmcmFtZSBzZXQtdXAgc2hvdWxkIGJlIGZhY3RvcmVkIG91dCBmb3IgdXNlIGJ5IG90
aGVyIEpJVHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MTM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSB0aGUgY29kZSB0aGF0IGRlYWx0IHdpdGggdmFyYXJncyBhbHdh
eXMgYXNzdW1lZCB0aGF0IHdlIHdlcmUgc2V0dGluZyB1cCBhIHZhcmFyZ3MgY2FsbAorICAgICAg
ICBmcmFtZSBieSBsaXRlcmFsbHkgZm9sbG93aW5nIHRoZSBleGVjdXRpb24gc2VtYW50aWNzIG9m
IG9wX2NhbGxfdmFyYXJncy4gVGhpcyBpc24ndCBob3cgaXQnbGwKKyAgICAgICAgaGFwcGVuIG9u
Y2UgdGhlIERGRyBhbmQgRlRMIGRvIHZhcmFyZ3MgY2FsbHMsIG9yIHdoZW4gdmFyYXJncyBjYWxs
cyBnZXQgaW5saW5lZC4gVGhlIERGRyBhbmQgRlRMCisgICAgICAgIGRvbid0IGxpdGVyYWxseSBl
eGVjdXRlIGJ5dGVjb2RlOyBmb3IgZXhhbXBsZSB0aGVpciBzdGFjayBmcmFtZSBsYXlvdXQgaGFz
IGFic29sdXRlbHkgbm90aGluZyBpbgorICAgICAgICBjb21tb24gd2l0aCB3aGF0IHRoZSBieXRl
Y29kZSBzYXlzLCBhbmQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgdHdvIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICBTZXR0aW5n
IHVwIHRoZSB2YXJhcmdzIGNhbGxlZSBmcmFtZSBjYW4gYmUgZG9uZSBpbiBzbWFsbGVyIHN0ZXBz
OiBwYXJ0aWN1bGFybHkgaW4gdGhlIGNhc2Ugb2YgYQorICAgICAgICB2YXJhcmdzIGNhbGwgdGhh
dCBnZXRzIGlubGluZWQsIHdlIGFyZW4ndCBnb2luZyB0byBhY3R1YWxseSB3YW50IHRvIHNldCB1
cCBhIGNhbGxlZSBmcmFtZSBpbgorICAgICAgICBmdWxsIC0gd2UganVzdCB3YW50IHRvIHB1dCB0
aGUgYXJndW1lbnRzIHNvbWV3aGVyZSwgYW5kIHRoYXQgcGxhY2Ugd2lsbCBub3QgaGF2ZSBtdWNo
IChpZgorICAgICAgICBhbnl0aGluZykgaW4gY29tbW9uIHdpdGggdGhlIGNhbGwgZnJhbWUgZm9y
bWF0LiBUaGlzIHBhdGNoIGZhY3RvcnMgdGhhdCBvdXQgaW50byBzb21ldGhpbmcgY2FsbGVkCisg
ICAgICAgIGEgYnVsa0dldEJ5VmFsLiBUaGlzIHBhdGNoIGFsc28gc2VwYXJhdGVzIGxvYWRpbmcg
dmFyYXJncyBmcm9tIHNldHRpbmcgdGhpcywgc2luY2UgdGhlIGZhY3QgdGhhdAorICAgICAgICB0
aG9zZSB0d28gdGhpbmdzIGFyZSBkb25lIHRvZ2V0aGVyIGlzIGEgZGV0YWlsIG1hZGUgZXhwbGlj
aXQgaW4gYnl0ZWNvZGUgYnV0IGl0J3Mgbm90IGF0IGFsbAorICAgICAgICByZXF1aXJlZCBpbiB0
aGUgaGlnaGVyLXRpZXIgZW5naW5lcy4gSW4gdGhlIHByb2Nlc3Mgb2YgZmFjdG9yaW5nIHRoaXMg
Y29kZSBvdXQsIEkgZm91bmQgYSBidW5jaAorICAgICAgICBvZiBvZmYtYnktb25lIGVycm9ycyBp
biB0aGUgdmFyaW91cyBjYWxjdWxhdGlvbnMuIEkgZml4ZWQgdGhlbS4gVGhlIGRpc3RhbmNlIGZy
b20gdGhlIGNhbGxlcidzCisgICAgICAgIGZyYW1lIHBvaW50ZXIgdG8gdGhlIGNhbGxlZSBmcmFt
ZSBwb2ludGVyIGlzIGFsd2F5czoKKyAgICAgICAgCisgICAgICAgICAgICBudW1Vc2VkQ2FsbGVy
U2xvdHMgKyBhcmdDb3VudCArIDEgKyBDYWxsRnJhbWVTaXplCisgICAgICAgIAorICAgICAgICB3
aGVyZSBudW1Vc2VkQ2FsbGVyU2xvdHMgaXMgdG9Mb2NhbChmaXJzdEZyZWVSZWdpc3RlcikgLSAx
LCB3aGljaCBzaW1wbGlmaWVzIGRvd24gdG8ganVzdAorICAgICAgICAtZmlyc3RGcmVlUmVnaXN0
ZXIuIFRoZSBjb2RlIG5vdyBzcGVha3Mgb2YgbnVtVXNlZENhbGxlclNsb3RzIHJhdGhlciB0aGFu
IGZpcnN0RnJlZVJlZ2lzdGVyLAorICAgICAgICBzaW5jZSB0aGUgbGF0dGVyIGlzIGEgYnl0ZWNv
ZGUgcGVjdWxpYXJpdHkgdGhhdCBkb2Vzbid0IGFwcGx5IGluIHRoZSBERkcgb3IgRlRMLiBJbiB0
aGUgREZHLCB0aGUKKyAgICAgICAgaW50ZXJuYWxseS1jb21wdXRlZCBmcmFtZSBzaXplLCBtaW51
cyB0aGUgcGFyYW1ldGVyIHNsb3RzLCB3aWxsIGJlIHVzZWQgZm9yIG51bVVzZWRDYWxsZXJTbG90
cy4KKyAgICAgICAgSW4gdGhlIEZUTCwgd2Ugd2lsbCBlc3NlbnRpYWxseSBjb21wdXRlIG51bVVz
ZWRDYWxsZXJTbG90cyBkeW5hbWljYWxseSBieSBzdWJ0cmFjdGluZyBTUCBmcm9tIEZQLgorICAg
ICAgICBFdmVudHVhbGx5LCBMTFZNIG1pZ2h0IGdpdmUgdXMgc29tZSBjbGVhbmVyIHdheSBvZiBk
b2luZyB0aGlzLCBidXQgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgdmVyeSBt
dWNoLgorICAgICAgICAKKyAgICAgICAgVGhlIGFyZ3VtZW50cyBmb3J3YXJkaW5nIG9wdGltaXph
dGlvbiBpcyBmYWN0b3JlZCBvdXQgb2YgdGhlIEJhc2VsaW5lIEpJVDogdGhlIERGRyBhbmQgRlRM
IHdpbGwKKyAgICAgICAgd2FudCB0byBkbyB0aGlzIG9wdGltaXphdGlvbiBhcyB3ZWxsLCBidXQg
aXQgaW52b2x2ZXMgcXVpdGUgYSBiaXQgb2YgY29kZS4gU28sIHRoaXMgY29kZSBpcyBub3cKKyAg
ICAgICAgZmFjdG9yZWQgb3V0IGludG8gTG9hZFZhcmFyZ3MuaHxjcHAsIHNvIHRoYXQgb3RoZXIg
SklUcyBjYW4gdXNlIGl0LiBJbiB0aGUgcHJvY2VzcyBvZiBmYWN0b3JpbmcKKyAgICAgICAgdGhp
cyBjb2RlIG91dCBJIG5vdGljZWQgdGhhdCB0aGUgMzItYml0IGFuZCA2NC1iaXQgY29kZSBpcyBu
ZWFybHkgaWRlbnRpY2FsLCBzbyBJIGNvbWJpbmVkIHRoZW0uCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6RXhl
Y1N0YXRlOjpyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bmNoZWNrZWRSKToKKyAgICAg
ICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6VmlydHVhbFJl
Z2lzdGVyOjpvcGVyYXRvcispOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6Om9wZXJh
dG9yLSk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6b3BlcmF0b3IrPSk6CisgICAg
ICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6b3BlcmF0b3ItPSk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6YnVs
a0dldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjps
b2FkVmFyYXJnc0FuZFNldFRoaXMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvTG9hZFZhcmFyZ3MuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6ZW1pdExvYWRWYXJhcmdzRmFzdENhc2UpOgorICAgICAgICAqIGpp
dC9Mb2FkVmFyYXJncy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlU
b0FyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb3B5VG9Bcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorCiAyMDE1LTAyLTA4ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBmZXcg
ZHVwbGljYXRlIHByb3BhZ2F0aW9uIHN0ZXBzIGZyb20gdGhlIERGRydzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvbiBwaGFzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zNDksNiArMzQ5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBqaXQvSklUU3R1YnMuY3BwCiAgICAgaml0L0pJVFRodW5rcy5jcHAKICAgICBqaXQv
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisgICAgaml0L0xvYWRWYXJh
cmdzLmNwcAogICAgIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKICAgICBqaXQv
UmVnLmNwcAogICAgIGppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3
OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyMCw2ICs2MjAsNyBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFN0dWJzLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRUaHVua3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxMb2FkVmFyYXJncy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmNwcCIgLz4KQEAgLTEzNTMsNiArMTM1NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRXcml0ZUJhcnJpZXIuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKU0ludGVyZmFjZUpJVC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caml0XExvYWRWYXJhcmdzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCIgLz4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjMyLDYgKzYzMiw4IEBACiAJCTBGRUEwQTMzMTcwRDQwQkYwMEJC
NzIyQyAvKiBERkdKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUEwQTJGMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmNwcCAq
LzsgfTsKIAkJMEZFQTBBMzQxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTMwMTcwRDQwQkYw
MEJCNzIyQyAvKiBERkdKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
RUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8q
IExvYWRWYXJhcmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZFRTk4NDMxQTg5MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUU5ODQyMUE4OTIy
NzUwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5jcHAgKi87IH07CiAJCTBGRUZDOUFBMTY4MUEzQjMw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLzsgfTsKIAkJMEZFRkM5QUIxNjgxQTNC
NjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xv
bmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAg
Ki87IH07CkBAIC0yMzEzLDYgKzIzMTUsOCBAQAogCQkwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdKSVRDb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdKSVRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFQTBBMzAxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSklUQ29kZS5oOyBwYXRoID0gZGZn
L0RGR0pJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0UxNjIz
N0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRWYXJhcmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkVmFyYXJncy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNzZW1i
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpc2Fzc2VtYmxlci5oOyBw
YXRoID0gZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzc5Miw2ICszNzk2LDggQEAKIAkJCQkwRkM3MTJFMTE3Q0Q4NzhGMDA4Q0M5M0Mg
LyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlBNzZGNTRB
MjEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQTc2QzUxNzQx
MTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8sCisJCQkJMEZFRTk4NDIxQTg5
MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCAqLywKKwkJCQkwRkVFOTg0MDFBODg2NUI2
MDA3NTRFOTMgLyogTG9hZFZhcmFyZ3MuaCAqLywKIAkJCQkwRkU4MzQxNTFBNkVGOTdCMDBEMDQ4
NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwICovLAogCQkJCTBGRTgzNDE2MUE2
RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBG
QTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovLApAQCAtNTUxMCw2ICs1NTE2LDcg
QEAKIAkJCQlDMkZDOUJEMzE2NjQ0REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3Bp
ZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUU5ODQxMUE4ODY1QjcwMDc1
NEU5MyAvKiBMb2FkVmFyYXJncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTcxMzcsNiArNzE0NCw3IEBACiAJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIg
LyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQy
NTY2MTE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZFRTk4NDMxQTg5MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RTNDNjE4MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxNDI4MDg3MDEwN0VDMTM0MDAxM0U3QjIgLyogSlNXcmFwcGVyT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzYsMTIg
KzEyMzYsMjIgQEAgaW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIoaW50IGluZGV4KQogICAg
IHJldHVybiB0aGlzW2luZGV4XTsKIH0KIAoraW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIo
VmlydHVhbFJlZ2lzdGVyIHJlZykKK3sKKyAgICByZXR1cm4gcihyZWcub2Zmc2V0KCkpOworfQor
CiBpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6dW5jaGVja2VkUihpbnQgaW5kZXgpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CiAg
ICAgcmV0dXJuIHRoaXNbaW5kZXhdOwogfQogCitpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6
dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQoreworICAgIHJldHVybiB1bmNoZWNrZWRS
KHJlZy5vZmZzZXQoKSk7Cit9CisKIGlubGluZSBKU1ZhbHVlIEV4ZWNTdGF0ZTo6YXJndW1lbnRB
ZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KQogewogICAgIGlmIChhcmd1bWVudCA+PSBhcmd1
bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVh
bFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYg
KzcwLDIzIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlydHVhbFJlZ2lz
dGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3Zp
cnR1YWxSZWdpc3RlcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWaXJ0dWFsUmVnaXN0
ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyICE9IG90aGVyLm1fdmly
dHVhbFJlZ2lzdGVyOyB9CiAgICAgCisgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhdG9yKyhpbnQg
dmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG9mZnNl
dCgpICsgdmFsdWUpOworICAgIH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3ItKGludCB2
YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIob2Zmc2V0
KCkgLSB2YWx1ZSk7CisgICAgfQorICAgIFZpcnR1YWxSZWdpc3RlciYgb3BlcmF0b3IrPShpbnQg
dmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHZhbHVlOworICAg
IH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXImIG9wZXJhdG9yLT0oaW50IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgLSB2YWx1ZTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTc5
NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMsOCArMjAzLDEwIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAg
ICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIgZnJvbSB0aGUgY29kZWZyYW1lIChvciBjb25zdGFudCBm
cm9tIHRoZSBDb2RlQmxvY2spLgogICAgICAgICBSZWdpc3RlciYgcihpbnQpOworICAgICAgICBS
ZWdpc3RlciYgcihWaXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIg
Zm9yIGEgbm9uLWNvbnN0YW50CiAgICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKGludCk7Cisg
ICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAg
Ly8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQuIChBZnRlciBjYXB0dXJlLCBhcmd1bWVu
dHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uKQogICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkg
LSAxOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsx
MzQsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIGlu
dGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIH0KIAotQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgSlNWYWx1ZSBhcmd1bWVudHMsIGludCBmaXJzdEZy
ZWVSZWdpc3RlciwgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCitDYWxsRnJhbWUqIHNpemVG
cmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RhY2sqIHN0YWNrLCBKU1Zh
bHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0KQogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYuYXBwbHkoeCwgYXJn
dW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJh
cmdzKENhbGxGcmFtZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gMTsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVP
ZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgLWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRlZENh
bGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICAgICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0g
cGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyArIDEgfHwgIXN0YWNrLT5lbnN1cmVD
YXBhY2l0eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBDYWxs
RnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lCiAKICAgICBpZiAoYXJndW1lbnRz
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNl
dCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAg
LWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxl
ZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCksICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2FwYWNp
dHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAgICAgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgQ2FsbEZyYW1l
KiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZQogICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ0NvdW50ID0g
MDsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJlZ2lz
dGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgICAgIHVuc2ln
bmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Nsb3RzICsgYXJnQ291bnQgKyAx
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRz
OjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUt
PnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFy
Z3MoQ2FsbEZyYW1lCiAgICAgICAgICAgICBhcmdDb3VudCAtPSBmaXJzdFZhckFyZ09mZnNldDsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJnQ291bnQgPSAwOwotICAgICAgICB1bnNpZ25l
ZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCAtZmlyc3RGcmVlUmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9m
ZnNldEZvcihhcmdDb3VudCArIDEpKTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJh
bWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdDb3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZz
ZXQpOwogICAgICAgICBpZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAh
c3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAg
ICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwpAQCAtMjA1LDcg
KzIwNSw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUKICAgICAg
ICAgYXJnQ291bnQgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBhcmdD
b3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJl
Z2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgdW5zaWdu
ZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdDb3VudCArIDEg
KyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCk7CiAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1
bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVy
cygpKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwpAQCAt
MjE0LDcgKzIxNCw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUK
ICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi12b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3ZvaWQgYnVs
a0dldEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVt
ZW50RGVzdCwgVmlydHVhbFJlZ2lzdGVyIGNvdW50RGVzdCwgSlNWYWx1ZSBhcmd1bWVudHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYu
YXBwbHkoeCwgYXJndW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAg
dW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7CkBAIC0yMjIsMTYgKzIyMiwxNCBAQCB2b2lkIGxvYWRWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDCiAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtPSBmaXJzdFZhckFyZ09mZnNldDsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICBuZXdDYWxsRnJhbWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKKyAgICAg
ICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgICAgICBuZXdDYWxsRnJh
bWUtPnNldEFyZ3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgY2FsbEZyYW1lLT5hcmd1bWVu
dEFmdGVyQ2FwdHVyZShpKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZmlyc3RFbGVtZW50
RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJD
YXB0dXJlKGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChhcmd1bWVu
dHMuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNW
YWx1ZSh0aGlzVmFsdWUpOworICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0KS5wYXlsb2Fk
KCkgPSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjQwLDExICsyMzgsMTAg
QEAgdm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQwogICAgICAgICB1bnNp
Z25lZCBhcmdDb3VudCA9IGFyZ3NPYmplY3QtPmxlbmd0aChjYWxsRnJhbWUpOwogICAgICAgICBp
ZiAoYXJnQ291bnQgPj0gZmlyc3RWYXJBcmdPZmZzZXQpIHsKICAgICAgICAgICAgIGFyZ0NvdW50
IC09IGZpcnN0VmFyQXJnT2Zmc2V0OwotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudCArIDEpOwotICAgICAgICAgICAgYXJnc09i
amVjdC0+Y29weVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmdDb3VudCwg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCku
cGF5bG9hZCgpID0gYXJnQ291bnQgKyAxOworICAgICAgICAgICAgYXJnc09iamVjdC0+Y29weVRv
QXJndW1lbnRzKGNhbGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgYXJnQ291bnQsIGZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dFRoaXNWYWx1ZSh0aGlzVmFsdWUpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVz
dCkucGF5bG9hZCgpID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI1Mywx
MSArMjUwLDEwIEBAIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEMKICAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIGlmIChh
cmdDb3VudCA+PSBmaXJzdFZhckFyZ09mZnNldCkgewogICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7Ci0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50ICsgMSk7Ci0gICAgICAgICAgICBhcnJheS0+Y29w
eVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmdDb3VudCwgZmlyc3RWYXJB
cmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgp
ID0gYXJnQ291bnQgKyAxOworICAgICAgICAgICAgYXJyYXktPmNvcHlUb0FyZ3VtZW50cyhjYWxs
RnJhbWUsIGZpcnN0RWxlbWVudERlc3QsIGFyZ0NvdW50LCBmaXJzdFZhckFyZ09mZnNldCk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygxKTsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhp
c1ZhbHVlKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxvYWQoKSA9
IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yNjUsMTggKzI2MSwzNCBAQCB2
b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDCiAgICAgdW5zaWduZWQgYXJn
Q291bnQgPSBhcmdPYmplY3QtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBpZiAoYXJnQ291bnQgPj0gZmly
c3RWYXJBcmdPZmZzZXQpIHsKICAgICAgICAgYXJnQ291bnQgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7
Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJn
Q291bnQgKyAxKTsKKyAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0g
YXJnQ291bnQgKyAxOwogICAgIH0gZWxzZQotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOworICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0
KS5wYXlsb2FkKCkgPSAxOwogCi0gICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1Zh
bHVlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50OyArK2kpIHsKLSAgICAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBhc09iamVjdChhcmd1bWVudHMpLT5nZXQo
Y2FsbEZyYW1lLCBpICsgZmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAgICAgY2FsbEZyYW1lLT5y
KGZpcnN0RWxlbWVudERlc3QgKyBpKSA9IGFzT2JqZWN0KGFyZ3VtZW50cyktPmdldChjYWxsRnJh
bWUsIGkgKyBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPnZtKCkuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAor
dm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3sK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRnJhbWVPZmZzZXQobmV3Q2FsbEZyYW1lIC0gY2Fs
bEZyYW1lKTsKKyAgICAKKyAgICBidWxrR2V0QnlWYWwoCisgICAgICAgIGNhbGxGcmFtZSwKKyAg
ICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApLAor
ICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsCisgICAg
ICAgIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworfQorCit2b2lkIGxvYWRWYXJhcmdz
QW5kU2V0VGhpcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpCit7CisgICAgbG9hZFZhcmFyZ3MoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFy
Z3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1Zh
bHVlKHRoaXNWYWx1ZSk7Cit9CisKIEludGVycHJldGVyOjpJbnRlcnByZXRlcihWTSYgdm0pCiAg
ICAgOiBtX3NhbXBsZUVudHJ5RGVwdGgoMCkKICAgICAsIG1fdm0odm0pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqKTsKLSAgICBDYWxsRnJhbWUqIHNp
emVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiwgSlNTdGFjayosIEpTVmFsdWUsIGludCwgdWlu
dDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1l
KiwgQ2FsbEZyYW1lKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQpOworICAgIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWMs
IEpTU3RhY2sqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMs
IHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICB2b2lkIGJ1bGtHZXRCeVZhbChDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCBWaXJ0
dWFsUmVnaXN0ZXIgY291bnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0KTsK
KyAgICB2b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBl
eGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQp
OworICAgIHZvaWQgbG9hZFZhcmFyZ3NBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxlciwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVu
dHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMs
OSArMjUzLDE3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZvaWQgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnks
IEdQUlJlZyB0bykKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8sIEdQUlJlZyBmcm9tID0g
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCiAgICAgewotICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSks
IHRvKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lz
dGVyKSksIHRvKTsKKyAgICB9CisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMy
KEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8sIEdQUlJlZyBm
cm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCisgICAgeworICAgICAgICBsb2FkMzIo
QWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CisgICAgfQorICAg
IHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXI2NChKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9IEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MoZnJvbSwgZW50cnkgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgdG8pOwogICAgIH0KICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcihHUFJSZWcgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkp
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNzk3NjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY0MiwxMSArNjQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KTsKIAogICAgICAgICB2b2lkIGVtaXRQdXRJ
bnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlckVudHJ5KTsKLSAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBm
cm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8s
IFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyNjQoSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSNlbmRpZgogCiAgICAgICAgIEpTVmFsdWUgZ2V0Q29uc3RhbnRPcGVy
YW5kKGludCBzcmMpOwogICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50
KGludCBzcmMpOwpAQCAtNzM1LDcgKzczMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpKWiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwg
aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkksIFN0cnVjdHVyZVN0dWJJbmZv
KiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5n
SW1wbCopOwpAQCAtNzUwLDcgKzc0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNl
cHRpb24oVl9KSVRPcGVyYXRpb25fRUNiLCBDb2RlQmxvY2sqKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9u
KFpfSklUT3BlcmF0aW9uX0UpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKSlosIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIGlu
dDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklU
T3BlcmF0aW9uX0VGSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIGludDMy
X3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3Bl
cmF0aW9uX0VKWlosIEdQUlJlZywgR1BSUmVnLCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQWFwSiwg
aW50LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgR1BSUmVnLCBHUFJSZWcpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKLCBpbnQs
IEdQUlJlZywgR1BSUmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG9hZFZhcmFyZ3MuaCIKICNp
bmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1
ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtMTMwLDY4ICsxMzEsMjggQEAgdm9pZCBKSVQ6OmNvbXBp
bGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGlmIChjYW5PcHRpbWl6ZSkgewogICAgICAg
ICBlbWl0TG9hZFRhZyhhcmd1bWVudHMsIHJlZ1QxKTsKICAgICAgICAgc2xvd0Nhc2UuYXBwZW5k
KGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKSk7Ci0KLSAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRD
b3VudCksIHJlZ1QyKTsKLSAgICAgICAgaWYgKGZpcnN0VmFyQXJnT2Zmc2V0KSB7Ci0gICAgICAg
ICAgICBKdW1wIHN1ZmZpY2llbnRBcmd1bWVudHMgPSBicmFuY2gzMihHcmVhdGVyVGhhbiwgcmVn
VDIsIFRydXN0ZWRJbW0zMihmaXJzdFZhckFyZ09mZnNldCArIDEpKTsKLSAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMik7Ci0gICAgICAgICAgICBKdW1wIGVuZFZhckFyZ3Mg
PSBqdW1wKCk7Ci0gICAgICAgICAgICBzdWZmaWNpZW50QXJndW1lbnRzLmxpbmsodGhpcyk7Ci0g
ICAgICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoZmlyc3RWYXJBcmdPZmZzZXQpLCByZWdUMik7
Ci0gICAgICAgICAgICBlbmRWYXJBcmdzLmxpbmsodGhpcyk7Ci0gICAgICAgIH0KLSAgICAgICAg
c2xvd0Nhc2UuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFyZ3Vt
ZW50czo6TWF4QXJndW1lbnRzICsgMSkpKTsKLSAgICAgICAgLy8gcmVnVDI6IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzCi0KLSAgICAgICAgbW92ZShyZWdUMiwgcmVnVDMpOwotICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKC1maXJzdEZyZWVSZWdpc3RlciArIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUpLCByZWdUMyk7Ci0gICAgICAgIC8vIHJlZ1QxIG5vdyBoYXMgdGhlIHJlcXVp
cmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKLSAgICAgICAgLy8gUm91bmQgcmVnVDEg
dG8gbmV4dCBtdWx0aXBsZSBvZiBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpCi0gICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpLCByZWdUMyk7
Ci0gICAgICAgIGFuZFB0cihUcnVzdGVkSW1tMzIofihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
IC0gMSkpLCByZWdUMyk7Ci0gICAgICAgIG5lZzMyKHJlZ1QzKTsKLSAgICAgICAgbHNoaWZ0MzIo
VHJ1c3RlZEltbTMyKDMpLCByZWdUMyk7Ci0gICAgICAgIGFkZFB0cihjYWxsRnJhbWVSZWdpc3Rl
ciwgcmVnVDMpOwotICAgICAgICAvLyByZWdUMzogbmV3Q2FsbEZyYW1lCi0KLSAgICAgICAgc2xv
d0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJl
c3NPZlN0YWNrTGltaXQoKSksIHJlZ1QzKSk7Ci0KLSAgICAgICAgLy8gSW5pdGlhbGl6ZSBBcmd1
bWVudENvdW50LgotICAgICAgICBzdG9yZTMyKHJlZ1QyLCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQsIHJlZ1QzKSk7Ci0KLSAgICAgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycuCi0g
ICAgICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgc3RvcmUz
MihyZWdUMCwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpICsgKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAgICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRy
ZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSArIChDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSkpKTsKLQotICAgICAgICAvLyBDb3B5IGFyZ3VtZW50cy4KLSAgICAgICAgZW5kLmFw
cGVuZChicmFuY2hTdWIzMihaZXJvLCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QyKSk7Ci0gICAgICAg
IC8vIHJlZ1QyOiBhcmd1bWVudENvdW50OwotCi0gICAgICAgIExhYmVsIGNvcHlMb29wID0gbGFi
ZWwoKTsKLSAgICAgICAgbG9hZDMyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIs
IFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSAr
KChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgZmlyc3RWYXJBcmdPZmZzZXQpICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpLCByZWdUMCk7Ci0gICAgICAgIGxv
YWQzMihCYXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSArKChDYWxsRnJhbWU6OnRoaXNBcmd1
bWVudE9mZnNldCgpICsgZmlyc3RWYXJBcmdPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSkpLCByZWdUMSk7Ci0gICAgICAgIHN0b3JlMzIocmVnVDAsIEJhc2VJbmRl
eChyZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy5wYXlsb2FkKSArKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAgICAgICBzdG9yZTMyKHJlZ1QxLCBC
YXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMudGFnKSArKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAgICAgICBicmFuY2hTdWIzMihO
b25aZXJvLCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QyKS5saW5rVG8oY29weUxvb3AsIHRoaXMpOwot
CisgICAgICAgIAorICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigtZmlyc3RGcmVlUmVnaXN0ZXIp
LCByZWdUMSk7CisgICAgICAgIGVtaXRMb2FkVmFyYXJnc0Zhc3RDYXNlKCp0aGlzLCByZWdUMSwg
cmVnVDAsIHJlZ1QxLCByZWdUMiwgMCwgZmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKICAg
ICAgICAgZW5kLmFwcGVuZChqdW1wKCkpOwotICAgIH0KLQotICAgIGlmIChjYW5PcHRpbWl6ZSkK
ICAgICAgICAgc2xvd0Nhc2UubGluayh0aGlzKTsKKyAgICB9CiAKICAgICBlbWl0TG9hZChhcmd1
bWVudHMsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJh
bWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFy
Z09mZnNldCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgcmV0dXJuVmFsdWVHUFIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBlbWl0TG9h
ZCh0aGlzVmFsdWUsIHJlZ1QxLCByZWdUNCk7Ci0gICAgZW1pdExvYWQoYXJndW1lbnRzLCByZWdU
MywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIHJldHVy
blZhbHVlR1BSLCByZWdUMSwgcmVnVDQsIHJlZ1QzLCByZWdUMiwgZmlyc3RWYXJBcmdPZmZzZXQp
OworICAgIGVtaXRMb2FkKGFyZ3VtZW50cywgcmVnVDEsIHJlZ1QwKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCByZXR1cm5WYWx1ZUdQUiwgcmVnVDEsIHJlZ1QwLCBm
aXJzdFZhckFyZ09mZnNldCk7CiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDMpOwogCiAg
ICAgaWYgKGNhbk9wdGltaXplKQogICAgICAgICBlbmQubGluayh0aGlzKTsKIAorICAgIC8vIElu
aXRpYWxpemUgJ3RoaXMnLgorICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVnVDEsIHJlZ1QwKTsK
KyAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMucGF5bG9hZCkgKyAoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKSk7CisgICAgc3RvcmUzMihyZWdU
MSwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykg
KyAoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpKSk7CisgICAgCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMywgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3OTc2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNs
dWRlICJMb2FkVmFyYXJncy5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCkBAIC03MCw2NiArNzEs
MjcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGlmIChj
YW5PcHRpbWl6ZSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywg
cmVnVDApOwogICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1Qw
LCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpKSk7Ci0KLSAgICAgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpBcmd1bWVudENvdW50LCByZWdU
MCk7Ci0gICAgICAgIGlmIChmaXJzdFZhckFyZ09mZnNldCkgewotICAgICAgICAgICAgSnVtcCBz
dWZmaWNpZW50QXJndW1lbnRzID0gYnJhbmNoMzIoR3JlYXRlclRoYW4sIHJlZ1QwLCBUcnVzdGVk
SW1tMzIoZmlyc3RWYXJBcmdPZmZzZXQgKyAxKSk7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwotICAgICAgICAgICAgSnVtcCBlbmRWYXJBcmdzID0ganVtcCgpOwot
ICAgICAgICAgICAgc3VmZmljaWVudEFyZ3VtZW50cy5saW5rKHRoaXMpOwotICAgICAgICAgICAg
c3ViMzIoVHJ1c3RlZEltbTMyKGZpcnN0VmFyQXJnT2Zmc2V0KSwgcmVnVDApOwotICAgICAgICAg
ICAgZW5kVmFyQXJncy5saW5rKHRoaXMpOwotICAgICAgICB9Ci0gICAgICAgIHNsb3dDYXNlLmFw
cGVuZChicmFuY2gzMihBYm92ZSwgcmVnVDAsIFRydXN0ZWRJbW0zMihBcmd1bWVudHM6Ok1heEFy
Z3VtZW50cyArIDEpKSk7Ci0gICAgICAgIC8vIHJlZ1QwOiBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcwotICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7Ci0gICAgICAgIGFkZDY0KFRydXN0ZWRJ
bW0zMigtZmlyc3RGcmVlUmVnaXN0ZXIgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSwg
cmVnVDEpOwotICAgICAgICAvLyByZWdUMSBub3cgaGFzIHRoZSByZXF1aXJlZCBmcmFtZSBzaXpl
IGluIFJlZ2lzdGVyIHVuaXRzCi0gICAgICAgIC8vIFJvdW5kIHJlZ1QxIHRvIG5leHQgbXVsdGlw
bGUgb2Ygc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKQotICAgICAgICBhZGQ2NChUcnVzdGVkSW1t
MzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpLCByZWdUMSk7Ci0gICAgICAgIGFuZDY0
KFRydXN0ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSksIHJlZ1QxKTsK
LQotICAgICAgICBuZWc2NChyZWdUMSk7Ci0gICAgICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigz
KSwgcmVnVDEpOwotICAgICAgICBhZGRQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxKTsKLSAg
ICAgICAgLy8gcmVnVDE6IG5ld0NhbGxGcmFtZQotCi0gICAgICAgIHNsb3dDYXNlLmFwcGVuZChi
cmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTdGFja0xpbWl0
KCkpLCByZWdUMSkpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemUgQXJndW1lbnRDb3VudC4KLSAg
ICAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7Ci0KLSAgICAgICAgLy8g
SW5pdGlhbGl6ZSAndGhpcycuCi0gICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1Zh
bHVlLCByZWdUMik7Ci0gICAgICAgIHN0b3JlNjQocmVnVDIsIEFkZHJlc3MocmVnVDEsIENhbGxG
cmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpKSk7Ci0KLSAgICAgICAgLy8gQ29weSBhcmd1bWVudHMuCi0gICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKHJlZ1QwLCByZWdUMCk7Ci0gICAgICAgIGVuZC5hcHBlbmQoYnJhbmNoU3ViNjQo
WmVybywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMCkpOwotICAgICAgICAvLyByZWdUMDogYXJndW1l
bnRDb3VudAotCi0gICAgICAgIExhYmVsIGNvcHlMb29wID0gbGFiZWwoKTsKLSAgICAgICAgbG9h
ZDY0KEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDAsIFRpbWVzRWlnaHQsIChDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgZmlyc3RWYXJBcmdPZmZzZXQpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJlZ1QyKTsKLSAgICAgICAgc3RvcmU2NChy
ZWdUMiwgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNFaWdodCwgQ2FsbEZyYW1lOjp0aGlz
QXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsK
LSAgICAgICAgYnJhbmNoU3ViNjQoTm9uWmVybywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMCkubGlu
a1RvKGNvcHlMb29wLCB0aGlzKTsKLQorICAgICAgICAKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIoLWZpcnN0RnJlZVJlZ2lzdGVyKSwgcmVnVDEpOworICAgICAgICBlbWl0TG9hZFZhcmFyZ3NG
YXN0Q2FzZSgqdGhpcywgcmVnVDEsIHJlZ1QwLCByZWdUMSwgcmVnVDIsIDAsIGZpcnN0VmFyQXJn
T2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAgIGVuZC5hcHBlbmQoanVtcCgpKTsKLSAgICB9Ci0K
LSAgICBpZiAoY2FuT3B0aW1pemUpCiAgICAgICAgIHNsb3dDYXNlLmxpbmsodGhpcyk7CisgICAg
fQogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1QxKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIHJlZ1QxLCBmaXJzdEZy
ZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgcmVnVDEsIC1maXJzdEZyZWVSZWdpc3RlciwgZmlyc3RW
YXJBcmdPZmZzZXQpOwogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWYWx1ZSwgcmVnVDEpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmV0dXJuVmFsdWVHUFIsIHJlZ1QxLCByZWdUMiwg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRz
LCByZWdUMSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmV0dXJu
VmFsdWVHUFIsIHJlZ1QxLCBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgbW92ZShyZXR1cm5WYWx1
ZUdQUiwgcmVnVDEpOwogCiAgICAgaWYgKGNhbk9wdGltaXplKQogICAgICAgICBlbmQubGluayh0
aGlzKTsKICAgICAKKyAgICAvLyBJbml0aWFsaXplICd0aGlzJy4KKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHRoaXNWYWx1ZSwgcmVnVDApOworICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3Mo
cmVnVDEsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7CisKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIHJlZ1QxLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAxNzk3NjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtOTgsMjMgKzk4LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dEludFRv
Q2FsbAogI2VuZGlmCiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdp
c3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCi17Ci0gICAgbG9hZFB0cihBZGRyZXNzKGZyb20s
IGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQotewotICAgIGxv
YWQzMihBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLX0KLQot
I2lmIFVTRShKU1ZBTFVFNjQpCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlcjY0KEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdp
c3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCi17Ci0gICAgbG9hZDY0KEFkZHJlc3MoZnJvbSwg
ZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwotfQotI2VuZGlmCi0KIEFMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVzKQogewogICAgIGZhaWx1cmVzLmFwcGVuZChi
cmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTM5Miw5ICszNzUs
OSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAotQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRp
b25fRUZKSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
LCBpbnQzMl90IGFyZzQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBpbnQzMl90IGFyZzMpCiB7Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIFRydXN0ZWRJbW0zMihhcmc0KSk7CisgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW0zMihhcmczKSk7CiAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIApA
QCAtNTM5LDkgKzUyMiw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklU
OjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
fQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihGX0pJVE9wZXJhdGlvbl9FRkpKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXls
b2FkLCBpbnQzMl90IGFyZzQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIGludDMyX3QgYXJnMykKIHsK
LSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJU
YWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnLCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3Rl
ZEltbTMyKGFyZzMpKTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjA0LDIzICsxNjA0
LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAotQ2FsbEZyYW1lKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IGZpcnN0RnJlZVJlZ2lz
dGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQorQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90
IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIEpTU3RhY2sqIHN0YWNr
ID0gJmV4ZWMtPmludGVycHJldGVyKCktPnN0YWNrKCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7Ci0gICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBzaXplRnJhbWVGb3JWYXJhcmdzKGV4ZWMsIHN0YWNrLCBhcmd1bWVudHMsIGZp
cnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBzaXplRnJhbWVGb3JWYXJhcmdzKGV4ZWMsIHN0YWNrLCBhcmd1bWVudHMsIG51
bVVzZWRTdGFja1Nsb3RzLCBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgcmV0dXJuIG5ld0NhbGxG
cmFtZTsKIH0KIAotQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvYWRWYXJhcmdz
KEV4ZWNTdGF0ZSogZXhlYywgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0KQorQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvYWRW
YXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFRoaXMpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRBcmd1bWVudHMpOwotICAgIGxvYWRWYXJhcmdzKGV4ZWMsIG5ld0NhbGxGcmFtZSwgdGhpc1Zh
bHVlLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICBsb2FkVmFyYXJncyhleGVj
LCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIHJldHVy
biBuZXdDYWxsRnJhbWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBleHRl
cm4gIkMiIHsKICAgICBaOiBpbnQzMl90CiAqLwogCi10eXBlZGVmIENhbGxGcmFtZSogSklUX09Q
RVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VGSkpaKShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiBDYWxsRnJh
bWUqIEpJVF9PUEVSQVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FRkpaKShFeGVjU3RhdGUqLCBDYWxs
RnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CiB0eXBlZGVmIENhbGxGcmFtZSogSklU
X09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VKWlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUEpKEV4ZWNTdGF0ZSosIEpTQXJy
YXkqKTsKQEAgLTMwOSw4ICszMDksOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGVh
ck9mZkFyZ3VtCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgY29uc3QgSWRlbnRpZmllciopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIHByb3RvKSBXVEZfSU5URVJOQUw7Ci1DYWxsRnJhbWUqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpIFdURl9JTlRFUk5BTDsKLUNhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRp
b25Mb2FkVmFyYXJncyhFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCkgV1RGX0lOVEVSTkFMOworQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVG
cmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQz
Ml90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KSBXVEZfSU5U
RVJOQUw7CitDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9hZFZhcmFyZ3MoRXhl
Y1N0YXRlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtu
b3duS2V5VHlwZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUlu
ZGV4KSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0xvYWRW
YXJhcmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0xvYWRW
YXJhcmdzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvTG9h
ZFZhcmFyZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkxvYWRWYXJhcmdzLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0YWNrQWxp
Z25tZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIGVtaXRMb2FkVmFyYXJnc0Zhc3RD
YXNlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVXNlZFNsb3RzR1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgR1BSUmVnIHNjcmF0Y2hHUFIzLCBpbnQgaW5s
aW5lU3RhY2tPZmZzZXQsIHVuc2lnbmVkIGZpcnN0VmFyQXJnT2Zmc2V0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93Q2FzZSkKK3sKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGVuZDsK
KyAgICAKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgKGlubGluZVN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCksIHNjcmF0Y2hHUFIxKTsKKyAg
ICBpZiAoZmlyc3RWYXJBcmdPZmZzZXQpIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHN1
ZmZpY2llbnRBcmd1bWVudHMgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpHcmVhdGVyVGhh
biwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGZpcnN0VmFyQXJnT2Zm
c2V0ICsgMSkpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgc2NyYXRjaEdQUjEpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZW5kVmFyQXJncyA9
IGppdC5qdW1wKCk7CisgICAgICAgIHN1ZmZpY2llbnRBcmd1bWVudHMubGluaygmaml0KTsKKyAg
ICAgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGZpcnN0VmFyQXJnT2Zm
c2V0KSwgc2NyYXRjaEdQUjEpOworICAgICAgICBlbmRWYXJBcmdzLmxpbmsoJmppdCk7CisgICAg
fQorICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwg
c2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50czo6TWF4QXJn
dW1lbnRzICsgMSkpKTsKKyAgICAvLyBzY3JhdGNoR1BSMTogYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMKKyAgICBqaXQubW92ZShudW1Vc2VkU2xvdHNHUFIsIHNjcmF0Y2hHUFIyKTsKKyAgICBq
aXQuYWRkUHRyKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMik7CisgICAgaml0LmFkZFB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSwgc2Ny
YXRjaEdQUjIpOworICAgIC8vIHNjcmF0Y2hHUFIyIG5vdyBoYXMgdGhlIHJlcXVpcmVkIGZyYW1l
IHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKKyAgICAvLyBSb3VuZCBzY3JhdGNoR1BSMiB0byBuZXh0
IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKKyAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSwg
c2NyYXRjaEdQUjIpOworICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
fihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCBzY3JhdGNoR1BSMik7CisKKyAgICBq
aXQubmVnUHRyKHNjcmF0Y2hHUFIyKTsKKyAgICBqaXQubHNoaWZ0UHRyKENDYWxsSGVscGVyczo6
SW1tMzIoMyksIHNjcmF0Y2hHUFIyKTsKKyAgICBqaXQuYWRkUHRyKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBzY3JhdGNoR1BSMik7CisgICAgLy8gc2NyYXRjaEdQUjI6IG5ld0NhbGxGcmFt
ZQorCisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpBYm92
ZSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Moaml0LnZtKCktPmFkZHJlc3NPZlN0YWNr
TGltaXQoKSksIHNjcmF0Y2hHUFIyKSk7CisKKyAgICAvLyBJbml0aWFsaXplIEFyZ3VtZW50Q291
bnQuCisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSMiwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CisKKyAgICAvLyBDb3B5IGFyZ3VtZW50
cy4KKyAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsK
KyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5icmFuY2hTdWJQdHIoQ0NhbGxIZWxw
ZXJzOjpaZXJvLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaEdQUjEpOwor
ICAgIC8vIHNjcmF0Y2hHUFIxOiBhcmd1bWVudENvdW50CisKKyAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGNvcHlMb29wID0gaml0LmxhYmVsKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQu
bG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCAoQ2FsbEZyYW1lOjp0aGlz
QXJndW1lbnRPZmZzZXQoKSArIGlubGluZVN0YWNrT2Zmc2V0ICsgZmlyc3RWYXJBcmdPZmZzZXQp
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHNjcmF0Y2hHUFIzKTsKKyAg
ICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRj
aEdQUjIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSwgc28gdGhpcyBiZWdpbnMgdGhlIDMyLWJpdCBj
YXNlCisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgKENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVTdGFja09mZnNldCArIGZpcnN0
VmFyQXJnT2Zmc2V0ICsgVGFnT2Zmc2V0KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkpLCBzY3JhdGNoR1BSMyk7CisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjMsIENDYWxs
SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJz
OjpUaW1lc0VpZ2h0LCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOworICAgIGppdC5sb2FkMzIo
Q0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHNjcmF0
Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIChDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpICsgaW5saW5lU3RhY2tPZmZzZXQgKyBmaXJzdFZhckFyZ09mZnNldCArIFBheWxv
YWRPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHNjcmF0Y2hH
UFIzKTsKKyAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJzOjpCYXNlSW5k
ZXgoc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpLCBl
bmQgb2YgMzItYml0IGNhc2UKKyAgICBqaXQuYnJhbmNoU3ViUHRyKENDYWxsSGVscGVyczo6Tm9u
WmVybywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2hHUFIxKS5saW5rVG8o
Y29weUxvb3AsICZqaXQpOworICAgIAorICAgIGRvbmUubGluaygmaml0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0xvYWRWYXJhcmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Mb2FkVmFyYXJncy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Mb2FkVmFyYXJncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMb2FkVmFyYXJnc19oCisjZGVmaW5lIExvYWRWYXJhcmdzX2gKKworI2lmIEVOQUJMRShKSVQp
CisKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEFzc3VtZXMgdGhhdCBTUCByZWZlcnMgdG8gdGhl
IGxhc3QgaW4tdXNlIHN0YWNrIGxvY2F0aW9uLCBhbmQgYWZ0ZXIgdGhpcyByZXR1cm5zIFNQIHdp
bGwgcG9pbnQgdG8KKy8vIHRoZSBuZXdseSBjcmVhdGVkIGZyYW1lIHBsdXMgdGhlIG5hdGl2ZSBo
ZWFkZXIuIHNjcmF0Y2hHUFIyIG1heSBiZSB0aGUgc2FtZSBhcyBudW1Vc2VkU2xvdHNHUFIuCit2
b2lkIGVtaXRMb2FkVmFyYXJnc0Zhc3RDYXNlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVt
VXNlZFNsb3RzR1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgR1BS
UmVnIHNjcmF0Y2hHUFIzLCBpbnQgaW5saW5lU3RhY2tPZmZzZXQsIHVuc2lnbmVkIGZpcnN0VmFy
QXJnT2Zmc2V0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93Q2FzZSk7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIExvYWRWYXJh
cmdzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY1LDcgKzExNjUsNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtCiAgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4K
ICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBzaXplRnJhbWVGb3JWYXJhcmdzKGV4
ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwKLSAgICAgICAgTExJTlRfT1BfQyg0KS5qc1Zh
bHVlKCksIHBjWzVdLnUub3BlcmFuZCwgcGNbNl0udS5vcGVyYW5kKTsKKyAgICAgICAgTExJTlRf
T1BfQyg0KS5qc1ZhbHVlKCksIC1wY1s1XS51Lm9wZXJhbmQsIHBjWzZdLnUub3BlcmFuZCk7CiAg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCiAgICAgdm0u
bmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWUgPSBleGVjQ2FsbGVlOwpAQCAtMTE4NCw3ICsxMTg0LDcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYQogICAgIAogICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJldHVyblZhbHVlOwogCi0gICAg
bG9hZFZhcmFyZ3MoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOworICAgIGxvYWRWYXJhcmdz
QW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCk7CiAgICAgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKQEAgLTEyMDUsNyArMTIwNSw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QKICAgICAKICAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKICAgICAK
LSAgICBsb2FkVmFyYXJncyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCk7CisgICAgbG9hZFZh
cmFyZ3NBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSwgcGNbNl0udS5vcGVyYW5kKTsKICAgICBMTElOVF9D
QUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBleGVjKTsKICAgICAKICAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAxNzk3NjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENv
cHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgpAQCAtODcsMjIgKzg3LDI1IEBAIHZv
aWQgQXJndW1lbnRzOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCoKICAgICAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFyZ3VtZW50c0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUq
KTsKIAotdm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCB1aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0KQordm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4
ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1aW50MzJfdCBjb3B5TGVuZ3Ro
LCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIHVpbnQzMl90IGxlbmd0aCA9IGNv
cHlMZW5ndGggKyBmaXJzdFZhckFyZ09mZnNldDsKIAogICAgIGlmIChVTkxJS0VMWShtX292ZXJy
b2RlTGVuZ3RoKSkgewogICAgICAgICBsZW5ndGggPSBtaW4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpLCBsZW5ndGgpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAg
ICAgICAgY2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBnZXQoZXhlYywgaSkpOworICAgICAgICAg
ICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IGdl
dChleGVjLCBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQobGVuZ3RoID09
IHRoaXMtPmxlbmd0aChleGVjKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0VmFyQXJnT2Zm
c2V0OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSB0cnlH
ZXRBcmd1bWVudChpKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZp
cnN0VmFyQXJnT2Zmc2V0LCB2YWx1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxG
cmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCBnZXQoZXhlYywgaSkpOwor
ICAgICAgICAgICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zm
c2V0KSA9IHZhbHVlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4ZWMtPnIoZmlyc3RF
bGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBnZXQoZXhlYywgaSk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+dm0oKS5leGNlcHRpb24oKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTc5NzYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3
YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1h
a3MgT3Jsb3ZpY2gKICAqCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fbnVtQXJndW1lbnRzOyAKICAgICB9CiAgICAgICAgIAotICAgIHZvaWQgY29weVRvQXJndW1l
bnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGNvcHlMZW5ndGgsIGludDMyX3Qg
Zmlyc3RBcmd1bWVudE9mZnNldCk7CisgICAgdm9pZCBjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRl
KiwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVpbnQzMl90IGNvcHlMZW5ndGgs
IGludDMyX3QgZmlyc3RBcmd1bWVudE9mZnNldCk7CiAgICAgdm9pZCB0ZWFyT2ZmKENhbGxGcmFt
ZSopOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqLCBJbmxpbmVDYWxsRnJhbWUqKTsKICAg
ICB2b2lkIHRlYXJPZmZGb3JDbG9uaW5nKENhbGxGcmFtZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTE1NzAsNyArMTU3MCw3IEBAIHZvaWQgSlNBcnJh
eTo6ZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiBleGUKICAgICAgICAgYXJncy5hcHBlbmQoZ2V0KGV4
ZWMsIGkpKTsKIH0KIAotdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKiBl
eGVjLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdWludDMyX3QgY29weUxlbmd0aCwgaW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCkKK3ZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0
ZSogZXhlYywgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVpbnQzMl90IGNvcHlM
ZW5ndGgsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCiB7CiAgICAgdW5zaWduZWQgaSA9IGZp
cnN0VmFyQXJnT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yOwpAQCAt
MTYwMiw3ICsxNjAyLDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRl
KgogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
W2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCBK
U1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2KSk7CisgICAgICAgICAgICBleGVjLT5y
KGZpcnN0RWxlbWVudERlc3QgKyBpIC0gZmlyc3RWYXJBcmdPZmZzZXQpID0gSlNWYWx1ZShKU1Zh
bHVlOjpFbmNvZGVBc0RvdWJsZSwgdik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTYyNywxMSArMTYyNywxNCBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhF
eGVjU3RhdGUqCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdiA9IHZlY3RvcltpXTsK
ICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhbGxGcmFtZS0+
c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCB2LmdldCgpKTsKKyAgICAgICAgZXhl
Yy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IHYuZ2V0KCk7
CiAgICAgfQogICAgIAotICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIGNhbGxG
cmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCBnZXQoZXhlYywgaSkpOwor
ICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZXhlYy0+cihmaXJzdEVsZW1l
bnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IGdldChleGVjLCBpKTsKKyAgICAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KIH0KIAogdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTc5
NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTEzMiw3ICsx
MzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxs
QXJnTGlzdChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVp
bnQzMl90IGxlbmd0aCwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKiwgVmlydHVhbFJlZ2lzdGVy
IGZpcnN0RWxlbWVudERlc3QsIHVpbnQzMl90IGxlbmd0aCwgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCk7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246278</attachid>
            <date>2015-02-09 10:52:41 -0800</date>
            <delta_ts>2015-02-09 12:13:04 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>59950</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDE1LTAyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFyYXJncyBmcmFtZSBzZXQtdXAgc2hvdWxkIGJlIGZhY3RvcmVkIG91dCBmb3IgdXNlIGJ5IG90
aGVyIEpJVHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MTM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSB0aGUgY29kZSB0aGF0IGRlYWx0IHdpdGggdmFyYXJncyBhbHdh
eXMgYXNzdW1lZCB0aGF0IHdlIHdlcmUgc2V0dGluZyB1cCBhIHZhcmFyZ3MgY2FsbAorICAgICAg
ICBmcmFtZSBieSBsaXRlcmFsbHkgZm9sbG93aW5nIHRoZSBleGVjdXRpb24gc2VtYW50aWNzIG9m
IG9wX2NhbGxfdmFyYXJncy4gVGhpcyBpc24ndCBob3cgaXQnbGwKKyAgICAgICAgaGFwcGVuIG9u
Y2UgdGhlIERGRyBhbmQgRlRMIGRvIHZhcmFyZ3MgY2FsbHMsIG9yIHdoZW4gdmFyYXJncyBjYWxs
cyBnZXQgaW5saW5lZC4gVGhlIERGRyBhbmQgRlRMCisgICAgICAgIGRvbid0IGxpdGVyYWxseSBl
eGVjdXRlIGJ5dGVjb2RlOyBmb3IgZXhhbXBsZSB0aGVpciBzdGFjayBmcmFtZSBsYXlvdXQgaGFz
IGFic29sdXRlbHkgbm90aGluZyBpbgorICAgICAgICBjb21tb24gd2l0aCB3aGF0IHRoZSBieXRl
Y29kZSBzYXlzLCBhbmQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgdHdvIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICBTZXR0aW5n
IHVwIHRoZSB2YXJhcmdzIGNhbGxlZSBmcmFtZSBjYW4gYmUgZG9uZSBpbiBzbWFsbGVyIHN0ZXBz
OiBwYXJ0aWN1bGFybHkgaW4gdGhlIGNhc2Ugb2YgYQorICAgICAgICB2YXJhcmdzIGNhbGwgdGhh
dCBnZXRzIGlubGluZWQsIHdlIGFyZW4ndCBnb2luZyB0byBhY3R1YWxseSB3YW50IHRvIHNldCB1
cCBhIGNhbGxlZSBmcmFtZSBpbgorICAgICAgICBmdWxsIC0gd2UganVzdCB3YW50IHRvIHB1dCB0
aGUgYXJndW1lbnRzIHNvbWV3aGVyZSwgYW5kIHRoYXQgcGxhY2Ugd2lsbCBub3QgaGF2ZSBtdWNo
IChpZgorICAgICAgICBhbnl0aGluZykgaW4gY29tbW9uIHdpdGggdGhlIGNhbGwgZnJhbWUgZm9y
bWF0LiBUaGlzIHBhdGNoIGZhY3RvcnMgdGhhdCBvdXQgaW50byBzb21ldGhpbmcgY2FsbGVkCisg
ICAgICAgIGEgYnVsa0dldEJ5VmFsLiBUaGlzIHBhdGNoIGFsc28gc2VwYXJhdGVzIGxvYWRpbmcg
dmFyYXJncyBmcm9tIHNldHRpbmcgdGhpcywgc2luY2UgdGhlIGZhY3QgdGhhdAorICAgICAgICB0
aG9zZSB0d28gdGhpbmdzIGFyZSBkb25lIHRvZ2V0aGVyIGlzIGEgZGV0YWlsIG1hZGUgZXhwbGlj
aXQgaW4gYnl0ZWNvZGUgYnV0IGl0J3Mgbm90IGF0IGFsbAorICAgICAgICByZXF1aXJlZCBpbiB0
aGUgaGlnaGVyLXRpZXIgZW5naW5lcy4gSW4gdGhlIHByb2Nlc3Mgb2YgZmFjdG9yaW5nIHRoaXMg
Y29kZSBvdXQsIEkgZm91bmQgYSBidW5jaAorICAgICAgICBvZiBvZmYtYnktb25lIGVycm9ycyBp
biB0aGUgdmFyaW91cyBjYWxjdWxhdGlvbnMuIEkgZml4ZWQgdGhlbS4gVGhlIGRpc3RhbmNlIGZy
b20gdGhlIGNhbGxlcidzCisgICAgICAgIGZyYW1lIHBvaW50ZXIgdG8gdGhlIGNhbGxlZSBmcmFt
ZSBwb2ludGVyIGlzIGFsd2F5czoKKyAgICAgICAgCisgICAgICAgICAgICBudW1Vc2VkQ2FsbGVy
U2xvdHMgKyBhcmdDb3VudCArIDEgKyBDYWxsRnJhbWVTaXplCisgICAgICAgIAorICAgICAgICB3
aGVyZSBudW1Vc2VkQ2FsbGVyU2xvdHMgaXMgdG9Mb2NhbChmaXJzdEZyZWVSZWdpc3RlcikgLSAx
LCB3aGljaCBzaW1wbGlmaWVzIGRvd24gdG8ganVzdAorICAgICAgICAtZmlyc3RGcmVlUmVnaXN0
ZXIuIFRoZSBjb2RlIG5vdyBzcGVha3Mgb2YgbnVtVXNlZENhbGxlclNsb3RzIHJhdGhlciB0aGFu
IGZpcnN0RnJlZVJlZ2lzdGVyLAorICAgICAgICBzaW5jZSB0aGUgbGF0dGVyIGlzIGEgYnl0ZWNv
ZGUgcGVjdWxpYXJpdHkgdGhhdCBkb2Vzbid0IGFwcGx5IGluIHRoZSBERkcgb3IgRlRMLiBJbiB0
aGUgREZHLCB0aGUKKyAgICAgICAgaW50ZXJuYWxseS1jb21wdXRlZCBmcmFtZSBzaXplLCBtaW51
cyB0aGUgcGFyYW1ldGVyIHNsb3RzLCB3aWxsIGJlIHVzZWQgZm9yIG51bVVzZWRDYWxsZXJTbG90
cy4KKyAgICAgICAgSW4gdGhlIEZUTCwgd2Ugd2lsbCBlc3NlbnRpYWxseSBjb21wdXRlIG51bVVz
ZWRDYWxsZXJTbG90cyBkeW5hbWljYWxseSBieSBzdWJ0cmFjdGluZyBTUCBmcm9tIEZQLgorICAg
ICAgICBFdmVudHVhbGx5LCBMTFZNIG1pZ2h0IGdpdmUgdXMgc29tZSBjbGVhbmVyIHdheSBvZiBk
b2luZyB0aGlzLCBidXQgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgdmVyeSBt
dWNoLgorICAgICAgICAKKyAgICAgICAgVGhlIGFyZ3VtZW50cyBmb3J3YXJkaW5nIG9wdGltaXph
dGlvbiBpcyBmYWN0b3JlZCBvdXQgb2YgdGhlIEJhc2VsaW5lIEpJVDogdGhlIERGRyBhbmQgRlRM
IHdpbGwKKyAgICAgICAgd2FudCB0byBkbyB0aGlzIG9wdGltaXphdGlvbiBhcyB3ZWxsLCBidXQg
aXQgaW52b2x2ZXMgcXVpdGUgYSBiaXQgb2YgY29kZS4gU28sIHRoaXMgY29kZSBpcyBub3cKKyAg
ICAgICAgZmFjdG9yZWQgb3V0IGludG8gTG9hZFZhcmFyZ3MuaHxjcHAsIHNvIHRoYXQgb3RoZXIg
SklUcyBjYW4gdXNlIGl0LiBJbiB0aGUgcHJvY2VzcyBvZiBmYWN0b3JpbmcKKyAgICAgICAgdGhp
cyBjb2RlIG91dCBJIG5vdGljZWQgdGhhdCB0aGUgMzItYml0IGFuZCA2NC1iaXQgY29kZSBpcyBu
ZWFybHkgaWRlbnRpY2FsLCBzbyBJIGNvbWJpbmVkIHRoZW0uCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6RXhl
Y1N0YXRlOjpyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bmNoZWNrZWRSKToKKyAgICAg
ICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6VmlydHVhbFJl
Z2lzdGVyOjpvcGVyYXRvcispOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6Om9wZXJh
dG9yLSk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6b3BlcmF0b3IrPSk6CisgICAg
ICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6b3BlcmF0b3ItPSk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6YnVs
a0dldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjps
b2FkVmFyYXJnc0FuZFNldFRoaXMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvTG9hZFZhcmFyZ3MuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6ZW1pdExvYWRWYXJhcmdzRmFzdENhc2UpOgorICAgICAgICAqIGpp
dC9Mb2FkVmFyYXJncy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlU
b0FyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb3B5VG9Bcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorCiAyMDE1LTAyLTA4ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBmZXcg
ZHVwbGljYXRlIHByb3BhZ2F0aW9uIHN0ZXBzIGZyb20gdGhlIERGRydzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvbiBwaGFzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zNDksNiArMzQ5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBqaXQvSklUU3R1YnMuY3BwCiAgICAgaml0L0pJVFRodW5rcy5jcHAKICAgICBqaXQv
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisgICAgaml0L0xvYWRWYXJh
cmdzLmNwcAogICAgIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKICAgICBqaXQv
UmVnLmNwcAogICAgIGppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3
OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyMCw2ICs2MjAsNyBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFN0dWJzLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRUaHVua3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxMb2FkVmFyYXJncy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmNwcCIgLz4KQEAgLTEzNTMsNiArMTM1NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRXcml0ZUJhcnJpZXIuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKU0ludGVyZmFjZUpJVC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caml0XExvYWRWYXJhcmdzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCIgLz4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjMyLDYgKzYzMiw4IEBACiAJCTBGRUEwQTMzMTcwRDQwQkYwMEJC
NzIyQyAvKiBERkdKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUEwQTJGMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmNwcCAq
LzsgfTsKIAkJMEZFQTBBMzQxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTMwMTcwRDQwQkYw
MEJCNzIyQyAvKiBERkdKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
RUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8q
IExvYWRWYXJhcmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZFRTk4NDMxQTg5MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUU5ODQyMUE4OTIy
NzUwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5jcHAgKi87IH07CiAJCTBGRUZDOUFBMTY4MUEzQjMw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLzsgfTsKIAkJMEZFRkM5QUIxNjgxQTNC
NjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xv
bmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAg
Ki87IH07CkBAIC0yMzEzLDYgKzIzMTUsOCBAQAogCQkwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdKSVRDb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdKSVRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFQTBBMzAxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSklUQ29kZS5oOyBwYXRoID0gZGZn
L0RGR0pJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0UxNjIz
N0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRWYXJhcmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkVmFyYXJncy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNzZW1i
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpc2Fzc2VtYmxlci5oOyBw
YXRoID0gZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzc5Miw2ICszNzk2LDggQEAKIAkJCQkwRkM3MTJFMTE3Q0Q4NzhGMDA4Q0M5M0Mg
LyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlBNzZGNTRB
MjEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQTc2QzUxNzQx
MTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8sCisJCQkJMEZFRTk4NDIxQTg5
MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCAqLywKKwkJCQkwRkVFOTg0MDFBODg2NUI2
MDA3NTRFOTMgLyogTG9hZFZhcmFyZ3MuaCAqLywKIAkJCQkwRkU4MzQxNTFBNkVGOTdCMDBEMDQ4
NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwICovLAogCQkJCTBGRTgzNDE2MUE2
RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBG
QTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovLApAQCAtNTUxMCw2ICs1NTE2LDcg
QEAKIAkJCQlDMkZDOUJEMzE2NjQ0REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3Bp
ZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUU5ODQxMUE4ODY1QjcwMDc1
NEU5MyAvKiBMb2FkVmFyYXJncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTcxMzcsNiArNzE0NCw3IEBACiAJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIg
LyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQy
NTY2MTE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZFRTk4NDMxQTg5MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RTNDNjE4MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxNDI4MDg3MDEwN0VDMTM0MDAxM0U3QjIgLyogSlNXcmFwcGVyT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzYsMTIg
KzEyMzYsMjIgQEAgaW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIoaW50IGluZGV4KQogICAg
IHJldHVybiB0aGlzW2luZGV4XTsKIH0KIAoraW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIo
VmlydHVhbFJlZ2lzdGVyIHJlZykKK3sKKyAgICByZXR1cm4gcihyZWcub2Zmc2V0KCkpOworfQor
CiBpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6dW5jaGVja2VkUihpbnQgaW5kZXgpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CiAg
ICAgcmV0dXJuIHRoaXNbaW5kZXhdOwogfQogCitpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6
dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQoreworICAgIHJldHVybiB1bmNoZWNrZWRS
KHJlZy5vZmZzZXQoKSk7Cit9CisKIGlubGluZSBKU1ZhbHVlIEV4ZWNTdGF0ZTo6YXJndW1lbnRB
ZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KQogewogICAgIGlmIChhcmd1bWVudCA+PSBhcmd1
bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVh
bFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYg
KzcwLDIzIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlydHVhbFJlZ2lz
dGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3Zp
cnR1YWxSZWdpc3RlcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWaXJ0dWFsUmVnaXN0
ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyICE9IG90aGVyLm1fdmly
dHVhbFJlZ2lzdGVyOyB9CiAgICAgCisgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhdG9yKyhpbnQg
dmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG9mZnNl
dCgpICsgdmFsdWUpOworICAgIH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3ItKGludCB2
YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIob2Zmc2V0
KCkgLSB2YWx1ZSk7CisgICAgfQorICAgIFZpcnR1YWxSZWdpc3RlciYgb3BlcmF0b3IrPShpbnQg
dmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHZhbHVlOworICAg
IH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXImIG9wZXJhdG9yLT0oaW50IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgLSB2YWx1ZTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTc5
NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMsOCArMjAzLDEwIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAg
ICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIgZnJvbSB0aGUgY29kZWZyYW1lIChvciBjb25zdGFudCBm
cm9tIHRoZSBDb2RlQmxvY2spLgogICAgICAgICBSZWdpc3RlciYgcihpbnQpOworICAgICAgICBS
ZWdpc3RlciYgcihWaXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIg
Zm9yIGEgbm9uLWNvbnN0YW50CiAgICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKGludCk7Cisg
ICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAg
Ly8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQuIChBZnRlciBjYXB0dXJlLCBhcmd1bWVu
dHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uKQogICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkg
LSAxOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsx
MzQsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIGlu
dGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIH0KIAotQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgSlNWYWx1ZSBhcmd1bWVudHMsIGludCBmaXJzdEZy
ZWVSZWdpc3RlciwgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCitDYWxsRnJhbWUqIHNpemVG
cmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RhY2sqIHN0YWNrLCBKU1Zh
bHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0KQogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYuYXBwbHkoeCwgYXJn
dW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJh
cmdzKENhbGxGcmFtZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gMTsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVP
ZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgLWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRlZENh
bGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICAgICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0g
cGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyArIDEgfHwgIXN0YWNrLT5lbnN1cmVD
YXBhY2l0eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBDYWxs
RnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lCiAKICAgICBpZiAoYXJndW1lbnRz
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNl
dCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAg
LWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxl
ZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCksICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2FwYWNp
dHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAgICAgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgQ2FsbEZyYW1l
KiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZQogICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ0NvdW50ID0g
MDsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJlZ2lz
dGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgICAgIHVuc2ln
bmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Nsb3RzICsgYXJnQ291bnQgKyAx
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRz
OjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUt
PnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFy
Z3MoQ2FsbEZyYW1lCiAgICAgICAgICAgICBhcmdDb3VudCAtPSBmaXJzdFZhckFyZ09mZnNldDsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJnQ291bnQgPSAwOwotICAgICAgICB1bnNpZ25l
ZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCAtZmlyc3RGcmVlUmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9m
ZnNldEZvcihhcmdDb3VudCArIDEpKTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJh
bWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdDb3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZz
ZXQpOwogICAgICAgICBpZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAh
c3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAg
ICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwpAQCAtMjA1LDcg
KzIwNSw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUKICAgICAg
ICAgYXJnQ291bnQgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBhcmdD
b3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJl
Z2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgdW5zaWdu
ZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdDb3VudCArIDEg
KyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCk7CiAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1
bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVy
cygpKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwpAQCAt
MjE0LDcgKzIxNCw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUK
ICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi12b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3ZvaWQgYnVs
a0dldEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVt
ZW50RGVzdCwgVmlydHVhbFJlZ2lzdGVyIGNvdW50RGVzdCwgSlNWYWx1ZSBhcmd1bWVudHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYu
YXBwbHkoeCwgYXJndW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAg
dW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7CkBAIC0yMjIsMTYgKzIyMiwxNCBAQCB2b2lkIGxvYWRWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDCiAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtPSBmaXJzdFZhckFyZ09mZnNldDsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICBuZXdDYWxsRnJhbWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKKyAgICAg
ICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgICAgICBuZXdDYWxsRnJh
bWUtPnNldEFyZ3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgY2FsbEZyYW1lLT5hcmd1bWVu
dEFmdGVyQ2FwdHVyZShpKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZmlyc3RFbGVtZW50
RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJD
YXB0dXJlKGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChhcmd1bWVu
dHMuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNW
YWx1ZSh0aGlzVmFsdWUpOworICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0KS5wYXlsb2Fk
KCkgPSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjQwLDExICsyMzgsMTAg
QEAgdm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQwogICAgICAgICB1bnNp
Z25lZCBhcmdDb3VudCA9IGFyZ3NPYmplY3QtPmxlbmd0aChjYWxsRnJhbWUpOwogICAgICAgICBp
ZiAoYXJnQ291bnQgPj0gZmlyc3RWYXJBcmdPZmZzZXQpIHsKICAgICAgICAgICAgIGFyZ0NvdW50
IC09IGZpcnN0VmFyQXJnT2Zmc2V0OwotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudCArIDEpOwotICAgICAgICAgICAgYXJnc09i
amVjdC0+Y29weVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmdDb3VudCwg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCku
cGF5bG9hZCgpID0gYXJnQ291bnQgKyAxOworICAgICAgICAgICAgYXJnc09iamVjdC0+Y29weVRv
QXJndW1lbnRzKGNhbGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgYXJnQ291bnQsIGZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dFRoaXNWYWx1ZSh0aGlzVmFsdWUpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVz
dCkucGF5bG9hZCgpID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI1Mywx
MSArMjUwLDEwIEBAIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEMKICAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIGlmIChh
cmdDb3VudCA+PSBmaXJzdFZhckFyZ09mZnNldCkgewogICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7Ci0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50ICsgMSk7Ci0gICAgICAgICAgICBhcnJheS0+Y29w
eVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmdDb3VudCwgZmlyc3RWYXJB
cmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgp
ID0gYXJnQ291bnQgKyAxOworICAgICAgICAgICAgYXJyYXktPmNvcHlUb0FyZ3VtZW50cyhjYWxs
RnJhbWUsIGZpcnN0RWxlbWVudERlc3QsIGFyZ0NvdW50LCBmaXJzdFZhckFyZ09mZnNldCk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygxKTsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhp
c1ZhbHVlKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxvYWQoKSA9
IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yNjUsMTggKzI2MSwzNCBAQCB2
b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDCiAgICAgdW5zaWduZWQgYXJn
Q291bnQgPSBhcmdPYmplY3QtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBpZiAoYXJnQ291bnQgPj0gZmly
c3RWYXJBcmdPZmZzZXQpIHsKICAgICAgICAgYXJnQ291bnQgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7
Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJn
Q291bnQgKyAxKTsKKyAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0g
YXJnQ291bnQgKyAxOwogICAgIH0gZWxzZQotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOworICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0
KS5wYXlsb2FkKCkgPSAxOwogCi0gICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1Zh
bHVlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50OyArK2kpIHsKLSAgICAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBhc09iamVjdChhcmd1bWVudHMpLT5nZXQo
Y2FsbEZyYW1lLCBpICsgZmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAgICAgY2FsbEZyYW1lLT5y
KGZpcnN0RWxlbWVudERlc3QgKyBpKSA9IGFzT2JqZWN0KGFyZ3VtZW50cyktPmdldChjYWxsRnJh
bWUsIGkgKyBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPnZtKCkuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAor
dm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3sK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRnJhbWVPZmZzZXQobmV3Q2FsbEZyYW1lIC0gY2Fs
bEZyYW1lKTsKKyAgICAKKyAgICBidWxrR2V0QnlWYWwoCisgICAgICAgIGNhbGxGcmFtZSwKKyAg
ICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApLAor
ICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsCisgICAg
ICAgIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworfQorCit2b2lkIGxvYWRWYXJhcmdz
QW5kU2V0VGhpcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpCit7CisgICAgbG9hZFZhcmFyZ3MoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFy
Z3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1Zh
bHVlKHRoaXNWYWx1ZSk7Cit9CisKIEludGVycHJldGVyOjpJbnRlcnByZXRlcihWTSYgdm0pCiAg
ICAgOiBtX3NhbXBsZUVudHJ5RGVwdGgoMCkKICAgICAsIG1fdm0odm0pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqKTsKLSAgICBDYWxsRnJhbWUqIHNp
emVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiwgSlNTdGFjayosIEpTVmFsdWUsIGludCwgdWlu
dDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1l
KiwgQ2FsbEZyYW1lKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQpOworICAgIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWMs
IEpTU3RhY2sqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMs
IHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICB2b2lkIGJ1bGtHZXRCeVZhbChDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCBWaXJ0
dWFsUmVnaXN0ZXIgY291bnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0KTsK
KyAgICB2b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBl
eGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQp
OworICAgIHZvaWQgbG9hZFZhcmFyZ3NBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxlciwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVu
dHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMs
MTAgKzI1MywyMCBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB2b2lkIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
LCBHUFJSZWcgdG8pCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQogICAgIHsKLSAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3Rlcikp
LCB0byk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdp
c3RlcikpLCB0byk7CiAgICAgfQorICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIz
MihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcg
ZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgbG9hZDMy
KEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOworICAgIH0KKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXI2NChK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJv
bSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgbG9hZDY0KEFk
ZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOworICAgIH0KKyNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQ
UlJlZyBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKICAgICB7CiAg
ICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0MiwxMSArNjQyLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KTsKIAog
ICAgICAgICB2b2lkIGVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20s
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKLSAgICAgICAgdm9pZCBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0
ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICB2
b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
RW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyNjQoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJl
Z2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSNlbmRpZgogCiAgICAgICAgIEpT
VmFsdWUgZ2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMpOwogICAgICAgICBib29sIGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBzcmMpOwpAQCAtNzM1LDcgKzczMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVy
KiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpKWiwg
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiwgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lK
SkksIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwpAQCAtNzUwLDcgKzc0NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fRUNiLCBDb2RlQmxvY2sq
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9uX0UpOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRP
cGVyYXRpb25fRUZKSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQsIGludDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VKWlosIEdQUlJlZywgR1BSUmVnLCBpbnQzMl90
LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FQWFwSiwgaW50LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgR1BSUmVn
LCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKLCBpbnQsIEdQUlJlZywgR1BSUmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEz
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVk
ZSAiTG9hZFZhcmFyZ3MuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtMTMwLDY5ICsxMzEs
MjkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGlmIChj
YW5PcHRpbWl6ZSkgewogICAgICAgICBlbWl0TG9hZFRhZyhhcmd1bWVudHMsIHJlZ1QxKTsKICAg
ICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Ci0KLSAgICAgICAgbG9hZDMyKHBheWxvYWRG
b3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlZ1QyKTsKLSAgICAgICAgaWYgKGZpcnN0VmFy
QXJnT2Zmc2V0KSB7Ci0gICAgICAgICAgICBKdW1wIHN1ZmZpY2llbnRBcmd1bWVudHMgPSBicmFu
Y2gzMihHcmVhdGVyVGhhbiwgcmVnVDIsIFRydXN0ZWRJbW0zMihmaXJzdFZhckFyZ09mZnNldCAr
IDEpKTsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMik7Ci0gICAgICAg
ICAgICBKdW1wIGVuZFZhckFyZ3MgPSBqdW1wKCk7Ci0gICAgICAgICAgICBzdWZmaWNpZW50QXJn
dW1lbnRzLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoZmlyc3RW
YXJBcmdPZmZzZXQpLCByZWdUMik7Ci0gICAgICAgICAgICBlbmRWYXJBcmdzLmxpbmsodGhpcyk7
Ci0gICAgICAgIH0KLSAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCByZWdU
MiwgVHJ1c3RlZEltbTMyKEFyZ3VtZW50czo6TWF4QXJndW1lbnRzICsgMSkpKTsKLSAgICAgICAg
Ly8gcmVnVDI6IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzCi0KLSAgICAgICAgbW92ZShyZWdU
MiwgcmVnVDMpOwotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1maXJzdEZyZWVSZWdpc3Rl
ciArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCByZWdUMyk7Ci0gICAgICAgIC8vIHJl
Z1QxIG5vdyBoYXMgdGhlIHJlcXVpcmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKLSAg
ICAgICAgLy8gUm91bmQgcmVnVDEgdG8gbmV4dCBtdWx0aXBsZSBvZiBzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpCi0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSAtIDEpLCByZWdUMyk7Ci0gICAgICAgIGFuZFB0cihUcnVzdGVkSW1tMzIofihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCByZWdUMyk7Ci0gICAgICAgIG5lZzMyKHJlZ1Qz
KTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKDMpLCByZWdUMyk7Ci0gICAgICAgIGFk
ZFB0cihjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDMpOwotICAgICAgICAvLyByZWdUMzogbmV3Q2Fs
bEZyYW1lCi0KLSAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1
dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNrTGltaXQoKSksIHJlZ1QzKSk7Ci0KLSAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50LgotICAgICAgICBzdG9yZTMyKHJlZ1QyLCBw
YXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsIHJlZ1QzKSk7Ci0KLSAgICAgICAgLy8g
SW5pdGlhbGl6ZSAndGhpcycuCi0gICAgICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVnVDEsIHJl
Z1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpICsgKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAgICAg
ICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSArIChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpKTsKLQotICAgICAgICAvLyBDb3B5IGFyZ3Vt
ZW50cy4KLSAgICAgICAgZW5kLmFwcGVuZChicmFuY2hTdWIzMihaZXJvLCBUcnVzdGVkSW1tMzIo
MSksIHJlZ1QyKSk7Ci0gICAgICAgIC8vIHJlZ1QyOiBhcmd1bWVudENvdW50OwotCi0gICAgICAg
IExhYmVsIGNvcHlMb29wID0gbGFiZWwoKTsKLSAgICAgICAgbG9hZDMyKEJhc2VJbmRleChjYWxs
RnJhbWVSZWdpc3RlciwgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSArKChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsg
Zmlyc3RWYXJBcmdPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkp
LCByZWdUMCk7Ci0gICAgICAgIGxvYWQzMihCYXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJl
Z1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAr
KChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgZmlyc3RWYXJBcmdPZmZzZXQpICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpLCByZWdUMSk7Ci0gICAgICAgIHN0
b3JlMzIocmVnVDAsIEJhc2VJbmRleChyZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSArKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAg
ICAgICBzdG9yZTMyKHJlZ1QxLCBCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSArKENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwot
ICAgICAgICBicmFuY2hTdWIzMihOb25aZXJvLCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QyKS5saW5r
VG8oY29weUxvb3AsIHRoaXMpOwotCisgICAgICAgIAorICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigtZmlyc3RGcmVlUmVnaXN0ZXIpLCByZWdUMSk7CisgICAgICAgIGVtaXRMb2FkVmFyYXJnc0Zh
c3RDYXNlKCp0aGlzLCByZWdUMSwgcmVnVDAsIHJlZ1QxLCByZWdUMiwgMCwgZmlyc3RWYXJBcmdP
ZmZzZXQsIHNsb3dDYXNlKTsKICAgICAgICAgZW5kLmFwcGVuZChqdW1wKCkpOwotICAgIH0KLQot
ICAgIGlmIChjYW5PcHRpbWl6ZSkKICAgICAgICAgc2xvd0Nhc2UubGluayh0aGlzKTsKKyAgICB9
CiAKICAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigt
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmV0dXJuVmFsdWVHUFIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKLSAgICBlbWl0TG9hZCh0aGlzVmFsdWUsIHJlZ1QxLCByZWdUNCk7Ci0gICAgZW1p
dExvYWQoYXJndW1lbnRzLCByZWdUMywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTG9hZFZhcmFyZ3MsIHJldHVyblZhbHVlR1BSLCByZWdUMSwgcmVnVDQsIHJlZ1QzLCByZWdU
MiwgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QzKTsK
KyAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QxLCByZWdUMCk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmV0dXJuVmFsdWVHUFIsIHJlZ1QxLCByZWdUMCwgZmly
c3RWYXJBcmdPZmZzZXQpOworICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAg
IGlmIChjYW5PcHRpbWl6ZSkKICAgICAgICAgZW5kLmxpbmsodGhpcyk7CiAKLSAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHJlZ1QzLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CisgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycuCisgICAgZW1pdExvYWQodGhp
c1ZhbHVlLCByZWdUMiwgcmVnVDApOworICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEs
IFBheWxvYWRPZmZzZXQgKyAoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKSk7CisgICAgc3RvcmUzMihyZWdUMiwgQWRk
cmVzcyhyZWdUMSwgVGFnT2Zmc2V0ICsgKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOworICAgIAorICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDEsIHN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJ
KHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxp
bmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb2FkVmFyYXJncy5oIgogI2luY2x1ZGUgIlJlcGF0Y2hC
dWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29s
LmgiCkBAIC03MCw2NiArNzEsMjcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0
cnVjdGlvbgogICAgIGlmIChjYW5PcHRpbWl6ZSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGFyZ3VtZW50cywgcmVnVDApOwogICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNo
NjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSkpKSk7Ci0KLSAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpB
cmd1bWVudENvdW50LCByZWdUMCk7Ci0gICAgICAgIGlmIChmaXJzdFZhckFyZ09mZnNldCkgewot
ICAgICAgICAgICAgSnVtcCBzdWZmaWNpZW50QXJndW1lbnRzID0gYnJhbmNoMzIoR3JlYXRlclRo
YW4sIHJlZ1QwLCBUcnVzdGVkSW1tMzIoZmlyc3RWYXJBcmdPZmZzZXQgKyAxKSk7Ci0gICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwotICAgICAgICAgICAgSnVtcCBlbmRW
YXJBcmdzID0ganVtcCgpOwotICAgICAgICAgICAgc3VmZmljaWVudEFyZ3VtZW50cy5saW5rKHRo
aXMpOwotICAgICAgICAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKGZpcnN0VmFyQXJnT2Zmc2V0KSwg
cmVnVDApOwotICAgICAgICAgICAgZW5kVmFyQXJncy5saW5rKHRoaXMpOwotICAgICAgICB9Ci0g
ICAgICAgIHNsb3dDYXNlLmFwcGVuZChicmFuY2gzMihBYm92ZSwgcmVnVDAsIFRydXN0ZWRJbW0z
MihBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyArIDEpKSk7Ci0gICAgICAgIC8vIHJlZ1QwOiBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcwotICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7Ci0gICAg
ICAgIGFkZDY0KFRydXN0ZWRJbW0zMigtZmlyc3RGcmVlUmVnaXN0ZXIgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKSwgcmVnVDEpOwotICAgICAgICAvLyByZWdUMSBub3cgaGFzIHRoZSBy
ZXF1aXJlZCBmcmFtZSBzaXplIGluIFJlZ2lzdGVyIHVuaXRzCi0gICAgICAgIC8vIFJvdW5kIHJl
Z1QxIHRvIG5leHQgbXVsdGlwbGUgb2Ygc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKQotICAgICAg
ICBhZGQ2NChUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpLCByZWdU
MSk7Ci0gICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkgLSAxKSksIHJlZ1QxKTsKLQotICAgICAgICBuZWc2NChyZWdUMSk7Ci0gICAgICAgIGxzaGlm
dDY0KFRydXN0ZWRJbW0zMigzKSwgcmVnVDEpOwotICAgICAgICBhZGRQdHIoY2FsbEZyYW1lUmVn
aXN0ZXIsIHJlZ1QxKTsKLSAgICAgICAgLy8gcmVnVDE6IG5ld0NhbGxGcmFtZQotCi0gICAgICAg
IHNsb3dDYXNlLmFwcGVuZChicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5h
ZGRyZXNzT2ZTdGFja0xpbWl0KCkpLCByZWdUMSkpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemUg
QXJndW1lbnRDb3VudC4KLSAgICAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgSlNT
dGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KSk7Ci0KLSAgICAgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycuCi0gICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCByZWdUMik7Ci0gICAgICAgIHN0b3JlNjQocmVnVDIsIEFk
ZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0KLSAgICAgICAgLy8gQ29weSBhcmd1bWVudHMu
Ci0gICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKHJlZ1QwLCByZWdUMCk7Ci0gICAgICAgIGVuZC5h
cHBlbmQoYnJhbmNoU3ViNjQoWmVybywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMCkpOwotICAgICAg
ICAvLyByZWdUMDogYXJndW1lbnRDb3VudAotCi0gICAgICAgIExhYmVsIGNvcHlMb29wID0gbGFi
ZWwoKTsKLSAgICAgICAgbG9hZDY0KEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDAs
IFRpbWVzRWlnaHQsIChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgZmlyc3RWYXJB
cmdPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJlZ1QyKTsK
LSAgICAgICAgc3RvcmU2NChyZWdUMiwgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNFaWdo
dCwgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpKTsKLSAgICAgICAgYnJhbmNoU3ViNjQoTm9uWmVybywgVHJ1c3RlZElt
bTMyKDEpLCByZWdUMCkubGlua1RvKGNvcHlMb29wLCB0aGlzKTsKLQorICAgICAgICAKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoLWZpcnN0RnJlZVJlZ2lzdGVyKSwgcmVnVDEpOworICAgICAg
ICBlbWl0TG9hZFZhcmFyZ3NGYXN0Q2FzZSgqdGhpcywgcmVnVDEsIHJlZ1QwLCByZWdUMSwgcmVn
VDIsIDAsIGZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAgIGVuZC5hcHBlbmQo
anVtcCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoY2FuT3B0aW1pemUpCiAgICAgICAgIHNsb3dDYXNl
LmxpbmsodGhpcyk7CisgICAgfQogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVu
dHMsIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFy
Z3MsIHJlZ1QxLCBmaXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgcmVnVDEsIC1maXJzdEZy
ZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNW
YWx1ZSwgcmVnVDEpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdU
Mik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmV0dXJuVmFsdWVH
UFIsIHJlZ1QxLCByZWdUMiwgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25M
b2FkVmFyYXJncywgcmV0dXJuVmFsdWVHUFIsIHJlZ1QxLCBmaXJzdFZhckFyZ09mZnNldCk7CiAg
ICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDEpOwogCiAgICAgaWYgKGNhbk9wdGltaXplKQog
ICAgICAgICBlbmQubGluayh0aGlzKTsKICAgICAKKyAgICAvLyBJbml0aWFsaXplICd0aGlzJy4K
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWYWx1ZSwgcmVnVDApOworICAgIHN0b3Jl
NjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHJlZ1QxLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsMjMgKzk4LDYgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdFB1dEludFRvQ2FsbAogI2VuZGlmCiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
ckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCi17Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLX0KLQot
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJ
RCBmcm9tKQotewotICAgIGxvYWQzMihBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lz
dGVyKSksIHRvKTsKLX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1BTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
ckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCi17Ci0gICAgbG9h
ZDY0KEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwotfQotI2Vu
ZGlmCi0KIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVzKQogewogICAg
IGZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KTsKQEAgLTM5Miw5ICszNzUsOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
KTsKIH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oRl9KSVRPcGVyYXRpb25fRUZKSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBpbnQzMl90IGFyZzQpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBpbnQzMl90IGFyZzMpCiB7Ci0gICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIFRydXN0ZWRJbW0zMihh
cmc0KSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0
ZWRJbW0zMihhcmczKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKIH0KIApAQCAtNTM5LDkgKzUyMiw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpKWiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1Rh
ZywgR1BSUmVnIGFyZzNQYXlsb2FkLCBpbnQzMl90IGFyZzQpCitBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQs
IGludDMyX3QgYXJnMykKIHsKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMlBheWxvYWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnLCBUcnVzdGVkSW1tMzIo
YXJnNCkpOworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9h
ZCwgYXJnMlRhZywgVHJ1c3RlZEltbTMyKGFyZzMpKTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNzk3NjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjA0LDIzICsxNjA0LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsK
IH0KIAotQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFy
Z3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQz
Ml90IGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQorQ2FsbEZy
YW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRT
dGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwog
ICAgIEpTU3RhY2sqIHN0YWNrID0gJmV4ZWMtPmludGVycHJldGVyKCktPnN0YWNrKCk7CiAgICAg
SlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7Ci0g
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBzaXplRnJhbWVGb3JWYXJhcmdzKGV4ZWMsIHN0
YWNrLCBhcmd1bWVudHMsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7Cisg
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBzaXplRnJhbWVGb3JWYXJhcmdzKGV4ZWMsIHN0
YWNrLCBhcmd1bWVudHMsIG51bVVzZWRTdGFja1Nsb3RzLCBmaXJzdFZhckFyZ09mZnNldCk7CiAg
ICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKIH0KIAotQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkxvYWRWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbEZyYW1lKiBuZXdDYWxsRnJh
bWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJn
dW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQorQ2FsbEZyYW1lKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkxvYWRWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXMpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwotICAgIGxvYWRWYXJhcmdzKGV4ZWMsIG5l
d0NhbGxGcmFtZSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAg
ICBsb2FkVmFyYXJncyhleGVjLCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdP
ZmZzZXQpOwogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODcsNyArODcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBaOiBpbnQzMl90CiAqLwogCi10eXBlZGVm
IENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VGSkpaKShFeGVjU3Rh
dGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3Qp
OwordHlwZWRlZiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FRkpa
KShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CiB0eXBl
ZGVmIENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VKWlopKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUEp
KEV4ZWNTdGF0ZSosIEpTQXJyYXkqKTsKQEAgLTMwOSw4ICszMDksOCBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVGVhck9mZkFyZ3VtCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgY29u
c3QgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRQTmFtZXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSBXVEZfSU5URVJOQUw7Ci1DYWxs
RnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RGcmVlUmVnaXN0ZXIs
IGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpIFdURl9JTlRFUk5BTDsKLUNhbGxGcmFtZSogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJncyhFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCkgV1RGX0lOVEVSTkFMOworQ2FsbEZyYW1lKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgYXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0KSBXVEZfSU5URVJOQUw7CitDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTG9hZFZhcmFyZ3MoRXhlY1N0YXRlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgYXJn
dW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBr
ZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0xvYWRWYXJhcmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0xvYWRWYXJhcmdzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvTG9hZFZhcmFyZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvYWRWYXJhcmdzLmgiCisKKyNpZiBFTkFCTEUo
SklUKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIGVt
aXRMb2FkVmFyYXJnc0Zhc3RDYXNlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVXNlZFNs
b3RzR1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgR1BSUmVnIHNj
cmF0Y2hHUFIzLCBpbnQgaW5saW5lU3RhY2tPZmZzZXQsIHVuc2lnbmVkIGZpcnN0VmFyQXJnT2Zm
c2V0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93Q2FzZSkKK3sKKyAgICBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGVuZDsKKyAgICAKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKGlubGluZVN0YWNrT2Zmc2V0ICsgSlNT
dGFjazo6QXJndW1lbnRDb3VudCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCks
IHNjcmF0Y2hHUFIxKTsKKyAgICBpZiAoZmlyc3RWYXJBcmdPZmZzZXQpIHsKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIHN1ZmZpY2llbnRBcmd1bWVudHMgPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpHcmVhdGVyVGhhbiwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGZpcnN0VmFyQXJnT2Zmc2V0ICsgMSkpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZW5kVmFyQXJncyA9IGppdC5qdW1wKCk7CisgICAgICAgIHN1ZmZpY2llbnRBcmd1bWVu
dHMubGluaygmaml0KTsKKyAgICAgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQUjEpOworICAgICAgICBlbmRWYXJBcmdz
LmxpbmsoJmppdCk7CisgICAgfQorICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpBYm92ZSwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEFyZ3VtZW50czo6TWF4QXJndW1lbnRzICsgMSkpKTsKKyAgICAvLyBzY3JhdGNoR1BSMTogYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMKKyAgICBqaXQubW92ZShudW1Vc2VkU2xvdHNHUFIsIHNj
cmF0Y2hHUFIyKTsKKyAgICBqaXQuYWRkUHRyKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMik7Cisg
ICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplKSwgc2NyYXRjaEdQUjIpOworICAgIC8vIHNjcmF0Y2hHUFIyIG5vdyBoYXMg
dGhlIHJlcXVpcmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKKyAgICAvLyBSb3VuZCBz
Y3JhdGNoR1BSMiB0byBuZXh0IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkK
KyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCkgLSAxKSwgc2NyYXRjaEdQUjIpOworICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIofihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCBzY3Jh
dGNoR1BSMik7CisKKyAgICBqaXQubmVnUHRyKHNjcmF0Y2hHUFIyKTsKKyAgICBqaXQubHNoaWZ0
UHRyKENDYWxsSGVscGVyczo6SW1tMzIoMyksIHNjcmF0Y2hHUFIyKTsKKyAgICBqaXQuYWRkUHRy
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzY3JhdGNoR1BSMik7CisgICAgLy8gc2NyYXRj
aEdQUjI6IG5ld0NhbGxGcmFtZQorCisgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hQdHIo
Q0NhbGxIZWxwZXJzOjpBYm92ZSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Moaml0LnZt
KCktPmFkZHJlc3NPZlN0YWNrTGltaXQoKSksIHNjcmF0Y2hHUFIyKSk7CisKKyAgICAvLyBJbml0
aWFsaXplIEFyZ3VtZW50Q291bnQuCisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjEsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMiwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CisKKyAg
ICAvLyBDb3B5IGFyZ3VtZW50cy4KKyAgICBqaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQ
UjEsIHNjcmF0Y2hHUFIxKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5icmFu
Y2hTdWJQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgc2NyYXRjaEdQUjEpOworICAgIC8vIHNjcmF0Y2hHUFIxOiBhcmd1bWVudENvdW50CisKKyAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGNvcHlMb29wID0gaml0LmxhYmVsKCk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0
LCAoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSArIGlubGluZVN0YWNrT2Zmc2V0ICsg
Zmlyc3RWYXJBcmdPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSks
IHNjcmF0Y2hHUFIzKTsKKyAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywgQ0NhbGxIZWxwZXJz
OjpCYXNlSW5kZXgoc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVz
RWlnaHQsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSwgc28gdGhpcyBi
ZWdpbnMgdGhlIDMyLWJpdCBjYXNlCisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkJhc2VJ
bmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVy
czo6VGltZXNFaWdodCwgKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKyBpbmxpbmVT
dGFja09mZnNldCArIGZpcnN0VmFyQXJnT2Zmc2V0KSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpLCBzY3JhdGNoR1BSMyk7CisgICAgaml0LnN0b3JlMzIo
c2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIyLCBzY3JhdGNo
R1BSMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkp
OworICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIChDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5lU3RhY2tPZmZzZXQgKyBmaXJzdFZh
ckFyZ09mZnNldCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9h
ZE9mZnNldCksIHNjcmF0Y2hHUFIzKTsKKyAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMywgQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBl
cnM6OlRpbWVzRWlnaHQsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOworI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpLCBlbmQgb2YgMzItYml0IGNhc2UKKyAgICBqaXQuYnJhbmNoU3ViUHRy
KENDYWxsSGVscGVyczo6Tm9uWmVybywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNj
cmF0Y2hHUFIxKS5saW5rVG8oY29weUxvb3AsICZqaXQpOworICAgIAorICAgIGRvbmUubGluaygm
aml0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0xvYWRWYXJhcmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Mb2FkVmFyYXJncy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Mb2FkVmFyYXJncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMb2FkVmFyYXJnc19oCisjZGVmaW5lIExvYWRWYXJhcmdzX2gK
KworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEFzc3VtZXMgdGhh
dCBTUCByZWZlcnMgdG8gdGhlIGxhc3QgaW4tdXNlIHN0YWNrIGxvY2F0aW9uLCBhbmQgYWZ0ZXIg
dGhpcyByZXR1cm5zIFNQIHdpbGwgcG9pbnQgdG8KKy8vIHRoZSBuZXdseSBjcmVhdGVkIGZyYW1l
IHBsdXMgdGhlIG5hdGl2ZSBoZWFkZXIuIHNjcmF0Y2hHUFIyIG1heSBiZSB0aGUgc2FtZSBhcyBu
dW1Vc2VkU2xvdHNHUFIuCit2b2lkIGVtaXRMb2FkVmFyYXJnc0Zhc3RDYXNlKENDYWxsSGVscGVy
cyYgaml0LCBHUFJSZWcgbnVtVXNlZFNsb3RzR1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJl
ZyBzY3JhdGNoR1BSMiwgR1BSUmVnIHNjcmF0Y2hHUFIzLCBpbnQgaW5saW5lU3RhY2tPZmZzZXQs
IHVuc2lnbmVkIGZpcnN0VmFyQXJnT2Zmc2V0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93
Q2FzZSk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwor
I2VuZGlmIC8vIExvYWRWYXJhcmdzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTY1LDcgKzExNjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9m
cmFtCiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZh
cmlhYmxlIGFyZ3VtZW50cy4KICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBzaXpl
RnJhbWVGb3JWYXJhcmdzKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwKLSAgICAgICAg
TExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzVdLnUub3BlcmFuZCwgcGNbNl0udS5vcGVyYW5k
KTsKKyAgICAgICAgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIC1wY1s1XS51Lm9wZXJhbmQsIHBj
WzZdLnUub3BlcmFuZCk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhl
Yyk7CiAgICAgCiAgICAgdm0ubmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWUgPSBleGVjQ2FsbGVlOwpA
QCAtMTE4NCw3ICsxMTg0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxf
dmFyYQogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJl
dHVyblZhbHVlOwogCi0gICAgbG9hZFZhcmFyZ3MoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQp
OworICAgIGxvYWRWYXJhcmdzQW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCk7
CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCiAgICAg
ZXhlY0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
QEAgLTEyMDUsNyArMTIwNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25z
dHJ1Y3QKICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSB2bS5uZXdDYWxsRnJhbWVS
ZXR1cm5WYWx1ZTsKICAgICAKLSAgICBsb2FkVmFyYXJncyhleGVjLCBleGVjQ2FsbGVlLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3Bl
cmFuZCk7CisgICAgbG9hZFZhcmFyZ3NBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSwgcGNbNl0udS5vcGVy
YW5kKTsKICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBleGVjKTsKICAgICAK
ICAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkgPSBjYWxsZWVBc1Zh
bHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdh
dGVybG9vLmNhKQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgpAQCAt
ODcsMjIgKzg3LDI1IEBAIHZvaWQgQXJndW1lbnRzOjpjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCoK
ICAgICAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFyZ3VtZW50c0Z1bmNJ
dGVyYXRvcihFeGVjU3RhdGUqKTsKIAotdm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhF
eGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1aW50MzJfdCBjb3B5TGVuZ3Ro
LCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQordm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3Vt
ZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1
aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIHVp
bnQzMl90IGxlbmd0aCA9IGNvcHlMZW5ndGggKyBmaXJzdFZhckFyZ09mZnNldDsKIAogICAgIGlm
IChVTkxJS0VMWShtX292ZXJyb2RlTGVuZ3RoKSkgewogICAgICAgICBsZW5ndGggPSBtaW4oZ2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpLCBsZW5n
dGgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8IGxl
bmd0aDsgaSsrKQotICAgICAgICAgICAgY2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBnZXQoZXhl
YywgaSkpOworICAgICAgICAgICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0
VmFyQXJnT2Zmc2V0KSA9IGdldChleGVjLCBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBBU1NFUlQobGVuZ3RoID09IHRoaXMtPmxlbmd0aChleGVjKSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0VmFyQXJnT2Zmc2V0OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKEpT
VmFsdWUgdmFsdWUgPSB0cnlHZXRBcmd1bWVudChpKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+
c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCB2YWx1ZSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0
LCBnZXQoZXhlYywgaSkpOworICAgICAgICAgICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsg
aSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IHZhbHVlOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBn
ZXQoZXhlYywgaSk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+dm0oKS5leGNlcHRp
b24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24g
MTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAo
QykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqCkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fbnVtQXJndW1lbnRzOyAKICAgICB9CiAgICAgICAgIAotICAg
IHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGNv
cHlMZW5ndGgsIGludDMyX3QgZmlyc3RBcmd1bWVudE9mZnNldCk7CisgICAgdm9pZCBjb3B5VG9B
cmd1bWVudHMoRXhlY1N0YXRlKiwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVp
bnQzMl90IGNvcHlMZW5ndGgsIGludDMyX3QgZmlyc3RBcmd1bWVudE9mZnNldCk7CiAgICAgdm9p
ZCB0ZWFyT2ZmKENhbGxGcmFtZSopOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqLCBJbmxp
bmVDYWxsRnJhbWUqKTsKICAgICB2b2lkIHRlYXJPZmZGb3JDbG9uaW5nKENhbGxGcmFtZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9u
IDE3OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTE1NzAsNyArMTU3
MCw3IEBAIHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiBleGUKICAgICAgICAg
YXJncy5hcHBlbmQoZ2V0KGV4ZWMsIGkpKTsKIH0KIAotdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1
bWVudHMoRXhlY1N0YXRlKiBleGVjLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdWludDMyX3QgY29w
eUxlbmd0aCwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3ZvaWQgSlNBcnJheTo6Y29weVRv
QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERl
c3QsIHVpbnQzMl90IGNvcHlMZW5ndGgsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCiB7CiAg
ICAgdW5zaWduZWQgaSA9IGZpcnN0VmFyQXJnT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxVbmtu
b3duPiogdmVjdG9yOwpAQCAtMTYwMiw3ICsxNjAyLDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9B
cmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZp
cnN0VmFyQXJnT2Zmc2V0LCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2KSk7Cisg
ICAgICAgICAgICBleGVjLT5yKGZpcnN0RWxlbWVudERlc3QgKyBpIC0gZmlyc3RWYXJBcmdPZmZz
ZXQpID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdik7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTYyNywxMSArMTYyNywxNCBAQCB2b2lkIEpTQXJyYXk6
OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiYgdiA9IHZlY3RvcltpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCB2Lmdl
dCgpKTsKKyAgICAgICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJn
T2Zmc2V0KSA9IHYuZ2V0KCk7CiAgICAgfQogICAgIAotICAgIGZvciAoOyBpIDwgbGVuZ3RoOyAr
K2kpCi0gICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0
LCBnZXQoZXhlYywgaSkpOworICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IGdldChl
eGVjLCBpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFy
cmF5SW5kZXhpbmdUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAkocmV2aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaWxsQXJnTGlzdChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0
ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGxlbmd0aCwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRl
KiwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVpbnQzMl90IGxlbmd0aCwgaW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCk7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246282</attachid>
            <date>2015-02-09 12:13:04 -0800</date>
            <delta_ts>2015-02-09 13:58:40 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60782</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDE1LTAyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFyYXJncyBmcmFtZSBzZXQtdXAgc2hvdWxkIGJlIGZhY3RvcmVkIG91dCBmb3IgdXNlIGJ5IG90
aGVyIEpJVHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MTM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgUHJldmlvdXNseSB0aGUgY29kZSB0aGF0IGRlYWx0IHdpdGggdmFyYXJncyBhbHdh
eXMgYXNzdW1lZCB0aGF0IHdlIHdlcmUgc2V0dGluZyB1cCBhIHZhcmFyZ3MgY2FsbAorICAgICAg
ICBmcmFtZSBieSBsaXRlcmFsbHkgZm9sbG93aW5nIHRoZSBleGVjdXRpb24gc2VtYW50aWNzIG9m
IG9wX2NhbGxfdmFyYXJncy4gVGhpcyBpc24ndCBob3cgaXQnbGwKKyAgICAgICAgaGFwcGVuIG9u
Y2UgdGhlIERGRyBhbmQgRlRMIGRvIHZhcmFyZ3MgY2FsbHMsIG9yIHdoZW4gdmFyYXJncyBjYWxs
cyBnZXQgaW5saW5lZC4gVGhlIERGRyBhbmQgRlRMCisgICAgICAgIGRvbid0IGxpdGVyYWxseSBl
eGVjdXRlIGJ5dGVjb2RlOyBmb3IgZXhhbXBsZSB0aGVpciBzdGFjayBmcmFtZSBsYXlvdXQgaGFz
IGFic29sdXRlbHkgbm90aGluZyBpbgorICAgICAgICBjb21tb24gd2l0aCB3aGF0IHRoZSBieXRl
Y29kZSBzYXlzLCBhbmQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgdHdvIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICBTZXR0aW5n
IHVwIHRoZSB2YXJhcmdzIGNhbGxlZSBmcmFtZSBjYW4gYmUgZG9uZSBpbiBzbWFsbGVyIHN0ZXBz
OiBwYXJ0aWN1bGFybHkgaW4gdGhlIGNhc2Ugb2YgYQorICAgICAgICB2YXJhcmdzIGNhbGwgdGhh
dCBnZXRzIGlubGluZWQsIHdlIGFyZW4ndCBnb2luZyB0byBhY3R1YWxseSB3YW50IHRvIHNldCB1
cCBhIGNhbGxlZSBmcmFtZSBpbgorICAgICAgICBmdWxsIC0gd2UganVzdCB3YW50IHRvIHB1dCB0
aGUgYXJndW1lbnRzIHNvbWV3aGVyZSwgYW5kIHRoYXQgcGxhY2Ugd2lsbCBub3QgaGF2ZSBtdWNo
IChpZgorICAgICAgICBhbnl0aGluZykgaW4gY29tbW9uIHdpdGggdGhlIGNhbGwgZnJhbWUgZm9y
bWF0LiBUaGlzIHBhdGNoIGZhY3RvcnMgdGhhdCBvdXQgaW50byBzb21ldGhpbmcgY2FsbGVkCisg
ICAgICAgIGEgYnVsa0dldEJ5VmFsLiBUaGlzIHBhdGNoIGFsc28gc2VwYXJhdGVzIGxvYWRpbmcg
dmFyYXJncyBmcm9tIHNldHRpbmcgdGhpcywgc2luY2UgdGhlIGZhY3QgdGhhdAorICAgICAgICB0
aG9zZSB0d28gdGhpbmdzIGFyZSBkb25lIHRvZ2V0aGVyIGlzIGEgZGV0YWlsIG1hZGUgZXhwbGlj
aXQgaW4gYnl0ZWNvZGUgYnV0IGl0J3Mgbm90IGF0IGFsbAorICAgICAgICByZXF1aXJlZCBpbiB0
aGUgaGlnaGVyLXRpZXIgZW5naW5lcy4gSW4gdGhlIHByb2Nlc3Mgb2YgZmFjdG9yaW5nIHRoaXMg
Y29kZSBvdXQsIEkgZm91bmQgYSBidW5jaAorICAgICAgICBvZiBvZmYtYnktb25lIGVycm9ycyBp
biB0aGUgdmFyaW91cyBjYWxjdWxhdGlvbnMuIEkgZml4ZWQgdGhlbS4gVGhlIGRpc3RhbmNlIGZy
b20gdGhlIGNhbGxlcidzCisgICAgICAgIGZyYW1lIHBvaW50ZXIgdG8gdGhlIGNhbGxlZSBmcmFt
ZSBwb2ludGVyIGlzIGFsd2F5czoKKyAgICAgICAgCisgICAgICAgICAgICBudW1Vc2VkQ2FsbGVy
U2xvdHMgKyBhcmdDb3VudCArIDEgKyBDYWxsRnJhbWVTaXplCisgICAgICAgIAorICAgICAgICB3
aGVyZSBudW1Vc2VkQ2FsbGVyU2xvdHMgaXMgdG9Mb2NhbChmaXJzdEZyZWVSZWdpc3RlcikgLSAx
LCB3aGljaCBzaW1wbGlmaWVzIGRvd24gdG8ganVzdAorICAgICAgICAtZmlyc3RGcmVlUmVnaXN0
ZXIuIFRoZSBjb2RlIG5vdyBzcGVha3Mgb2YgbnVtVXNlZENhbGxlclNsb3RzIHJhdGhlciB0aGFu
IGZpcnN0RnJlZVJlZ2lzdGVyLAorICAgICAgICBzaW5jZSB0aGUgbGF0dGVyIGlzIGEgYnl0ZWNv
ZGUgcGVjdWxpYXJpdHkgdGhhdCBkb2Vzbid0IGFwcGx5IGluIHRoZSBERkcgb3IgRlRMLiBJbiB0
aGUgREZHLCB0aGUKKyAgICAgICAgaW50ZXJuYWxseS1jb21wdXRlZCBmcmFtZSBzaXplLCBtaW51
cyB0aGUgcGFyYW1ldGVyIHNsb3RzLCB3aWxsIGJlIHVzZWQgZm9yIG51bVVzZWRDYWxsZXJTbG90
cy4KKyAgICAgICAgSW4gdGhlIEZUTCwgd2Ugd2lsbCBlc3NlbnRpYWxseSBjb21wdXRlIG51bVVz
ZWRDYWxsZXJTbG90cyBkeW5hbWljYWxseSBieSBzdWJ0cmFjdGluZyBTUCBmcm9tIEZQLgorICAg
ICAgICBFdmVudHVhbGx5LCBMTFZNIG1pZ2h0IGdpdmUgdXMgc29tZSBjbGVhbmVyIHdheSBvZiBk
b2luZyB0aGlzLCBidXQgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgdmVyeSBt
dWNoLgorICAgICAgICAKKyAgICAgICAgVGhlIGFyZ3VtZW50cyBmb3J3YXJkaW5nIG9wdGltaXph
dGlvbiBpcyBmYWN0b3JlZCBvdXQgb2YgdGhlIEJhc2VsaW5lIEpJVDogdGhlIERGRyBhbmQgRlRM
IHdpbGwKKyAgICAgICAgd2FudCB0byBkbyB0aGlzIG9wdGltaXphdGlvbiBhcyB3ZWxsLCBidXQg
aXQgaW52b2x2ZXMgcXVpdGUgYSBiaXQgb2YgY29kZS4gU28sIHRoaXMgY29kZSBpcyBub3cKKyAg
ICAgICAgZmFjdG9yZWQgb3V0IGludG8gTG9hZFZhcmFyZ3MuaHxjcHAsIHNvIHRoYXQgb3RoZXIg
SklUcyBjYW4gdXNlIGl0LiBJbiB0aGUgcHJvY2VzcyBvZiBmYWN0b3JpbmcKKyAgICAgICAgdGhp
cyBjb2RlIG91dCBJIG5vdGljZWQgdGhhdCB0aGUgMzItYml0IGFuZCA2NC1iaXQgY29kZSBpcyBu
ZWFybHkgaWRlbnRpY2FsLCBzbyBJIGNvbWJpbmVkIHRoZW0uCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6RXhl
Y1N0YXRlOjpyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bmNoZWNrZWRSKToKKyAgICAg
ICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6VmlydHVhbFJl
Z2lzdGVyOjpvcGVyYXRvcispOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6Om9wZXJh
dG9yLSk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6b3BlcmF0b3IrPSk6CisgICAg
ICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6b3BlcmF0b3ItPSk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6YnVs
a0dldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6bG9hZFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjps
b2FkVmFyYXJnc0FuZFNldFRoaXMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvTG9hZFZhcmFyZ3MuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6ZW1pdExvYWRWYXJhcmdzRmFzdENhc2UpOgorICAgICAgICAqIGpp
dC9Mb2FkVmFyYXJncy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNvcHlU
b0FyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb3B5VG9Bcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorCiAyMDE1LTAyLTA4ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBmZXcg
ZHVwbGljYXRlIHByb3BhZ2F0aW9uIHN0ZXBzIGZyb20gdGhlIERGRydzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvbiBwaGFzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zNDksNiArMzQ5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBqaXQvSklUU3R1YnMuY3BwCiAgICAgaml0L0pJVFRodW5rcy5jcHAKICAgICBqaXQv
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisgICAgaml0L0xvYWRWYXJh
cmdzLmNwcAogICAgIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKICAgICBqaXQv
UmVnLmNwcAogICAgIGppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3
OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyMCw2ICs2MjAsNyBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFN0dWJzLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRUaHVua3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxMb2FkVmFyYXJncy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmNwcCIgLz4KQEAgLTEzNTMsNiArMTM1NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRXcml0ZUJhcnJpZXIuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKU0ludGVyZmFjZUpJVC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caml0XExvYWRWYXJhcmdzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxqaXRcUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCIgLz4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjMyLDYgKzYzMiw4IEBACiAJCTBGRUEwQTMzMTcwRDQwQkYwMEJC
NzIyQyAvKiBERkdKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUEwQTJGMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmNwcCAq
LzsgfTsKIAkJMEZFQTBBMzQxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTMwMTcwRDQwQkYw
MEJCNzIyQyAvKiBERkdKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
RUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8q
IExvYWRWYXJhcmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZFRTk4NDMxQTg5MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUU5ODQyMUE4OTIy
NzUwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5jcHAgKi87IH07CiAJCTBGRUZDOUFBMTY4MUEzQjMw
MDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLzsgfTsKIAkJMEZFRkM5QUIxNjgxQTNC
NjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xv
bmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAg
Ki87IH07CkBAIC0yMzEzLDYgKzIzMTUsOCBAQAogCQkwRkVBMEEyRjE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdKSVRDb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdKSVRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFQTBBMzAxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSklUQ29kZS5oOyBwYXRoID0gZGZn
L0RGR0pJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0UxNjIz
N0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRWYXJhcmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBMb2FkVmFyYXJncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkVmFyYXJncy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNzZW1i
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpc2Fzc2VtYmxlci5oOyBw
YXRoID0gZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzc5Miw2ICszNzk2LDggQEAKIAkJCQkwRkM3MTJFMTE3Q0Q4NzhGMDA4Q0M5M0Mg
LyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlBNzZGNTRB
MjEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQTc2QzUxNzQx
MTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8sCisJCQkJMEZFRTk4NDIxQTg5
MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCAqLywKKwkJCQkwRkVFOTg0MDFBODg2NUI2
MDA3NTRFOTMgLyogTG9hZFZhcmFyZ3MuaCAqLywKIAkJCQkwRkU4MzQxNTFBNkVGOTdCMDBEMDQ4
NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwICovLAogCQkJCTBGRTgzNDE2MUE2
RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBG
QTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovLApAQCAtNTUxMCw2ICs1NTE2LDcg
QEAKIAkJCQlDMkZDOUJEMzE2NjQ0REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3Bp
ZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUU5ODQxMUE4ODY1QjcwMDc1
NEU5MyAvKiBMb2FkVmFyYXJncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTcxMzcsNiArNzE0NCw3IEBACiAJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIg
LyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQy
NTY2MTE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZFRTk4NDMxQTg5MjI3NTAwNzU0RTkzIC8qIExvYWRWYXJhcmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RTNDNjE4MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxNDI4MDg3MDEwN0VDMTM0MDAxM0U3QjIgLyogSlNXcmFwcGVyT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBK
dW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzYsMTIg
KzEyMzYsMjIgQEAgaW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIoaW50IGluZGV4KQogICAg
IHJldHVybiB0aGlzW2luZGV4XTsKIH0KIAoraW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIo
VmlydHVhbFJlZ2lzdGVyIHJlZykKK3sKKyAgICByZXR1cm4gcihyZWcub2Zmc2V0KCkpOworfQor
CiBpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6dW5jaGVja2VkUihpbnQgaW5kZXgpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CiAg
ICAgcmV0dXJuIHRoaXNbaW5kZXhdOwogfQogCitpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6
dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQoreworICAgIHJldHVybiB1bmNoZWNrZWRS
KHJlZy5vZmZzZXQoKSk7Cit9CisKIGlubGluZSBKU1ZhbHVlIEV4ZWNTdGF0ZTo6YXJndW1lbnRB
ZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KQogewogICAgIGlmIChhcmd1bWVudCA+PSBhcmd1
bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVh
bFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYg
KzcwLDIzIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlydHVhbFJlZ2lz
dGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3Zp
cnR1YWxSZWdpc3RlcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWaXJ0dWFsUmVnaXN0
ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyICE9IG90aGVyLm1fdmly
dHVhbFJlZ2lzdGVyOyB9CiAgICAgCisgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhdG9yKyhpbnQg
dmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG9mZnNl
dCgpICsgdmFsdWUpOworICAgIH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3ItKGludCB2
YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIob2Zmc2V0
KCkgLSB2YWx1ZSk7CisgICAgfQorICAgIFZpcnR1YWxSZWdpc3RlciYgb3BlcmF0b3IrPShpbnQg
dmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHZhbHVlOworICAg
IH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXImIG9wZXJhdG9yLT0oaW50IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgLSB2YWx1ZTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTc5
NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMsOCArMjAzLDEwIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAg
ICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIgZnJvbSB0aGUgY29kZWZyYW1lIChvciBjb25zdGFudCBm
cm9tIHRoZSBDb2RlQmxvY2spLgogICAgICAgICBSZWdpc3RlciYgcihpbnQpOworICAgICAgICBS
ZWdpc3RlciYgcihWaXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIg
Zm9yIGEgbm9uLWNvbnN0YW50CiAgICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKGludCk7Cisg
ICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3Rlcik7CiAKICAgICAgICAg
Ly8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQuIChBZnRlciBjYXB0dXJlLCBhcmd1bWVu
dHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uKQogICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkg
LSAxOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsx
MzQsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIGlu
dGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIH0KIAotQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgSlNWYWx1ZSBhcmd1bWVudHMsIGludCBmaXJzdEZy
ZWVSZWdpc3RlciwgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCitDYWxsRnJhbWUqIHNpemVG
cmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RhY2sqIHN0YWNrLCBKU1Zh
bHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0KQogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYuYXBwbHkoeCwgYXJn
dW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJh
cmdzKENhbGxGcmFtZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gMTsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVP
ZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgLWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRlZENh
bGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICAgICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0g
cGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyArIDEgfHwgIXN0YWNrLT5lbnN1cmVD
YXBhY2l0eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBDYWxs
RnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lCiAKICAgICBpZiAoYXJndW1lbnRz
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNl
dCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAg
LWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxl
ZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCksICBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2FwYWNp
dHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAgICAgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgQ2FsbEZyYW1l
KiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZQogICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ0NvdW50ID0g
MDsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJlZ2lz
dGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgICAgIHVuc2ln
bmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Nsb3RzICsgYXJnQ291bnQgKyAx
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRz
OjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUt
PnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFy
Z3MoQ2FsbEZyYW1lCiAgICAgICAgICAgICBhcmdDb3VudCAtPSBmaXJzdFZhckFyZ09mZnNldDsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJnQ291bnQgPSAwOwotICAgICAgICB1bnNpZ25l
ZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCAtZmlyc3RGcmVlUmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9m
ZnNldEZvcihhcmdDb3VudCArIDEpKTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJh
bWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdDb3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZz
ZXQpOwogICAgICAgICBpZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAh
c3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAg
ICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwpAQCAtMjA1LDcg
KzIwNSw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUKICAgICAg
ICAgYXJnQ291bnQgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBhcmdD
b3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJl
Z2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgdW5zaWdu
ZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdDb3VudCArIDEg
KyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCk7CiAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1
bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVy
cygpKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwpAQCAt
MjE0LDcgKzIxNCw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUK
ICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi12b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3ZvaWQgYnVs
a0dldEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVt
ZW50RGVzdCwgVmlydHVhbFJlZ2lzdGVyIGNvdW50RGVzdCwgSlNWYWx1ZSBhcmd1bWVudHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYu
YXBwbHkoeCwgYXJndW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KICAgICAgICAg
dW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7CkBAIC0yMjIsMTYgKzIyMiwxNCBAQCB2b2lkIGxvYWRWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDCiAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAtPSBmaXJzdFZhckFyZ09mZnNldDsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICBuZXdDYWxsRnJhbWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKKyAgICAg
ICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgICAgICBuZXdDYWxsRnJh
bWUtPnNldEFyZ3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgY2FsbEZyYW1lLT5hcmd1bWVu
dEFmdGVyQ2FwdHVyZShpKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZmlyc3RFbGVtZW50
RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJD
YXB0dXJlKGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChhcmd1bWVu
dHMuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNW
YWx1ZSh0aGlzVmFsdWUpOworICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0KS5wYXlsb2Fk
KCkgPSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjQwLDExICsyMzgsMTAg
QEAgdm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQwogICAgICAgICB1bnNp
Z25lZCBhcmdDb3VudCA9IGFyZ3NPYmplY3QtPmxlbmd0aChjYWxsRnJhbWUpOwogICAgICAgICBp
ZiAoYXJnQ291bnQgPj0gZmlyc3RWYXJBcmdPZmZzZXQpIHsKICAgICAgICAgICAgIGFyZ0NvdW50
IC09IGZpcnN0VmFyQXJnT2Zmc2V0OwotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudCArIDEpOwotICAgICAgICAgICAgYXJnc09i
amVjdC0+Y29weVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmdDb3VudCwg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCku
cGF5bG9hZCgpID0gYXJnQ291bnQgKyAxOworICAgICAgICAgICAgYXJnc09iamVjdC0+Y29weVRv
QXJndW1lbnRzKGNhbGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgYXJnQ291bnQsIGZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dFRoaXNWYWx1ZSh0aGlzVmFsdWUpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVz
dCkucGF5bG9hZCgpID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI1Mywx
MSArMjUwLDEwIEBAIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEMKICAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIGlmIChh
cmdDb3VudCA+PSBmaXJzdFZhckFyZ09mZnNldCkgewogICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7Ci0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50ICsgMSk7Ci0gICAgICAgICAgICBhcnJheS0+Y29w
eVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmdDb3VudCwgZmlyc3RWYXJB
cmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgp
ID0gYXJnQ291bnQgKyAxOworICAgICAgICAgICAgYXJyYXktPmNvcHlUb0FyZ3VtZW50cyhjYWxs
RnJhbWUsIGZpcnN0RWxlbWVudERlc3QsIGFyZ0NvdW50LCBmaXJzdFZhckFyZ09mZnNldCk7CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygxKTsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhp
c1ZhbHVlKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxvYWQoKSA9
IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yNjUsMTggKzI2MSwzNCBAQCB2
b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDCiAgICAgdW5zaWduZWQgYXJn
Q291bnQgPSBhcmdPYmplY3QtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKICAgICBpZiAoYXJnQ291bnQgPj0gZmly
c3RWYXJBcmdPZmZzZXQpIHsKICAgICAgICAgYXJnQ291bnQgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7
Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJn
Q291bnQgKyAxKTsKKyAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0g
YXJnQ291bnQgKyAxOwogICAgIH0gZWxzZQotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDEpOworICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0
KS5wYXlsb2FkKCkgPSAxOwogCi0gICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1Zh
bHVlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50OyArK2kpIHsKLSAgICAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBhc09iamVjdChhcmd1bWVudHMpLT5nZXQo
Y2FsbEZyYW1lLCBpICsgZmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAgICAgY2FsbEZyYW1lLT5y
KGZpcnN0RWxlbWVudERlc3QgKyBpKSA9IGFzT2JqZWN0KGFyZ3VtZW50cyktPmdldChjYWxsRnJh
bWUsIGkgKyBmaXJzdFZhckFyZ09mZnNldCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPnZtKCkuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAor
dm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3sK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRnJhbWVPZmZzZXQobmV3Q2FsbEZyYW1lIC0gY2Fs
bEZyYW1lKTsKKyAgICAKKyAgICBidWxrR2V0QnlWYWwoCisgICAgICAgIGNhbGxGcmFtZSwKKyAg
ICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApLAor
ICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsCisgICAg
ICAgIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworfQorCit2b2lkIGxvYWRWYXJhcmdz
QW5kU2V0VGhpcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpCit7CisgICAgbG9hZFZhcmFyZ3MoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFy
Z3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1Zh
bHVlKHRoaXNWYWx1ZSk7Cit9CisKIEludGVycHJldGVyOjpJbnRlcnByZXRlcihWTSYgdm0pCiAg
ICAgOiBtX3NhbXBsZUVudHJ5RGVwdGgoMCkKICAgICAsIG1fdm0odm0pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqKTsKLSAgICBDYWxsRnJhbWUqIHNp
emVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiwgSlNTdGFjayosIEpTVmFsdWUsIGludCwgdWlu
dDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1l
KiwgQ2FsbEZyYW1lKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQpOworICAgIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWMs
IEpTU3RhY2sqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMs
IHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICB2b2lkIGJ1bGtHZXRCeVZhbChDYWxs
RnJhbWUqIGV4ZWNDYWxsZXIsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCBWaXJ0
dWFsUmVnaXN0ZXIgY291bnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0KTsK
KyAgICB2b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBl
eGVjQ2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQp
OworICAgIHZvaWQgbG9hZFZhcmFyZ3NBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxlciwg
Q2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVu
dHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMs
MTAgKzI1MywyMCBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB2b2lkIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
LCBHUFJSZWcgdG8pCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQogICAgIHsKLSAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3Rlcikp
LCB0byk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdp
c3RlcikpLCB0byk7CiAgICAgfQorICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIz
MihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcg
ZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgbG9hZDMy
KEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOworICAgIH0KKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXI2NChK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJv
bSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgbG9hZDY0KEFk
ZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOworICAgIH0KKyNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQ
UlJlZyBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKICAgICB7CiAg
ICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0MiwxMSArNjQyLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KTsKIAog
ICAgICAgICB2b2lkIGVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20s
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKLSAgICAgICAgdm9pZCBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0
ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICB2
b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
RW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyNjQoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJl
Z2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSNlbmRpZgogCiAgICAgICAgIEpT
VmFsdWUgZ2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMpOwogICAgICAgICBib29sIGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBzcmMpOwpAQCAtNzM1LDcgKzczMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVy
KiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpKWiwg
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiwgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lK
SkksIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCwgUmVnaXN0ZXJJRCwgU3RyaW5nSW1wbCopOwpAQCAtNzUwLDcgKzc0NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fRUNiLCBDb2RlQmxvY2sq
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9uX0UpOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRP
cGVyYXRpb25fRUZKSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQsIGludDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VKWlosIEdQUlJlZywgR1BSUmVnLCBpbnQzMl90
LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FQWFwSiwgaW50LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgR1BSUmVn
LCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKLCBpbnQsIEdQUlJlZywgR1BSUmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE3OTc2MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEz
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVk
ZSAiTG9hZFZhcmFyZ3MuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtMTMwLDY5ICsxMzEs
MzYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGlmIChj
YW5PcHRpbWl6ZSkgewogICAgICAgICBlbWl0TG9hZFRhZyhhcmd1bWVudHMsIHJlZ1QxKTsKICAg
ICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Ci0KLSAgICAgICAgbG9hZDMyKHBheWxvYWRG
b3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlZ1QyKTsKLSAgICAgICAgaWYgKGZpcnN0VmFy
QXJnT2Zmc2V0KSB7Ci0gICAgICAgICAgICBKdW1wIHN1ZmZpY2llbnRBcmd1bWVudHMgPSBicmFu
Y2gzMihHcmVhdGVyVGhhbiwgcmVnVDIsIFRydXN0ZWRJbW0zMihmaXJzdFZhckFyZ09mZnNldCAr
IDEpKTsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMik7Ci0gICAgICAg
ICAgICBKdW1wIGVuZFZhckFyZ3MgPSBqdW1wKCk7Ci0gICAgICAgICAgICBzdWZmaWNpZW50QXJn
dW1lbnRzLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoZmlyc3RW
YXJBcmdPZmZzZXQpLCByZWdUMik7Ci0gICAgICAgICAgICBlbmRWYXJBcmdzLmxpbmsodGhpcyk7
Ci0gICAgICAgIH0KLSAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCByZWdU
MiwgVHJ1c3RlZEltbTMyKEFyZ3VtZW50czo6TWF4QXJndW1lbnRzICsgMSkpKTsKLSAgICAgICAg
Ly8gcmVnVDI6IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzCi0KLSAgICAgICAgbW92ZShyZWdU
MiwgcmVnVDMpOwotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1maXJzdEZyZWVSZWdpc3Rl
ciArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCByZWdUMyk7Ci0gICAgICAgIC8vIHJl
Z1QxIG5vdyBoYXMgdGhlIHJlcXVpcmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKLSAg
ICAgICAgLy8gUm91bmQgcmVnVDEgdG8gbmV4dCBtdWx0aXBsZSBvZiBzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpCi0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSAtIDEpLCByZWdUMyk7Ci0gICAgICAgIGFuZFB0cihUcnVzdGVkSW1tMzIofihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCByZWdUMyk7Ci0gICAgICAgIG5lZzMyKHJlZ1Qz
KTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKDMpLCByZWdUMyk7Ci0gICAgICAgIGFk
ZFB0cihjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDMpOwotICAgICAgICAvLyByZWdUMzogbmV3Q2Fs
bEZyYW1lCi0KLSAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1
dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNrTGltaXQoKSksIHJlZ1QzKSk7Ci0KLSAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50LgotICAgICAgICBzdG9yZTMyKHJlZ1QyLCBw
YXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsIHJlZ1QzKSk7Ci0KLSAgICAgICAgLy8g
SW5pdGlhbGl6ZSAndGhpcycuCi0gICAgICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVnVDEsIHJl
Z1QwKTsKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpICsgKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAgICAg
ICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QzLCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSArIChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpKTsKLQotICAgICAgICAvLyBDb3B5IGFyZ3Vt
ZW50cy4KLSAgICAgICAgZW5kLmFwcGVuZChicmFuY2hTdWIzMihaZXJvLCBUcnVzdGVkSW1tMzIo
MSksIHJlZ1QyKSk7Ci0gICAgICAgIC8vIHJlZ1QyOiBhcmd1bWVudENvdW50OwotCi0gICAgICAg
IExhYmVsIGNvcHlMb29wID0gbGFiZWwoKTsKLSAgICAgICAgbG9hZDMyKEJhc2VJbmRleChjYWxs
RnJhbWVSZWdpc3RlciwgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy5wYXlsb2FkKSArKChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsg
Zmlyc3RWYXJBcmdPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkp
LCByZWdUMCk7Ci0gICAgICAgIGxvYWQzMihCYXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJl
Z1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSAr
KChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgZmlyc3RWYXJBcmdPZmZzZXQpICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpLCByZWdUMSk7Ci0gICAgICAgIHN0
b3JlMzIocmVnVDAsIEJhc2VJbmRleChyZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSArKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwotICAg
ICAgICBzdG9yZTMyKHJlZ1QxLCBCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSArKENhbGxGcmFtZTo6dGhpc0Fy
Z3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkpOwot
ICAgICAgICBicmFuY2hTdWIzMihOb25aZXJvLCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QyKS5saW5r
VG8oY29weUxvb3AsIHRoaXMpOwotCisgICAgICAgIAorICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigtZmlyc3RGcmVlUmVnaXN0ZXIpLCByZWdUMSk7CisgICAgICAgIGVtaXRMb2FkVmFyYXJnc0Zh
c3RDYXNlKCp0aGlzLCByZWdUMSwgcmVnVDAsIHJlZ1QxLCByZWdUMiwgMCwgZmlyc3RWYXJBcmdP
ZmZzZXQsIHNsb3dDYXNlKTsKICAgICAgICAgZW5kLmFwcGVuZChqdW1wKCkpOwotICAgIH0KLQot
ICAgIGlmIChjYW5PcHRpbWl6ZSkKICAgICAgICAgc2xvd0Nhc2UubGluayh0aGlzKTsKKyAgICB9
CiAKICAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIC1maXJzdEZyZWVSZWdpc3Rlciwg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgIC8vIFRoaXMgaXMgc3BlY3RhY3VsYXJseSBkaXJ0eS4g
V2Ugd2FudCB0byBwYXNzIGZvdXIgYXJndW1lbnRzIHRvIG9wZXJhdGlvbkxvYWRWYXJhcmdzLiBP
biB4ODYtMzIgd2UKKyAgICAvLyB3aWxsIHBhc3MgdGhlbSBvbiB0aGUgc3RhY2suIFdlIHdhbnQg
Zm91ciBzdGFjayBzbG90cywgb3IgMTYgYnl0ZXMuIEV4dGVuZGluZyB0aGUgc3RhY2sgYnkgOCBi
eXRlcworICAgIC8vIG92ZXIgd2hlcmUgd2UgcGxhbm5lZCBvbiBwb2ludGluZyB0aGUgRlAgZ2l2
ZXMgdXMgZW5vdWdoIHJvb20uIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgRlAgZ2l2ZXMgYW4KKyAg
ICAvLyBleHRyYSBDYWxsZXJGcmFtZUFuZFBDIGJ5dGVzIGJleW9uZCB3aGVyZSBTUCBzaG91bGQg
cG9pbnQgcHJpb3IgdG8gdGhlIGNhbGwuIFNvIGlmIHdlIGp1c3QgZGlkCisgICAgLy8gbW92ZShy
ZXR1cm5WYWx1ZUdQUiwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCB3ZSdkIGhhdmUgZW5vdWdoIHJv
b20gZm9yIHBhc3NpbmcgdHdvIGFyZ3MsIG9yIDgKKyAgICAvLyBieXRlcyAtIGV4Y2VwdCB0aGF0
IHdlJ2QgaGF2ZSBhIG1pc2FsaWduZWQgc3RhY2suIFNvIGlmIHdlIHN1YnRyYWN0ICphbm90aGVy
KiBDYWxsZXJGcmFtZUFuZFBDCisgICAgLy8gYnl0ZXMsIHdlIGFyZSB1cCB0byAxNiBieXRlcyBv
ZiBzcGFyZSByb29tICphbmQqIHdlIGhhdmUgYW4gYWxpZ25lZCBzdGFjay4gR3Jvc3MsIGJ1dCBj
b3JyZWN0IQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIHJldHVyblZhbHVlR1BSLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgZW1pdExvYWQo
dGhpc1ZhbHVlLCByZWdUMSwgcmVnVDQpOwotICAgIGVtaXRMb2FkKGFyZ3VtZW50cywgcmVnVDMs
IHJlZ1QyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCByZXR1cm5W
YWx1ZUdQUiwgcmVnVDEsIHJlZ1Q0LCByZWdUMywgcmVnVDIsIGZpcnN0VmFyQXJnT2Zmc2V0KTsK
LSAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMyk7CisgICAgZW1pdExvYWQoYXJndW1lbnRz
LCByZWdUMiwgcmVnVDEpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3Ms
IHJldHVyblZhbHVlR1BSLCByZWdUMiwgcmVnVDEsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICBt
b3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICBpZiAoY2FuT3B0aW1pemUpCiAgICAg
ICAgIGVuZC5saW5rKHRoaXMpOwogCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpLCByZWdUMywgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIC8vIElu
aXRpYWxpemUgJ3RoaXMnLgorICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVnVDIsIHJlZ1QwKTsK
KyAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBQYXlsb2FkT2Zmc2V0ICsgKENhbGxG
cmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpKSkpOworICAgIHN0b3JlMzIocmVnVDIsIEFkZHJlc3MocmVnVDEsIFRhZ09mZnNldCAr
IChDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSkpKTsKKyAgICAKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIHJlZ1QxLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiB9CiAKIHZv
aWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzk3NjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAi
TG9hZFZhcmFyZ3MuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVz
dWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtNzAsNjYgKzcxLDI3IEBA
IHZvaWQgSklUOjpjb21waWxlTG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24KICAgICBpZiAoY2FuT3B0
aW1pemUpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1Qw
KTsKICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1
c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpKSkpOwotCi0gICAgICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNTdGFjazo6QXJndW1lbnRDb3VudCwgcmVnVDApOwot
ICAgICAgICBpZiAoZmlyc3RWYXJBcmdPZmZzZXQpIHsKLSAgICAgICAgICAgIEp1bXAgc3VmZmlj
aWVudEFyZ3VtZW50cyA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuLCByZWdUMCwgVHJ1c3RlZEltbTMy
KGZpcnN0VmFyQXJnT2Zmc2V0ICsgMSkpOwotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIo
MSksIHJlZ1QwKTsKLSAgICAgICAgICAgIEp1bXAgZW5kVmFyQXJncyA9IGp1bXAoKTsKLSAgICAg
ICAgICAgIHN1ZmZpY2llbnRBcmd1bWVudHMubGluayh0aGlzKTsKLSAgICAgICAgICAgIHN1YjMy
KFRydXN0ZWRJbW0zMihmaXJzdFZhckFyZ09mZnNldCksIHJlZ1QwKTsKLSAgICAgICAgICAgIGVu
ZFZhckFyZ3MubGluayh0aGlzKTsKLSAgICAgICAgfQotICAgICAgICBzbG93Q2FzZS5hcHBlbmQo
YnJhbmNoMzIoQWJvdmUsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoQXJndW1lbnRzOjpNYXhBcmd1bWVu
dHMgKyAxKSkpOwotICAgICAgICAvLyByZWdUMDogYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMK
LSAgICAgICAgbW92ZShyZWdUMCwgcmVnVDEpOwotICAgICAgICBhZGQ2NChUcnVzdGVkSW1tMzIo
LWZpcnN0RnJlZVJlZ2lzdGVyICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIHJlZ1Qx
KTsKLSAgICAgICAgLy8gcmVnVDEgbm93IGhhcyB0aGUgcmVxdWlyZWQgZnJhbWUgc2l6ZSBpbiBS
ZWdpc3RlciB1bml0cwotICAgICAgICAvLyBSb3VuZCByZWdUMSB0byBuZXh0IG11bHRpcGxlIG9m
IHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKLSAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSwgcmVnVDEpOwotICAgICAgICBhbmQ2NChUcnVz
dGVkSW1tMzIofihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCByZWdUMSk7Ci0KLSAg
ICAgICAgbmVnNjQocmVnVDEpOwotICAgICAgICBsc2hpZnQ2NChUcnVzdGVkSW1tMzIoMyksIHJl
Z1QxKTsKLSAgICAgICAgYWRkUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMSk7Ci0gICAgICAg
IC8vIHJlZ1QxOiBuZXdDYWxsRnJhbWUKLQotICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNo
UHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU3RhY2tMaW1pdCgpKSwg
cmVnVDEpKTsKLQotICAgICAgICAvLyBJbml0aWFsaXplIEFyZ3VtZW50Q291bnQuCi0gICAgICAg
IHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotCi0gICAgICAgIC8vIEluaXRp
YWxpemUgJ3RoaXMnLgotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWYWx1ZSwg
cmVnVDIpOwotICAgICAgICBzdG9yZTY0KHJlZ1QyLCBBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWU6
OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOwotCi0gICAgICAgIC8vIENvcHkgYXJndW1lbnRzLgotICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihyZWdUMCwgcmVnVDApOwotICAgICAgICBlbmQuYXBwZW5kKGJyYW5jaFN1YjY0KFplcm8s
IFRydXN0ZWRJbW0zMigxKSwgcmVnVDApKTsKLSAgICAgICAgLy8gcmVnVDA6IGFyZ3VtZW50Q291
bnQKLQotICAgICAgICBMYWJlbCBjb3B5TG9vcCA9IGxhYmVsKCk7Ci0gICAgICAgIGxvYWQ2NChC
YXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QwLCBUaW1lc0VpZ2h0LCAoQ2FsbEZyYW1l
Ojp0aGlzQXJndW1lbnRPZmZzZXQoKSArIGZpcnN0VmFyQXJnT2Zmc2V0KSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCByZWdUMik7Ci0gICAgICAgIHN0b3JlNjQocmVnVDIs
IEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzRWlnaHQsIENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0gICAg
ICAgIGJyYW5jaFN1YjY0KE5vblplcm8sIFRydXN0ZWRJbW0zMigxKSwgcmVnVDApLmxpbmtUbyhj
b3B5TG9vcCwgdGhpcyk7Ci0KKyAgICAgICAgCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKC1m
aXJzdEZyZWVSZWdpc3RlciksIHJlZ1QxKTsKKyAgICAgICAgZW1pdExvYWRWYXJhcmdzRmFzdENh
c2UoKnRoaXMsIHJlZ1QxLCByZWdUMCwgcmVnVDEsIHJlZ1QyLCAwLCBmaXJzdFZhckFyZ09mZnNl
dCwgc2xvd0Nhc2UpOwogICAgICAgICBlbmQuYXBwZW5kKGp1bXAoKSk7Ci0gICAgfQotCi0gICAg
aWYgKGNhbk9wdGltaXplKQogICAgICAgICBzbG93Q2FzZS5saW5rKHRoaXMpOworICAgIH0KIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMSk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgZmlyc3RGcmVlUmVn
aXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNp
emVGcmFtZUZvclZhcmFyZ3MsIHJlZ1QxLCAtZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJn
T2Zmc2V0KTsKICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlzVmFsdWUsIHJlZ1QxKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTG9hZFZhcmFyZ3MsIHJldHVyblZhbHVlR1BSLCByZWdUMSwgcmVnVDIsIGZpcnN0
VmFyQXJnT2Zmc2V0KTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgcmVn
VDEpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIHJldHVyblZhbHVl
R1BSLCByZWdUMSwgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIs
IHJlZ1QxKTsKIAogICAgIGlmIChjYW5PcHRpbWl6ZSkKICAgICAgICAgZW5kLmxpbmsodGhpcyk7
CiAgICAgCisgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycuCisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih0aGlzVmFsdWUsIHJlZ1QwKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1Qx
LCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSkpOworCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCByZWdUMSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTc5NzYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk4LDIzICs5OCw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRJbnRUb0NhbGwK
ICNlbmRpZgogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJ
RCB0bywgUmVnaXN0ZXJJRCBmcm9tKQotewotICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBlbnRy
eSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50
cnkgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkKLXsKLSAgICBsb2FkMzIo
QWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7Ci19Ci0KLSNpZiBV
U0UoSlNWQUxVRTY0KQotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXI2NChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJ
RCB0bywgUmVnaXN0ZXJJRCBmcm9tKQotewotICAgIGxvYWQ2NChBZGRyZXNzKGZyb20sIGVudHJ5
ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLX0KLSNlbmRpZgotCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNo
U3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgbV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CkBAIC0zOTIsOSArMzc1LDkgQEAg
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VG
SkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgaW50
MzJfdCBhcmc0KQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxP
cGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgaW50MzJfdCBhcmczKQogewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMykpOwogICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKQEAgLTUz
OSw5ICs1MjIsOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oRl9K
SVRPcGVyYXRpb25fRUZKSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcs
IEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCwg
aW50MzJfdCBhcmc0KQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNh
bGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBpbnQzMl90IGFyZzMpCiB7Ci0gICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBh
cmczUGF5bG9hZCwgYXJnM1RhZywgVHJ1c3RlZEltbTMyKGFyZzQpKTsKKyAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFRydXN0ZWRJbW0z
MihhcmczKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwNCwyMyArMTYwNCwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKLUNhbGxGcmFtZSogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBmaXJzdEZyZWVSZWdpc3Rlciwg
aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVy
YXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJz
dFZhckFyZ09mZnNldCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBKU1N0YWNrKiBzdGFjayA9ICZl
eGVjLT5pbnRlcnByZXRlcigpLT5zdGFjaygpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gc2l6ZUZyYW1lRm9yVmFyYXJncyhleGVjLCBzdGFjaywgYXJndW1lbnRzLCBmaXJzdEZy
ZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gc2l6ZUZyYW1lRm9yVmFyYXJncyhleGVjLCBzdGFjaywgYXJndW1lbnRzLCBudW1Vc2Vk
U3RhY2tTbG90cywgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7
CiB9CiAKLUNhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJncyhFeGVj
U3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCkKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJn
cyhFeGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRU
aGlzKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJn
dW1lbnRzKTsKLSAgICBsb2FkVmFyYXJncyhleGVjLCBuZXdDYWxsRnJhbWUsIHRoaXNWYWx1ZSwg
YXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgbG9hZFZhcmFyZ3MoZXhlYywgbmV3
Q2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICByZXR1cm4gbmV3
Q2FsbEZyYW1lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkocmV2aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgZXh0ZXJuICJD
IiB7CiAgICAgWjogaW50MzJfdAogKi8KIAotdHlwZWRlZiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJ
T04gKCpGX0pJVE9wZXJhdGlvbl9FRkpKWikoRXhlY1N0YXRlKiwgQ2FsbEZyYW1lKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgQ2FsbEZyYW1lKiBK
SVRfT1BFUkFUSU9OICgqRl9KSVRPcGVyYXRpb25fRUZKWikoRXhlY1N0YXRlKiwgQ2FsbEZyYW1l
KiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwogdHlwZWRlZiBDYWxsRnJhbWUqIEpJVF9PUEVS
QVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FSlpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VBKShFeGVjU3RhdGUqLCBKU0FycmF5Kik7
CkBAIC0zMDksOCArMzA5LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZB
cmd1bQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqKSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbnN0YW5jZU9mKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBwcm90bykgV1RGX0lOVEVSTkFMOwotQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgYXJn
dW1lbnRzLCBpbnQzMl90IGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zm
c2V0KSBXVEZfSU5URVJOQUw7Ci1DYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9h
ZFZhcmFyZ3MoRXhlY1N0YXRlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpIFdU
Rl9JTlRFUk5BTDsKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplRnJhbWVG
b3JWYXJhcmdzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBu
dW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkgV1RGX0lOVEVSTkFM
OworQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvYWRWYXJhcmdzKEV4ZWNTdGF0
ZSosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OwogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktl
eVR5cGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Mb2FkVmFyYXJn
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Mb2FkVmFyYXJn
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0xvYWRWYXJh
cmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMb2FkVmFyYXJncy5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdGFja0FsaWdubWVu
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBlbWl0TG9hZFZhcmFyZ3NGYXN0Q2FzZShD
Q2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVVzZWRTbG90c0dQUiwgR1BSUmVnIHNjcmF0Y2hH
UFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIEdQUlJlZyBzY3JhdGNoR1BSMywgaW50IGlubGluZVN0
YWNrT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdFZhckFyZ09mZnNldCwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCYgc2xvd0Nhc2UpCit7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBlbmQ7CisgICAg
CisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIChpbmxpbmVTdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpICog
c2l6ZW9mKFJlZ2lzdGVyKSArIFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CisgICAgaWYg
KGZpcnN0VmFyQXJnT2Zmc2V0KSB7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdWZmaWNp
ZW50QXJndW1lbnRzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6R3JlYXRlclRoYW4sIHNj
cmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihmaXJzdFZhckFyZ09mZnNldCAr
IDEpKTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNj
cmF0Y2hHUFIxKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVuZFZhckFyZ3MgPSBqaXQu
anVtcCgpOworICAgICAgICBzdWZmaWNpZW50QXJndW1lbnRzLmxpbmsoJmppdCk7CisgICAgICAg
IGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihmaXJzdFZhckFyZ09mZnNldCks
IHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgZW5kVmFyQXJncy5saW5rKCZqaXQpOworICAgIH0KKyAg
ICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmUsIHNjcmF0
Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcmd1bWVudHM6Ok1heEFyZ3VtZW50
cyArIDEpKSk7CisgICAgLy8gc2NyYXRjaEdQUjE6IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
CisgICAgaml0Lm1vdmUobnVtVXNlZFNsb3RzR1BSLCBzY3JhdGNoR1BSMik7CisgICAgaml0LmFk
ZFB0cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIpOworICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIHNjcmF0Y2hH
UFIyKTsKKyAgICAvLyBzY3JhdGNoR1BSMiBub3cgaGFzIHRoZSByZXF1aXJlZCBmcmFtZSBzaXpl
IGluIFJlZ2lzdGVyIHVuaXRzCisgICAgLy8gUm91bmQgc2NyYXRjaEdQUjIgdG8gbmV4dCBtdWx0
aXBsZSBvZiBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpCisgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSksIHNjcmF0
Y2hHUFIyKTsKKyAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKH4oc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpKSwgc2NyYXRjaEdQUjIpOworCisgICAgaml0Lm5l
Z1B0cihzY3JhdGNoR1BSMik7CisgICAgaml0LmxzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMy
KDMpLCBzY3JhdGNoR1BSMik7CisgICAgaml0LmFkZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlciwgc2NyYXRjaEdQUjIpOworICAgIC8vIHNjcmF0Y2hHUFIyOiBuZXdDYWxsRnJhbWUKKwor
ICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QWJvdmUsIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGppdC52bSgpLT5hZGRyZXNzT2ZTdGFja0xpbWl0
KCkpLCBzY3JhdGNoR1BSMikpOworCisgICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50Lgor
ICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRj
aEdQUjIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOworCisgICAgLy8gQ29weSBhcmd1bWVudHMuCisg
ICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CisgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuYnJhbmNoU3ViUHRyKENDYWxsSGVscGVyczo6
WmVybywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2hHUFIxKTsKKyAgICAv
LyBzY3JhdGNoR1BSMTogYXJndW1lbnRDb3VudAorCisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBj
b3B5TG9vcCA9IGppdC5sYWJlbCgpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaml0LmxvYWQ2
NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc2Ny
YXRjaEdQUjEsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkgKyBpbmxpbmVTdGFja09mZnNldCArIGZpcnN0VmFyQXJnT2Zmc2V0KSAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBzY3JhdGNoR1BSMyk7CisgICAgaml0
LnN0b3JlNjQoc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIy
LCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBDYWxsRnJhbWU6OnRoaXNB
cmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwor
I2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCksIHNvIHRoaXMgYmVnaW5zIHRoZSAzMi1iaXQgY2FzZQor
ICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIChDYWxsRnJh
bWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICsgaW5saW5lU3RhY2tPZmZzZXQgKyBmaXJzdFZhckFy
Z09mZnNldCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0
KSwgc2NyYXRjaEdQUjMpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBl
cnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VGlt
ZXNFaWdodCwgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKKyAgICBqaXQubG9hZDMyKENDYWxs
SGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzY3JhdGNoR1BS
MSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCAoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZz
ZXQoKSArIGlubGluZVN0YWNrT2Zmc2V0ICsgZmlyc3RWYXJBcmdPZmZzZXQpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoR1BSMyk7
CisgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjMsIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNj
cmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBDYWxsRnJh
bWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KSwgZW5kIG9m
IDMyLWJpdCBjYXNlCisgICAgaml0LmJyYW5jaFN1YlB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8s
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoR1BSMSkubGlua1RvKGNvcHlM
b29wLCAmaml0KTsKKyAgICAKKyAgICBkb25lLmxpbmsoJmppdCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Mb2FkVmFyYXJncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvTG9hZFZhcmFyZ3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvTG9hZFZhcmFyZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG9h
ZFZhcmFyZ3NfaAorI2RlZmluZSBMb2FkVmFyYXJnc19oCisKKyNpZiBFTkFCTEUoSklUKQorCisj
aW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCisvLyBBc3N1bWVzIHRoYXQgU1AgcmVmZXJzIHRvIHRoZSBsYXN0
IGluLXVzZSBzdGFjayBsb2NhdGlvbiwgYW5kIGFmdGVyIHRoaXMgcmV0dXJucyBTUCB3aWxsIHBv
aW50IHRvCisvLyB0aGUgbmV3bHkgY3JlYXRlZCBmcmFtZSBwbHVzIHRoZSBuYXRpdmUgaGVhZGVy
LiBzY3JhdGNoR1BSMiBtYXkgYmUgdGhlIHNhbWUgYXMgbnVtVXNlZFNsb3RzR1BSLgordm9pZCBl
bWl0TG9hZFZhcmFyZ3NGYXN0Q2FzZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVVzZWRT
bG90c0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIEdQUlJlZyBz
Y3JhdGNoR1BSMywgaW50IGlubGluZVN0YWNrT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdFZhckFyZ09m
ZnNldCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0Nhc2UpOworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBMb2FkVmFyYXJnc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMTc5NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2NSw3ICsxMTY1LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbQogICAgIC8vIC0gU2V0IHVwIGEg
Y2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCiAgICAg
CiAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gc2l6ZUZyYW1lRm9yVmFyYXJncyhleGVjLCAm
dm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksCi0gICAgICAgIExMSU5UX09QX0MoNCkuanNWYWx1ZSgp
LCBwY1s1XS51Lm9wZXJhbmQsIHBjWzZdLnUub3BlcmFuZCk7CisgICAgICAgIExMSU5UX09QX0Mo
NCkuanNWYWx1ZSgpLCAtcGNbNV0udS5vcGVyYW5kLCBwY1s2XS51Lm9wZXJhbmQpOwogICAgIExM
SU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIGV4ZWMpOwogICAgIAogICAgIHZtLm5ld0Nh
bGxGcmFtZVJldHVyblZhbHVlID0gZXhlY0NhbGxlZTsKQEAgLTExODQsNyArMTE4NCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmEKICAgICAKICAgICBFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUgPSB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKIAotICAgIGxvYWRW
YXJhcmdzKGV4ZWMsIGV4ZWNDYWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDQpLmpzVmFsdWUoKSwgcGNbNl0udS5vcGVyYW5kKTsKKyAgICBsb2FkVmFyYXJnc0FuZFNl
dFRoaXMoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOwogICAgIExMSU5UX0NBTExfQ0hFQ0tf
RVhDRVBUSU9OKGV4ZWMsIGV4ZWMpOwogICAgIAogICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIo
SlNTdGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CkBAIC0xMjA1LDcgKzEyMDUsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0CiAgICAgCiAgICAgRXhlY1N0
YXRlKiBleGVjQ2FsbGVlID0gdm0ubmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWU7CiAgICAgCi0gICAg
bG9hZFZhcmFyZ3MoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOworICAgIGxvYWRWYXJhcmdz
QW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCk7CiAgICAgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTc5NzYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmln
aHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoKQEAgLTg3LDIyICs4NywyNSBAQCB2b2lkIEFy
Z3VtZW50czo6Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqCiAgICAgCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcmd1bWVudHNGdW5jSXRlcmF0b3IoRXhlY1N0YXRlKik7CiAK
LXZvaWQgQXJndW1lbnRzOjpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgdWludDMyX3QgY29weUxlbmd0aCwgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCkKK3ZvaWQgQXJndW1lbnRzOjpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBW
aXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgdWludDMyX3QgY29weUxlbmd0aCwgaW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKIHsKICAgICB1aW50MzJfdCBsZW5ndGggPSBjb3B5TGVu
Z3RoICsgZmlyc3RWYXJBcmdPZmZzZXQ7CiAKICAgICBpZiAoVU5MSUtFTFkobV9vdmVycm9kZUxl
bmd0aCkpIHsKICAgICAgICAgbGVuZ3RoID0gbWluKGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKSwgbGVuZ3RoKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZmlyc3RWYXJBcmdPZmZzZXQ7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAg
IGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSwgZ2V0KGV4ZWMsIGkpKTsKKyAgICAgICAgICAgIGV4
ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBnZXQoZXhl
YywgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlz
LT5sZW5ndGgoZXhlYykpOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdFZhckFyZ09mZnNldDsg
aSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdHJ5R2V0QXJn
dW1lbnQoaSkpCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGkgLSBmaXJzdFZh
ckFyZ09mZnNldCwgdmFsdWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsRnJhbWUt
PnNldEFyZ3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgZ2V0KGV4ZWMsIGkpKTsKKyAgICAg
ICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkg
PSB2YWx1ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleGVjLT5yKGZpcnN0RWxlbWVu
dERlc3QgKyBpIC0gZmlyc3RWYXJBcmdPZmZzZXQpID0gZ2V0KGV4ZWMsIGkpOworICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE3OTc2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNo
IChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9y
bG92aWNoCiAgKgpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX251
bUFyZ3VtZW50czsgCiAgICAgfQogICAgICAgICAKLSAgICB2b2lkIGNvcHlUb0FyZ3VtZW50cyhF
eGVjU3RhdGUqLCBDYWxsRnJhbWUqLCB1aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0
QXJndW1lbnRPZmZzZXQpOworICAgIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZp
cnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQz
Ml90IGZpcnN0QXJndW1lbnRPZmZzZXQpOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqKTsK
ICAgICB2b2lkIHRlYXJPZmYoQ2FsbEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1lKik7CiAgICAgdm9p
ZCB0ZWFyT2ZmRm9yQ2xvbmluZyhDYWxsRnJhbWUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNzk3NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3Yg
KGFwQG55cG9wLmNvbSkKICAqCkBAIC0xNTcwLDcgKzE1NzAsNyBAQCB2b2lkIEpTQXJyYXk6OmZp
bGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIGFyZ3MuYXBwZW5kKGdldChleGVjLCBp
KSk7CiB9CiAKLXZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVpbnQzMl90IGNvcHlMZW5ndGgsIGludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQpCit2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4
ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1aW50MzJfdCBjb3B5TGVuZ3Ro
LCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogewogICAgIHVuc2lnbmVkIGkgPSBmaXJzdFZh
ckFyZ09mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvcjsKQEAgLTE2MDIs
NyArMTYwMiw3IEBAIHZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSoKICAg
ICAgICAgICAgIGRvdWJsZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsK
ICAgICAgICAgICAgIGlmICh2ICE9IHYpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgSlNWYWx1
ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdikpOworICAgICAgICAgICAgZXhlYy0+cihmaXJz
dEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IEpTVmFsdWUoSlNWYWx1ZTo6
RW5jb2RlQXNEb3VibGUsIHYpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTE2MjcsMTEgKzE2MjcsMTQgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0
YXRlKgogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHYgPSB2ZWN0b3JbaV07CiAgICAg
ICAgIGlmICghdikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYWxsRnJhbWUtPnNldEFy
Z3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgdi5nZXQoKSk7CisgICAgICAgIGV4ZWMtPnIo
Zmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSB2LmdldCgpOwogICAg
IH0KICAgICAKLSAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBjYWxsRnJhbWUt
PnNldEFyZ3VtZW50KGkgLSBmaXJzdFZhckFyZ09mZnNldCwgZ2V0KGV4ZWMsIGkpKTsKKyAgICBm
b3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVz
dCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBnZXQoZXhlYywgaSk7CisgICAgICAgIGlmIChV
TkxJS0VMWShleGVjLT52bSgpLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CiB9CiAKIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDE3OTc2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMzIsNyArMTMyLDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlsbEFyZ0xp
c3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXImKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCB1aW50MzJf
dCBsZW5ndGgsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZpcnR1YWxSZWdpc3RlciBmaXJz
dEVsZW1lbnREZXN0LCB1aW50MzJfdCBsZW5ndGgsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQp
OwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGUpCiAgICAgewo=
</data>
<flag name="review"
          id="271218"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>