<?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>233805</bug_id>
          
          <creation_ts>2021-12-03 01:34:03 -0800</creation_ts>
          <short_desc>[RISCV64] Add more MacroAssemblerRISCV64 helper infrastructure</short_desc>
          <delta_ts>2022-03-11 05:33:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pmatos</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820060</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-12-03 01:34:03 -0800</bug_when>
    <thetext>[RISCV64] Add more MacroAssemblerRISCV64 helper infrastructure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820061</commentid>
    <comment_count>1</comment_count>
      <attachid>445821</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-12-03 01:34:56 -0800</bug_when>
    <thetext>Created attachment 445821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820939</commentid>
    <comment_count>2</comment_count>
      <attachid>445821</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-07 01:41:06 -0800</bug_when>
    <thetext>Comment on attachment 445821
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820940</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 02:01:31 -0800</bug_when>
    <thetext>Committed r286592 (?): &lt;https://commits.webkit.org/r286592&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445821.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820941</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 02:02:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/86146644&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445821</attachid>
            <date>2021-12-03 01:34:56 -0800</date>
            <delta_ts>2021-12-07 02:01:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233805-20211203103454.patch</filename>
            <type>text/plain</type>
            <size>26951</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li4yMDdhMTFhMzcwZjczNjg5
NzNkMGI5NjY4ZmE0ZWU1NWIxZjBjYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMS0xMi0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1JJU0NWNjRdIEFkZCBtb3JlIE1hY3JvQXNzZW1ibGVyUklTQ1Y2NCBo
ZWxwZXIgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzgwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSBSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlhdGVMb2FkZXIs
IGEgaGVscGVyIGNsYXNzIHRoYXQKKyAgICAgICAgZ2VuZXJhdGVzIHRoZSBvcGVyYXRpb25zIG5l
Y2Vzc2FyeSBmb3IgbG9hZGluZyBhbnkgaW1tZWRpYXRlIHZhbHVlIGludG8KKyAgICAgICAgc29t
ZSByZWdpc3Rlci4gVGhpcyBjYW4gYmUgYXMgc2ltcGxlIGFzIHVzaW5nIEFEREkgdG8gbG9hZCAx
Mi1iaXQgdmFsdWVzCisgICAgICAgIG9yIGEgY29tYmluYXRpb24gb2YgTFVJLCBBRERJIGFuZCBw
b3NzaWJseSBhZGRpdGlvbmFsIGNvbWJpbmF0aW9ucyBvZgorICAgICAgICBMU0hJRlQgYW5kIEFE
REkgaW5zdHJ1Y3Rpb25zLiBUaGVyZSdzIGFsc28gYSBwbGFjZWhvbGRlciBtb2RlIHdoaWNoCisg
ICAgICAgIGdlbmVyYXRlcyBuby1vcHMgZm9yIHVudXNlZCBvcGVyYXRpb24gc2xvdHMsIGluIG9y
ZGVyIHRvIGVuYWJsZQorICAgICAgICBmdXR1cmUgcGF0Y2hpbmcgYW5kIHJlcGF0Y2hpbmcgZm9y
IG90aGVyIGltbWVkaWF0ZSB2YWx1ZXMuCisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJSSVNDVjY0
OjpJbW0gaXMgaW50cm9kdWNlZCBhcyBhIHByaXZhdGUgaGVscGVyIHN0cnVjdCB0aGF0CisgICAg
ICAgIGdyb3VwcyB0b2dldGhlciB2YWxpZGl0eSBhbmQgY29uc3RydWN0aW9uIG9wZXJhdGlvbnMg
Zm9yIHRoZSBkaWZmZXJlbnQKKyAgICAgICAgaW1tZWRpYXRlIHR5cGVzIGltcGxlbWVudGVkIGlu
IHRoZSBSSVNDVjY0SW5zdHJ1Y3Rpb25zIG5hbWVzcGFjZS4KKworICAgICAgICBJbiBNYWNyb0Fz
c2VtYmxlclJJU0NWNjQsIHJlc29sdmVBZGRyZXNzKCkgb3ZlcmxvYWRzIGFyZSBwcm92aWRlZCB0
bworICAgICAgICBoZWxwIGdlbmVyYXRlIG1vc3Qgb3B0aW1hbCBhZGRyZXNzIGxvYWRpbmcgc2Vx
dWVuY2luZy4gUklTQy1WIGFkZHJlc3NpbmcKKyAgICAgICAgbW9kZSB1dGlsaXplcyBhIGJhc2Ug
cmVnaXN0ZXIgYW5kIGEgMTItYml0IHNpZ25lZCBvZmZzZXQuIFdoZW4gbmVlZGVkLAorICAgICAg
ICBhZGRpdGlvbmFsIGNvbXB1dGF0aW9uIGlzIGRvbmUgb24gdGhlIGFkZHJlc3Mgb2JqZWN0J3Mg
cGFyYW1ldGVycyBhbmQKKyAgICAgICAgc3RvcmVkIGluIHRoZSBkZXN0aW5hdGlvbiByZWdpc3Rl
ciB0aHJvdWdoIHdoaWNoIHRoZSBsb2FkIGNhbiB0aGVuIGJlCisgICAgICAgIHBlcmZvcm1lZC4K
KworICAgICAgICBIZWxwZXIgVGVtcFJlZ2lzdGVyIGFuZCBMYXp5VGVtcFJlZ2lzdGVyIHN0cnVj
dHMgYXJlIGFkZGVkIHRvIHRoZQorICAgICAgICBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgY2xhc3Ms
IGFsb25nIHdpdGggdGhlIHJlc3BlY3RpdmUgdGVtcHMoKSBhbmQKKyAgICAgICAgbGF6eVRlbXAo
KSBtZXRob2RzLiB0ZW1wcygpIHJldHVybnMgdGhlIFRlbXBSZWdpc3RlciBvYmplY3QsIHdpdGgg
dGhlCisgICAgICAgIHRlbXBsYXRlIHBhcmFtZXRlcnMgZGVmaW5pbmcgd2hpY2ggb2YgdGhlIHR3
byBzY3JhdGNoIHJlZ2lzdGVyIHR5cGVzCisgICAgICAgIHNob3VsZCBiZSBhbGxvd2VkIGZvciB1
c2UgdGhyb3VnaCB0aGlzIG9iamVjdC4gUmVsZWFzZS10aW1lIGFzc2VydAorICAgICAgICBvbiB0
aGUgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB2YWx1ZSBpcyBkb25lIGF0IHRoZSBwb2ludCBvZiBj
YWxsaW5nCisgICAgICAgIHRlbXBzKCkuIGxhenlUZW1wKCkgb25seSBoYW5kbGVzIG9uZSBzY3Jh
dGNoIHJlZ2lzdGVyLCBhbmQgdGhlIGFzc2VydAorICAgICAgICBpcyBkb25lIG9ubHkgd2hlbiB0
aGUgcmVnaXN0ZXIgaXMgYWN0dWFsbHkgdXNlZCwgYW5kIG5vdCBqdXN0IHJlc2VydmVkCisgICAg
ICAgIGZvciB1c2UuIFRoaXMgZW5hYmxlcyBzaW1wbGVyIGltcGxlbWVudGF0aW9ucyB0aGF0IGJl
dHRlciBoYW5kbGUgYm90aAorICAgICAgICBtb2RlcyBvZiBzY3JhdGNoIHJlZ2lzdGVyIHVzYWdl
IChhbGxvd2VkIG9yIGRpc2FsbG93ZWQpLgorCisgICAgICAgIFRvIGdldCB0aGluZ3Mgcm9sbGlu
ZywgdGhlIGZpcnN0IHNldCBvZiBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgbWV0aG9kcworICAgICAg
ICBpcyBpbXBsZW1lbnRlZC4gQWRkaXRpb24sIHN1YnRyYWN0aW9uIGFuZCBtdWx0aXBsaWNhdGlv
biBkZWZpbml0aW9ucworICAgICAgICBhcmUgcHJvdmlkZWQsIHdpdGggdGhlIHRlbXBsYXRlZCBu
by1vcCBkZWNsYXJhdGlvbnMgcmVtb3ZlZC4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0OjpU
ZW1wUmVnaXN0ZXI6OmRhdGEpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6
OlRlbXBSZWdpc3Rlcjo6bWVtb3J5KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVND
VjY0OjpMYXp5VGVtcFJlZ2lzdGVyOjpMYXp5VGVtcFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJSSVNDVjY0OjpMYXp5VGVtcFJlZ2lzdGVyOjpvcGVyYXRvciBSZWdpc3Rl
cklEKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0Ojp0ZW1wcyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6bGF6eVRlbXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmFkZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJSSVNDVjY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2
NDo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OnN1YjY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0OjptdWwzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6bXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclJJU0NWNjQ6OkltbTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyUklTQ1Y2NDo6SW1tOjpJKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0
OjpJbW06OlMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OkltbTo6Qik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6SW1tOjpVKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0OjpJbW06OkopOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclJJU0NWNjQ6OnJlc29sdmVBZGRyZXNzKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
UklTQ1Y2NEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpSSVNDVjY0QXNzZW1ibGVyOjpJbW1l
ZGlhdGVMb2FkZXI6OkltbWVkaWF0ZUxvYWRlcik6CisgICAgICAgIChKU0M6OlJJU0NWNjRBc3Nl
bWJsZXI6OkltbWVkaWF0ZUxvYWRlcjo6bW92ZUludG8pOgorCiAyMDIxLTEyLTAyICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gc2hlbGwncyAkLmds
b2JhbE9iamVjdEZvciBpcyBub3Qgc2FmZSBmb3Igbm9uIG9iamVjdCBjZWxscwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0
LmgKaW5kZXggMTUxMjQzMWMxNjk3Y2Y2NmE4M2Q4YTQwMzZlOWUzYzhjZmUzMzUyNi4uN2IwYTFj
NDU4MDViMzg2ZGZhYzg4MzY0MDcyMmUzNDM1NzNjZTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCkBAIC01
NCw2ICs1NCw2MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkYXRhVGVtcFJlZ2lzdGVyOwog
ICAgIH0KIAorICAgIGVudW0gVGVtcFJlZ2lzdGVyVHlwZSA6IGludDhfdCB7CisgICAgICAgIERh
dGEsCisgICAgICAgIE1lbW9yeSwKKyAgICB9OworCisgICAgdGVtcGxhdGU8VGVtcFJlZ2lzdGVy
VHlwZS4uLiBSZWdpc3RlclR5cGVzPgorICAgIHN0cnVjdCBUZW1wUmVnaXN0ZXIgeworICAgICAg
ICBSZWdpc3RlcklEIGRhdGEoKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KCgoUmVnaXN0ZXJUeXBlcyA9PSBEYXRhKSB8fCAuLi4pKTsKKyAgICAgICAgICAgIHJldHVybiBk
YXRhVGVtcFJlZ2lzdGVyOworICAgICAgICB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCBtZW1vcnko
KQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCgoUmVnaXN0ZXJUeXBlcyA9
PSBNZW1vcnkpIHx8IC4uLikpOworICAgICAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3Rl
cjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTxUZW1wUmVnaXN0ZXJUeXBlIFJl
Z2lzdGVyVHlwZT4KKyAgICBzdHJ1Y3QgTGF6eVRlbXBSZWdpc3RlciB7CisgICAgICAgIExhenlU
ZW1wUmVnaXN0ZXIoYm9vbCBhbGxvd1NjcmF0Y2hSZWdpc3RlcikKKyAgICAgICAgICAgIDogbV9h
bGxvd1NjcmF0Y2hSZWdpc3RlcihhbGxvd1NjcmF0Y2hSZWdpc3RlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChSZWdpc3RlclR5cGUgPT0gRGF0YSB8fCBSZWdpc3RlclR5
cGUgPT0gTWVtb3J5KTsKKyAgICAgICAgfQorCisgICAgICAgIG9wZXJhdG9yIFJlZ2lzdGVySUQo
KQorICAgICAgICB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2FsbG93U2NyYXRjaFJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoUmVnaXN0ZXJUeXBlID09IERhdGEp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFUZW1wUmVnaXN0ZXI7CisgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKFJlZ2lzdGVyVHlwZSA9PSBNZW1vcnkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsKKyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVn
OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBtX2FsbG93U2NyYXRjaFJlZ2lzdGVyOworICAg
IH07CisKKyAgICB0ZW1wbGF0ZTxUZW1wUmVnaXN0ZXJUeXBlLi4uIFJlZ2lzdGVyVHlwZXM+Cisg
ICAgYXV0byB0ZW1wcygpIC0+IFRlbXBSZWdpc3RlcjxSZWdpc3RlclR5cGVzLi4uPgorICAgIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hbGxvd1NjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorCisgICAgdGVtcGxhdGU8VGVtcFJlZ2lzdGVyVHlwZSBSZWdp
c3RlclR5cGU+CisgICAgYXV0byBsYXp5VGVtcCgpIC0+IExhenlUZW1wUmVnaXN0ZXI8UmVnaXN0
ZXJUeXBlPgorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB9
OworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0
dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0
ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9p
bnRTcXJ0KCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTA1LDEyICsxNTksMzEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBS
SVNDVjY0UmVnaXN0ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGlu
a1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6cmE7CiAKLSAgICBNQUNST19BU1NFTUJMRVJf
UklTQ1Y2NF9URU1QTEFURURfTk9PUF9NRVRIT0QoYWRkMzIpOwotICAgIE1BQ1JPX0FTU0VNQkxF
Ul9SSVNDVjY0X1RFTVBMQVRFRF9OT09QX01FVEhPRChhZGQ2NCk7Ci0gICAgTUFDUk9fQVNTRU1C
TEVSX1JJU0NWNjRfVEVNUExBVEVEX05PT1BfTUVUSE9EKHN1YjMyKTsKLSAgICBNQUNST19BU1NF
TUJMRVJfUklTQ1Y2NF9URU1QTEFURURfTk9PUF9NRVRIT0Qoc3ViNjQpOwotICAgIE1BQ1JPX0FT
U0VNQkxFUl9SSVNDVjY0X1RFTVBMQVRFRF9OT09QX01FVEhPRChtdWwzMik7Ci0gICAgTUFDUk9f
QVNTRU1CTEVSX1JJU0NWNjRfVEVNUExBVEVEX05PT1BfTUVUSE9EKG11bDY0KTsKKyAgICB2b2lk
IGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBh
ZGQzMihzcmMsIGRlc3QsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hZGR3SW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1hc2tSZWdpc3RlcjwzMj4oZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhZGQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBhZGQzMihpbW0sIGRl
c3QsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChJbW06Omlz
VmFsaWQ8SW1tOjpJVHlwZT4oaW1tLm1fdmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRpd0luc24oZGVzdCwgb3AyLCBJbW06OkkoaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhPigpOworICAgICAg
ICBtb3ZlKGltbSwgdGVtcC5kYXRhKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGR3SW5zbihk
ZXN0LCB0ZW1wLmRhdGEoKSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWFza1JlZ2lzdGVy
PDMyPihkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8
RGF0YSwgTWVtb3J5PigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIHRlbXAubWVtb3J5KCkpOworICAgICAgICBpZiAoSW1tOjppc1ZhbGlkPEltbTo6SVR5cGU+
KGltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHdJbnNuKHRlbXAuZGF0
YSgpLCB0ZW1wLm1lbW9yeSgpLCBJbW06Okk8MD4oKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRpSW5zbih0ZW1wLmRhdGEoKSwgdGVtcC5kYXRhKCksIEltbTo6SShpbW0ubV92YWx1ZSkp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3dJbnNuKHRlbXAubWVtb3J5KCksIHRlbXAuZGF0
YSgpLCBJbW06OlM8MD4oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBtX2Fzc2VtYmxlci5sd0luc24odGVtcC5tZW1vcnkoKSwgdGVtcC5tZW1vcnkoKSwgSW1t
OjpJPDA+KCkpOworICAgICAgICBtb3ZlKGltbSwgdGVtcC5kYXRhKCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5hZGRJbnNuKHRlbXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpLCB0ZW1wLmRhdGEoKSk7
CisKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0ZW1wLm1lbW9y
eSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3dJbnNuKHRlbXAubWVtb3J5KCksIHRlbXAuZGF0
YSgpLCBJbW06OlM8MD4oKSk7CisgICAgfQorCisgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxE
YXRhLCBNZW1vcnk+KCk7CisgICAgICAgIGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVBZGRyZXNz
KGFkZHJlc3MsIHRlbXAubWVtb3J5KCkpOworICAgICAgICBpZiAoSW1tOjppc1ZhbGlkPEltbTo6
SVR5cGU+KGltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHdJbnNuKHRl
bXAuZGF0YSgpLCByZXNvbHV0aW9uLmJhc2UsIEltbTo6SShyZXNvbHV0aW9uLm9mZnNldCkpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaUluc24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgp
LCBJbW06OkkoaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3SW5zbihy
ZXNvbHV0aW9uLmJhc2UsIHRlbXAuZGF0YSgpLCBJbW06OlMocmVzb2x1dGlvbi5vZmZzZXQpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fYXNzZW1ibGVyLmx3
SW5zbih0ZW1wLm1lbW9yeSgpLCByZXNvbHV0aW9uLmJhc2UsIEltbTo6SShyZXNvbHV0aW9uLm9m
ZnNldCkpOworICAgICAgICBtb3ZlKGltbSwgdGVtcC5kYXRhKCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRJbnNuKHRlbXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpLCB0ZW1wLmRhdGEoKSk7CisK
KyAgICAgICAgcmVzb2x1dGlvbiA9IHJlc29sdmVBZGRyZXNzKGFkZHJlc3MsIHRlbXAubWVtb3J5
KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5zd0luc24ocmVzb2x1dGlvbi5iYXNlLCB0ZW1wLmRh
dGEoKSwgSW1tOjpTKHJlc29sdXRpb24ub2Zmc2V0KSk7CisgICAgfQorCisgICAgdm9pZCBhZGQz
MihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGF1dG8g
dGVtcCA9IHRlbXBzPERhdGEsIE1lbW9yeT4oKTsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uID0g
cmVzb2x2ZUFkZHJlc3MoYWRkcmVzcywgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmx3SW5zbih0ZW1wLmRhdGEoKSwgcmVzb2x1dGlvbi5iYXNlLCBJbW06OkkocmVzb2x1dGlv
bi5vZmZzZXQpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkd0luc24oZGVzdCwgdGVtcC5kYXRh
KCksIGRlc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5tYXNrUmVnaXN0ZXI8MzI+KGRlc3QpOwor
ICAgIH0KKworICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGFkZDY0KHNyYywgZGVzdCwgZGVzdCk7CisgICAgfQorCisgICAgdm9p
ZCBhZGQ2NChSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZEluc24oZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKworICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgYWRkNjQoaW1tLCBkZXN0LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lk
IGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBpZiAoSW1tOjppc1ZhbGlkPEltbTo6SVR5cGU+KGltbS5tX3ZhbHVl
KSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaUluc24oZGVzdCwgb3AyLCBJbW06Okko
aW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8gdGVtcCA9IHRlbXBzPERhdGE+KCk7CisgICAgICAgIG1vdmUoaW1tLCB0ZW1wLmRhdGEo
KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZEluc24oZGVzdCwgdGVtcC5kYXRhKCksIG9wMik7
CisgICAgfQorCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBhZGQ2NChpbW0sIGRlc3QsIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgYWRkNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChJbW06OmlzVmFsaWQ8SW1tOjpJVHlwZT4oaW1tLm1f
dmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpSW5zbihkZXN0LCBvcDIsIElt
bTo6SShpbW0ubV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YT4oKTsKKyAgICAgICAgbW92ZShpbW0sIHRlbXAu
ZGF0YSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkSW5zbihkZXN0LCB0ZW1wLmRhdGEoKSwg
b3AyKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwg
TWVtb3J5PigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRl
bXAubWVtb3J5KCkpOworCisgICAgICAgIGlmIChJbW06OmlzVmFsaWQ8SW1tOjpJVHlwZT4oaW1t
Lm1fdmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZEluc24odGVtcC5kYXRhKCks
IHRlbXAubWVtb3J5KCksIEltbTo6STwwPigpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGlJbnNuKHRlbXAuZGF0YSgpLCB0ZW1wLmRhdGEoKSwgSW1tOjpJKGltbS5tX3ZhbHVlKSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zZEluc24odGVtcC5tZW1vcnkoKSwgdGVtcC5kYXRhKCks
IEltbTo6UzwwPigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IG1fYXNzZW1ibGVyLmxkSW5zbih0ZW1wLm1lbW9yeSgpLCB0ZW1wLm1lbW9yeSgpLCBJbW06Okk8
MD4oKSk7CisgICAgICAgIG1vdmUoaW1tLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZEluc24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpKTsKKwor
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRlbXAubWVtb3J5KCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5zZEluc24odGVtcC5tZW1vcnkoKSwgdGVtcC5kYXRhKCks
IEltbTo6UzwwPigpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERhdGEs
IE1lbW9yeT4oKTsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUFkZHJlc3MoYWRk
cmVzcywgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkSW5zbih0ZW1wLmRh
dGEoKSwgcmVzb2x1dGlvbi5iYXNlLCBJbW06OkkocmVzb2x1dGlvbi5vZmZzZXQpKTsKKworICAg
ICAgICBpZiAoSW1tOjppc1ZhbGlkPEltbTo6SVR5cGU+KGltbS5tX3ZhbHVlKSkgeworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkaUluc24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgpLCBJbW06
OkkoaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNkSW5zbihyZXNvbHV0
aW9uLmJhc2UsIHRlbXAuZGF0YSgpLCBJbW06OlMocmVzb2x1dGlvbi5vZmZzZXQpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmUoaW1tLCB0ZW1wLm1lbW9y
eSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkSW5zbih0ZW1wLmRhdGEoKSwgdGVtcC5tZW1v
cnkoKSwgdGVtcC5kYXRhKCkpOworCisgICAgICAgIHJlc29sdXRpb24gPSByZXNvbHZlQWRkcmVz
cyhhZGRyZXNzLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2RJbnNuKHJl
c29sdXRpb24uYmFzZSwgdGVtcC5kYXRhKCksIEltbTo6UyhyZXNvbHV0aW9uLm9mZnNldCkpOwor
ICAgIH0KKworICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPE1lbW9yeT4oKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0ZW1wLm1lbW9yeSgpKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIubGRJbnNuKHRlbXAubWVtb3J5KCksIHRlbXAubWVtb3J5KCks
IEltbTo6STwwPigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkSW5zbihkZXN0LCB0ZW1wLm1l
bW9yeSgpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZDY0KEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwg
TWVtb3J5PigpOworICAgICAgICBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlQWRkcmVzcyhhZGRy
ZXNzLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRJbnNuKHRlbXAuZGF0
YSgpLCByZXNvbHV0aW9uLmJhc2UsIEltbTo6SShyZXNvbHV0aW9uLm9mZnNldCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRJbnNuKGRlc3QsIHRlbXAuZGF0YSgpLCBkZXN0KTsKKyAgICB9CisK
KyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBzdWIzMihkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIo
UmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3SW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBzdWIz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIz
MihkZXN0LCBpbW0sIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBv
cDEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGFk
ZDMyKFRydXN0ZWRJbW0zMigtaW1tLm1fdmFsdWUpLCBvcDEsIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhLCBNZW1vcnk+KCk7CisgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGVtcC5tZW1vcnkoKSk7CisKKyAg
ICAgICAgaWYgKEltbTo6aXNWYWxpZDxJbW06OklUeXBlPigtaW1tLm1fdmFsdWUpKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5sd0luc24odGVtcC5kYXRhKCksIHRlbXAubWVtb3J5KCksIElt
bTo6STwwPigpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl3SW5zbih0ZW1wLmRhdGEo
KSwgdGVtcC5kYXRhKCksIEltbTo6SSgtaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnN3SW5zbih0ZW1wLm1lbW9yeSgpLCB0ZW1wLmRhdGEoKSwgSW1tOjpTPDA+KCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9hc3NlbWJsZXIubHdJ
bnNuKHRlbXAubWVtb3J5KCksIHRlbXAubWVtb3J5KCksIEltbTo6STwwPigpKTsKKyAgICAgICAg
bW92ZShpbW0sIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid0luc24odGVt
cC5kYXRhKCksIHRlbXAubWVtb3J5KCksIHRlbXAuZGF0YSgpKTsKKworICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRlbXAubWVtb3J5KCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5zd0luc24odGVtcC5tZW1vcnkoKSwgdGVtcC5kYXRhKCksIEltbTo6UzwwPigpKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERhdGEsIE1lbW9yeT4oKTsKKyAg
ICAgICAgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUFkZHJlc3MoYWRkcmVzcywgdGVtcC5tZW1v
cnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmx3SW5zbih0ZW1wLmRhdGEoKSwgcmVzb2x1dGlv
bi5iYXNlLCBJbW06OkkocmVzb2x1dGlvbi5vZmZzZXQpKTsKKworICAgICAgICBpZiAoSW1tOjpp
c1ZhbGlkPEltbTo6SVR5cGU+KC1pbW0ubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZGl3SW5zbih0ZW1wLmRhdGEoKSwgdGVtcC5kYXRhKCksIEltbTo6SSgtaW1tLm1fdmFs
dWUpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3SW5zbihyZXNvbHV0aW9uLmJhc2UsIHRl
bXAuZGF0YSgpLCBJbW06OlMocmVzb2x1dGlvbi5vZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmUoaW1tLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3Vid0luc24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgpLCB0ZW1wLm1l
bW9yeSgpKTsKKworICAgICAgICByZXNvbHV0aW9uID0gcmVzb2x2ZUFkZHJlc3MoYWRkcmVzcywg
dGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN3SW5zbihyZXNvbHV0aW9uLmJh
c2UsIHRlbXAuZGF0YSgpLCBJbW06OlMocmVzb2x1dGlvbi5vZmZzZXQpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN1YjMyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwgTWVtb3J5PigpOworICAgICAgICBhdXRvIHJl
c29sdXRpb24gPSByZXNvbHZlQWRkcmVzcyhhZGRyZXNzLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubHdJbnNuKHRlbXAuZGF0YSgpLCByZXNvbHV0aW9uLmJhc2UsIEltbTo6
SShyZXNvbHV0aW9uLm9mZnNldCkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3SW5zbihkZXN0
LCBkZXN0LCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1hc2tSZWdpc3Rlcjwz
Mj4oZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQoZGVzdCwgc3JjLCBkZXN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViSW5zbihkZXN0LCBvcDEs
IG9wMik7CisgICAgfQorCisgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChkZXN0LCBpbW0sIGRlc3QpOworICAgIH0K
KworICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGFkZDY0KFRydXN0ZWRJbW0zMigtaW1tLm1fdmFs
dWUpLCBvcDEsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTY0IGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQoZGVzdCwgaW1tLCBkZXN0
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tNjQg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBhZGQ2NChUcnVzdGVkSW1tNjQo
LWltbS5tX3ZhbHVlKSwgb3AxLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11bDMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtdWwzMihzcmMsIGRl
c3QsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBsaHMsIFJlZ2lz
dGVySUQgcmhzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5t
dWx3SW5zbihkZXN0LCBsaHMsIHJocyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1hc2tSZWdpc3Rl
cjwzMj4oZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHJocywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1w
ID0gdGVtcHM8RGF0YT4oKTsKKyAgICAgICAgbW92ZShpbW0sIHRlbXAuZGF0YSgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubXVsd0luc24oZGVzdCwgdGVtcC5kYXRhKCksIHJocyk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBt
dWw2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVs
NjQoc3JjLCBkZXN0LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVySUQg
bGhzLCBSZWdpc3RlcklEIHJocywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubXVsSW5zbihkZXN0LCBsaHMsIHJocyk7CisgICAgfQorCiAgICAgTUFDUk9fQVNT
RU1CTEVSX1JJU0NWNjRfVEVNUExBVEVEX05PT1BfTUVUSE9EKGFuZDMyKTsKICAgICBNQUNST19B
U1NFTUJMRVJfUklTQ1Y2NF9URU1QTEFURURfTk9PUF9NRVRIT0QoYW5kNjQpOwogCkBAIC0zODgs
NiArNzQwLDExOCBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIHN0
YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqLCBDYWxsLCBGdW5jdGlvblB0cjx0YWc+KSB7IH0KKwor
cHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW1tIHsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICAgICAgdXNpbmcgRW5hYmxlSWZJbnRlZ2VyID0gc3RkOjplbmFibGVfaWZfdDwoc3RkOjpp
c19zYW1lX3Y8VCwgaW50MzJfdD4gfHwgc3RkOjppc19zYW1lX3Y8VCwgaW50NjRfdD4pPjsKKwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbW1lZGlhdGVUeXBlLCB0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IEVuYWJsZUlmSW50ZWdlcjxUPj4KKyAgICAgICAgc3RhdGljIGJvb2wgaXNWYWxpZChU
IHZhbHVlKSB7IHJldHVybiBJbW1lZGlhdGVUeXBlOjppc1ZhbGlkKHZhbHVlKTsgfQorCisgICAg
ICAgIHVzaW5nIElUeXBlID0gUklTQ1Y2NEFzc2VtYmxlcjo6SUltbWVkaWF0ZTsKKyAgICAgICAg
dGVtcGxhdGU8aW50MzJfdCB2YWx1ZT4KKyAgICAgICAgc3RhdGljIElUeXBlIEkoKSB7IHJldHVy
biBJVHlwZTo6djxJVHlwZSwgdmFsdWU+KCk7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBFbmFibGVJZkludGVnZXI8VD4+CisgICAgICAgIHN0YXRpYyBJVHlwZSBJ
KFQgdmFsdWUpIHsgcmV0dXJuIElUeXBlOjp2PElUeXBlPih2YWx1ZSk7IH0KKyAgICAgICAgc3Rh
dGljIElUeXBlIEkodWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIElUeXBlKHZhbHVlKTsgfQorCisg
ICAgICAgIHVzaW5nIFNUeXBlID0gUklTQ1Y2NEFzc2VtYmxlcjo6U0ltbWVkaWF0ZTsKKyAgICAg
ICAgdGVtcGxhdGU8aW50MzJfdCB2YWx1ZT4KKyAgICAgICAgc3RhdGljIFNUeXBlIFMoKSB7IHJl
dHVybiBTVHlwZTo6djxTVHlwZSwgdmFsdWU+KCk7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSBFbmFibGVJZkludGVnZXI8VD4+CisgICAgICAgIHN0YXRpYyBTVHlw
ZSBTKFQgdmFsdWUpIHsgcmV0dXJuIFNUeXBlOjp2PFNUeXBlPih2YWx1ZSk7IH0KKworICAgICAg
ICB1c2luZyBCVHlwZSA9IFJJU0NWNjRBc3NlbWJsZXI6OkJJbW1lZGlhdGU7CisgICAgICAgIHRl
bXBsYXRlPGludDMyX3QgdmFsdWU+CisgICAgICAgIHN0YXRpYyBCVHlwZSBCKCkgeyByZXR1cm4g
QlR5cGU6OnY8QlR5cGUsIHZhbHVlPigpOyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gRW5hYmxlSWZJbnRlZ2VyPFQ+PgorICAgICAgICBzdGF0aWMgQlR5cGUgQihU
IHZhbHVlKSB7IHJldHVybiBCVHlwZTo6djxCVHlwZT4odmFsdWUpOyB9CisgICAgICAgIHN0YXRp
YyBCVHlwZSBCKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiBCVHlwZSh2YWx1ZSk7IH0KKworICAg
ICAgICB1c2luZyBVVHlwZSA9IFJJU0NWNjRBc3NlbWJsZXI6OlVJbW1lZGlhdGU7CisgICAgICAg
IHN0YXRpYyBVVHlwZSBVKHVpbnQzMl90IHZhbHVlKSB7IHJldHVybiBVVHlwZSh2YWx1ZSk7IH0K
KworICAgICAgICB1c2luZyBKVHlwZSA9IFJJU0NWNjRBc3NlbWJsZXI6OkpJbW1lZGlhdGU7Cisg
ICAgICAgIHRlbXBsYXRlPGludDMyX3QgdmFsdWU+CisgICAgICAgIHN0YXRpYyBKVHlwZSBKKCkg
eyByZXR1cm4gSlR5cGU6OnY8SlR5cGUsIHZhbHVlPigpOyB9CisgICAgfTsKKworICAgIHN0cnVj
dCBBZGRyZXNzUmVzb2x1dGlvbiB7CisgICAgICAgIFJlZ2lzdGVySUQgYmFzZTsKKyAgICAgICAg
aW50MzJfdCBvZmZzZXQ7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdGVy
VHlwZT4KKyAgICBBZGRyZXNzUmVzb2x1dGlvbiByZXNvbHZlQWRkcmVzcyhCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJUeXBlIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCEhYWRk
cmVzcy5vZmZzZXQpIHsKKyAgICAgICAgICAgIGlmIChSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlh
dGVCYXNlPDEyPjo6aXNWYWxpZChhZGRyZXNzLm9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYWRkcmVzcy5zY2FsZSAhPSBUaW1lc09uZSkgeworICAgICAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zbGxpSW5zbihkZXN0aW5hdGlvbiwgYWRkcmVzcy5pbmRleCwgdWludDMyX3QoYWRk
cmVzcy5zY2FsZSkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRJbnNuKGRl
c3RpbmF0aW9uLCBhZGRyZXNzLmJhc2UsIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkSW5zbihkZXN0aW5hdGlv
biwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyBkZXN0aW5hdGlvbiwgYWRkcmVzcy5vZmZzZXQgfTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGFkZHJlc3Muc2NhbGUgIT0gVGltZXNPbmUpIHsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCBzY2FsZSA9IGFkZHJlc3Muc2NhbGU7CisgICAgICAgICAgICAgICAgaW50MzJfdCB1
cHBlck9mZnNldCA9IGFkZHJlc3Mub2Zmc2V0ID4+IHNjYWxlOworICAgICAgICAgICAgICAgIGlu
dDMyX3QgbG93ZXJPZmZzZXQgPSBhZGRyZXNzLm9mZnNldCAmICgoMSA8PCBzY2FsZSkgLSAxKTsK
KworICAgICAgICAgICAgICAgIGlmICghUklTQ1Y2NEFzc2VtYmxlcjo6SW1tZWRpYXRlQmFzZTwx
Mj46OmlzVmFsaWQodXBwZXJPZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgICAgIFJJU0NWNjRB
c3NlbWJsZXI6OkltbWVkaWF0ZUxvYWRlciBpbW1sKHVwcGVyT2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaW1tbC5tb3ZlSW50byhtX2Fzc2VtYmxlciwgZGVzdGluYXRpb24pOworICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRJbnNuKGRlc3RpbmF0aW9uLCBhZGRyZXNzLmlu
ZGV4LCBkZXN0aW5hdGlvbik7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZGlJbnNuKGRlc3RpbmF0aW9uLCBhZGRyZXNzLmluZGV4LCBJ
bW06OkkodXBwZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGxpSW5z
bihkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIHNjYWxlKTsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5vcmlJbnNuKGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbiwgSW1tOjpJKGxvd2VyT2Zm
c2V0KSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJJU0NWNjRBc3Nl
bWJsZXI6OkltbWVkaWF0ZUxvYWRlciBpbW1sKGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBpbW1sLm1vdmVJbnRvKG1fYXNzZW1ibGVyLCBkZXN0aW5hdGlvbik7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkSW5zbihkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIGFkZHJl
c3MuaW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkSW5z
bihkZXN0aW5hdGlvbiwgYWRkcmVzcy5iYXNlLCBkZXN0aW5hdGlvbik7CisgICAgICAgICAgICBy
ZXR1cm4geyBkZXN0aW5hdGlvbiwgMCB9OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkZHJl
c3Muc2NhbGUgIT0gVGltZXNPbmUpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbGlJbnNu
KGRlc3RpbmF0aW9uLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZEluc24oZGVzdGluYXRpb24sIGFkZHJlc3MuYmFzZSwgZGVzdGluYXRp
b24pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZEluc24oZGVz
dGluYXRpb24sIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCk7CisgICAgICAgIHJldHVybiB7
IGRlc3RpbmF0aW9uLCAwIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnaXN0
ZXJUeXBlPgorICAgIEFkZHJlc3NSZXNvbHV0aW9uIHJlc29sdmVBZGRyZXNzKEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJUeXBlIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKFJJU0NW
NjRBc3NlbWJsZXI6OkltbWVkaWF0ZUJhc2U8MTI+Ojppc1ZhbGlkKGFkZHJlc3Mub2Zmc2V0KSkK
KyAgICAgICAgICAgIHJldHVybiB7IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQgfTsKKwor
ICAgICAgICB1aW50MzJfdCB2YWx1ZSA9ICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oJmFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgaWYgKHZhbHVlICYgKDEgPDwgMTEpKQorICAgICAgICAg
ICAgdmFsdWUgKz0gKDEgPDwgMTIpOworCisgICAgICAgIG1fYXNzZW1ibGVyLmx1aUluc24oZGVz
dGluYXRpb24sIEltbTo6VSh2YWx1ZSkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRpSW5zbihk
ZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIEltbTo6SSh2YWx1ZSAmICgoMSA8PCAxMikgLSAxKSkp
OworICAgICAgICBtX2Fzc2VtYmxlci5hZGRJbnNuKGRlc3RpbmF0aW9uLCBhZGRyZXNzLmJhc2Us
IGRlc3RpbmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIHsgZGVzdGluYXRpb24sIDAgfTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdpc3RlclR5cGU+CisgICAgQWRkcmVzc1Jlc29s
dXRpb24gcmVzb2x2ZUFkZHJlc3MoRXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVyVHlw
ZSBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIGlmIChSSVNDVjY0QXNzZW1ibGVyOjpJbW1l
ZGlhdGVCYXNlPDEyPjo6aXNWYWxpZChhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1
cm4geyBhZGRyZXNzLmJhc2UsIGludDMyX3QoYWRkcmVzcy5vZmZzZXQpIH07CisKKyAgICAgICAg
UklTQ1Y2NEFzc2VtYmxlcjo6SW1tZWRpYXRlTG9hZGVyIGltbWwoaW50NjRfdChhZGRyZXNzLm9m
ZnNldCkpOworICAgICAgICBpbW1sLm1vdmVJbnRvKG1fYXNzZW1ibGVyLCBkZXN0aW5hdGlvbik7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZEluc24oZGVzdGluYXRpb24sIGFkZHJlc3MuYmFzZSwg
ZGVzdGluYXRpb24pOworICAgICAgICByZXR1cm4geyBkZXN0aW5hdGlvbiwgMCB9OworICAgIH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9SSVNDVjY0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1JJU0NWNjRBc3NlbWJsZXIuaAppbmRleCBiZTE5NjMyZTk1ZDM4YmIyZjk1ZTkw
YTg1Mzc4MTNkN2VmOGE4MWVkLi44NWRlYzk4OTVkYTFhYTc0NjAwZGQzZDJlNzk4NzQ2MGVhMDM3
YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JJU0NWNjRB
c3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JJU0NWNjRB
c3NlbWJsZXIuaApAQCAtMTk4Nyw2ICsxOTg3LDEwNyBAQCBwdWJsaWM6CiAgICAgICAgIHNybGlJ
bnNuPDY0IC0gYml0U2l6ZT4ocmQsIHJkKTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgSW1tZWRpYXRl
TG9hZGVyIHsKKyAgICAgICAgZW51bSBQbGFjZWhvbGRlclRhZyB7IFBsYWNlaG9sZGVyIH07CisK
KyAgICAgICAgSW1tZWRpYXRlTG9hZGVyKGludDMyX3QgaW1tKQorICAgICAgICAgICAgOiBJbW1l
ZGlhdGVMb2FkZXIoaW50NjRfdChpbW0pKQorICAgICAgICB7IH0KKworICAgICAgICBJbW1lZGlh
dGVMb2FkZXIoUGxhY2Vob2xkZXJUYWcsIGludDMyX3QgaW1tKQorICAgICAgICAgICAgOiBJbW1l
ZGlhdGVMb2FkZXIoUGxhY2Vob2xkZXIsIGludDY0X3QoaW1tKSkKKyAgICAgICAgeyB9CisKKyAg
ICAgICAgSW1tZWRpYXRlTG9hZGVyKGludDY0X3QgaW1tKQorICAgICAgICB7CisgICAgICAgICAg
ICAvLyBJZiB0aGUgaW1tZWRpYXRlIHZhbHVlIGZpdHMgaW50byB0aGUgSUltbWVkaWF0ZSBtb2xk
LCB3ZSBjYW4gc2hvcnQtY3V0IHRvIGp1c3QgZ2VuZXJhdGluZyB0aGF0IHRocm91Z2ggYSBzaW5n
bGUgQURESS4KKyAgICAgICAgICAgIGlmIChJSW1tZWRpYXRlOjppc1ZhbGlkKGltbSkpIHsKKyAg
ICAgICAgICAgICAgICBtX29wc1ttX29wQ291bnQrK10gPSB7IE9wOjpUeXBlOjpJSW1tZWRpYXRl
LCBJSW1tZWRpYXRlOjp2PElJbW1lZGlhdGU+KGltbSkuaW1tIH07CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgaW1tZWRpYXRlIGlz
IGxhcmdlciB0aGFuIDEyIGJpdHMsIHNvIGl0IGhhcyB0byBiZSBsb2FkZWQgdGhyb3VnaCB0aGUg
aW5pdGlhbCBMVUkgYW5kIHRoZW4gYWRkaXRpb25hbCBzaGlmdC1hbmQtYWRkaSBwYWlycy4KKyAg
ICAgICAgICAgIC8vIFRoaXMgc2VxdWVuY2UgaXMgZ2VuZXJhdGVkIGluIHJldmVyc2UuIG1vdmVJ
bnRvKCkgb3Igb3RoZXIgdXNlcnMgdHJhdmVyc2UgdGhlIHNlcXVlbmNlIGFjY29yZGluZ2x5Lgor
ICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IGltbTsKKworICAgICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRpSW1tID0gdmFsdWUgJiAoKDEgPDwg
MTIpIC0gMSk7CisgICAgICAgICAgICAgICAgLy8gVGhlIGFkZGkgd2lsbCBiZSBzaWduLWV4dGVu
ZGluZyB0aGUgMTItYml0IHZhbHVlIGFuZCBhZGRpbmcgaXQgdG8gdGhlIHJlZ2lzdGVyLWNvbnRh
aW5lZCB2YWx1ZS4gSWYgdGhlIGFkZGktaW1tZWRpYXRlCisgICAgICAgICAgICAgICAgLy8gaXMg
bmVnYXRpdmUsIHRoZSByZW1haW5pbmcgaW1tZWRpYXRlIGhhcyB0byBiZSBpbmNyZWFzZWQgYnkg
Ml4xMiB0byBvZmZzZXQgdGhlIHN1YnNlcXVlbnQgc3VidHJhY3Rpb24uCisgICAgICAgICAgICAg
ICAgaWYgKGFkZGlJbW0gJiAoMSA8PCAxMSkpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICs9
ICgxIDw8IDEyKTsKKyAgICAgICAgICAgICAgICBtX29wc1ttX29wQ291bnQrK10gPSB7IE9wOjpU
eXBlOjpBRERJLCBhZGRpSW1tIH07CisKKyAgICAgICAgICAgICAgICAvLyBTaGlmdCBvdXQgdGhl
IGJpdHMgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGp1c3QtYWRkZWQgYWRkaS4KKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlID4+IDEyOworCisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJl
bWFpbmRlciBvZiB0aGUgaW1tZWRpYXRlIGNhbiBmaXQgaW50byBhIDIwLWJpdCBpbW1lZGlhdGUs
IHdlIGNhbiBnZW5lcmF0ZSB0aGUgTFVJIGluc3RydWN0aW9uIHRoYXQgd2lsbCBlbmQgdXAKKyAg
ICAgICAgICAgICAgICAvLyBsb2FkaW5nIHRoZSBpbml0aWFsIGhpZ2hlciBiaXRzIG9mIHRoZSBk
ZXNpcmVkIGltbWVkaWF0ZS4KKyAgICAgICAgICAgICAgICBpZiAoSW1tZWRpYXRlQmFzZTwyMD46
OmlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fb3BzW21fb3BDb3VudCsr
XSA9IHsgT3A6OlR5cGU6OkxVSSwgdWludDMyX3QoKHZhbHVlICYgKCgxIDw8IDIwKSAtIDEpKSA8
PCAxMikgfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZ2VuZXJhdGUgdGhlIGxzaGlmdCBvcGVy
YXRpb24gdGhhdCB3aWxsIG1ha2Ugcm9vbSBmb3IgbG93ZXIgcGFydHMgb2YgdGhlIGltbWVkaWF0
ZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICBtX29wc1ttX29wQ291bnQrK10gPSB7IE9wOjpUeXBl
OjpMU0hJRlQxMiwgMCB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSW1t
ZWRpYXRlTG9hZGVyKFBsYWNlaG9sZGVyVGFnLCBpbnQ2NF90IGltbSkKKyAgICAgICAgICAgIDog
SW1tZWRpYXRlTG9hZGVyKGltbSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhlIG5vbi1w
bGFjZWhvbGRlciBjb25zdHJ1Y3RvciBhbHJlYWR5IGdlbmVyYXRlZCB0aGUgbmVjZXNzYXJ5IG9w
ZXJhdGlvbnMgdG8gbG9hZCB0aGlzIGltbWVkaWF0ZS4KKyAgICAgICAgICAgIC8vIFRoaXMgY29u
c3RydWN0b3Igc3RpbGwgZmlsbHMgb3V0IHRoZSByZW1haW5pbmcgcG90ZW50aWFsIG9wZXJhdGlv
bnMgYXMgbm9wcy4gVGhpcyBlbmFibGVzIGZ1dHVyZSBwYXRjaGluZworICAgICAgICAgICAgLy8g
b2YgdGhlc2UgaW5zdHJ1Y3Rpb25zIHdpdGggb3RoZXIgaW1tZWRpYXRlLWxvYWQgc2VxdWVuY2Vz
LgorCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX29wQ291bnQ7IGkgPCBtX29wcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBtX29wc1tpXSA9IHsgT3A6OlR5cGU6Ok5PUCwg
MCB9OworICAgICAgICAgICAgbV9vcENvdW50ID0gbV9vcHMuc2l6ZSgpOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBtb3ZlSW50byhSSVNDVjY0QXNzZW1ibGVyJiBhc3NlbWJsZXIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGhlbHBlciBt
ZXRob2QgdGhhdCBnZW5lcmF0ZXMgdGhlIG5lY2Vzc2FyeSBpbnN0cnVjdGlvbnMgdGhyb3VnaCB0
aGUgUklTQ1Y2NEFzc2VtYmxlciBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgICAgIC8vIE9wZXJh
dGlvbnMgYXJlIHRyYXZlcnNlZCBpbiByZXZlcnNlIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBnZW5l
cmF0aW9uIHByb2Nlc3MuCisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X29wQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8mIG9wID0gbV9vcHNbbV9vcENv
dW50IC0gKGkgKyAxKV07CisgICAgICAgICAgICAgICAgc3dpdGNoIChvcC50eXBlKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBPcDo6VHlwZTo6SUltbWVkaWF0ZToKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZW1ibGVyLmFkZGlJbnNuKGRlc3QsIFJJU0NWNjRSZWdpc3RlcnM6Onplcm8sIElJbW1l
ZGlhdGUob3AudmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBPcDo6VHlwZTo6TFVJOgorICAgICAgICAgICAgICAgICAgICBhc3NlbWJsZXIu
bHVpSW5zbihkZXN0LCBVSW1tZWRpYXRlKG9wLnZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgT3A6OlR5cGU6OkFEREk6CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VtYmxlci5hZGRpSW5zbihkZXN0LCBkZXN0LCBJSW1tZWRpYXRlKG9wLnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
T3A6OlR5cGU6OkxTSElGVDEyOgorICAgICAgICAgICAgICAgICAgICBhc3NlbWJsZXIuc2xsaUlu
c248MTI+KGRlc3QsIGRlc3QpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIE9wOjpUeXBlOjpOT1A6CisgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxl
ci5hZGRpSW5zbihSSVNDVjY0UmVnaXN0ZXJzOjp6ZXJvLCBSSVNDVjY0UmVnaXN0ZXJzOjp6ZXJv
LCBJSW1tZWRpYXRlOjp2PElJbW1lZGlhdGUsIDA+KCkpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBzdHJ1Y3QgT3AgeworICAgICAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAg
ICAgICAgICBJSW1tZWRpYXRlLAorICAgICAgICAgICAgICAgIExVSSwKKyAgICAgICAgICAgICAg
ICBBRERJLAorICAgICAgICAgICAgICAgIExTSElGVDEyLAorICAgICAgICAgICAgICAgIE5PUCwK
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgICAgIHVp
bnQzMl90IHZhbHVlOworICAgICAgICB9OworICAgICAgICBzdGQ6OmFycmF5PE9wLCA4PiBtX29w
czsKKyAgICAgICAgdW5zaWduZWQgbV9vcENvdW50IHsgMCB9OworICAgIH07CisKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGluc24odWludDMyX3QgaW5zdHJ1Y3Rpb24pCiAgICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>