<?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>227197</bug_id>
          
          <creation_ts>2021-06-20 14:15:27 -0700</creation_ts>
          <short_desc>Replace Span implementation with one from libc++, which is more spec compliant</short_desc>
          <delta_ts>2021-06-20 19:52:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771192</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 14:15:27 -0700</bug_when>
    <thetext>Replace Span implementation with one from libc++, which is more spec complient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771193</commentid>
    <comment_count>1</comment_count>
      <attachid>431824</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 14:16:43 -0700</bug_when>
    <thetext>Created attachment 431824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771196</commentid>
    <comment_count>2</comment_count>
      <attachid>431825</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 14:59:24 -0700</bug_when>
    <thetext>Created attachment 431825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771197</commentid>
    <comment_count>3</comment_count>
      <attachid>431826</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 15:07:19 -0700</bug_when>
    <thetext>Created attachment 431826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771198</commentid>
    <comment_count>4</comment_count>
      <attachid>431827</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 15:19:29 -0700</bug_when>
    <thetext>Created attachment 431827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771199</commentid>
    <comment_count>5</comment_count>
      <attachid>431828</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 15:29:46 -0700</bug_when>
    <thetext>Created attachment 431828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771208</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-20 19:51:41 -0700</bug_when>
    <thetext>Committed r279062 (238982@main): &lt;https://commits.webkit.org/238982@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431828.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771209</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-20 19:52:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/79545189&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431824</attachid>
            <date>2021-06-20 14:16:43 -0700</date>
            <delta_ts>2021-06-20 15:06:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227197-20210620141643.patch</filename>
            <type>text/plain</type>
            <size>40712</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFNwYW4gaW1wbGVtZW50YXRpb24gd2l0aCBv
bmUgZnJvbSBsaWJjKyssIHdoaWNoIGlzIG1vcmUgc3BlYyBjb21wbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwYW4uaDoKKwogMjAy
MS0wNi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQg
U3BhbiBpbiBTSEExLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NwYW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9TcGFuLmgJKHJldmlzaW9uIDI3OTA1NCkKKysrIFNvdXJjZS9XVEYv
d3RmL1NwYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MjAgKzEsNDcwIEBACi0vLyAgICAgICAg
ICAgICAgQ29weXJpZ2h0IFRyaXN0YW4gQnJpbmRsZSAyMDE4LgotLy8gRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBh
Y2NvbXBhbnlpbmcgZmlsZSAuLi9MSUNFTlNFXzFfMC1Cb29zdC50eHQgb3IgY29weSBhdAotLy8g
ICAgICAgICAgaHR0cHM6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gVGhp
cyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBDKysyMCdzIHN0ZDo6c3BhbiBodHRwOi8vd3d3Lm9w
ZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDE5L240ODIwLnBkZgotCi0v
LyBUaGlzIGhhcyBiZWVuIG1vZGlmaWVkIGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb24gdG8gbWFr
ZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6Ci0vLyAgIFJlbmFtZWQgdGNiOjpzcGFuIHRvIFdURjo6
U3Bhbi4KLS8vICAgUmVuYW1lZCB0Y2I6OmFzX2J5dGVzIHRvIFdURjo6YXNCeXRlcy4KLS8vICAg
UmVuYW1lZCB0Y2I6OmFzX3dyaXRhYmxlX2J5dGVzIHRvIFdURjo6YXNXcml0YWJsZUJ5dGVzLgot
Ci0jaWZuZGVmIFRDQl9TUEFOX0hQUF9JTkNMVURFRAotI2RlZmluZSBUQ0JfU1BBTl9IUFBfSU5D
TFVERUQKLQotI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8
Y3N0ZGludD4KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLQotI2lmbmRlZiBUQ0JfU1BBTl9OT19F
WENFUFRJT05TCi0vLyBBdHRlbXB0IHRvIGRpc2NvdmVyIHdoZXRoZXIgd2UncmUgYmVpbmcgY29t
cGlsZWQgd2l0aCBleGNlcHRpb24gc3VwcG9ydAotI2lmICEoZGVmaW5lZChfX2NwcF9leGNlcHRp
b25zKSB8fCBkZWZpbmVkKF9fRVhDRVBUSU9OUykgfHwgZGVmaW5lZChfQ1BQVU5XSU5EKSkKLSNk
ZWZpbmUgVENCX1NQQU5fTk9fRVhDRVBUSU9OUwotI2VuZGlmCi0jZW5kaWYKKy8vIC0qLSBDKysg
LSotCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzcGFuIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9q
ZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4K
Ky8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0
aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4
Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBfV1RGX0xJQkNQ
UF9TUEFOCisjZGVmaW5lIF9XVEZfTElCQ1BQX1NQQU4KKworLy8gSW1wb3J0cyBhIGNvcHkgb2Yg
PHNwYW4+IGZyb20gZTg5MjcwNWQ3NGM3MzY2YTE0MDRhM2IzNDcxMDAxZWRhYTc2NTlmOCBvZiB0
aGUKKy8vIGxpYmMrKyBwcm9qZWN0IChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2pl
Y3QuZ2l0KSBhbmQgbW9kaWZpZXMgaXQgdG8KKy8vIHdvcmsgb24gdG9wIG9mIGFueSBzdGFuZGFy
ZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uLgorLy8KKy8vIC0gUmVuYW1lcyBtYWNyb3Mgd2l0aCBf
TElCQ1BQXyBwcmVmaXggdG8gdXNlIHRoZSBwcmVmaXggX1dURl9MSUJDUFBfCisvLyAtIFJlbmFt
ZXMgc3RkOjpzcGFuIHRvIFdURjo6U3BhbgorLy8gLSBSZW5hbWVzIHN0ZDo6YXNfYnl0ZXMvc3Rk
Ojphc193cml0YWJsZV9ieXRlcyB0byBXVEY6OmFzQnl0ZXMvV1RGOjphc1dyaXRhYmxlQnl0ZXMu
CisvLyAtIFN0b3AgI2luY2x1ZGluZyBpbnRlcm5hbCBsaWJjKysgaGVhZGVycy4KKy8vIC0gUmVt
b3ZlIGNoZWNrIGZvciA+IGMrKzE3LgorLy8gLSBSZW1vdmUgcHVzaC9wb3AgYXZhaWxhYmlsaXR5
IG9mIG1pbi9tYXggbWFjcm9zLgorCisjaW5jbHVkZSA8YXJyYXk+ICAgICAgICAvLyBmb3IgYXJy
YXkKKyNpbmNsdWRlIDxjc3RkZGVmPiAgICAgIC8vIGZvciBieXRlCisjaW5jbHVkZSA8aXRlcmF0
b3I+ICAgICAvLyBmb3IgaXRlcmF0b3JzCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+ICAvLyBmb3Ig
cmVtb3ZlX2N2LCBldGMKKworLy8gQWRkcyBzb21lIG1hY3JvIGRlZmluZXMgdXN1YWxseSBkZWZp
bmVkIGluIF9fY29uZmlnLgorCisjZGVmaW5lIF9XVEZfTElCQ1BQX0FCSV9TUEFOX1BPSU5URVJf
SVRFUkFUT1JTCisjZGVmaW5lIF9XVEZfTElCQ1BQX0JFR0lOX05BTUVTUEFDRSBuYW1lc3BhY2Ug
V1RGIHsKKyNkZWZpbmUgX1dURl9MSUJDUFBfREVCVUdfTEVWRUwgMAorI2RlZmluZSBfV1RGX0xJ
QkNQUF9FTkRfTkFNRVNQQUNFICB9CisjZGVmaW5lIF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMK
KyNkZWZpbmUgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyNkZWZpbmUgX1dURl9MSUJD
UFBfVEVNUExBVEVfVklTCisjZGVmaW5lIF9XVEZfVlNURCBzdGQKKworI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjZGVmaW5lIF9XVEZfTElCQ1BQX0FTU0VSVCBBU1NFUlQKKworX1dURl9M
SUJDUFBfQkVHSU5fTkFNRVNQQUNFCisKK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGR5bmFtaWNf
ZXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBfVHAsIHNpemVfdCBfRXh0ZW50ID0gZHluYW1pY19leHRlbnQ+IGNsYXNzIFNwYW47
CisKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCBfX2lzX3NwYW5faW1wbCA6IHB1Ymxp
YyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIHNpemVfdCBfRXh0
ZW50Pgorc3RydWN0IF9faXNfc3Bhbl9pbXBsPFNwYW48X1RwLCBfRXh0ZW50Pj4gOiBwdWJsaWMg
c3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19z
cGFuIDogcHVibGljIF9faXNfc3Bhbl9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4ge307CisK
K3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zdGRfYXJyYXlfaW1wbCA6IHB1Ymxp
YyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIHNpemVfdCBfU3o+
CitzdHJ1Y3QgX19pc19zdGRfYXJyYXlfaW1wbDxzdGQ6OmFycmF5PF9UcCwgX1N6Pj4gOiBwdWJs
aWMgc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19p
c19zdGRfYXJyYXkgOiBwdWJsaWMgX19pc19zdGRfYXJyYXlfaW1wbDxzdGQ6OnJlbW92ZV9jdl90
PF9UcD4+IHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxlbWVudFR5cGUsIGNs
YXNzID0gdm9pZD4KK3N0cnVjdCBfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXIgOiBwdWJs
aWMgc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxl
bWVudFR5cGU+CitzdHJ1Y3QgX19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9UcCwgX0Vs
ZW1lbnRUeXBlLAorICAgICAgICBzdGQ6OnZvaWRfdDwKKyAgICAgICAgLy8gaXMgbm90IGEgc3Bl
Y2lhbGl6YXRpb24gb2YgU3BhbgorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
IV9faXNfc3BhbjxfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gaXMg
bm90IGEgc3BlY2lhbGl6YXRpb24gb2YgYXJyYXkKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFfX2lzX3N0ZF9hcnJheTxfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwK
KyAgICAgICAgLy8gc2Q6OmlzX2FycmF5X3Y8Q29udGFpbmVyPiBpcyBmYWxzZSwKKyAgICAgICAg
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2FycmF5X3Y8X1RwPiwgbnVsbHB0
cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gc3RkOjpkYXRhKGNvbnQpIGFuZCBzdGQ6OnNpemUoY29u
dCkgYXJlIHdlbGwgZm9ybWVkCisgICAgICAgICAgICBkZWNsdHlwZShzdGQ6OmRhdGEoc3RkOjpk
ZWNsdmFsPF9UcD4oKSkpLAorICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpzaXplKHN0ZDo6ZGVj
bHZhbDxfVHA+KCkpKSwKKyAgICAgICAgLy8gcmVtb3ZlX3BvaW50ZXJfdDxkZWNsdHlwZShkYXRh
KGNvbnQpKT4oKilbXSBpcyBjb252ZXJ0aWJsZSB0byBFbGVtZW50VHlwZSgqKVtdCisgICAgICAg
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICBzdGQ6OmlzX2Nv
bnZlcnRpYmxlX3Y8c3RkOjpyZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6
OmRlY2x2YWw8X1RwICY+KCkpKT4oKilbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9FbGVtZW50VHlwZSgqKVtdPiwKKyAgICAgICAgICAgICAgICBudWxscHRyX3Q+Ojp0eXBl
CisgICAgICAgID4+CisgICAgOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307CiAKLSNpZm5kZWYg
VENCX1NQQU5fTk9fRVhDRVBUSU9OUwotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdGRl
eGNlcHQ+Ci0jZW5kaWYKIAotLy8gVmFyaW91cyBmZWF0dXJlIHRlc3QgbWFjcm9zCi0KLSNpZm5k
ZWYgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUKLSNkZWZpbmUgVENCX1NQQU5fTkFNRVNQQUNFX05B
TUUgV1RGCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwLCBzaXplX3QgX0V4dGVudD4KK2NsYXNzIF9X
VEZfTElCQ1BQX1RFTVBMQVRFX1ZJUyBTcGFuIHsKK3B1YmxpYzoKKy8vICBjb25zdGFudHMgYW5k
IHR5cGVzCisgICAgdXNpbmcgZWxlbWVudF90eXBlICAgICAgICAgICA9IF9UcDsKKyAgICB1c2lu
ZyB2YWx1ZV90eXBlICAgICAgICAgICAgID0gc3RkOjpyZW1vdmVfY3ZfdDxfVHA+OworICAgIHVz
aW5nIHNpemVfdHlwZSAgICAgICAgICAgICAgPSBzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5j
ZV90eXBlICAgICAgICA9IHB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAg
ICAgID0gX1RwICo7CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9U
cCAqOworICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2lu
ZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQ
X0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRF
Ul9JVEVSQVRPUlMpCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7
CisjZWxzZQorICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxw
b2ludGVyPjsKICNlbmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RG
X1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogCi0jaWYgX19jcGx1c3BsdXMgPj0g
MjAxNzAzTCB8fCAoZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNWQ19MQU5HID49IDIwMTcwM0wp
Ci0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTcKLSNlbmRpZgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90eXBlIGV4dGVudCA9IF9FeHRlbnQ7CiAKLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDE0
MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0gMjAxNDAyTCkKLSNk
ZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAotI2VuZGlmCisvLyBbc3Bhbi5jb25zXSwgc3BhbiBj
b25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisgICAgdGVtcGxh
dGUgPHNpemVfdCBfU3ogPSBfRXh0ZW50LCBzdGQ6OmVuYWJsZV9pZl90PF9TeiA9PSAwLCBudWxs
cHRyX3Q+ID0gbnVsbHB0cj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25z
dGV4cHIgU3BhbigpIG5vZXhjZXB0IDogX19kYXRhe251bGxwdHJ9IHt9CiAKLW5hbWVzcGFjZSBU
Q0JfU1BBTl9OQU1FU1BBQ0VfTkFNRSB7CisgICAgY29uc3RleHByIFNwYW4gICAgICAgICAgIChj
b25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBTcGFuJiBvcGVy
YXRvcj0oY29uc3QgU3BhbiYpIG5vZXhjZXB0ID0gZGVmYXVsdDsKIAotLy8gRXN0YWJsaXNoIGRl
ZmF1bHQgY29udHJhY3QgY2hlY2tpbmcgYmVoYXZpb3IKLSNpZiAhZGVmaW5lZChUQ0JfU1BBTl9U
SFJPV19PTl9DT05UUkFDVF9WSU9MQVRJT04pICYmICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgIWRlZmluZWQoVENCX1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNUX1ZJT0xBVElPTikg
JiYgICAgICAgICAgICAgICAgICAgICAgXAotICAgICFkZWZpbmVkKFRDQl9TUEFOX05PX0NPTlRS
QUNUX0NIRUNLSU5HKQotI2lmIGRlZmluZWQoTkRFQlVHKSB8fCAhZGVmaW5lZChUQ0JfU1BBTl9I
QVZFX0NQUDE0KQotI2RlZmluZSBUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORwotI2Vsc2UK
LSNkZWZpbmUgVENCX1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNUX1ZJT0xBVElPTgotI2VuZGlm
Ci0jZW5kaWYKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgZXhw
bGljaXQgU3Bhbihwb2ludGVyIF9fcHRyLCBzaXplX3R5cGUgX19jb3VudCkgOiBfX2RhdGF7X19w
dHJ9CisgICAgICAgIHsgKHZvaWQpX19jb3VudDsgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQg
PT0gX19jb3VudCwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChwdHIsIGxl
bikiKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBleHBs
aWNpdCBTcGFuKHBvaW50ZXIgX19mLCBwb2ludGVyIF9fbCkgOiBfX2RhdGF7X19mfQorICAgICAg
ICB7ICh2b2lkKV9fbDsgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfRXh0ZW50ID09IGRpc3RhbmNl
KF9fZiwgX19sKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChwdHIsIHB0
cikiKTsgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9USFJPV19PTl9DT05UUkFDVF9WSU9MQVRJ
T04pCi1zdHJ1Y3QgY29udHJhY3RfdmlvbGF0aW9uX2Vycm9yIDogc3RkOjpsb2dpY19lcnJvciB7
Ci0gICAgZXhwbGljaXQgY29udHJhY3RfdmlvbGF0aW9uX2Vycm9yKGNvbnN0IGNoYXIqIG1zZykg
OiBzdGQ6OmxvZ2ljX2Vycm9yKG1zZykKLSAgICB7fQotfTsKKyAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWSBjb25zdGV4cHIgU3BhbihlbGVtZW50X3R5cGUgKCZfX2FycilbX0V4dGVu
dF0pICAgICAgICAgIG5vZXhjZXB0IDogX19kYXRhe19fYXJyfSB7fQogCi1pbmxpbmUgdm9pZCBj
b250cmFjdF92aW9sYXRpb24oY29uc3QgY2hhciogbXNnKQotewotICAgIHRocm93IGNvbnRyYWN0
X3Zpb2xhdGlvbl9lcnJvcihtc2cpOwotfQotCi0jZWxpZiBkZWZpbmVkKFRDQl9TUEFOX1RFUk1J
TkFURV9PTl9DT05UUkFDVF9WSU9MQVRJT04pCi1bW25vcmV0dXJuXV0gaW5saW5lIHZvaWQgY29u
dHJhY3RfdmlvbGF0aW9uKGNvbnN0IGNoYXIqIC8qdW51c2VkKi8pCi17Ci0gICAgc3RkOjp0ZXJt
aW5hdGUoKTsKLX0KLSNlbmRpZgorICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlw
ZSwKKyAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8
X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9
IG51bGxwdHI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4
cHIgU3BhbihzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIpIG5v
ZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0ge30KIAotI2lmICFkZWZpbmVkKFRDQl9TUEFO
X05PX0NPTlRSQUNUX0NIRUNLSU5HKQotI2RlZmluZSBUQ0JfU1BBTl9TVFJJTkdJRlkoY29uZCkg
I2NvbmQKLSNkZWZpbmUgVENCX1NQQU5fRVhQRUNUKGNvbmQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29uZCA/ICh2b2lkKSAwIDogY29u
dHJhY3RfdmlvbGF0aW9uKCJFeHBlY3RlZCAiIFRDQl9TUEFOX1NUUklOR0lGWShjb25kKSkKLSNl
bHNlCi0jZGVmaW5lIFRDQl9TUEFOX0VYUEVDVChjb25kKQotI2VuZGlmCisgICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLAorICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfY29udmVydGlibGVfdjxjb25zdCBfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVt
ZW50X3R5cGUgKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cj4KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8X090
aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX2Fycikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIu
ZGF0YSgpfSB7fQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVk
KF9fY3BwX2lubGluZV92YXJpYWJsZXMpCi0jZGVmaW5lIFRDQl9TUEFOX0lOTElORV9WQVIgaW5s
aW5lCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9JTkxJTkVfVkFSCi0jZW5kaWYKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WQorICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgU3BhbiggICAgICBfQ29udGFpbmVyJiBfX2Ms
CisgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRh
aW5lcjxfQ29udGFpbmVyLCBfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAg
ICAgIDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSB7CisgICAgICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0
Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChyYW5nZSkiKTsKKyAgICAgICAgfQogCi0jaWYgZGVm
aW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE0KSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIChkZWZpbmVkKF9fY3BwX2NvbnN0ZXhwcikgJiYgX19jcHBf
Y29uc3RleHByID49IDIwMTMwNCkKLSNkZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNF9DT05TVEVY
UFIKLSNlbmRpZgorICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBTcGFuKGNv
bnN0IF9Db250YWluZXImIF9fYywKKyAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8X19pc19z
cGFuX2NvbXBhdGlibGVfY29udGFpbmVyPGNvbnN0IF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBu
dWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBfX2RhdGF7X1dURl9WU1REOjpkYXRhKF9f
Yyl9IHsKKyAgICAgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfRXh0ZW50ID09IF9XVEZfVlNU
RDo6c2l6ZShfX2MpLCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKHJhbmdl
KSIpOworICAgICAgICB9CiAKLSNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09OU1RF
WFBSKQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNCBjb25zdGV4cHIKLSNlbHNlCi0jZGVm
aW5lIFRDQl9TUEFOX0NPTlNURVhQUjE0Ci0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090
aGVyRWxlbWVudFR5cGU+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAg
ICAgY29uc3RleHByIFNwYW4oY29uc3QgU3BhbjxfT3RoZXJFbGVtZW50VHlwZSwgX0V4dGVudD4m
IF9fb3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50
VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUgKCopW10+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBfX2RhdGF7X19vdGhlci5kYXRhKCl9
IHt9CiAKLSNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09OU1RFWFBSKSAmJiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCFkZWZpbmVkKF9NU0NfVkVSKSB8
fCBfTVNDX1ZFUiA+IDE5MDApCi0jZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUl9BU1NJR04gY29u
c3RleHByCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOCi0jZW5kaWYK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGU+CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oY29uc3Qg
U3BhbjxfT3RoZXJFbGVtZW50VHlwZSwgZHluYW1pY19leHRlbnQ+JiBfX290aGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVu
dF90eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51
bGxwdHIpIG5vZXhjZXB0CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSB7IF9XVEZf
TElCQ1BQX0FTU0VSVChfRXh0ZW50ID09IF9fb3RoZXIuc2l6ZSgpLCAic2l6ZSBtaXNtYXRjaCBp
biBTcGFuJ3MgY29uc3RydWN0b3IgKG90aGVyIFNwYW4pIik7IH0KIAotI2lmIGRlZmluZWQoVENC
X1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCi0jZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjEx
IGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTEgVENCX1NQQU5f
Q09OU1RFWFBSMTQKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8
fCBkZWZpbmVkKF9fY3BwX2RlZHVjdGlvbl9ndWlkZXMpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVf
REVEVUNUSU9OX0dVSURFUwotI2VuZGlmCisvLyAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7
CiAKLSNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBfbGli
X2J5dGUpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKLSNlbmRpZgorICAgIHRlbXBs
YXRlIDxzaXplX3QgX0NvdW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisg
ICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGZpcnN0KCkgY29uc3Qgbm9l
eGNlcHQKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX0NvdW50IDw9IF9FeHRlbnQsICJD
b3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIpOworICAgICAgICByZXR1cm4gU3Bh
bjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291bnR9OworICAgIH0KIAotI2lmIGRl
ZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9saWJfYXJyYXlfY29u
c3RleHByKQotI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NPTlNURVhQUl9TVERfQVJSQVlfRVRDCi0j
ZW5kaWYKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBs
YXN0KCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX0NvdW50
IDw9IF9FeHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6bGFzdCgpIik7CisgICAg
ICAgIHJldHVybiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCkgKyBzaXplKCkgLSBf
Q291bnQsIF9Db3VudH07CisgICAgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NPTlNU
RVhQUl9TVERfQVJSQVlfRVRDKQotI2RlZmluZSBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgY29u
c3RleHByCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIKLSNlbmRpZgor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxl
bWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gZmlyc3Qoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0
IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBz
aXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoY291bnQpIik7CisgICAg
ICAgIHJldHVybiB7ZGF0YSgpLCBfX2NvdW50fTsKKyAgICB9CiAKLSNpZmRlZiBUQ0JfU1BBTl9I
QVZFX1NURF9CWVRFCi11c2luZyBieXRlID0gc3RkOjpieXRlOwotI2Vsc2UKLXVzaW5nIGJ5dGUg
PSB1bnNpZ25lZCBjaGFyOwotI2VuZGlmCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBsYXN0
KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9M
SUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNw
YW46Omxhc3QoY291bnQpIik7CisgICAgICAgIHJldHVybiB7ZGF0YSgpICsgc2l6ZSgpIC0gX19j
b3VudCwgX19jb3VudH07CisgICAgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3
KQotI2RlZmluZSBUQ0JfU1BBTl9OT0RJU0NBUkQgW1tub2Rpc2NhcmRdXQotI2Vsc2UKLSNkZWZp
bmUgVENCX1NQQU5fTk9ESVNDQVJECi0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9PZmZz
ZXQsIHNpemVfdCBfQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBhdXRvIHN1YnNwYW4oKSBjb25zdCBub2V4Y2Vw
dAorICAgICAgICAtPiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50ICE9IGR5bmFtaWNfZXh0ZW50
ID8gX0NvdW50IDogX0V4dGVudCAtIF9PZmZzZXQ+CisgICAgeworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KF9PZmZzZXQgPD0gX0V4dGVudCwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vi
c3BhbigpIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50
IHx8IF9Db3VudCA8PSBfRXh0ZW50IC0gX09mZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBvZiBy
YW5nZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKIAotVENCX1NQQU5fSU5MSU5FX1ZBUiBjb25zdGV4
cHIgc3RkOjpzaXplX3QgZHluYW1pY19leHRlbnQgPSBTSVpFX01BWDsKKyAgICAgICAgdXNpbmcg
X1JldHVyblR5cGUgPSBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50ICE9IGR5bmFtaWNfZXh0ZW50
ID8gX0NvdW50IDogX0V4dGVudCAtIF9PZmZzZXQ+OworICAgICAgICByZXR1cm4gX1JldHVyblR5
cGV7ZGF0YSgpICsgX09mZnNldCwgX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6ZSgpIC0g
X09mZnNldCA6IF9Db3VudH07CisgICAgfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGUsIHN0ZDo6c2l6ZV90IEV4dGVudCA9IGR5bmFtaWNfZXh0ZW50PgotY2xhc3MgU3BhbjsKIAot
bmFtZXNwYWNlIGRldGFpbCB7CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgorICAgICAgIHN1
YnNwYW4oc2l6ZV90eXBlIF9fb2Zmc2V0LCBzaXplX3R5cGUgX19jb3VudCA9IGR5bmFtaWNfZXh0
ZW50KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9f
b2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3Bhbihv
ZmZzZXQsIGNvdW50KSIpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCAgPD0g
c2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1pY19leHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2Ug
aW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBpZiAoX19jb3VudCA9
PSBkeW5hbWljX2V4dGVudCkKKyAgICAgICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQs
IHNpemUoKSAtIF9fb2Zmc2V0fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQg
PD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bh
bjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9f
b2Zmc2V0LCBfX2NvdW50fTsKKyAgICB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OnNp
emVfdCBTPgotc3RydWN0IHNwYW5fc3RvcmFnZSB7Ci0gICAgY29uc3RleHByIHNwYW5fc3RvcmFn
ZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBfRXh0ZW50OyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCAq
IHNpemVvZihlbGVtZW50X3R5cGUpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkgY29uc3RleHByIGJvb2wgZW1wdHkoKSAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1
cm4gX0V4dGVudCA9PSAwOyB9CiAKLSAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKEUqIHBfcHRy
LCBzdGQ6OnNpemVfdCAvKnVudXNlZCovKSBub2V4Y2VwdAotICAgICAgIDogcHRyKHBfcHRyKQot
ICAgIHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVy
ZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBfX2lkeCkgY29uc3Qgbm9leGNlcHQKKyAgICB7Cisg
ICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2lkeCA8IHNpemUoKSwgIlNwYW48VCxOPltdIGlu
ZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVtfX2lkeF07CisgICAg
fQogCi0gICAgRSogcHRyID0gbnVsbHB0cjsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c2l6
ZV90IHNpemUgPSBTOwotfTsKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25z
dGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VCwgTj46OmZyb250KCkgb24gZW1wdHkg
U3BhbiIpOworICAgICAgICByZXR1cm4gX19kYXRhWzBdOworICAgIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEU+Ci1zdHJ1Y3Qgc3Bhbl9zdG9yYWdlPEUsIGR5bmFtaWNfZXh0ZW50PiB7Ci0gICAg
Y29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKLQotICAgIGNvbnN0
ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IHBfc2l6ZSkgbm9leGNlcHQK
LSAgICAgICAgOiBwdHIocF9wdHIpLCBzaXplKHBfc2l6ZSkKLSAgICB7fQorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5v
ZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJTcGFu
PFQsIE4+OjpiYWNrKCkgb24gZW1wdHkgU3BhbiIpOworICAgICAgICByZXR1cm4gX19kYXRhW3Np
emUoKS0xXTsKKyAgICB9CiAKLSAgICBFKiBwdHIgPSBudWxscHRyOwotICAgIHN0ZDo6c2l6ZV90
IHNpemUgPSAwOwotfTsKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgcG9pbnRlciBkYXRhKCkgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gX19kYXRhOyB9CiAKLS8vIFJlaW1wbGVtZW50YXRpb24gb2YgQysrMTcgc3RkOjpz
aXplKCkgYW5kIHN0ZDo6ZGF0YSgpCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRlZmlu
ZWQoX19jcHBfbGliX25vbm1lbWJlcl9jb250YWluZXJfYWNjZXNzKQotdXNpbmcgc3RkOjpkYXRh
OwotdXNpbmcgc3RkOjpzaXplOwotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBDPgotY29uc3RleHBy
IGF1dG8gc2l6ZShjb25zdCBDJiBjKSAtPiBkZWNsdHlwZShjLnNpemUoKSkKLXsKLSAgICByZXR1
cm4gYy5zaXplKCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotY29u
c3RleHByIHN0ZDo6c2l6ZV90IHNpemUoY29uc3QgVCAoJilbTl0pIG5vZXhjZXB0Ci17Ci0gICAg
cmV0dXJuIE47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBDPgotY29uc3RleHByIGF1dG8gZGF0YShD
JiBjKSAtPiBkZWNsdHlwZShjLmRhdGEoKSkKLXsKLSAgICByZXR1cm4gYy5kYXRhKCk7Ci19Ci0K
LXRlbXBsYXRlIDxjbGFzcyBDPgotY29uc3RleHByIGF1dG8gZGF0YShjb25zdCBDJiBjKSAtPiBk
ZWNsdHlwZShjLmRhdGEoKSkKLXsKLSAgICByZXR1cm4gYy5kYXRhKCk7Ci19Ci0KLXRlbXBsYXRl
IDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotY29uc3RleHByIFQqIGRhdGEoVCAoJmFycmF5KVtO
XSkgbm9leGNlcHQKLXsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBF
PgotY29uc3RleHByIGNvbnN0IEUqIGRhdGEoc3RkOjppbml0aWFsaXplcl9saXN0PEU+IGlsKSBu
b2V4Y2VwdAotewotICAgIHJldHVybiBpbC5iZWdpbigpOwotfQotI2VuZGlmIC8vIFRDQl9TUEFO
X0hBVkVfQ1BQMTcKKy8vIFtzcGFuLml0ZXJdLCBTcGFuIGl0ZXJhdG9yIHN1cHBvcnQKKyAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAg
ICAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpKTsg
fQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAg
ICAgICAgICAgICAgICAgICBlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihk
YXRhKCkgKyBzaXplKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAgICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsg
cmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAgICAgICAgcmVuZCgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KIAotI2lm
IGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9saWJfdm9pZF90
KQotdXNpbmcgc3RkOjp2b2lkX3Q7Ci0jZWxzZQotdGVtcGxhdGUgPHR5cGVuYW1lLi4uPgotdXNp
bmcgdm9pZF90ID0gdm9pZDsKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIFNwYW48Y29uc3Qgc3RkOjpieXRlLCBfRXh0ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk+
IF9fYXNfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdAorICAgIHsgcmV0dXJuIFNwYW48Y29uc3Qgc3Rk
OjpieXRlLCBfRXh0ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk+e3JlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc3RkOjpieXRlICo+KGRhdGEoKSksIHNpemVfYnl0ZXMoKX07IH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci11c2luZyB1bmN2cmVmX3QgPQotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU7Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZT4KLXN0cnVjdCBpc19zcGFuIDogc3RkOjpmYWxzZV90eXBlIHt9Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgUz4KLXN0cnVjdCBpc19zcGFuPFNw
YW48VCwgUz4+IDogc3RkOjp0cnVlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZT4KLXN0
cnVjdCBpc19zdGRfYXJyYXkgOiBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGlzX3N0ZF9hcnJheTxzdGQ6OmFycmF5PFQs
IE4+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1l
ID0gdm9pZD4KLXN0cnVjdCBoYXNfc2l6ZV9hbmRfZGF0YSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3NpemVfYW5kX2RhdGE8VCwgdm9p
ZF90PGRlY2x0eXBlKGRldGFpbDo6c2l6ZShzdGQ6OmRlY2x2YWw8VD4oKSkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNs
dmFsPFQ+KCkpKT4+Ci0gICAgOiBzdGQ6OnRydWVfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIEMsIHR5cGVuYW1lIFUgPSB1bmN2cmVmX3Q8Qz4+Ci1zdHJ1Y3QgaXNfY29udGFpbmVyIHsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPQotICAgICAgICAhaXNfc3BhbjxVPjo6
dmFsdWUgJiYgIWlzX3N0ZF9hcnJheTxVPjo6dmFsdWUgJiYKLSAgICAgICAgIXN0ZDo6aXNfYXJy
YXk8VT46OnZhbHVlICYmIGhhc19zaXplX2FuZF9kYXRhPEM+Ojp2YWx1ZTsKLX07CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgU3BhbjxzdGQ6OmJ5dGUsIF9FeHRlbnQgKiBzaXpl
b2YoZWxlbWVudF90eXBlKT4gX19hc193cml0YWJsZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0Cisg
ICAgeyByZXR1cm4gU3BhbjxzdGQ6OmJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBl
KT57cmVpbnRlcnByZXRfY2FzdDxzdGQ6OmJ5dGUgKj4oZGF0YSgpKSwgc2l6ZV9ieXRlcygpfTsg
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXVzaW5nIHJlbW92ZV9wb2ludGVyX3QgPSB0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlOworcHJpdmF0ZToKKyAgICBwb2ludGVy
ICAgIF9fZGF0YTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgPSB2
b2lkPgotc3RydWN0IGlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZSA6IHN0ZDo6
ZmFsc2VfdHlwZSB7fTsKK307CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPgot
c3RydWN0IGlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKLSAgICBULCBFLAot
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAhc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2N2PGRlY2x0eXBlKAotICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT46OnR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgdm9pZD46OnZhbHVlPjo6dHlwZT4KLSAgICA6IHN0ZDo6aXNfY29udmVydGlibGU8Ci0g
ICAgICAgICAgcmVtb3ZlX3BvaW50ZXJfdDxkZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNs
dmFsPFQ+KCkpKT4gKCopW10sCi0gICAgICAgICAgRSAoKilbXT4ge307Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSwgdHlwZW5hbWUgPSBzaXplX3Q+Ci1zdHJ1Y3QgaXNfY29tcGxldGUgOiBzdGQ6OmZh
bHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NvbXBsZXRl
PFQsIGRlY2x0eXBlKHNpemVvZihUKSk+IDogc3RkOjp0cnVlX3R5cGUge307Ci0KLX0gLy8gbmFt
ZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6
ZV90IEV4dGVudD4KLWNsYXNzIFNwYW4gewotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19vYmpl
Y3Q8RWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVt
ZW50VHlwZSBtdXN0IGJlIGFuIG9iamVjdCB0eXBlIChub3QgYSAiCi0gICAgICAgICAgICAgICAg
ICAicmVmZXJlbmNlIHR5cGUgb3Igdm9pZCkiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGRldGFpbDo6
aXNfY29tcGxldGU8RWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICJBIFNw
YW4ncyBFbGVtZW50VHlwZSBtdXN0IGJlIGEgY29tcGxldGUgdHlwZSAobm90IGEgZm9yd2FyZCAi
Ci0gICAgICAgICAgICAgICAgICAiZGVjbGFyYXRpb24pIik7Ci0gICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19hYnN0cmFjdDxFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAg
IkEgU3BhbidzIEVsZW1lbnRUeXBlIGNhbm5vdCBiZSBhbiBhYnN0cmFjdCBjbGFzcyB0eXBlIik7
CiAKLSAgICB1c2luZyBzdG9yYWdlX3R5cGUgPSBkZXRhaWw6OnNwYW5fc3RvcmFnZTxFbGVtZW50
VHlwZSwgRXh0ZW50PjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBfVHA+CitjbGFzcyBfV1RGX0xJQkNQ
UF9URU1QTEFURV9WSVMgU3BhbjxfVHAsIGR5bmFtaWNfZXh0ZW50PiB7Citwcml2YXRlOgogCiBw
dWJsaWM6Ci0gICAgLy8gY29uc3RhbnRzIGFuZCB0eXBlcwotICAgIHVzaW5nIGVsZW1lbnRfdHlw
ZSA9IEVsZW1lbnRUeXBlOwotICAgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jdjxFbGVtZW50VHlwZT46OnR5cGU7Ci0gICAgdXNpbmcgc2l6ZV90eXBlID0gc3RkOjpz
aXplX3Q7Ci0gICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjpwdHJkaWZmX3Q7Ci0gICAg
dXNpbmcgcG9pbnRlciA9IGVsZW1lbnRfdHlwZSo7Ci0gICAgdXNpbmcgY29uc3RfcG9pbnRlciA9
IGNvbnN0IGVsZW1lbnRfdHlwZSo7Ci0gICAgdXNpbmcgcmVmZXJlbmNlID0gZWxlbWVudF90eXBl
JjsKLSAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBlbGVtZW50X3R5cGUmOwotICAg
IHVzaW5nIGl0ZXJhdG9yID0gcG9pbnRlcjsKLSAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0g
c3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90eXBlIGV4dGVudCA9IEV4dGVudDsKLQotICAgIC8vIFtzcGFuLmNvbnNdLCBTcGFuIGNv
bnN0cnVjdG9ycywgY29weSwgYXNzaWdubWVudCwgYW5kIGRlc3RydWN0b3IKLSAgICB0ZW1wbGF0
ZSA8Ci0gICAgICAgIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPChFID09IGR5bmFtaWNfZXh0ZW50IHx8IEUgPD0gMCksIGludD46OnR5cGUg
PSAwPgotICAgIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQKLSAgICB7fQorLy8gIGNvbnN0YW50
cyBhbmQgdHlwZXMKKyAgICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAg
IHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47Cisg
ICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgICAgICA9IHNpemVfdDsKKyAgICB1c2luZyBkaWZm
ZXJlbmNlX3R5cGUgICAgICAgID0gcHRyZGlmZl90OworICAgIHVzaW5nIHBvaW50ZXIgICAgICAg
ICAgICAgICAgPSBfVHAgKjsKKyAgICB1c2luZyBjb25zdF9wb2ludGVyICAgICAgICAgID0gY29u
c3QgX1RwICo7CisgICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgICAgICA9IF9UcCAmOworICAg
IHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfVHAgJjsKKyNpZiAoX1dURl9M
SUJDUFBfREVCVUdfTEVWRUwgPT0gMikgfHwgZGVmaW5lZChfV1RGX0xJQkNQUF9BQklfU1BBTl9Q
T0lOVEVSX0lURVJBVE9SUykKKyAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gcG9p
bnRlcjsKKyNlbHNlCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IF9fd3JhcF9p
dGVyPHBvaW50ZXI+OworI2VuZGlmCisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciAgICAgICA9
IF9XVEZfVlNURDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CiAKLSAgICBUQ0JfU1BBTl9D
T05TVEVYUFIxMSBTcGFuKHBvaW50ZXIgcHRyLCBzaXplX3R5cGUgY291bnQpCi0gICAgICAgIDog
c3RvcmFnZV8ocHRyLCBjb3VudCkKLSAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChleHRl
bnQgPT0gZHluYW1pY19leHRlbnQgfHwgY291bnQgPT0gZXh0ZW50KTsKLSAgICB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gZHluYW1pY19leHRlbnQ7CiAKLSAgICBU
Q0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuKHBvaW50ZXIgZmlyc3RfZWxlbSwgcG9pbnRlciBsYXN0
X2VsZW0pCi0gICAgICAgIDogc3RvcmFnZV8oZmlyc3RfZWxlbSwgbGFzdF9lbGVtIC0gZmlyc3Rf
ZWxlbSkKLSAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChleHRlbnQgPT0gZHluYW1pY19l
eHRlbnQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZWxlbSAtIGZpcnN0X2VsZW0g
PT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZf
dD4oZXh0ZW50KSk7Ci0gICAgfQorLy8gW3NwYW4uY29uc10sIFNwYW4gY29uc3RydWN0b3JzLCBj
b3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvcgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVsbHB0cn0sIF9f
c2l6ZXswfSB7fQogCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUg
PSBFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAg
ICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRlbnQgfHwgTiA9PSBFKSAmJgotICAgICAgICAg
ICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxl
PAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3R5cGUgKCYpW05dLCBFbGVtZW50
VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29u
c3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmYXJyKVtOXSkgbm9leGNlcHQgOiBzdG9yYWdlXyhh
cnIsIE4pCi0gICAge30KKyAgICBjb25zdGV4cHIgU3BhbiAgICAgICAgICAgKGNvbnN0IFNwYW4m
KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIFNwYW4mIG9wZXJhdG9yPShjb25z
dCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90
IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRlbnQgfHwgTiA9
PSBFKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1l
bnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5
PHZhbHVlX3R5cGUsIE4+JiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAg
IGludD46OnR5cGUgPSAwPgotICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBTcGFuKHN0ZDo6
YXJyYXk8dmFsdWVfdHlwZSwgTj4mIGFycikgbm9leGNlcHQKLSAgICAgICAgOiBzdG9yYWdlXyhh
cnIuZGF0YSgpLCBOKQotICAgIHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkg
Y29uc3RleHByIFNwYW4ocG9pbnRlciBfX3B0ciwgc2l6ZV90eXBlIF9fY291bnQpIDogX19kYXRh
e19fcHRyfSwgX19zaXple19fY291bnR9IHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgY29uc3RleHByIFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtf
X2Z9LCBfX3NpemV7c3RhdGljX2Nhc3Q8c2l6ZV90PihkaXN0YW5jZShfX2YsIF9fbCkpfSB7fQog
Ci0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0g
ICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgICAg
KEUgPT0gZHluYW1pY19leHRlbnQgfHwgTiA9PSBFKSAmJgotICAgICAgICAgICAgICAgICAgICAg
IGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiwgRWxlbWVu
dFR5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwPgotICAgIFRD
Ql9TUEFOX0FSUkFZX0NPTlNURVhQUiBTcGFuKGNvbnN0IHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwg
Tj4mIGFycikgbm9leGNlcHQKLSAgICAgICAgOiBzdG9yYWdlXyhhcnIuZGF0YSgpLCBOKQotICAg
IHt9CisgICAgdGVtcGxhdGUgPHNpemVfdCBfU3o+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbihlbGVtZW50X3R5cGUgKCZfX2FycilbX1N6XSkg
ICAgICAgICAgbm9leGNlcHQgOiBfX2RhdGF7X19hcnJ9LCBfX3NpemV7X1N6fSB7fQogCi0gICAg
dGVtcGxhdGUgPAotICAgICAgICB0eXBlbmFtZSBDb250YWluZXIsIHN0ZDo6c2l6ZV90IEUgPSBF
eHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgRSA9
PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxDb250YWluZXI+Ojp2YWx1
ZSAmJgotICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9j
b21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICBDb250YWluZXImLCBFbGVtZW50VHlwZT46
OnZhbHVlLAotICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNwYW4o
Q29udGFpbmVyJiBjb250KQotICAgICAgICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwg
ZGV0YWlsOjpzaXplKGNvbnQpKQotICAgIHt9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVs
ZW1lbnRUeXBlLCBzaXplX3QgX1N6LAorICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUg
KCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuKHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5cGUs
IF9Tej4mIF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6
fSB7fQogCi0gICAgdGVtcGxhdGUgPAotICAgICAgICB0eXBlbmFtZSBDb250YWluZXIsIHN0ZDo6
c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAg
ICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxDb250
YWluZXI+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2Vs
ZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250YWlu
ZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0g
ICAgY29uc3RleHByIFNwYW4oY29uc3QgQ29udGFpbmVyJiBjb250KQotICAgICAgICA6IHN0b3Jh
Z2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNvbnQpKQotICAgIHt9CisgICAg
dGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzaXplX3QgX1N6LAorICAgICAgICAg
ICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxjb25zdCBfT3RoZXJF
bGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUgKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0
cj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFu
KGNvbnN0IHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9Tej4mIF9fYXJyKSBub2V4Y2Vw
dCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6fSB7fQogCi0gICAgY29uc3RleHBy
IFNwYW4oY29uc3QgU3BhbiYgb3RoZXIpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
ICAgICAgICBjb25zdGV4cHIgU3BhbiggICAgICBfQ29udGFpbmVyJiBfX2MsCisgICAgICAgICAg
ICBzdGQ6OmVuYWJsZV9pZl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lcjxfQ29udGFp
bmVyLCBfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRh
e19XVEZfVlNURDo6ZGF0YShfX2MpfSwgX19zaXpleyhzaXplX3R5cGUpIF9XVEZfVlNURDo6c2l6
ZShfX2MpfSB7fQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyRWxlbWVudFR5cGUsIHN0
ZDo6c2l6ZV90IE90aGVyRXh0ZW50LAotICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwKLSAgICAgICAgICAgICAgICAgIChFeHRlbnQgPT0gT3RoZXJFeHRlbnQgfHwgRXh0ZW50
ID09IGR5bmFtaWNfZXh0ZW50KSAmJgotICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29u
dmVydGlibGU8T3RoZXJFbGVtZW50VHlwZSAoKilbXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVsZW1lbnRUeXBlICgqKVtdPjo6dmFsdWUsCi0gICAgICAgICAg
ICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KLSAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBTcGFuPE90
aGVyRWxlbWVudFR5cGUsIE90aGVyRXh0ZW50PiYgb3RoZXIpIG5vZXhjZXB0Ci0gICAgICAgIDog
c3RvcmFnZV8ob3RoZXIuZGF0YSgpLCBvdGhlci5zaXplKCkpCi0gICAge30KKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
ICAgICAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAgICAgICAg
ICBzdGQ6OmVuYWJsZV9pZl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lcjxjb25zdCBf
Q29udGFpbmVyLCBfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDog
X19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSwgX19zaXpleyhzaXplX3R5cGUpIF9XVEZfVlNU
RDo6c2l6ZShfX2MpfSB7fQogCi0gICAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAKLSAg
ICBUQ0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOIFNwYW4mCi0gICAgb3BlcmF0b3I9KGNvbnN0IFNw
YW4mIG90aGVyKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhl
ckVsZW1lbnRUeXBlLCBzaXplX3QgX090aGVyRXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxl
bWVudFR5cGUsIF9PdGhlckV4dGVudD4mIF9fb3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29u
dmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUgKCopW10+LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyX3Q+ID0gbnVsbHB0cikgbm9leGNlcHQK
KyAgICAgICAgOiBfX2RhdGF7X19vdGhlci5kYXRhKCl9LCBfX3NpemV7X19vdGhlci5zaXplKCl9
IHt9CiAKLSAgICAvLyBbc3Bhbi5zdWJdLCBzcGFuIHN1YnZpZXdzCi0gICAgdGVtcGxhdGUgPHN0
ZDo6c2l6ZV90IENvdW50PgotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90
eXBlLCBDb3VudD4gZmlyc3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNU
KENvdW50IDw9IHNpemUoKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpLCBDb3VudH07Ci0gICAg
fQorLy8gICAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZSA8c3Rk
OjpzaXplX3QgQ291bnQ+Ci0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5
cGUsIENvdW50PiBsYXN0KCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Db3VudD4KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1l
bnRfdHlwZSwgX0NvdW50PiBmaXJzdCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBU
Q0JfU1BBTl9FWFBFQ1QoQ291bnQgPD0gc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHtkYXRhKCkg
KyAoc2l6ZSgpIC0gQ291bnQpLCBDb3VudH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChf
Q291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KCkiKTsK
KyAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSwgX0NvdW50
fTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgT2Zmc2V0LCBzdGQ6OnNpemVf
dCBDb3VudCA9IGR5bmFtaWNfZXh0ZW50PgotICAgIHVzaW5nIHN1YnNwYW5fcmV0dXJuX3QgPQot
ICAgICAgICBTcGFuPEVsZW1lbnRUeXBlLCBDb3VudCAhPSBkeW5hbWljX2V4dGVudAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPyBDb3VudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAoRXh0ZW50ICE9IGR5bmFtaWNfZXh0ZW50ID8gRXh0ZW50IC0gT2Zmc2V0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBk
eW5hbWljX2V4dGVudCk+OwotCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE9mZnNldCwgc3Rk
OjpzaXplX3QgQ291bnQgPSBkeW5hbWljX2V4dGVudD4KLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIx
MSBzdWJzcGFuX3JldHVybl90PE9mZnNldCwgQ291bnQ+IHN1YnNwYW4oKSBjb25zdAorICAgIHRl
bXBsYXRlIDxzaXplX3QgX0NvdW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
CisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGxhc3QoKSBjb25zdCBu
b2V4Y2VwdAogICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNUKE9mZnNldCA8PSBzaXplKCkg
JiYKLSAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudCA9PSBkeW5hbWljX2V4dGVudCB8fCBP
ZmZzZXQgKyBDb3VudCA8PSBzaXplKCkpKTsKLSAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBPZmZz
ZXQsCi0gICAgICAgICAgICAgICAgQ291bnQgIT0gZHluYW1pY19leHRlbnQgPyBDb3VudCA6IHNp
emUoKSAtIE9mZnNldH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfQ291bnQgPD0gc2l6
ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46Omxhc3QoKSIpOworICAgICAgICByZXR1
cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgc2l6ZSgpIC0gX0NvdW50LCBf
Q291bnR9OwogICAgIH0KIAotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90
eXBlLCBkeW5hbWljX2V4dGVudD4KLSAgICBmaXJzdChzaXplX3R5cGUgY291bnQpIGNvbnN0Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVt
ZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBmaXJzdChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qg
bm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChjb3VudCA8PSBzaXplKCkp
OwotICAgICAgICByZXR1cm4ge2RhdGEoKSwgY291bnR9OworICAgICAgICBfV1RGX0xJQkNQUF9B
U1NFUlQoX19jb3VudCA8PSBzaXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmly
c3QoY291bnQpIik7CisgICAgICAgIHJldHVybiB7ZGF0YSgpLCBfX2NvdW50fTsKICAgICB9CiAK
LSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRl
bnQ+Ci0gICAgbGFzdChzaXplX3R5cGUgY291bnQpIGNvbnN0CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNf
ZXh0ZW50PiBsYXN0IChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0g
ICAgICAgIFRDQl9TUEFOX0VYUEVDVChjb3VudCA8PSBzaXplKCkpOwotICAgICAgICByZXR1cm4g
e2RhdGEoKSArIChzaXplKCkgLSBjb3VudCksIGNvdW50fTsKKyAgICAgICAgX1dURl9MSUJDUFBf
QVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46Omxh
c3QoY291bnQpIik7CisgICAgICAgIHJldHVybiB7ZGF0YSgpICsgc2l6ZSgpIC0gX19jb3VudCwg
X19jb3VudH07CiAgICAgfQogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50
X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgotICAgIHN1YnNwYW4oc2l6ZV90eXBlIG9mZnNldCwgc2l6
ZV90eXBlIGNvdW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHNpemVf
dCBfT2Zmc2V0LCBzaXplX3QgX0NvdW50ID0gZHluYW1pY19leHRlbnQ+CisgICAgX1dURl9MSUJD
UFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9D
b3VudD4gc3Vic3BhbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9F
WFBFQ1Qob2Zmc2V0IDw9IHNpemUoKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50
ID09IGR5bmFtaWNfZXh0ZW50IHx8IG9mZnNldCArIGNvdW50IDw9IHNpemUoKSkpOwotICAgICAg
ICByZXR1cm4ge2RhdGEoKSArIG9mZnNldCwKLSAgICAgICAgICAgICAgICBjb3VudCA9PSBkeW5h
bWljX2V4dGVudCA/IHNpemUoKSAtIG9mZnNldCA6IGNvdW50fTsKKyAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9PZmZzZXQgPD0gc2l6ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFu
OjpzdWJzcGFuKCkiKTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA9PSBkeW5h
bWljX2V4dGVudCB8fCBfQ291bnQgPD0gc2l6ZSgpIC0gX09mZnNldCwgIk9mZnNldCArIGNvdW50
IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAgcmV0dXJuIFNwYW48
ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIF9PZmZzZXQsIF9Db3VudCA9PSBkeW5hbWlj
X2V4dGVudCA/IHNpemUoKSAtIF9PZmZzZXQgOiBfQ291bnR9OwogICAgIH0KIAotICAgIC8vIFtz
cGFuLm9ic10sIHNwYW4gb2JzZXJ2ZXJzCi0gICAgY29uc3RleHByIHNpemVfdHlwZSBzaXplKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3RvcmFnZV8uc2l6ZTsgfQotCi0gICAgY29uc3RleHBy
IHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQKKyAgICBjb25zdGV4cHIgU3Bh
bjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZCisgICAgc3Vic3BhbihzaXplX3R5cGUgX19vZmZzZXQsIHNpemVfdHlwZSBfX2Nv
dW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICByZXR1
cm4gc2l6ZSgpICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7CisgICAgICAgIF9XVEZfTElCQ1BQX0FT
U0VSVChfX29mZnNldCA8PSBzaXplKCksICJPZmZzZXQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1
YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291
bnQgIDw9IHNpemUoKSB8fCBfX2NvdW50ID09IGR5bmFtaWNfZXh0ZW50LCAiY291bnQgb3V0IG9m
IHJhbmdlIGluIFNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgaWYgKF9f
Y291bnQgPT0gZHluYW1pY19leHRlbnQpCisgICAgICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9f
b2Zmc2V0LCBzaXplKCkgLSBfX29mZnNldH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChf
X2NvdW50IDw9IHNpemUoKSAtIF9fb2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdl
IGluIFNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRh
KCkgKyBfX29mZnNldCwgX19jb3VudH07CiAgICAgfQogCi0gICAgVENCX1NQQU5fTk9ESVNDQVJE
IGNvbnN0ZXhwciBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzaXplKCkgPT0gMDsKLSAgICB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplKCkgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1
cm4gX19zaXplOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19zaXplICog
c2l6ZW9mKGVsZW1lbnRfdHlwZSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WSBjb25zdGV4cHIgYm9vbCBlbXB0eSgpICAgICAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBfX3NpemUgPT0gMDsgfQogCi0gICAgLy8gW3NwYW4uZWxlbV0sIHNwYW4gZWxlbWVudCBhY2Nl
c3MKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5
cGUgaWR4KSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgX19pZHgpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoaWR4IDwgc2l6ZSgpKTsKLSAgICAgICAgcmV0
dXJuICooZGF0YSgpICsgaWR4KTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwg
c2l6ZSgpLCAiU3BhbjxUPltdIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJu
IF9fZGF0YVtfX2lkeF07CiAgICAgfQogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgcmVmZXJl
bmNlIGZyb250KCkgY29uc3QKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25z
dGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRD
Ql9TUEFOX0VYUEVDVCghZW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiAqZGF0YSgpOworICAgICAg
ICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJTcGFuPFQ+W10uZnJvbnQoKSBvbiBlbXB0
eSBTcGFuIik7CisgICAgICAgIHJldHVybiBfX2RhdGFbMF07CiAgICAgfQogCi0gICAgVENCX1NQ
QU5fQ09OU1RFWFBSMTEgcmVmZXJlbmNlIGJhY2soKSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lO
TElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0
CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoIWVtcHR5KCkpOwotICAgICAgICByZXR1
cm4gKihkYXRhKCkgKyAoc2l6ZSgpIC0gMSkpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQo
IWVtcHR5KCksICJTcGFuPFQ+W10uYmFjaygpIG9uIGVtcHR5IFNwYW4iKTsKKyAgICAgICAgcmV0
dXJuIF9fZGF0YVtzaXplKCktMV07CiAgICAgfQogCi0gICAgY29uc3RleHByIHBvaW50ZXIgZGF0
YSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0b3JhZ2VfLnB0cjsgfQogCi0gICAgLy8gW3Nw
YW4uaXRlcmF0b3JzXSwgc3BhbiBpdGVyYXRvciBzdXBwb3J0Ci0gICAgY29uc3RleHByIGl0ZXJh
dG9yIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHBvaW50ZXIgZGF0YSgpICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fZGF0YTsgfQogCi0gICAg
Y29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGRhdGEoKSAr
IHNpemUoKTsgfQorLy8gW3NwYW4uaXRlcl0sIFNwYW4gaXRlcmF0b3Igc3VwcG9ydAorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAg
ICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkpOyB9
CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9yICAg
ICAgICAgICAgICAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9yKGRh
dGEoKSArIHNpemUoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25z
dGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgICByZW5kKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQogCi0gICAg
VENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qg
bm9leGNlcHQKLSAgICB7Ci0gICAgICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsK
LSAgICB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgU3Bhbjxjb25zdCBzdGQ6
OmJ5dGUsIGR5bmFtaWNfZXh0ZW50PiBfX2FzX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQKKyAgICB7
IHJldHVybiB7cmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdGQ6OmJ5dGUgKj4oZGF0YSgpKSwgc2l6
ZV9ieXRlcygpfTsgfQogCi0gICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIHJldmVyc2VfaXRl
cmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICByZXR1cm4gcmV2ZXJz
ZV9pdGVyYXRvcihiZWdpbigpKTsKLSAgICB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgU3BhbjxzdGQ6OmJ5dGUsIGR5bmFtaWNfZXh0ZW50PiBfX2FzX3dyaXRhYmxlX2J5dGVz
KCkgY29uc3Qgbm9leGNlcHQKKyAgICB7IHJldHVybiB7cmVpbnRlcnByZXRfY2FzdDxzdGQ6OmJ5
dGUgKj4oZGF0YSgpKSwgc2l6ZV9ieXRlcygpfTsgfQogCiBwcml2YXRlOgotICAgIHN0b3JhZ2Vf
dHlwZSBzdG9yYWdlX3t9OworICAgIHBvaW50ZXIgICBfX2RhdGE7CisgICAgc2l6ZV90eXBlIF9f
c2l6ZTsKIH07CiAKLSNpZmRlZiBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9HVUlERVMKKyNpZiAh
ZGVmaW5lZChfV1RGX0xJQkNQUF9IQVNfTk9fUkFOR0VTKQordGVtcGxhdGUgPGNsYXNzIF9UcCwg
c2l6ZV90IF9FeHRlbnQ+CitpbmxpbmUgY29uc3RleHByIGJvb2wgc3RkOjpyYW5nZXM6OmVuYWJs
ZV9ib3Jyb3dlZF9yYW5nZTxTcGFuPF9UcCwgX0V4dGVudD4gPiA9IHRydWU7CisjZW5kaWYgLy8g
IWRlZmluZWQoX1dURl9MSUJDUFBfSEFTX05PX1JBTkdFUykKKworLy8gIGFzQnl0ZXMgJiBhc1dy
aXRhYmxlQnl0ZXMKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIHNpemVfdCBfRXh0ZW50PgorX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2F1dG8gYXNCeXRlcyhTcGFuPF9UcCwgX0V4dGVudD4g
X19zKSBub2V4Y2VwdAorLT4gZGVjbHR5cGUoX19zLl9fYXNfYnl0ZXMoKSkKK3sgcmV0dXJuICAg
IF9fcy5fX2FzX2J5dGVzKCk7IH0KKwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc2l6ZV90IF9FeHRl
bnQ+CitfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorYXV0byBhc1dyaXRhYmxlQnl0ZXMo
U3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNlcHQKKy0+IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfY29uc3RfdjxfVHA+LCBkZWNsdHlwZShfX3MuX19hc193cml0YWJsZV9ieXRlcygpKT4K
K3sgcmV0dXJuIF9fcy5fX2FzX3dyaXRhYmxlX2J5dGVzKCk7IH0KKworLy8gIERlZHVjdGlvbiBn
dWlkZXMKK3RlbXBsYXRlPGNsYXNzIF9UcCwgc2l6ZV90IF9Tej4KKyAgICBTcGFuKF9UcCAoJilb
X1N6XSkgLT4gU3BhbjxfVHAsIF9Tej47CisKK3RlbXBsYXRlPGNsYXNzIF9UcCwgc2l6ZV90IF9T
ej4KKyAgICBTcGFuKHN0ZDo6YXJyYXk8X1RwLCBfU3o+JikgLT4gU3BhbjxfVHAsIF9Tej47CisK
K3RlbXBsYXRlPGNsYXNzIF9UcCwgc2l6ZV90IF9Tej4KKyAgICBTcGFuKGNvbnN0IHN0ZDo6YXJy
YXk8X1RwLCBfU3o+JikgLT4gU3Bhbjxjb25zdCBfVHAsIF9Tej47CiAKLS8qIERlZHVjdGlvbiBH
dWlkZXMgKi8KLXRlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KLVNwYW4oVCAoJilbTl0pLT5T
cGFuPFQsIE4+OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+Ci1TcGFuKHN0ZDo6YXJy
YXk8VCwgTj4mKS0+U3BhbjxULCBOPjsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgot
U3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIE4+JiktPlNwYW48Y29uc3QgVCwgTj47Ci0KLXRlbXBs
YXRlIDxjbGFzcyBDb250YWluZXI+Ci1TcGFuKENvbnRhaW5lciYpLT5TcGFuPHR5cGVuYW1lIENv
bnRhaW5lcjo6dmFsdWVfdHlwZT47Ci0KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Ci1TcGFu
KGNvbnN0IENvbnRhaW5lciYpLT5TcGFuPGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVf
dHlwZT47Ci0KLSNlbmRpZiAvLyBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9HVUlERVMKLQotI2lm
ZGVmIFRDQl9TUEFOX0lOQ0xVREVfTUFLRV9TUEFOCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50PgotY29uc3RleHByIFNwYW48RWxlbWVudFR5cGUs
IEV4dGVudD4KLW1ha2Vfc3BhbihTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0
Ci17Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVf
dCBOPgotY29uc3RleHByIFNwYW48VCwgTj4gbWFrZV9zcGFuKFQgKCZhcnIpW05dKSBub2V4Y2Vw
dAotewotICAgIHJldHVybiB7YXJyfTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6
c2l6ZV90IE4+Ci1UQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3BhbjxULCBOPiBtYWtlX3NwYW4o
c3RkOjphcnJheTxULCBOPiYgYXJyKSBub2V4Y2VwdAotewotICAgIHJldHVybiB7YXJyfTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci1UQ0JfU1BBTl9BUlJBWV9D
T05TVEVYUFIgU3Bhbjxjb25zdCBULCBOPgotbWFrZV9zcGFuKGNvbnN0IHN0ZDo6YXJyYXk8VCwg
Tj4mIGFycikgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBDb250YWluZXI+Ci1jb25zdGV4cHIgU3Bhbjx0eXBlbmFtZSBDb250YWluZXI6OnZh
bHVlX3R5cGU+IG1ha2Vfc3BhbihDb250YWluZXImIGNvbnQpCi17Ci0gICAgcmV0dXJuIHtjb250
fTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWNvbnN0ZXhwciBTcGFuPGNv
bnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4KLW1ha2Vfc3Bhbihjb25zdCBDb250
YWluZXImIGNvbnQpCi17Ci0gICAgcmV0dXJuIHtjb250fTsKLX0KLSNlbmRpZiAvLyBUQ0JfU1BB
Tl9JTkNMVURFX01BS0VfU1BBTgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0
ZDo6c2l6ZV90IEV4dGVudD4KLVNwYW48Y29uc3QgYnl0ZSwgKChFeHRlbnQgPT0gZHluYW1pY19l
eHRlbnQpID8gZHluYW1pY19leHRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogc2l6ZW9mKEVsZW1lbnRUeXBlKSAqIEV4dGVudCk+Ci1hc0J5dGVzKFNw
YW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge3JlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgYnl0ZSo+KHMuZGF0YSgpKSwgcy5zaXplX2J5dGVzKCl9OwotfQot
Ci10ZW1wbGF0ZSA8Ci0gICAgY2xhc3MgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRlbnQsCi0gICAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfY29uc3Q8RWxlbWVudFR5cGU+Ojp2YWx1
ZSwgaW50Pjo6dHlwZSA9IDA+Ci1TcGFuPGJ5dGUsICgoRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50
KSA/IGR5bmFtaWNfZXh0ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgotYXNXcml0YWJsZUJ5dGVzKFNwYW48
RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge3JlaW50ZXJw
cmV0X2Nhc3Q8Ynl0ZSo+KHMuZGF0YSgpKSwgcy5zaXplX2J5dGVzKCl9OwotfQotCi10ZW1wbGF0
ZSA8c3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgRSwgc3RkOjpzaXplX3QgUz4KLWNvbnN0ZXhwciBh
dXRvIGdldChTcGFuPEUsIFM+IHMpIC0+IGRlY2x0eXBlKHNbTl0pCi17Ci0gICAgcmV0dXJuIHNb
Tl07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FCi0KLW5hbWVz
cGFjZSBzdGQgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRl
bnQ+Ci1jbGFzcyB0dXBsZV9zaXplPFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpTcGFuPEVsZW1l
bnRUeXBlLCBFeHRlbnQ+PgotICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVfdCwg
RXh0ZW50PiB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgotY2xhc3MgdHVw
bGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjwKLSAgICBFbGVtZW50VHlwZSwg
VENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OmR5bmFtaWNfZXh0ZW50Pj47IC8vIG5vdCBkZWZpbmVk
Cit0ZW1wbGF0ZTxjbGFzcyBfQ29udGFpbmVyPgorICAgIFNwYW4oX0NvbnRhaW5lciYpIC0+IFNw
YW48dHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZT47CiAKLXRlbXBsYXRlIDxzaXplX3Qg
SSwgdHlwZW5hbWUgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRlbnQ+Ci1jbGFzcyB0dXBsZV9lbGVt
ZW50PEksIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+
PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljX2Fzc2VydChFeHRlbnQgIT0gVENCX1NQQU5fTkFNRVNQ
QUNFX05BTUU6OmR5bmFtaWNfZXh0ZW50ICYmCi0gICAgICAgICAgICAgICAgICAgICAgSSA8IEV4
dGVudCwKLSAgICAgICAgICAgICAgICAgICIiKTsKLSAgICB1c2luZyB0eXBlID0gRWxlbWVudFR5
cGU7Ci19OwordGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBTcGFuKGNvbnN0IF9Db250
YWluZXImKSAtPiBTcGFuPGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGU+Owog
Ci19IC8vIGVuZCBuYW1lc3BhY2Ugc3RkCitfV1RGX0xJQkNQUF9FTkRfTkFNRVNQQUNFCiAKIHVz
aW5nIFdURjo6U3BhbjsKIHVzaW5nIFdURjo6YXNCeXRlczsKIHVzaW5nIFdURjo6YXNXcml0YWJs
ZUJ5dGVzOwogCi0jZW5kaWYgLy8gVENCX1NQQU5fSFBQX0lOQ0xVREVECisjZW5kaWYgLy8gX1dU
Rl9MSUJDUFBfU1BBTgo=
</data>
<flag name="commit-queue"
          id="453707"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431825</attachid>
            <date>2021-06-20 14:59:24 -0700</date>
            <delta_ts>2021-06-20 15:49:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227197-20210620145924.patch</filename>
            <type>text/plain</type>
            <size>46806</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFNwYW4gaW1wbGVtZW50YXRpb24gd2l0aCBv
bmUgZnJvbSBsaWJjKyssIHdoaWNoIGlzIG1vcmUgc3BlYyBjb21wbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwYW4uaDoKKwogMjAy
MS0wNi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQg
U3BhbiBpbiBTSEExLmgKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjkyLDYgKzY5Miw4IEBACiAJCUFEODlCNkI5
MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREYyQ0U2NDFFMzlGMTA2MDA2
ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUZvb3RwcmludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREYy
Q0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNGRUI1RDI2N0ZDRDM0MDA1NDAwNkEgLyog
U3BhbkNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYW5DRi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNGRUI1RTI2N0ZDRDQ2MDA1NDAwNkEgLyogU3Bh
bkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYW5Db2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0EzMEM3RjI2NkQzMDM0MDAwRDIzMEMgLyog
U3Bhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQkNGQzNFMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQkNGQzNGMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQwLDYgKzg0Miw3IEBACiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzky
MjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAv
KiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hl
ZHVsZVBhaXJDRi5jcHAgKi8sCisJCQkJQkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5D
Ri5oICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICov
LAogCQkJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwpA
QCAtMTU4MSw2ICsxNTg0LDcgQEAKIAkJCQkxQ0E4NUNBODI0MUIwQjI2MDA3MUMyRjUgLyogUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwICovLAogCQkJCTFDQTg1Q0E3MjQxQjBCMTEw
MDcxQzJGNSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5oICovLAogCQkJCUEzMEQ0
MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAorCQkJCUJDM0ZFQjVFMjY3
RkNENDYwMDU0MDA2QSAvKiBTcGFuQ29jb2EuaCAqLywKIAkJCQlFQjYxRURDNjI0MDlDQ0MwMDAx
RUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLywKIAkJCQk1Q0MwRUU4NjIxNjJCQzIy
MDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8sCiAJCQkJOTMyNDE2NTcyNDNCQzJFNTAwMzJGQUFF
IC8qIFZlY3RvckNvY29hLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUZUVy5jbWFrZQkocmV2
aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIGlmIChV
U0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgICAgIGNmL0NG
VVJMRXh0cmFzLmgKKyAgICAgICAgY2YvU3BhbkNGLmgKICAgICAgICAgY2YvVHlwZUNhc3RzQ0Yu
aAogCiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ29uY2F0ZW5hdGVDRi5oCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgbGlzdChBUFBF
TkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2Vha09iakNQdHIuaAogCiAgICAgY2YvQ0ZVUkxF
eHRyYXMuaAorICAgIGNmL1NwYW5DRi5oCiAgICAgY2YvVHlwZUNhc3RzQ0YuaAogCiAgICAgY29j
b2EvQ3Jhc2hSZXBvcnRlci5oCkBAIC0xOCw2ICsxOSw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJM
SUNfSEVBREVSUwogICAgIGNvY29hL05TVVJMRXh0cmFzLmgKICAgICBjb2NvYS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NDb2NvYS5oCiAgICAgY29jb2EvU29mdExpbmtpbmcuaAorICAgIGNvY29h
L1NwYW5Db2NvYS5oCiAgICAgY29jb2EvVmVjdG9yQ29jb2EuaAogCiAgICAgZGFyd2luL1dlYWtM
aW5raW5nLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNzkwNTQp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiBpZiAoVVNFX0NGKQogICAg
IGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5o
CisgICAgICAgIGNmL1NwYW5DRi5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAgICAg
ICB0ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRlQ0YuaApJbmRleDogU291cmNlL1dURi93dGYvU3Bh
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAkocmV2aXNpb24gMjc5MDU0
KQorKysgU291cmNlL1dURi93dGYvU3Bhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYyMCArMSw0
NzAgQEAKLS8vICAgICAgICAgICAgICBDb3B5cmlnaHQgVHJpc3RhbiBCcmluZGxlIDIwMTguCi0v
LyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAx
LjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIC4uL0xJQ0VOU0VfMV8wLUJvb3N0LnR4
dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwczovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8x
XzAudHh0KQotCi0vLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIEMrKzIwJ3Mgc3RkOjpz
cGFuIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIw
MTkvbjQ4MjAucGRmCi0KLS8vIFRoaXMgaGFzIGJlZW4gbW9kaWZpZWQgZnJvbSB0aGUgb3JpZ2lu
YWwgdmVyc2lvbiB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKLS8vICAgUmVuYW1lZCB0
Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfYnl0ZXMgdG8gV1RG
Ojphc0J5dGVzLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfd3JpdGFibGVfYnl0ZXMgdG8gV1RGOjph
c1dyaXRhYmxlQnl0ZXMuCi0KLSNpZm5kZWYgVENCX1NQQU5fSFBQX0lOQ0xVREVECi0jZGVmaW5l
IFRDQl9TUEFOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y3N0
ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotCi0jaWZu
ZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKLS8vIEF0dGVtcHQgdG8gZGlzY292ZXIgd2hldGhl
ciB3ZSdyZSBiZWluZyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0Ci0jaWYgIShkZWZp
bmVkKF9fY3BwX2V4Y2VwdGlvbnMpIHx8IGRlZmluZWQoX19FWENFUFRJT05TKSB8fCBkZWZpbmVk
KF9DUFBVTldJTkQpKQotI2RlZmluZSBUQ0JfU1BBTl9OT19FWENFUFRJT05TCi0jZW5kaWYKLSNl
bmRpZgorLy8gLSotIEMrKyAtKi0KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IHNwYW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBQYXJ0
IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGgg
TExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hl
LTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisj
aWZuZGVmIF9XVEZfTElCQ1BQX1NQQU4KKyNkZWZpbmUgX1dURl9MSUJDUFBfU1BBTgorCisvLyBJ
bXBvcnRzIGEgY29weSBvZiA8c3Bhbj4gZnJvbSBlODkyNzA1ZDc0YzczNjZhMTQwNGEzYjM0NzEw
MDFlZGFhNzY1OWY4IG9mIHRoZQorLy8gbGliYysrIHByb2plY3QgKGh0dHBzOi8vZ2l0aHViLmNv
bS9sbHZtL2xsdm0tcHJvamVjdC5naXQpIGFuZCBtb2RpZmllcyBpdCB0bworLy8gd29yayBvbiB0
b3Agb2YgYW55IHN0YW5kYXJkIGxpYnJhcnkgaW1wbGVtZW50YXRpb24uCisvLworLy8gLSBSZW5h
bWVzIG1hY3JvcyB3aXRoIF9MSUJDUFBfIHByZWZpeCB0byB1c2UgdGhlIHByZWZpeCBfV1RGX0xJ
QkNQUF8KKy8vIC0gUmVuYW1lcyBzdGQ6OnNwYW4gdG8gV1RGOjpTcGFuCisvLyAtIFJlbmFtZXMg
c3RkOjphc19ieXRlcy9zdGQ6OmFzX3dyaXRhYmxlX2J5dGVzIHRvIFdURjo6YXNCeXRlcy9XVEY6
OmFzV3JpdGFibGVCeXRlcy4KKy8vIC0gU3RvcCAjaW5jbHVkaW5nIGludGVybmFsIGxpYmMrKyBo
ZWFkZXJzLgorLy8gLSBSZW1vdmUgY2hlY2sgZm9yID4gYysrMTcuCisvLyAtIFJlbW92ZSBwdXNo
L3BvcCBhdmFpbGFiaWxpdHkgb2YgbWluL21heCBtYWNyb3MuCisKKyNpbmNsdWRlIDxhcnJheT4g
ICAgICAgIC8vIGZvciBhcnJheQorI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgLy8gZm9yIGJ5dGUK
KyNpbmNsdWRlIDxpdGVyYXRvcj4gICAgIC8vIGZvciBpdGVyYXRvcnMKKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4gIC8vIGZvciByZW1vdmVfY3YsIGV0YworCisvLyBBZGRzIHNvbWUgbWFjcm8gZGVm
aW5lcyB1c3VhbGx5IGRlZmluZWQgaW4gX19jb25maWcuCisKKyNkZWZpbmUgX1dURl9MSUJDUFBf
QUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMKKyNkZWZpbmUgX1dURl9MSUJDUFBfQkVHSU5fTkFN
RVNQQUNFIG5hbWVzcGFjZSBXVEYgeworI2RlZmluZSBfV1RGX0xJQkNQUF9ERUJVR19MRVZFTCAw
CisjZGVmaW5lIF9XVEZfTElCQ1BQX0VORF9OQU1FU1BBQ0UgIH0KKyNkZWZpbmUgX1dURl9MSUJD
UFBfSEFTX05PX1JBTkdFUworI2RlZmluZSBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
I2RlZmluZSBfV1RGX0xJQkNQUF9URU1QTEFURV9WSVMKKyNkZWZpbmUgX1dURl9WU1REIHN0ZAor
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNkZWZpbmUgX1dURl9MSUJDUFBfQVNTRVJU
IEFTU0VSVAorCitfV1RGX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0UKKworaW5saW5lIGNvbnN0ZXhw
ciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpz
aXplX3Q+OjptYXgoKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRl
bnQgPSBkeW5hbWljX2V4dGVudD4gY2xhc3MgU3BhbjsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
Pgorc3RydWN0IF9faXNfc3Bhbl9pbXBsIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwor
dGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KK3N0cnVjdCBfX2lzX3Nw
YW5faW1wbDxTcGFuPF9UcCwgX0V4dGVudD4+IDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHt9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfc3BhbiA6IHB1YmxpYyBfX2lzX3Nw
YW5faW1wbDxzdGQ6OnJlbW92ZV9jdl90PF9UcD4+IHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
Pgorc3RydWN0IF9faXNfc3RkX2FycmF5X2ltcGwgOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHt9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+CitzdHJ1Y3QgX19pc19z
dGRfYXJyYXlfaW1wbDxzdGQ6OmFycmF5PF9UcCwgX1N6Pj4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5
cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zdGRfYXJyYXkgOiBw
dWJsaWMgX19pc19zdGRfYXJyYXlfaW1wbDxzdGQ6OnJlbW92ZV9jdl90PF9UcD4+IHt9OworCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxlbWVudFR5cGUsIGNsYXNzID0gdm9pZD4KK3N0
cnVjdCBfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXIgOiBwdWJsaWMgc3RkOjpmYWxzZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxlbWVudFR5cGU+CitzdHJ1
Y3QgX19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9UcCwgX0VsZW1lbnRUeXBlLAorICAg
ICAgICBzdGQ6OnZvaWRfdDwKKyAgICAgICAgLy8gaXMgbm90IGEgc3BlY2lhbGl6YXRpb24gb2Yg
U3BhbgorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IV9faXNfc3BhbjxfVHA+
Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gaXMgbm90IGEgc3BlY2lhbGl6
YXRpb24gb2YgYXJyYXkKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFfX2lz
X3N0ZF9hcnJheTxfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gc2Q6
OmlzX2FycmF5X3Y8Q29udGFpbmVyPiBpcyBmYWxzZSwKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2FycmF5X3Y8X1RwPiwgbnVsbHB0cl90Pjo6dHlwZSwKKyAg
ICAgICAgLy8gc3RkOjpkYXRhKGNvbnQpIGFuZCBzdGQ6OnNpemUoY29udCkgYXJlIHdlbGwgZm9y
bWVkCisgICAgICAgICAgICBkZWNsdHlwZShzdGQ6OmRhdGEoc3RkOjpkZWNsdmFsPF9UcD4oKSkp
LAorICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpzaXplKHN0ZDo6ZGVjbHZhbDxfVHA+KCkpKSwK
KyAgICAgICAgLy8gcmVtb3ZlX3BvaW50ZXJfdDxkZWNsdHlwZShkYXRhKGNvbnQpKT4oKilbXSBp
cyBjb252ZXJ0aWJsZSB0byBFbGVtZW50VHlwZSgqKVtdCisgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8c3Rk
OjpyZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6OmRlY2x2YWw8X1RwICY+
KCkpKT4oKilbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9FbGVtZW50VHlw
ZSgqKVtdPiwKKyAgICAgICAgICAgICAgICBudWxscHRyX3Q+Ojp0eXBlCisgICAgICAgID4+Cisg
ICAgOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307CiAKLSNpZm5kZWYgVENCX1NQQU5fTk9fRVhD
RVBUSU9OUwotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jZW5kaWYK
IAotLy8gVmFyaW91cyBmZWF0dXJlIHRlc3QgbWFjcm9zCi0KLSNpZm5kZWYgVENCX1NQQU5fTkFN
RVNQQUNFX05BTUUKLSNkZWZpbmUgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUgV1RGCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgorY2xhc3MgX1dURl9MSUJDUFBf
VEVNUExBVEVfVklTIFNwYW4geworcHVibGljOgorLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAg
ICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAgIHVzaW5nIHZhbHVlX3R5
cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47CisgICAgdXNpbmcgc2l6ZV90
eXBlICAgICAgICAgICAgICA9IHN0ZDo6c2l6ZV90OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlw
ZSAgICAgICAgPSBzdGQ6OnB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAg
ICAgID0gX1RwICo7CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9U
cCAqOworICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2lu
ZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQ
X0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRF
Ul9JVEVSQVRPUlMpCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7
CisjZWxzZQorICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxw
b2ludGVyPjsKICNlbmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RG
X1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogCi0jaWYgX19jcGx1c3BsdXMgPj0g
MjAxNzAzTCB8fCAoZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNWQ19MQU5HID49IDIwMTcwM0wp
Ci0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTcKLSNlbmRpZgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90eXBlIGV4dGVudCA9IF9FeHRlbnQ7CiAKLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDE0
MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0gMjAxNDAyTCkKLSNk
ZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAotI2VuZGlmCisvLyBbc3Bhbi5jb25zXSwgc3BhbiBj
b25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisgICAgdGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IF9TeiA9IF9FeHRlbnQsIHN0ZDo6ZW5hYmxlX2lmX3Q8X1N6ID09IDAs
IG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVsbHB0cn0ge30KIAotbmFtZXNw
YWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIHsKKyAgICBjb25zdGV4cHIgU3BhbiAgICAgICAg
ICAgKGNvbnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIFNwYW4m
IG9wZXJhdG9yPShjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0vLyBFc3RhYmxp
c2ggZGVmYXVsdCBjb250cmFjdCBjaGVja2luZyBiZWhhdmlvcgotI2lmICFkZWZpbmVkKFRDQl9T
UEFOX1RIUk9XX09OX0NPTlRSQUNUX1ZJT0xBVElPTikgJiYgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAhZGVmaW5lZChUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFU
SU9OKSAmJiAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIWRlZmluZWQoVENCX1NQQU5fTk9f
Q09OVFJBQ1RfQ0hFQ0tJTkcpCi0jaWYgZGVmaW5lZChOREVCVUcpIHx8ICFkZWZpbmVkKFRDQl9T
UEFOX0hBVkVfQ1BQMTQpCi0jZGVmaW5lIFRDQl9TUEFOX05PX0NPTlRSQUNUX0NIRUNLSU5HCi0j
ZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OCi0j
ZW5kaWYKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciBleHBsaWNpdCBTcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0
YXtfX3B0cn0KKyAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4
dGVudCA9PSBfX2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKHB0
ciwgbGVuKSIpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IGV4cGxpY2l0IFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9Cisg
ICAgICAgIHsgKHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gc3Rk
OjpkaXN0YW5jZShfX2YsIF9fbCksICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3Rv
ciAocHRyLCBwdHIpIik7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09OVFJB
Q1RfVklPTEFUSU9OKQotc3RydWN0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvciA6IHN0ZDo6bG9n
aWNfZXJyb3IgewotICAgIGV4cGxpY2l0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvcihjb25zdCBj
aGFyKiBtc2cpIDogc3RkOjpsb2dpY19lcnJvcihtc2cpCi0gICAge30KLX07CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmX19h
cnIpW19FeHRlbnRdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0ge30KIAotaW5s
aW5lIHZvaWQgY29udHJhY3RfdmlvbGF0aW9uKGNvbnN0IGNoYXIqIG1zZykKLXsKLSAgICB0aHJv
dyBjb250cmFjdF92aW9sYXRpb25fZXJyb3IobXNnKTsKLX0KLQotI2VsaWYgZGVmaW5lZChUQ0Jf
U1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQotW1tub3JldHVybl1dIGlubGlu
ZSB2b2lkIGNvbnRyYWN0X3Zpb2xhdGlvbihjb25zdCBjaGFyKiAvKnVudXNlZCovKQotewotICAg
IHN0ZDo6dGVybWluYXRlKCk7Ci19Ci0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVy
RWxlbWVudFR5cGUsCisgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252
ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51
bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisg
ICAgY29uc3RleHByIFNwYW4oc3RkOjphcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX0V4dGVudD4m
IF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9IHt9CiAKLSNpZiAhZGVmaW5l
ZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORykKLSNkZWZpbmUgVENCX1NQQU5fU1RSSU5H
SUZZKGNvbmQpICNjb25kCi0jZGVmaW5lIFRDQl9TUEFOX0VYUEVDVChjb25kKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNvbmQgPyAodm9p
ZCkgMCA6IGNvbnRyYWN0X3Zpb2xhdGlvbigiRXhwZWN0ZWQgIiBUQ0JfU1BBTl9TVFJJTkdJRlko
Y29uZCkpCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9FWFBFQ1QoY29uZCkKLSNlbmRpZgorICAg
IHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKKyAgICAgICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUo
KilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBzdGQ6
OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIpIG5vZXhjZXB0IDogX19k
YXRhe19fYXJyLmRhdGEoKX0ge30KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykg
fHwgZGVmaW5lZChfX2NwcF9pbmxpbmVfdmFyaWFibGVzKQotI2RlZmluZSBUQ0JfU1BBTl9JTkxJ
TkVfVkFSIGlubGluZQotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fSU5MSU5FX1ZBUgotI2VuZGlm
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oICAgICAgX0NvbnRh
aW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0
aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxs
cHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0geworICAgICAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gX1dURl9WU1REOjpzaXplKF9fYyksICJz
aXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3RvciAocmFuZ2UpIik7CisgICAgICAgIH0K
IAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkgfHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoZGVmaW5lZChfX2NwcF9jb25zdGV4cHIp
ICYmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQ
MTRfQ09OU1RFWFBSCi0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBjb25zdGV4cHIgZXhwbGlj
aXQgU3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lcjxjb25zdCBfQ29udGFpbmVyLCBfVHA+
Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19XVEZfVlNU
RDo6ZGF0YShfX2MpfSB7CisgICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9
PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVj
dG9yIChyYW5nZSkiKTsKKyAgICAgICAgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQ
UDE0X0NPTlNURVhQUikKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTQgY29uc3RleHByCi0j
ZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNAotI2VuZGlmCisgICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUs
IF9FeHRlbnQ+JiBfX290aGVyLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090
aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19fb3Ro
ZXIuZGF0YSgpfSB7fQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE0X0NPTlNURVhQ
UikgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICghZGVmaW5lZChf
TVNDX1ZFUikgfHwgX01TQ19WRVIgPiAxOTAwKQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFJf
QVNTSUdOIGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSX0FTU0lH
TgotI2VuZGlmCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBT
cGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUsIGR5bmFtaWNfZXh0ZW50PiYgX19vdGhl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCop
W10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHJfdD4gPSBudWxscHRyKSBub2V4Y2VwdAorICAgICAgICA6IF9fZGF0YXtfX290aGVyLmRhdGEo
KX0geyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfX290aGVyLnNpemUoKSwgInNpemUg
bWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVjdG9yIChvdGhlciBTcGFuKSIpOyB9CiAKLSNpZiBk
ZWZpbmVkKFRDQl9TUEFOX05PX0NPTlRSQUNUX0NIRUNLSU5HKQotI2RlZmluZSBUQ0JfU1BBTl9D
T05TVEVYUFIxMSBjb25zdGV4cHIKLSNlbHNlCi0jZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjEx
IFRDQl9TUEFOX0NPTlNURVhQUjE0Ci0jZW5kaWYKIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFW
RV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9kZWR1Y3Rpb25fZ3VpZGVzKQotI2RlZmluZSBUQ0Jf
U1BBTl9IQVZFX0RFRFVDVElPTl9HVUlERVMKLSNlbmRpZgorLy8gIH5TcGFuKCkgbm9leGNlcHQg
PSBkZWZhdWx0OwogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVk
KF9fY3BwX2xpYl9ieXRlKQotI2RlZmluZSBUQ0JfU1BBTl9IQVZFX1NURF9CWVRFCi0jZW5kaWYK
KyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0NvdW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGZp
cnN0KCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX0NvdW50
IDw9IF9FeHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIpOworICAg
ICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291bnR9Owor
ICAgIH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2Nw
cF9saWJfYXJyYXlfY29uc3RleHByKQotI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NPTlNURVhQUl9T
VERfQVJSQVlfRVRDCi0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0NvdW50Pgor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxl
bWVudF90eXBlLCBfQ291bnQ+IGxhc3QoKSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBT
cGFuOjpsYXN0KCkiKTsKKyAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+
e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKKyAgICB9CiAKLSNpZiBkZWZpbmVk
KFRDQl9TUEFOX0hBVkVfQ09OU1RFWFBSX1NURF9BUlJBWV9FVEMpCi0jZGVmaW5lIFRDQl9TUEFO
X0FSUkFZX0NPTlNURVhQUiBjb25zdGV4cHIKLSNlbHNlCi0jZGVmaW5lIFRDQl9TUEFOX0FSUkFZ
X0NPTlNURVhQUgotI2VuZGlmCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBmaXJzdChzaXpl
X3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQ
X0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpm
aXJzdChjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCksIF9fY291bnR9OworICAgIH0K
IAotI2lmZGVmIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKLXVzaW5nIGJ5dGUgPSBzdGQ6OmJ5dGU7
Ci0jZWxzZQotdXNpbmcgYnl0ZSA9IHVuc2lnbmVkIGNoYXI7Ci0jZW5kaWYKKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwg
ZHluYW1pY19leHRlbnQ+IGxhc3Qoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0Cisg
ICAgeworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXplKCksICJDb3Vu
dCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6bGFzdChjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtk
YXRhKCkgKyBzaXplKCkgLSBfX2NvdW50LCBfX2NvdW50fTsKKyAgICB9CiAKLSNpZiBkZWZpbmVk
KFRDQl9TUEFOX0hBVkVfQ1BQMTcpCi0jZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRCBbW25vZGlz
Y2FyZF1dCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9OT0RJU0NBUkQKLSNlbmRpZgorICAgIHRl
bXBsYXRlIDxzdGQ6OnNpemVfdCBfT2Zmc2V0LCBzdGQ6OnNpemVfdCBfQ291bnQgPSBkeW5hbWlj
X2V4dGVudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhw
ciBhdXRvIHN1YnNwYW4oKSBjb25zdCBub2V4Y2VwdAorICAgICAgICAtPiBTcGFuPGVsZW1lbnRf
dHlwZSwgX0NvdW50ICE9IGR5bmFtaWNfZXh0ZW50ID8gX0NvdW50IDogX0V4dGVudCAtIF9PZmZz
ZXQ+CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KF9PZmZzZXQgPD0gX0V4dGVudCwgIk9m
ZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbigpIik7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IF9Db3VudCA8PSBfRXh0ZW50IC0gX09m
ZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsK
IAotVENCX1NQQU5fSU5MSU5FX1ZBUiBjb25zdGV4cHIgc3RkOjpzaXplX3QgZHluYW1pY19leHRl
bnQgPSBTSVpFX01BWDsKKyAgICAgICAgdXNpbmcgX1JldHVyblR5cGUgPSBTcGFuPGVsZW1lbnRf
dHlwZSwgX0NvdW50ICE9IGR5bmFtaWNfZXh0ZW50ID8gX0NvdW50IDogX0V4dGVudCAtIF9PZmZz
ZXQ+OworICAgICAgICByZXR1cm4gX1JldHVyblR5cGV7ZGF0YSgpICsgX09mZnNldCwgX0NvdW50
ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6ZSgpIC0gX09mZnNldCA6IF9Db3VudH07CisgICAgfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVudCA9IGR5
bmFtaWNfZXh0ZW50PgotY2xhc3MgU3BhbjsKIAotbmFtZXNwYWNlIGRldGFpbCB7CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5
cGUsIGR5bmFtaWNfZXh0ZW50PgorICAgICAgIHN1YnNwYW4oc2l6ZV90eXBlIF9fb2Zmc2V0LCBz
aXplX3R5cGUgX19jb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdCBub2V4Y2VwdAorICAgIHsK
KyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fb2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBv
dXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBf
V1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCAgPD0gc2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1p
Y19leHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNv
dW50KSIpOworICAgICAgICBpZiAoX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCkKKyAgICAgICAg
ICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIHNpemUoKSAtIF9fb2Zmc2V0fTsKKyAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZz
ZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIp
OworICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBfX2NvdW50fTsKKyAgICB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OnNpemVfdCBTPgotc3RydWN0IHNwYW5fc3RvcmFn
ZSB7Ci0gICAgY29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUo
KSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50OyB9CisgICAgX1dURl9MSUJD
UFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCAqIHNpemVvZihlbGVtZW50X3R5cGUpOyB9Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGJvb2wgZW1wdHkoKSAg
ICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCA9PSAwOyB9CiAKLSAgICBj
b25zdGV4cHIgc3Bhbl9zdG9yYWdlKEUqIHBfcHRyLCBzdGQ6OnNpemVfdCAvKnVudXNlZCovKSBu
b2V4Y2VwdAotICAgICAgIDogcHRyKHBfcHRyKQotICAgIHt9CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBf
X2lkeCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChf
X2lkeCA8IHNpemUoKSwgIlNwYW48VCxOPltdIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAg
ICAgcmV0dXJuIF9fZGF0YVtfX2lkeF07CisgICAgfQogCi0gICAgRSogcHRyID0gbnVsbHB0cjsK
LSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c2l6ZV90IHNpemUgPSBTOwotfTsKKyAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkgY29u
c3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwg
IlNwYW48VCwgTj46OmZyb250KCkgb24gZW1wdHkgU3BhbiIpOworICAgICAgICByZXR1cm4gX19k
YXRhWzBdOworICAgIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEU+Ci1zdHJ1Y3Qgc3Bhbl9zdG9y
YWdlPEUsIGR5bmFtaWNfZXh0ZW50PiB7Ci0gICAgY29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5v
ZXhjZXB0ID0gZGVmYXVsdDsKLQotICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIs
IHN0ZDo6c2l6ZV90IHBfc2l6ZSkgbm9leGNlcHQKLSAgICAgICAgOiBwdHIocF9wdHIpLCBzaXpl
KHBfc2l6ZSkKLSAgICB7fQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0
ZXhwciByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RG
X0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJTcGFuPFQsIE4+OjpiYWNrKCkgb24gZW1wdHkgU3Bh
biIpOworICAgICAgICByZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKKyAgICB9CiAKLSAgICBFKiBw
dHIgPSBudWxscHRyOwotICAgIHN0ZDo6c2l6ZV90IHNpemUgPSAwOwotfTsKKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kYXRhOyB9CiAKLS8vIFJl
aW1wbGVtZW50YXRpb24gb2YgQysrMTcgc3RkOjpzaXplKCkgYW5kIHN0ZDo6ZGF0YSgpCi0jaWYg
ZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIGRlZmluZWQoX19jcHBfbGliX25vbm1lbWJlcl9jb250
YWluZXJfYWNjZXNzKQotdXNpbmcgc3RkOjpkYXRhOwotdXNpbmcgc3RkOjpzaXplOwotI2Vsc2UK
LXRlbXBsYXRlIDxjbGFzcyBDPgotY29uc3RleHByIGF1dG8gc2l6ZShjb25zdCBDJiBjKSAtPiBk
ZWNsdHlwZShjLnNpemUoKSkKLXsKLSAgICByZXR1cm4gYy5zaXplKCk7Ci19Ci0KLXRlbXBsYXRl
IDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotY29uc3RleHByIHN0ZDo6c2l6ZV90IHNpemUoY29u
c3QgVCAoJilbTl0pIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIE47Ci19Ci0KLXRlbXBsYXRlIDxj
bGFzcyBDPgotY29uc3RleHByIGF1dG8gZGF0YShDJiBjKSAtPiBkZWNsdHlwZShjLmRhdGEoKSkK
LXsKLSAgICByZXR1cm4gYy5kYXRhKCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBDPgotY29uc3Rl
eHByIGF1dG8gZGF0YShjb25zdCBDJiBjKSAtPiBkZWNsdHlwZShjLmRhdGEoKSkKLXsKLSAgICBy
ZXR1cm4gYy5kYXRhKCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgot
Y29uc3RleHByIFQqIGRhdGEoVCAoJmFycmF5KVtOXSkgbm9leGNlcHQKLXsKLSAgICByZXR1cm4g
YXJyYXk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBFPgotY29uc3RleHByIGNvbnN0IEUqIGRhdGEo
c3RkOjppbml0aWFsaXplcl9saXN0PEU+IGlsKSBub2V4Y2VwdAotewotICAgIHJldHVybiBpbC5i
ZWdpbigpOwotfQotI2VuZGlmIC8vIFRDQl9TUEFOX0hBVkVfQ1BQMTcKKy8vIFtzcGFuLml0ZXJd
LCBTcGFuIGl0ZXJhdG9yIHN1cHBvcnQKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgICBlbmQoKSBjb25z
dCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkgKyBzaXplKCkpOyB9CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAg
ICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5k
KCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVy
c2VfaXRlcmF0b3IgICAgICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVy
c2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAx
NykgfHwgZGVmaW5lZChfX2NwcF9saWJfdm9pZF90KQotdXNpbmcgc3RkOjp2b2lkX3Q7Ci0jZWxz
ZQotdGVtcGxhdGUgPHR5cGVuYW1lLi4uPgotdXNpbmcgdm9pZF90ID0gdm9pZDsKLSNlbmRpZgor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIFNwYW48Y29uc3Qgc3RkOjpieXRlLCBf
RXh0ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk+IF9fYXNfYnl0ZXMoKSBjb25zdCBub2V4Y2Vw
dAorICAgIHsgcmV0dXJuIFNwYW48Y29uc3Qgc3RkOjpieXRlLCBfRXh0ZW50ICogc2l6ZW9mKGVs
ZW1lbnRfdHlwZSk+e3JlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RkOjpieXRlICo+KGRhdGEoKSks
IHNpemVfYnl0ZXMoKX07IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci11c2luZyB1bmN2cmVm
X3QgPQotICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZT4KLXN0cnVjdCBp
c19zcGFuIDogc3RkOjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3Rk
OjpzaXplX3QgUz4KLXN0cnVjdCBpc19zcGFuPFNwYW48VCwgUz4+IDogc3RkOjp0cnVlX3R5cGUg
e307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZT4KLXN0cnVjdCBpc19zdGRfYXJyYXkgOiBzdGQ6OmZh
bHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotc3Ry
dWN0IGlzX3N0ZF9hcnJheTxzdGQ6OmFycmF5PFQsIE4+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4KLXN0cnVjdCBoYXNfc2l6ZV9h
bmRfZGF0YSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgaGFzX3NpemVfYW5kX2RhdGE8VCwgdm9pZF90PGRlY2x0eXBlKGRldGFpbDo6c2l6ZShz
dGQ6OmRlY2x2YWw8VD4oKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT4+Ci0gICAgOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIFUgPSB1bmN2cmVm
X3Q8Qz4+Ci1zdHJ1Y3QgaXNfY29udGFpbmVyIHsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
dmFsdWUgPQotICAgICAgICAhaXNfc3BhbjxVPjo6dmFsdWUgJiYgIWlzX3N0ZF9hcnJheTxVPjo6
dmFsdWUgJiYKLSAgICAgICAgIXN0ZDo6aXNfYXJyYXk8VT46OnZhbHVlICYmIGhhc19zaXplX2Fu
ZF9kYXRhPEM+Ojp2YWx1ZTsKLX07CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkg
U3BhbjxzdGQ6OmJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT4gX19hc193cml0
YWJsZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4gU3BhbjxzdGQ6OmJ5dGUs
IF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT57cmVpbnRlcnByZXRfY2FzdDxzdGQ6OmJ5
dGUgKj4oZGF0YSgpKSwgc2l6ZV9ieXRlcygpfTsgfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXVzaW5nIHJlbW92ZV9wb2ludGVyX3QgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+
Ojp0eXBlOworcHJpdmF0ZToKKyAgICBwb2ludGVyICAgIF9fZGF0YTsKIAotdGVtcGxhdGUgPHR5
cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IGlzX2NvbnRhaW5lcl9l
bGVtZW50X3R5cGVfY29tcGF0aWJsZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKK307CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPgotc3RydWN0IGlzX2NvbnRhaW5lcl9lbGVtZW50
X3R5cGVfY29tcGF0aWJsZTwKLSAgICBULCBFLAotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAotICAgICAgICAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PGRlY2x0eXBl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+
KCkpKT46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgdm9pZD46OnZhbHVlPjo6dHlwZT4K
LSAgICA6IHN0ZDo6aXNfY29udmVydGlibGU8Ci0gICAgICAgICAgcmVtb3ZlX3BvaW50ZXJfdDxk
ZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT4gKCopW10sCi0gICAgICAg
ICAgRSAoKilbXT4ge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUgPSBzaXplX3Q+
Ci1zdHJ1Y3QgaXNfY29tcGxldGUgOiBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotc3RydWN0IGlzX2NvbXBsZXRlPFQsIGRlY2x0eXBlKHNpemVvZihUKSk+IDog
c3RkOjp0cnVlX3R5cGUge307Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVudD4KLWNsYXNzIFNwYW4gewot
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19vYmplY3Q8RWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVtZW50VHlwZSBtdXN0IGJlIGFuIG9iamVjdCB0
eXBlIChub3QgYSAiCi0gICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIHR5cGUgb3Igdm9pZCki
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KGRldGFpbDo6aXNfY29tcGxldGU8RWxlbWVudFR5cGU+Ojp2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVtZW50VHlwZSBtdXN0IGJlIGEg
Y29tcGxldGUgdHlwZSAobm90IGEgZm9yd2FyZCAiCi0gICAgICAgICAgICAgICAgICAiZGVjbGFy
YXRpb24pIik7Ci0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19hYnN0cmFjdDxFbGVtZW50VHlw
ZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1lbnRUeXBlIGNhbm5v
dCBiZSBhbiBhYnN0cmFjdCBjbGFzcyB0eXBlIik7CiAKLSAgICB1c2luZyBzdG9yYWdlX3R5cGUg
PSBkZXRhaWw6OnNwYW5fc3RvcmFnZTxFbGVtZW50VHlwZSwgRXh0ZW50PjsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBfVHA+CitjbGFzcyBfV1RGX0xJQkNQUF9URU1QTEFURV9WSVMgU3BhbjxfVHAsIGR5
bmFtaWNfZXh0ZW50PiB7Citwcml2YXRlOgogCiBwdWJsaWM6Ci0gICAgLy8gY29uc3RhbnRzIGFu
ZCB0eXBlcwotICAgIHVzaW5nIGVsZW1lbnRfdHlwZSA9IEVsZW1lbnRUeXBlOwotICAgIHVzaW5n
IHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxFbGVtZW50VHlwZT46OnR5cGU7
Ci0gICAgdXNpbmcgc2l6ZV90eXBlID0gc3RkOjpzaXplX3Q7Ci0gICAgdXNpbmcgZGlmZmVyZW5j
ZV90eXBlID0gc3RkOjpwdHJkaWZmX3Q7Ci0gICAgdXNpbmcgcG9pbnRlciA9IGVsZW1lbnRfdHlw
ZSo7Ci0gICAgdXNpbmcgY29uc3RfcG9pbnRlciA9IGNvbnN0IGVsZW1lbnRfdHlwZSo7Ci0gICAg
dXNpbmcgcmVmZXJlbmNlID0gZWxlbWVudF90eXBlJjsKLSAgICB1c2luZyBjb25zdF9yZWZlcmVu
Y2UgPSBjb25zdCBlbGVtZW50X3R5cGUmOwotICAgIHVzaW5nIGl0ZXJhdG9yID0gcG9pbnRlcjsK
LSAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJh
dG9yPjsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIGV4dGVudCA9IEV4dGVudDsK
LQotICAgIC8vIFtzcGFuLmNvbnNdLCBTcGFuIGNvbnN0cnVjdG9ycywgY29weSwgYXNzaWdubWVu
dCwgYW5kIGRlc3RydWN0b3IKLSAgICB0ZW1wbGF0ZSA8Ci0gICAgICAgIHN0ZDo6c2l6ZV90IEUg
PSBFeHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPChFID09IGR5bmFtaWNf
ZXh0ZW50IHx8IEUgPD0gMCksIGludD46OnR5cGUgPSAwPgotICAgIGNvbnN0ZXhwciBTcGFuKCkg
bm9leGNlcHQKLSAgICB7fQorLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAgICB1c2luZyBlbGVt
ZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAg
ICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47CisgICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAg
ICAgICA9IHN0ZDo6c2l6ZV90OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgICAgICAgPSBz
dGQ6OnB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgICAgID0gX1RwICo7
CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9UcCAqOworICAgIHVz
aW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2luZyBjb25zdF9yZWZl
cmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVM
ID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMp
CisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7CisjZWxzZQorICAg
IHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsKKyNl
bmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJldmVy
c2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bhbihw
b2ludGVyIHB0ciwgc2l6ZV90eXBlIGNvdW50KQotICAgICAgICA6IHN0b3JhZ2VfKHB0ciwgY291
bnQpCi0gICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoZXh0ZW50ID09IGR5bmFtaWNfZXh0
ZW50IHx8IGNvdW50ID09IGV4dGVudCk7Ci0gICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90eXBlIGV4dGVudCA9IGR5bmFtaWNfZXh0ZW50OwogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBS
MTEgU3Bhbihwb2ludGVyIGZpcnN0X2VsZW0sIHBvaW50ZXIgbGFzdF9lbGVtKQotICAgICAgICA6
IHN0b3JhZ2VfKGZpcnN0X2VsZW0sIGxhc3RfZWxlbSAtIGZpcnN0X2VsZW0pCi0gICAgewotICAg
ICAgICBUQ0JfU1BBTl9FWFBFQ1QoZXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50IHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0X2VsZW0gLSBmaXJzdF9lbGVtID09Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KGV4dGVudCkpOwotICAg
IH0KKy8vIFtzcGFuLmNvbnNdLCBTcGFuIGNvbnN0cnVjdG9ycywgY29weSwgYXNzaWdubWVudCwg
YW5kIGRlc3RydWN0b3IKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgU3BhbigpIG5vZXhjZXB0IDogX19kYXRhe251bGxwdHJ9LCBfX3NpemV7MH0ge30KIAotICAg
IHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAotICAgICAg
ICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKLSAgICAgICAgICAgICAgICAgIChFID09
IGR5bmFtaWNfZXh0ZW50IHx8IE4gPT0gRSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBkZXRh
aWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudF90eXBlICgmKVtOXSwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwPgotICAgIGNvbnN0ZXhwciBTcGFuKGVsZW1l
bnRfdHlwZSAoJmFycilbTl0pIG5vZXhjZXB0IDogc3RvcmFnZV8oYXJyLCBOKQotICAgIHt9Cisg
ICAgY29uc3RleHByIFNwYW4gICAgICAgICAgIChjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZh
dWx0OworICAgIGNvbnN0ZXhwciBTcGFuJiBvcGVyYXRvcj0oY29uc3QgU3BhbiYpIG5vZXhjZXB0
ID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOLCBzdGQ6OnNpemVfdCBF
ID0gRXh0ZW50LAotICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKLSAgICAg
ICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8IE4gPT0gRSkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJs
ZTwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYs
IEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMD4K
LSAgICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3BhbihzdGQ6OmFycmF5PHZhbHVlX3R5cGUs
IE4+JiBhcnIpIG5vZXhjZXB0Ci0gICAgICAgIDogc3RvcmFnZV8oYXJyLmRhdGEoKSwgTikKLSAg
ICB7fQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBTcGFuKHBv
aW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0YXtfX3B0cn0sIF9fc2l6ZXtf
X2NvdW50fSB7fQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBT
cGFuKHBvaW50ZXIgX19mLCBwb2ludGVyIF9fbCkgOiBfX2RhdGF7X19mfSwgX19zaXple3N0YXRp
Y19jYXN0PHN0ZDo6c2l6ZV90PihzdGQ6OmRpc3RhbmNlKF9fZiwgX19sKSl9IHt9CiAKLSAgICB0
ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKLSAgICAgICAg
ICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICAgICAgICAgICAoRSA9PSBk
eW5hbWljX2V4dGVudCB8fCBOID09IEUpICYmCi0gICAgICAgICAgICAgICAgICAgICAgZGV0YWls
Ojppc19jb250YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mLCBFbGVtZW50VHlwZT46
OnZhbHVlLAotICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgVENCX1NQQU5f
QVJSQVlfQ09OU1RFWFBSIFNwYW4oY29uc3Qgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYgYXJy
KSBub2V4Y2VwdAotICAgICAgICA6IHN0b3JhZ2VfKGFyci5kYXRhKCksIE4pCi0gICAge30KKyAg
ICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX1N6PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgY29uc3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmX19hcnIpW19Tel0pICAg
ICAgICAgIG5vZXhjZXB0IDogX19kYXRhe19fYXJyfSwgX19zaXple19Ten0ge30KIAotICAgIHRl
bXBsYXRlIDwKLSAgICAgICAgdHlwZW5hbWUgQ29udGFpbmVyLCBzdGQ6OnNpemVfdCBFID0gRXh0
ZW50LAotICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKLSAgICAgICAgICAgIEUgPT0g
ZHluYW1pY19leHRlbnQgJiYgZGV0YWlsOjppc19jb250YWluZXI8Q29udGFpbmVyPjo6dmFsdWUg
JiYKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29t
cGF0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyJiwgRWxlbWVudFR5cGU+Ojp2
YWx1ZSwKLSAgICAgICAgICAgIGludD46OnR5cGUgPSAwPgotICAgIGNvbnN0ZXhwciBTcGFuKENv
bnRhaW5lciYgY29udCkKLSAgICAgICAgOiBzdG9yYWdlXyhkZXRhaWw6OmRhdGEoY29udCksIGRl
dGFpbDo6c2l6ZShjb250KSkKLSAgICB7fQorICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVt
ZW50VHlwZSwgc3RkOjpzaXplX3QgX1N6LAorICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5
cGUgKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuKHN0ZDo6YXJyYXk8X090aGVyRWxlbWVudFR5
cGUsIF9Tej4mIF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7
X1N6fSB7fQogCi0gICAgdGVtcGxhdGUgPAotICAgICAgICB0eXBlbmFtZSBDb250YWluZXIsIHN0
ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAot
ICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxD
b250YWluZXI+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVy
X2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICBjb25zdCBDb250
YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+
Ci0gICAgY29uc3RleHByIFNwYW4oY29uc3QgQ29udGFpbmVyJiBjb250KQotICAgICAgICA6IHN0
b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNvbnQpKQotICAgIHt9Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBfU3osCisg
ICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PGNvbnN0
IF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4g
PSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3Rl
eHByIFNwYW4oY29uc3Qgc3RkOjphcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX1N6PiYgX19hcnIp
IG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0sIF9fc2l6ZXtfU3p9IHt9CiAKLSAgICBj
b25zdGV4cHIgU3Bhbihjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBkZWZhdWx0OworICAg
IHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKCAgICAgIF9Db250YWluZXImIF9fYywKKyAg
ICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVy
PF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAg
OiBfX2RhdGF7X1dURl9WU1REOjpkYXRhKF9fYyl9LCBfX3NpemV7KHNpemVfdHlwZSkgX1dURl9W
U1REOjpzaXplKF9fYyl9IHt9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXJFbGVtZW50
VHlwZSwgc3RkOjpzaXplX3QgT3RoZXJFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgICAgKEV4dGVudCA9PSBPdGhlckV4dGVudCB8
fCBFeHRlbnQgPT0gZHluYW1pY19leHRlbnQpICYmCi0gICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojppc19jb252ZXJ0aWJsZTxPdGhlckVsZW1lbnRUeXBlICgqKVtdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudFR5cGUgKCopW10+Ojp2YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwPgotICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0
IFNwYW48T3RoZXJFbGVtZW50VHlwZSwgT3RoZXJFeHRlbnQ+JiBvdGhlcikgbm9leGNlcHQKLSAg
ICAgICAgOiBzdG9yYWdlXyhvdGhlci5kYXRhKCksIG90aGVyLnNpemUoKSkKLSAgICB7fQorICAg
IHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IF9Db250YWluZXImIF9fYywKKyAg
ICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVy
PGNvbnN0IF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAg
ICAgICAgOiBfX2RhdGF7X1dURl9WU1REOjpkYXRhKF9fYyl9LCBfX3NpemV7KHNpemVfdHlwZSkg
X1dURl9WU1REOjpzaXplKF9fYyl9IHt9CiAKLSAgICB+U3BhbigpIG5vZXhjZXB0ID0gZGVmYXVs
dDsKIAotICAgIFRDQl9TUEFOX0NPTlNURVhQUl9BU1NJR04gU3BhbiYKLSAgICBvcGVyYXRvcj0o
Y29uc3QgU3BhbiYgb3RoZXIpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX090aGVyRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IF9PdGhlckV4dGVudD4KKyAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBT
cGFuPF9PdGhlckVsZW1lbnRUeXBlLCBfT3RoZXJFeHRlbnQ+JiBfX290aGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90
eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxw
dHIpIG5vZXhjZXB0CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSwgX19zaXple19f
b3RoZXIuc2l6ZSgpfSB7fQogCi0gICAgLy8gW3NwYW4uc3ViXSwgc3BhbiBzdWJ2aWV3cwotICAg
IHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBDb3VudD4KLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBT
cGFuPGVsZW1lbnRfdHlwZSwgQ291bnQ+IGZpcnN0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFRD
Ql9TUEFOX0VYUEVDVChDb3VudCA8PSBzaXplKCkpOwotICAgICAgICByZXR1cm4ge2RhdGEoKSwg
Q291bnR9OwotICAgIH0KKy8vICAgIH5TcGFuKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0gICAg
dGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENvdW50PgotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNw
YW48ZWxlbWVudF90eXBlLCBDb3VudD4gbGFzdCgpIGNvbnN0CisgICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNv
bnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBmaXJzdCgpIGNvbnN0IG5vZXhjZXB0
CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoQ291bnQgPD0gc2l6ZSgpKTsKLSAgICAg
ICAgcmV0dXJuIHtkYXRhKCkgKyAoc2l6ZSgpIC0gQ291bnQpLCBDb3VudH07CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVChfQ291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGlu
IFNwYW46OmZpcnN0KCkiKTsKKyAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291
bnQ+e2RhdGEoKSwgX0NvdW50fTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3Qg
T2Zmc2V0LCBzdGQ6OnNpemVfdCBDb3VudCA9IGR5bmFtaWNfZXh0ZW50PgotICAgIHVzaW5nIHN1
YnNwYW5fcmV0dXJuX3QgPQotICAgICAgICBTcGFuPEVsZW1lbnRUeXBlLCBDb3VudCAhPSBkeW5h
bWljX2V4dGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBDb3VudAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAoRXh0ZW50ICE9IGR5bmFtaWNfZXh0ZW50ID8gRXh0
ZW50IC0gT2Zmc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBkeW5hbWljX2V4dGVudCk+OwotCi0gICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IE9mZnNldCwgc3RkOjpzaXplX3QgQ291bnQgPSBkeW5hbWljX2V4dGVudD4KLSAgICBU
Q0JfU1BBTl9DT05TVEVYUFIxMSBzdWJzcGFuX3JldHVybl90PE9mZnNldCwgQ291bnQ+IHN1YnNw
YW4oKSBjb25zdAorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUs
IF9Db3VudD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9F
WFBFQ1QoT2Zmc2V0IDw9IHNpemUoKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50
ID09IGR5bmFtaWNfZXh0ZW50IHx8IE9mZnNldCArIENvdW50IDw9IHNpemUoKSkpOwotICAgICAg
ICByZXR1cm4ge2RhdGEoKSArIE9mZnNldCwKLSAgICAgICAgICAgICAgICBDb3VudCAhPSBkeW5h
bWljX2V4dGVudCA/IENvdW50IDogc2l6ZSgpIC0gT2Zmc2V0fTsKKyAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9Db3VudCA8PSBzaXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6
bGFzdCgpIik7CisgICAgICAgIHJldHVybiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRh
KCkgKyBzaXplKCkgLSBfQ291bnQsIF9Db3VudH07CiAgICAgfQogCi0gICAgVENCX1NQQU5fQ09O
U1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgotICAgIGZpcnN0KHNp
emVfdHlwZSBjb3VudCkgY29uc3QKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
ICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNp
emVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAogICAgIHsKLSAgICAgICAgVENCX1NQQU5f
RVhQRUNUKGNvdW50IDw9IHNpemUoKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpLCBjb3VudH07
CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91
dCBvZiByYW5nZSBpbiBTcGFuOjpmaXJzdChjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRh
KCksIF9fY291bnR9OwogICAgIH0KIAotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxl
bWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KLSAgICBsYXN0KHNpemVfdHlwZSBjb3VudCkgY29u
c3QKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFu
PGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGxhc3QgKHNpemVfdHlwZSBfX2NvdW50KSBj
b25zdCBub2V4Y2VwdAogICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNUKGNvdW50IDw9IHNp
emUoKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgKHNpemUoKSAtIGNvdW50KSwgY291bnR9
OworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXplKCksICJDb3VudCBv
dXQgb2YgcmFuZ2UgaW4gU3Bhbjo6bGFzdChjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRh
KCkgKyBzaXplKCkgLSBfX2NvdW50LCBfX2NvdW50fTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9D
T05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+Ci0gICAgc3Vic3Bh
bihzaXplX3R5cGUgb2Zmc2V0LCBzaXplX3R5cGUgY291bnQgPSBkeW5hbWljX2V4dGVudCkgY29u
c3QKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX09mZnNldCwgc3RkOjpzaXplX3QgX0NvdW50
ID0gZHluYW1pY19leHRlbnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gc3Vic3BhbigpIGNvbnN0IG5v
ZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1Qob2Zmc2V0IDw9IHNpemUoKSAm
JgotICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IG9m
ZnNldCArIGNvdW50IDw9IHNpemUoKSkpOwotICAgICAgICByZXR1cm4ge2RhdGEoKSArIG9mZnNl
dCwKLSAgICAgICAgICAgICAgICBjb3VudCA9PSBkeW5hbWljX2V4dGVudCA/IHNpemUoKSAtIG9m
ZnNldCA6IGNvdW50fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9PZmZzZXQgPD0gc2l6
ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAg
X1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA9PSBkeW5hbWljX2V4dGVudCB8fCBfQ291bnQgPD0g
c2l6ZSgpIC0gX09mZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpz
dWJzcGFuKCkiKTsKKyAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2Rh
dGEoKSArIF9PZmZzZXQsIF9Db3VudCA9PSBkeW5hbWljX2V4dGVudCA/IHNpemUoKSAtIF9PZmZz
ZXQgOiBfQ291bnR9OwogICAgIH0KIAotICAgIC8vIFtzcGFuLm9ic10sIHNwYW4gb2JzZXJ2ZXJz
Ci0gICAgY29uc3RleHByIHNpemVfdHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
c3RvcmFnZV8uc2l6ZTsgfQotCi0gICAgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkg
Y29uc3Qgbm9leGNlcHQKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNf
ZXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgc3Vic3Bhbihz
aXplX3R5cGUgX19vZmZzZXQsIHNpemVfdHlwZSBfX2NvdW50ID0gZHluYW1pY19leHRlbnQpIGNv
bnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKGVsZW1l
bnRfdHlwZSk7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX29mZnNldCA8PSBzaXplKCks
ICJPZmZzZXQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsK
KyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgIDw9IHNpemUoKSB8fCBfX2NvdW50
ID09IGR5bmFtaWNfZXh0ZW50LCAiY291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4o
b2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgaWYgKF9fY291bnQgPT0gZHluYW1pY19leHRlbnQp
CisgICAgICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBzaXplKCkgLSBfX29mZnNl
dH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSAtIF9fb2Zm
c2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4ob2Zmc2V0
LCBjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBfX29mZnNldCwgX19jb3VudH07
CiAgICAgfQogCi0gICAgVENCX1NQQU5fTk9ESVNDQVJEIGNvbnN0ZXhwciBib29sIGVtcHR5KCkg
Y29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsKLSAgICB9
CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBz
aXplKCkgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19zaXplOyB9CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19zaXplICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7IH0K
KyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgYm9vbCBlbXB0eSgp
ICAgICAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemUgPT0gMDsgfQogCi0gICAg
Ly8gW3NwYW4uZWxlbV0sIHNwYW4gZWxlbWVudCBhY2Nlc3MKLSAgICBUQ0JfU1BBTl9DT05TVEVY
UFIxMSByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaWR4KSBjb25zdAorICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3JbXShz
aXplX3R5cGUgX19pZHgpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9F
WFBFQ1QoaWR4IDwgc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuICooZGF0YSgpICsgaWR4KTsKKyAg
ICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgpLCAiU3BhbjxUPltdIGluZGV4
IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVtfX2lkeF07CiAgICAgfQog
Ci0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgcmVmZXJlbmNlIGZyb250KCkgY29uc3QKKyAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkg
Y29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVCghZW1wdHkoKSk7
Ci0gICAgICAgIHJldHVybiAqZGF0YSgpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVt
cHR5KCksICJTcGFuPFQ+W10uZnJvbnQoKSBvbiBlbXB0eSBTcGFuIik7CisgICAgICAgIHJldHVy
biBfX2RhdGFbMF07CiAgICAgfQogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgcmVmZXJlbmNl
IGJhY2soKSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BB
Tl9FWFBFQ1QoIWVtcHR5KCkpOwotICAgICAgICByZXR1cm4gKihkYXRhKCkgKyAoc2l6ZSgpIC0g
MSkpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJTcGFuPFQ+W10uYmFj
aygpIG9uIGVtcHR5IFNwYW4iKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVtzaXplKCktMV07CiAg
ICAgfQogCi0gICAgY29uc3RleHByIHBvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIHN0b3JhZ2VfLnB0cjsgfQogCi0gICAgLy8gW3NwYW4uaXRlcmF0b3JzXSwgc3BhbiBpdGVy
YXRvciBzdXBwb3J0Ci0gICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkg
Y29uc3RleHByIHBvaW50ZXIgZGF0YSgpICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIF9fZGF0YTsgfQogCi0gICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsgfQorLy8gW3NwYW4uaXRl
cl0sIFNwYW4gaXRlcmF0b3Igc3VwcG9ydAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICAgIGVuZCgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAg
ICAgICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihl
bmQoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2
ZXJzZV9pdGVyYXRvciAgICAgICAgICByZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2
ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQogCi0gICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBS
IHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQKLSAgICB7Ci0gICAgICAg
IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKLSAgICB9CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IF9fYXNfYnl0ZXMoKSBjb25z
dCBub2V4Y2VwdAorICAgIHsgcmV0dXJuIFNwYW48Y29uc3Qgc3RkOjpieXRlPntyZWludGVycHJl
dF9jYXN0PGNvbnN0IHN0ZDo6Ynl0ZSAqPihkYXRhKCkpLCBzaXplX2J5dGVzKCl9OyB9CiAKLSAg
ICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3Qg
bm9leGNlcHQKLSAgICB7Ci0gICAgICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkp
OwotICAgIH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBTcGFuPHN0ZDo6Ynl0
ZT4gX19hc193cml0YWJsZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4gU3Bh
bjxzdGQ6OmJ5dGU+e3JlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpieXRlICo+KGRhdGEoKSksIHNpemVf
Ynl0ZXMoKX07IH0KIAogcHJpdmF0ZToKLSAgICBzdG9yYWdlX3R5cGUgc3RvcmFnZV97fTsKKyAg
ICBwb2ludGVyICAgX19kYXRhOworICAgIHNpemVfdHlwZSBfX3NpemU7CiB9OwogCi0jaWZkZWYg
VENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCisjaWYgIWRlZmluZWQoX1dURl9MSUJDUFBf
SEFTX05PX1JBTkdFUykKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+
CitpbmxpbmUgY29uc3RleHByIGJvb2wgc3RkOjpyYW5nZXM6OmVuYWJsZV9ib3Jyb3dlZF9yYW5n
ZTxTcGFuPF9UcCwgX0V4dGVudD4gPiA9IHRydWU7CisjZW5kaWYgLy8gIWRlZmluZWQoX1dURl9M
SUJDUFBfSEFTX05PX1JBTkdFUykKKworLy8gIGFzQnl0ZXMgJiBhc1dyaXRhYmxlQnl0ZXMKK3Rl
bXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+CitfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWQorYXV0byBhc0J5dGVzKFNwYW48X1RwLCBfRXh0ZW50PiBfX3MpIG5vZXhj
ZXB0CistPiBkZWNsdHlwZShfX3MuX19hc19ieXRlcygpKQoreyByZXR1cm4gICAgX19zLl9fYXNf
Ynl0ZXMoKTsgfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50Pgor
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2F1dG8gYXNXcml0YWJsZUJ5dGVzKFNwYW48
X1RwLCBfRXh0ZW50PiBfX3MpIG5vZXhjZXB0CistPiBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6Omlz
X2NvbnN0X3Y8X1RwPiwgZGVjbHR5cGUoX19zLl9fYXNfd3JpdGFibGVfYnl0ZXMoKSk+Cit7IHJl
dHVybiBfX3MuX19hc193cml0YWJsZV9ieXRlcygpOyB9CisKKy8vICBEZWR1Y3Rpb24gZ3VpZGVz
Cit0ZW1wbGF0ZTxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KKyAgICBTcGFuKF9UcCAoJilb
X1N6XSkgLT4gU3BhbjxfVHAsIF9Tej47CisKK3RlbXBsYXRlPGNsYXNzIF9UcCwgc3RkOjpzaXpl
X3QgX1N6PgorICAgIFNwYW4oc3RkOjphcnJheTxfVHAsIF9Tej4mKSAtPiBTcGFuPF9UcCwgX1N6
PjsKKwordGVtcGxhdGU8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+CisgICAgU3Bhbihjb25z
dCBzdGQ6OmFycmF5PF9UcCwgX1N6PiYpIC0+IFNwYW48Y29uc3QgX1RwLCBfU3o+OwogCi0vKiBE
ZWR1Y3Rpb24gR3VpZGVzICovCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+Ci1TcGFuKFQg
KCYpW05dKS0+U3BhbjxULCBOPjsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgotU3Bh
bihzdGQ6OmFycmF5PFQsIE4+JiktPlNwYW48VCwgTj47Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBz
aXplX3QgTj4KLVNwYW4oY29uc3Qgc3RkOjphcnJheTxULCBOPiYpLT5TcGFuPGNvbnN0IFQsIE4+
OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotU3BhbihDb250YWluZXImKS0+U3Bhbjx0
eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFp
bmVyPgotU3Bhbihjb25zdCBDb250YWluZXImKS0+U3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWlu
ZXI6OnZhbHVlX3R5cGU+OwotCi0jZW5kaWYgLy8gVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJ
REVTCi0KLSNpZmRlZiBUQ0JfU1BBTl9JTkNMVURFX01BS0VfU1BBTgotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVudD4KLWNvbnN0ZXhwciBTcGFuPEVs
ZW1lbnRUeXBlLCBFeHRlbnQ+Ci1tYWtlX3NwYW4oU3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50PiBz
KSBub2V4Y2VwdAotewotICAgIHJldHVybiBzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c3RkOjpzaXplX3QgTj4KLWNvbnN0ZXhwciBTcGFuPFQsIE4+IG1ha2Vfc3BhbihUICgmYXJyKVtO
XSkgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzdGQ6OnNpemVfdCBOPgotVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48VCwgTj4g
bWFrZV9zcGFuKHN0ZDo6YXJyYXk8VCwgTj4mIGFycikgbm9leGNlcHQKLXsKLSAgICByZXR1cm4g
e2Fycn07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotVENCX1NQ
QU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48Y29uc3QgVCwgTj4KLW1ha2Vfc3Bhbihjb25zdCBzdGQ6
OmFycmF5PFQsIE4+JiBhcnIpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHthcnJ9OwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotY29uc3RleHByIFNwYW48dHlwZW5hbWUgQ29u
dGFpbmVyOjp2YWx1ZV90eXBlPiBtYWtlX3NwYW4oQ29udGFpbmVyJiBjb250KQotewotICAgIHJl
dHVybiB7Y29udH07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1jb25zdGV4
cHIgU3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+Ci1tYWtlX3NwYW4o
Y29uc3QgQ29udGFpbmVyJiBjb250KQotewotICAgIHJldHVybiB7Y29udH07Ci19Ci0jZW5kaWYg
Ly8gVENCX1NQQU5fSU5DTFVERV9NQUtFX1NQQU4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlLCBzdGQ6OnNpemVfdCBFeHRlbnQ+Ci1TcGFuPGNvbnN0IGJ5dGUsICgoRXh0ZW50ID09
IGR5bmFtaWNfZXh0ZW50KSA/IGR5bmFtaWNfZXh0ZW50Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgot
YXNCeXRlcyhTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Ci17Ci0gICAgcmV0
dXJuIHtyZWludGVycHJldF9jYXN0PGNvbnN0IGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRl
cygpfTsKLX0KLQotdGVtcGxhdGUgPAotICAgIGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0
ZW50LAotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnN0PEVsZW1lbnRU
eXBlPjo6dmFsdWUsIGludD46OnR5cGUgPSAwPgotU3BhbjxieXRlLCAoKEV4dGVudCA9PSBkeW5h
bWljX2V4dGVudCkgPyBkeW5hbWljX2V4dGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBzaXplb2YoRWxlbWVudFR5cGUpICogRXh0ZW50KT4KLWFzV3JpdGFibGVC
eXRlcyhTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJu
IHtyZWludGVycHJldF9jYXN0PGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKLX0K
LQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+Ci1j
b25zdGV4cHIgYXV0byBnZXQoU3BhbjxFLCBTPiBzKSAtPiBkZWNsdHlwZShzW05dKQotewotICAg
IHJldHVybiBzW05dOwotfQotCi19IC8vIG5hbWVzcGFjZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFN
RQotCi1uYW1lc3BhY2Ugc3RkIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBz
aXplX3QgRXh0ZW50PgotY2xhc3MgdHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6
U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50Pj4KLSAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFu
dDxzaXplX3QsIEV4dGVudD4ge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4K
LWNsYXNzIHR1cGxlX3NpemU8VENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OlNwYW48Ci0gICAgRWxl
bWVudFR5cGUsIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudD4+OyAvLyBu
b3QgZGVmaW5lZAordGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBTcGFuKF9Db250YWlu
ZXImKSAtPiBTcGFuPHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGU+OwogCi10ZW1wbGF0
ZSA8c2l6ZV90IEksIHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50PgotY2xhc3Mg
dHVwbGVfZWxlbWVudDxJLCBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxFbGVtZW50VHlw
ZSwgRXh0ZW50Pj4gewotcHVibGljOgotICAgIHN0YXRpY19hc3NlcnQoRXh0ZW50ICE9IFRDQl9T
UEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudCAmJgotICAgICAgICAgICAgICAgICAg
ICAgIEkgPCBFeHRlbnQsCi0gICAgICAgICAgICAgICAgICAiIik7Ci0gICAgdXNpbmcgdHlwZSA9
IEVsZW1lbnRUeXBlOwotfTsKK3RlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+CisgICAgU3Bhbihj
b25zdCBfQ29udGFpbmVyJikgLT4gU3Bhbjxjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1
ZV90eXBlPjsKIAotfSAvLyBlbmQgbmFtZXNwYWNlIHN0ZAorX1dURl9MSUJDUFBfRU5EX05BTUVT
UEFDRQogCiB1c2luZyBXVEY6OlNwYW47CiB1c2luZyBXVEY6OmFzQnl0ZXM7CiB1c2luZyBXVEY6
OmFzV3JpdGFibGVCeXRlczsKIAotI2VuZGlmIC8vIFRDQl9TUEFOX0hQUF9JTkNMVURFRAorI2Vu
ZGlmIC8vIF9XVEZfTElCQ1BQX1NQQU4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9TcGFuLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgU3Bhbjxjb25zdCBz
dGQ6OmJ5dGU+IGFzQnl0ZXMoQ0ZEYXRhUmVmIGRhdGEpCit7CisgICAgcmV0dXJuIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBzdGQ6OmJ5dGUqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YSkpIH07Cit9CisKK2lubGluZSBT
cGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gYXNCeXRlcyhSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKQor
eworICAgIHJldHVybiBhc0J5dGVzKGRhdGEuZ2V0KCkpOworfQorCit9CisKK3VzaW5nIFdURjo6
YXNCeXRlczsK
</data>
<flag name="commit-queue"
          id="453711"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431826</attachid>
            <date>2021-06-20 15:07:19 -0700</date>
            <delta_ts>2021-06-20 15:57:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227197-20210620150718.patch</filename>
            <type>text/plain</type>
            <size>46854</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFNwYW4gaW1wbGVtZW50YXRpb24gd2l0aCBv
bmUgZnJvbSBsaWJjKyssIHdoaWNoIGlzIG1vcmUgc3BlYyBjb21wbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwYW4uaDoKKwogMjAy
MS0wNi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQg
U3BhbiBpbiBTSEExLmgKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjkyLDYgKzY5Miw4IEBACiAJCUFEODlCNkI5
MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREYyQ0U2NDFFMzlGMTA2MDA2
ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUZvb3RwcmludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREYy
Q0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNGRUI1RDI2N0ZDRDM0MDA1NDAwNkEgLyog
U3BhbkNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYW5DRi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNGRUI1RTI2N0ZDRDQ2MDA1NDAwNkEgLyogU3Bh
bkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYW5Db2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0EzMEM3RjI2NkQzMDM0MDAwRDIzMEMgLyog
U3Bhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQkNGQzNFMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQkNGQzNGMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQwLDYgKzg0Miw3IEBACiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzky
MjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAv
KiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hl
ZHVsZVBhaXJDRi5jcHAgKi8sCisJCQkJQkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5D
Ri5oICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICov
LAogCQkJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwpA
QCAtMTU4MSw2ICsxNTg0LDcgQEAKIAkJCQkxQ0E4NUNBODI0MUIwQjI2MDA3MUMyRjUgLyogUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwICovLAogCQkJCTFDQTg1Q0E3MjQxQjBCMTEw
MDcxQzJGNSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5oICovLAogCQkJCUEzMEQ0
MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAorCQkJCUJDM0ZFQjVFMjY3
RkNENDYwMDU0MDA2QSAvKiBTcGFuQ29jb2EuaCAqLywKIAkJCQlFQjYxRURDNjI0MDlDQ0MwMDAx
RUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLywKIAkJCQk1Q0MwRUU4NjIxNjJCQzIy
MDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8sCiAJCQkJOTMyNDE2NTcyNDNCQzJFNTAwMzJGQUFF
IC8qIFZlY3RvckNvY29hLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUZUVy5jbWFrZQkocmV2
aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIGlmIChV
U0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgICAgIGNmL0NG
VVJMRXh0cmFzLmgKKyAgICAgICAgY2YvU3BhbkNGLmgKICAgICAgICAgY2YvVHlwZUNhc3RzQ0Yu
aAogCiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ29uY2F0ZW5hdGVDRi5oCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgbGlzdChBUFBF
TkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2Vha09iakNQdHIuaAogCiAgICAgY2YvQ0ZVUkxF
eHRyYXMuaAorICAgIGNmL1NwYW5DRi5oCiAgICAgY2YvVHlwZUNhc3RzQ0YuaAogCiAgICAgY29j
b2EvQ3Jhc2hSZXBvcnRlci5oCkBAIC0xOCw2ICsxOSw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJM
SUNfSEVBREVSUwogICAgIGNvY29hL05TVVJMRXh0cmFzLmgKICAgICBjb2NvYS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NDb2NvYS5oCiAgICAgY29jb2EvU29mdExpbmtpbmcuaAorICAgIGNvY29h
L1NwYW5Db2NvYS5oCiAgICAgY29jb2EvVmVjdG9yQ29jb2EuaAogCiAgICAgZGFyd2luL1dlYWtM
aW5raW5nLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNzkwNTQp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiBpZiAoVVNFX0NGKQogICAg
IGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5o
CisgICAgICAgIGNmL1NwYW5DRi5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAgICAg
ICB0ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRlQ0YuaApJbmRleDogU291cmNlL1dURi93dGYvU3Bh
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAkocmV2aXNpb24gMjc5MDU0
KQorKysgU291cmNlL1dURi93dGYvU3Bhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYyMCArMSw0
NzAgQEAKLS8vICAgICAgICAgICAgICBDb3B5cmlnaHQgVHJpc3RhbiBCcmluZGxlIDIwMTguCi0v
LyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAx
LjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIC4uL0xJQ0VOU0VfMV8wLUJvb3N0LnR4
dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwczovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8x
XzAudHh0KQotCi0vLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIEMrKzIwJ3Mgc3RkOjpz
cGFuIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIw
MTkvbjQ4MjAucGRmCi0KLS8vIFRoaXMgaGFzIGJlZW4gbW9kaWZpZWQgZnJvbSB0aGUgb3JpZ2lu
YWwgdmVyc2lvbiB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKLS8vICAgUmVuYW1lZCB0
Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfYnl0ZXMgdG8gV1RG
Ojphc0J5dGVzLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfd3JpdGFibGVfYnl0ZXMgdG8gV1RGOjph
c1dyaXRhYmxlQnl0ZXMuCi0KLSNpZm5kZWYgVENCX1NQQU5fSFBQX0lOQ0xVREVECi0jZGVmaW5l
IFRDQl9TUEFOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y3N0
ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotCi0jaWZu
ZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKLS8vIEF0dGVtcHQgdG8gZGlzY292ZXIgd2hldGhl
ciB3ZSdyZSBiZWluZyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0Ci0jaWYgIShkZWZp
bmVkKF9fY3BwX2V4Y2VwdGlvbnMpIHx8IGRlZmluZWQoX19FWENFUFRJT05TKSB8fCBkZWZpbmVk
KF9DUFBVTldJTkQpKQotI2RlZmluZSBUQ0JfU1BBTl9OT19FWENFUFRJT05TCi0jZW5kaWYKLSNl
bmRpZgorLy8gLSotIEMrKyAtKi0KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IHNwYW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBQYXJ0
IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGgg
TExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hl
LTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisj
aWZuZGVmIF9XVEZfTElCQ1BQX1NQQU4KKyNkZWZpbmUgX1dURl9MSUJDUFBfU1BBTgorCisvLyBJ
bXBvcnRzIGEgY29weSBvZiA8c3Bhbj4gZnJvbSBlODkyNzA1ZDc0YzczNjZhMTQwNGEzYjM0NzEw
MDFlZGFhNzY1OWY4IG9mIHRoZQorLy8gbGliYysrIHByb2plY3QgKGh0dHBzOi8vZ2l0aHViLmNv
bS9sbHZtL2xsdm0tcHJvamVjdC5naXQpIGFuZCBtb2RpZmllcyBpdCB0bworLy8gd29yayBvbiB0
b3Agb2YgYW55IHN0YW5kYXJkIGxpYnJhcnkgaW1wbGVtZW50YXRpb24uCisvLworLy8gLSBSZW5h
bWVzIG1hY3JvcyB3aXRoIF9MSUJDUFBfIHByZWZpeCB0byB1c2UgdGhlIHByZWZpeCBfV1RGX0xJ
QkNQUF8KKy8vIC0gUmVuYW1lcyBzdGQ6OnNwYW4gdG8gV1RGOjpTcGFuCisvLyAtIFJlbmFtZXMg
c3RkOjphc19ieXRlcy9zdGQ6OmFzX3dyaXRhYmxlX2J5dGVzIHRvIFdURjo6YXNCeXRlcy9XVEY6
OmFzV3JpdGFibGVCeXRlcy4KKy8vIC0gU3RvcCAjaW5jbHVkaW5nIGludGVybmFsIGxpYmMrKyBo
ZWFkZXJzLgorLy8gLSBSZW1vdmUgY2hlY2sgZm9yID4gYysrMTcuCisvLyAtIFJlbW92ZSBwdXNo
L3BvcCBhdmFpbGFiaWxpdHkgb2YgbWluL21heCBtYWNyb3MuCisKKyNpbmNsdWRlIDxhcnJheT4g
ICAgICAgIC8vIGZvciBhcnJheQorI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgLy8gZm9yIGJ5dGUK
KyNpbmNsdWRlIDxpdGVyYXRvcj4gICAgIC8vIGZvciBpdGVyYXRvcnMKKyNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4gIC8vIGZvciByZW1vdmVfY3YsIGV0YworCisvLyBBZGRzIHNvbWUgbWFjcm8gZGVm
aW5lcyB1c3VhbGx5IGRlZmluZWQgaW4gX19jb25maWcuCisKKyNkZWZpbmUgX1dURl9MSUJDUFBf
QUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMKKyNkZWZpbmUgX1dURl9MSUJDUFBfQkVHSU5fTkFN
RVNQQUNFIG5hbWVzcGFjZSBXVEYgeworI2RlZmluZSBfV1RGX0xJQkNQUF9ERUJVR19MRVZFTCAw
CisjZGVmaW5lIF9XVEZfTElCQ1BQX0VORF9OQU1FU1BBQ0UgIH0KKyNkZWZpbmUgX1dURl9MSUJD
UFBfSEFTX05PX1JBTkdFUworI2RlZmluZSBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
I2RlZmluZSBfV1RGX0xJQkNQUF9URU1QTEFURV9WSVMKKyNkZWZpbmUgX1dURl9WU1REIHN0ZAor
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNkZWZpbmUgX1dURl9MSUJDUFBfQVNTRVJU
IEFTU0VSVAorCitfV1RGX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0UKKworaW5saW5lIGNvbnN0ZXhw
ciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4dGVudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpz
aXplX3Q+OjptYXgoKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRl
bnQgPSBkeW5hbWljX2V4dGVudD4gY2xhc3MgU3BhbjsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
Pgorc3RydWN0IF9faXNfc3Bhbl9pbXBsIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwor
dGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KK3N0cnVjdCBfX2lzX3Nw
YW5faW1wbDxTcGFuPF9UcCwgX0V4dGVudD4+IDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHt9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfc3BhbiA6IHB1YmxpYyBfX2lzX3Nw
YW5faW1wbDxzdGQ6OnJlbW92ZV9jdl90PF9UcD4+IHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
Pgorc3RydWN0IF9faXNfc3RkX2FycmF5X2ltcGwgOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHt9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+CitzdHJ1Y3QgX19pc19z
dGRfYXJyYXlfaW1wbDxzdGQ6OmFycmF5PF9UcCwgX1N6Pj4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5
cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zdGRfYXJyYXkgOiBw
dWJsaWMgX19pc19zdGRfYXJyYXlfaW1wbDxzdGQ6OnJlbW92ZV9jdl90PF9UcD4+IHt9OworCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxlbWVudFR5cGUsIGNsYXNzID0gdm9pZD4KK3N0
cnVjdCBfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXIgOiBwdWJsaWMgc3RkOjpmYWxzZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxlbWVudFR5cGU+CitzdHJ1
Y3QgX19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9UcCwgX0VsZW1lbnRUeXBlLAorICAg
ICAgICBzdGQ6OnZvaWRfdDwKKyAgICAgICAgLy8gaXMgbm90IGEgc3BlY2lhbGl6YXRpb24gb2Yg
U3BhbgorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IV9faXNfc3BhbjxfVHA+
Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gaXMgbm90IGEgc3BlY2lhbGl6
YXRpb24gb2YgYXJyYXkKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFfX2lz
X3N0ZF9hcnJheTxfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gc2Q6
OmlzX2FycmF5X3Y8Q29udGFpbmVyPiBpcyBmYWxzZSwKKyAgICAgICAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2FycmF5X3Y8X1RwPiwgbnVsbHB0cl90Pjo6dHlwZSwKKyAg
ICAgICAgLy8gc3RkOjpkYXRhKGNvbnQpIGFuZCBzdGQ6OnNpemUoY29udCkgYXJlIHdlbGwgZm9y
bWVkCisgICAgICAgICAgICBkZWNsdHlwZShzdGQ6OmRhdGEoc3RkOjpkZWNsdmFsPF9UcD4oKSkp
LAorICAgICAgICAgICAgZGVjbHR5cGUoc3RkOjpzaXplKHN0ZDo6ZGVjbHZhbDxfVHA+KCkpKSwK
KyAgICAgICAgLy8gcmVtb3ZlX3BvaW50ZXJfdDxkZWNsdHlwZShkYXRhKGNvbnQpKT4oKilbXSBp
cyBjb252ZXJ0aWJsZSB0byBFbGVtZW50VHlwZSgqKVtdCisgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8c3Rk
OjpyZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6OmRlY2x2YWw8X1RwICY+
KCkpKT4oKilbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9FbGVtZW50VHlw
ZSgqKVtdPiwKKyAgICAgICAgICAgICAgICBudWxscHRyX3Q+Ojp0eXBlCisgICAgICAgID4+Cisg
ICAgOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307CiAKLSNpZm5kZWYgVENCX1NQQU5fTk9fRVhD
RVBUSU9OUwotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jZW5kaWYK
IAotLy8gVmFyaW91cyBmZWF0dXJlIHRlc3QgbWFjcm9zCi0KLSNpZm5kZWYgVENCX1NQQU5fTkFN
RVNQQUNFX05BTUUKLSNkZWZpbmUgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUgV1RGCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgorY2xhc3MgX1dURl9MSUJDUFBf
VEVNUExBVEVfVklTIFNwYW4geworcHVibGljOgorLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAg
ICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAgIHVzaW5nIHZhbHVlX3R5
cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47CisgICAgdXNpbmcgc2l6ZV90
eXBlICAgICAgICAgICAgICA9IHN0ZDo6c2l6ZV90OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlw
ZSAgICAgICAgPSBzdGQ6OnB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAg
ICAgID0gX1RwICo7CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9U
cCAqOworICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2lu
ZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQ
X0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRF
Ul9JVEVSQVRPUlMpCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7
CisjZWxzZQorICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxw
b2ludGVyPjsKICNlbmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RG
X1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogCi0jaWYgX19jcGx1c3BsdXMgPj0g
MjAxNzAzTCB8fCAoZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNWQ19MQU5HID49IDIwMTcwM0wp
Ci0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTcKLSNlbmRpZgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90eXBlIGV4dGVudCA9IF9FeHRlbnQ7CiAKLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDE0
MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0gMjAxNDAyTCkKLSNk
ZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAotI2VuZGlmCisvLyBbc3Bhbi5jb25zXSwgc3BhbiBj
b25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisgICAgdGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IF9TeiA9IF9FeHRlbnQsIHN0ZDo6ZW5hYmxlX2lmX3Q8X1N6ID09IDAs
IG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVsbHB0cn0ge30KIAotbmFtZXNw
YWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIHsKKyAgICBjb25zdGV4cHIgU3BhbiAgICAgICAg
ICAgKGNvbnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIFNwYW4m
IG9wZXJhdG9yPShjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0vLyBFc3RhYmxp
c2ggZGVmYXVsdCBjb250cmFjdCBjaGVja2luZyBiZWhhdmlvcgotI2lmICFkZWZpbmVkKFRDQl9T
UEFOX1RIUk9XX09OX0NPTlRSQUNUX1ZJT0xBVElPTikgJiYgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAhZGVmaW5lZChUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFU
SU9OKSAmJiAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIWRlZmluZWQoVENCX1NQQU5fTk9f
Q09OVFJBQ1RfQ0hFQ0tJTkcpCi0jaWYgZGVmaW5lZChOREVCVUcpIHx8ICFkZWZpbmVkKFRDQl9T
UEFOX0hBVkVfQ1BQMTQpCi0jZGVmaW5lIFRDQl9TUEFOX05PX0NPTlRSQUNUX0NIRUNLSU5HCi0j
ZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OCi0j
ZW5kaWYKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciBleHBsaWNpdCBTcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0
YXtfX3B0cn0KKyAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4
dGVudCA9PSBfX2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKHB0
ciwgbGVuKSIpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IGV4cGxpY2l0IFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9Cisg
ICAgICAgIHsgKHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gc3Rk
OjpkaXN0YW5jZShfX2YsIF9fbCksICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3Rv
ciAocHRyLCBwdHIpIik7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09OVFJB
Q1RfVklPTEFUSU9OKQotc3RydWN0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvciA6IHN0ZDo6bG9n
aWNfZXJyb3IgewotICAgIGV4cGxpY2l0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvcihjb25zdCBj
aGFyKiBtc2cpIDogc3RkOjpsb2dpY19lcnJvcihtc2cpCi0gICAge30KLX07CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmX19h
cnIpW19FeHRlbnRdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0ge30KIAotaW5s
aW5lIHZvaWQgY29udHJhY3RfdmlvbGF0aW9uKGNvbnN0IGNoYXIqIG1zZykKLXsKLSAgICB0aHJv
dyBjb250cmFjdF92aW9sYXRpb25fZXJyb3IobXNnKTsKLX0KLQotI2VsaWYgZGVmaW5lZChUQ0Jf
U1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQotW1tub3JldHVybl1dIGlubGlu
ZSB2b2lkIGNvbnRyYWN0X3Zpb2xhdGlvbihjb25zdCBjaGFyKiAvKnVudXNlZCovKQotewotICAg
IHN0ZDo6dGVybWluYXRlKCk7Ci19Ci0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVy
RWxlbWVudFR5cGUsCisgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252
ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51
bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisg
ICAgY29uc3RleHByIFNwYW4oc3RkOjphcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX0V4dGVudD4m
IF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9IHt9CiAKLSNpZiAhZGVmaW5l
ZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORykKLSNkZWZpbmUgVENCX1NQQU5fU1RSSU5H
SUZZKGNvbmQpICNjb25kCi0jZGVmaW5lIFRDQl9TUEFOX0VYUEVDVChjb25kKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNvbmQgPyAodm9p
ZCkgMCA6IGNvbnRyYWN0X3Zpb2xhdGlvbigiRXhwZWN0ZWQgIiBUQ0JfU1BBTl9TVFJJTkdJRlko
Y29uZCkpCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9FWFBFQ1QoY29uZCkKLSNlbmRpZgorICAg
IHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKKyAgICAgICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUo
KilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBzdGQ6
OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIpIG5vZXhjZXB0IDogX19k
YXRhe19fYXJyLmRhdGEoKX0ge30KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykg
fHwgZGVmaW5lZChfX2NwcF9pbmxpbmVfdmFyaWFibGVzKQotI2RlZmluZSBUQ0JfU1BBTl9JTkxJ
TkVfVkFSIGlubGluZQotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fSU5MSU5FX1ZBUgotI2VuZGlm
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oICAgICAgX0NvbnRh
aW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0
aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxs
cHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0geworICAgICAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gX1dURl9WU1REOjpzaXplKF9fYyksICJz
aXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3RvciAocmFuZ2UpIik7CisgICAgICAgIH0K
IAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkgfHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoZGVmaW5lZChfX2NwcF9jb25zdGV4cHIp
ICYmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQ
MTRfQ09OU1RFWFBSCi0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBjb25zdGV4cHIgZXhwbGlj
aXQgU3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lcjxjb25zdCBfQ29udGFpbmVyLCBfVHA+
Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19XVEZfVlNU
RDo6ZGF0YShfX2MpfSB7CisgICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9
PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVj
dG9yIChyYW5nZSkiKTsKKyAgICAgICAgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQ
UDE0X0NPTlNURVhQUikKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTQgY29uc3RleHByCi0j
ZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNAotI2VuZGlmCisgICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUs
IF9FeHRlbnQ+JiBfX290aGVyLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090
aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19fb3Ro
ZXIuZGF0YSgpfSB7fQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE0X0NPTlNURVhQ
UikgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICghZGVmaW5lZChf
TVNDX1ZFUikgfHwgX01TQ19WRVIgPiAxOTAwKQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFJf
QVNTSUdOIGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSX0FTU0lH
TgotI2VuZGlmCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBT
cGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGU+JiBfX290aGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBl
ICgqKVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIp
IG5vZXhjZXB0CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSB7IF9XVEZfTElCQ1BQ
X0FTU0VSVChfRXh0ZW50ID09IF9fb3RoZXIuc2l6ZSgpLCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFu
J3MgY29uc3RydWN0b3IgKG90aGVyIFNwYW4pIik7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5f
Tk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCi0jZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjExIGNvbnN0
ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTEgVENCX1NQQU5fQ09OU1RF
WFBSMTQKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZp
bmVkKF9fY3BwX2RlZHVjdGlvbl9ndWlkZXMpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfREVEVUNU
SU9OX0dVSURFUwotI2VuZGlmCisvLyAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAKLSNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBfbGliX2J5dGUp
Ci0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKLSNlbmRpZgorICAgIHRlbXBsYXRlIDxz
dGQ6OnNpemVfdCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gZmlyc3QoKSBjb25zdCBub2V4
Y2VwdAorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNv
dW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpmaXJzdCgpIik7CisgICAgICAgIHJldHVybiBTcGFu
PGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCksIF9Db3VudH07CisgICAgfQogCi0jaWYgZGVm
aW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVkKF9fY3BwX2xpYl9hcnJheV9jb25z
dGV4cHIpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ09OU1RFWFBSX1NURF9BUlJBWV9FVEMKLSNl
bmRpZgorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3Vu
dD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KF9D
b3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46Omxhc3QoKSIpOwor
ICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgc2l6ZSgp
IC0gX0NvdW50LCBfQ291bnR9OworICAgIH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9D
T05TVEVYUFJfU1REX0FSUkFZX0VUQykKLSNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBS
IGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSCi0jZW5k
aWYKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFu
PGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50KSBj
b25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQg
PD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIpOwor
ICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07CisgICAgfQogCi0jaWZkZWYgVENCX1NQ
QU5fSEFWRV9TVERfQllURQotdXNpbmcgYnl0ZSA9IHN0ZDo6Ynl0ZTsKLSNlbHNlCi11c2luZyBi
eXRlID0gdW5zaWduZWQgY2hhcjsKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4g
bGFzdChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBp
biBTcGFuOjpsYXN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIHNpemUoKSAt
IF9fY291bnQsIF9fY291bnR9OworICAgIH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9D
UFAxNykKLSNkZWZpbmUgVENCX1NQQU5fTk9ESVNDQVJEIFtbbm9kaXNjYXJkXV0KLSNlbHNlCi0j
ZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRAotI2VuZGlmCisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6
ZV90IF9PZmZzZXQsIHN0ZDo6c2l6ZV90IF9Db3VudCA9IGR5bmFtaWNfZXh0ZW50PgorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIGF1dG8gc3Vic3Bhbigp
IGNvbnN0IG5vZXhjZXB0CisgICAgICAgIC0+IFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0g
ZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD4KKyAgICB7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoX09mZnNldCA8PSBfRXh0ZW50LCAiT2Zmc2V0IG91dCBvZiByYW5n
ZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPT0g
ZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IF9FeHRlbnQgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsg
Y291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOwogCi1UQ0JfU1BBTl9JTkxJ
TkVfVkFSIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4dGVudCA9IFNJWkVfTUFYOwor
ICAgICAgICB1c2luZyBfUmV0dXJuVHlwZSA9IFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0g
ZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD47CisgICAgICAgIHJl
dHVybiBfUmV0dXJuVHlwZXtkYXRhKCkgKyBfT2Zmc2V0LCBfQ291bnQgPT0gZHluYW1pY19leHRl
bnQgPyBzaXplKCkgLSBfT2Zmc2V0IDogX0NvdW50fTsKKyAgICB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50ID0gZHluYW1pY19leHRlbnQ+Ci1j
bGFzcyBTcGFuOwogCi1uYW1lc3BhY2UgZGV0YWlsIHsKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRl
bnQ+CisgICAgICAgc3Vic3BhbihzaXplX3R5cGUgX19vZmZzZXQsIHNpemVfdHlwZSBfX2NvdW50
ID0gZHluYW1pY19leHRlbnQpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX19vZmZzZXQgPD0gc2l6ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBT
cGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VS
VChfX2NvdW50ICA8PSBzaXplKCkgfHwgX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCwgIkNvdW50
IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAg
IGlmIChfX2NvdW50ID09IGR5bmFtaWNfZXh0ZW50KQorICAgICAgICAgICAgcmV0dXJuIHtkYXRh
KCkgKyBfX29mZnNldCwgc2l6ZSgpIC0gX19vZmZzZXR9OworICAgICAgICBfV1RGX0xJQkNQUF9B
U1NFUlQoX19jb3VudCA8PSBzaXplKCkgLSBfX29mZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBv
ZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAgIHJldHVy
biB7ZGF0YSgpICsgX19vZmZzZXQsIF9fY291bnR9OworICAgIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIEUsIHN0ZDo6c2l6ZV90IFM+Ci1zdHJ1Y3Qgc3Bhbl9zdG9yYWdlIHsKLSAgICBjb25zdGV4
cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0OworICAgIF9XVEZfTElCQ1BQX0lO
TElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZSgpICAgICAgIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIF9FeHRlbnQ7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiBfRXh0ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7IH0KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgYm9vbCBlbXB0eSgpICAgICAgICAgICBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50ID09IDA7IH0KIAotICAgIGNvbnN0ZXhwciBzcGFuX3N0
b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IC8qdW51c2VkKi8pIG5vZXhjZXB0Ci0gICAgICAg
OiBwdHIocF9wdHIpCi0gICAge30KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9faWR4KSBjb25zdCBub2V4
Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgpLCAi
U3BhbjxULE4+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gX19kYXRh
W19faWR4XTsKKyAgICB9CiAKLSAgICBFKiBwdHIgPSBudWxscHRyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjpzaXplX3Qgc2l6ZSA9IFM7Ci19OworICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2VwdAorICAg
IHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgpLCAiU3BhbjxULCBOPjo6ZnJv
bnQoKSBvbiBlbXB0eSBTcGFuIik7CisgICAgICAgIHJldHVybiBfX2RhdGFbMF07CisgICAgfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRT4KLXN0cnVjdCBzcGFuX3N0b3JhZ2U8RSwgZHluYW1pY19l
eHRlbnQ+IHsKLSAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0
OwotCi0gICAgY29uc3RleHByIHNwYW5fc3RvcmFnZShFKiBwX3B0ciwgc3RkOjpzaXplX3QgcF9z
aXplKSBub2V4Y2VwdAotICAgICAgICA6IHB0cihwX3B0ciksIHNpemUocF9zaXplKQotICAgIHt9
CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBi
YWNrKCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCgh
ZW1wdHkoKSwgIlNwYW48VCwgTj46OmJhY2soKSBvbiBlbXB0eSBTcGFuIik7CisgICAgICAgIHJl
dHVybiBfX2RhdGFbc2l6ZSgpLTFdOworICAgIH0KIAotICAgIEUqIHB0ciA9IG51bGxwdHI7Ci0g
ICAgc3RkOjpzaXplX3Qgc2l6ZSA9IDA7Ci19OworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZIGNvbnN0ZXhwciBwb2ludGVyIGRhdGEoKSAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBfX2RhdGE7IH0KIAotLy8gUmVpbXBsZW1lbnRhdGlvbiBv
ZiBDKysxNyBzdGQ6OnNpemUoKSBhbmQgc3RkOjpkYXRhKCkKLSNpZiBkZWZpbmVkKFRDQl9TUEFO
X0hBVkVfQ1BQMTcpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgZGVmaW5lZChfX2NwcF9saWJfbm9ubWVtYmVyX2NvbnRhaW5lcl9hY2Nlc3MpCi11
c2luZyBzdGQ6OmRhdGE7Ci11c2luZyBzdGQ6OnNpemU7Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNz
IEM+Ci1jb25zdGV4cHIgYXV0byBzaXplKGNvbnN0IEMmIGMpIC0+IGRlY2x0eXBlKGMuc2l6ZSgp
KQotewotICAgIHJldHVybiBjLnNpemUoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6
c2l6ZV90IE4+Ci1jb25zdGV4cHIgc3RkOjpzaXplX3Qgc2l6ZShjb25zdCBUICgmKVtOXSkgbm9l
eGNlcHQKLXsKLSAgICByZXR1cm4gTjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEM+Ci1jb25zdGV4
cHIgYXV0byBkYXRhKEMmIGMpIC0+IGRlY2x0eXBlKGMuZGF0YSgpKQotewotICAgIHJldHVybiBj
LmRhdGEoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEM+Ci1jb25zdGV4cHIgYXV0byBkYXRhKGNv
bnN0IEMmIGMpIC0+IGRlY2x0eXBlKGMuZGF0YSgpKQotewotICAgIHJldHVybiBjLmRhdGEoKTsK
LX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1jb25zdGV4cHIgVCogZGF0
YShUICgmYXJyYXkpW05dKSBub2V4Y2VwdAotewotICAgIHJldHVybiBhcnJheTsKLX0KLQotdGVt
cGxhdGUgPGNsYXNzIEU+Ci1jb25zdGV4cHIgY29uc3QgRSogZGF0YShzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8RT4gaWwpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIGlsLmJlZ2luKCk7Ci19Ci0jZW5k
aWYgLy8gVENCX1NQQU5fSEFWRV9DUFAxNworLy8gW3NwYW4uaXRlcl0sIFNwYW4gaXRlcmF0b3Ig
c3VwcG9ydAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVy
YXRvciAgICAgICAgICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVy
YXRvcihkYXRhKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3Rl
eHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIGl0ZXJhdG9yKGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgcmJlZ2luKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAg
ICAgICByZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVkKF9f
Y3BwX2xpYl92b2lkX3QpCi11c2luZyBzdGQ6OnZvaWRfdDsKLSNlbHNlCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4+Ci11c2luZyB2b2lkX3QgPSB2b2lkOwotI2VuZGlmCisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgU3Bhbjxjb25zdCBzdGQ6OmJ5dGUsIF9FeHRlbnQgKiBzaXplb2Yo
ZWxlbWVudF90eXBlKT4gX19hc19ieXRlcygpIGNvbnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4g
U3Bhbjxjb25zdCBzdGQ6OmJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT57cmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzdGQ6OmJ5dGUgKj4oZGF0YSgpKSwgc2l6ZV9ieXRlcygpfTsg
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXVzaW5nIHVuY3ZyZWZfdCA9Ci0gICAgdHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBl
Pjo6dHlwZTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lPgotc3RydWN0IGlzX3NwYW4gOiBzdGQ6OmZh
bHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBTPgotc3Ry
dWN0IGlzX3NwYW48U3BhbjxULCBTPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lPgotc3RydWN0IGlzX3N0ZF9hcnJheSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgaXNfc3RkX2FycmF5
PHN0ZDo6YXJyYXk8VCwgTj4+IDogc3RkOjp0cnVlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IGhhc19zaXplX2FuZF9kYXRhIDogc3RkOjpm
YWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfc2l6ZV9h
bmRfZGF0YTxULCB2b2lkX3Q8ZGVjbHR5cGUoZGV0YWlsOjpzaXplKHN0ZDo6ZGVjbHZhbDxUPigp
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKGRldGFpbDo6
ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPj4KLSAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgVSA9IHVuY3ZyZWZfdDxDPj4KLXN0cnVjdCBp
c19jb250YWluZXIgewotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9Ci0gICAgICAg
ICFpc19zcGFuPFU+Ojp2YWx1ZSAmJiAhaXNfc3RkX2FycmF5PFU+Ojp2YWx1ZSAmJgotICAgICAg
ICAhc3RkOjppc19hcnJheTxVPjo6dmFsdWUgJiYgaGFzX3NpemVfYW5kX2RhdGE8Qz46OnZhbHVl
OwotfTsKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBTcGFuPHN0ZDo6Ynl0ZSwg
X0V4dGVudCAqIHNpemVvZihlbGVtZW50X3R5cGUpPiBfX2FzX3dyaXRhYmxlX2J5dGVzKCkgY29u
c3Qgbm9leGNlcHQKKyAgICB7IHJldHVybiBTcGFuPHN0ZDo6Ynl0ZSwgX0V4dGVudCAqIHNpemVv
ZihlbGVtZW50X3R5cGUpPntyZWludGVycHJldF9jYXN0PHN0ZDo6Ynl0ZSAqPihkYXRhKCkpLCBz
aXplX2J5dGVzKCl9OyB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdXNpbmcgcmVtb3ZlX3Bv
aW50ZXJfdCA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU7Citwcml2YXRl
OgorICAgIHBvaW50ZXIgICAgX19kYXRhOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1l
LCB0eXBlbmFtZSA9IHZvaWQ+Ci1zdHJ1Y3QgaXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21w
YXRpYmxlIDogc3RkOjpmYWxzZV90eXBlIHt9OworfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEU+Ci1zdHJ1Y3QgaXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxl
PAotICAgIFQsIEUsCi0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICFzdGQ6
OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8ZGVjbHR5cGUoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPjo6dHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICB2b2lkPjo6dmFsdWU+Ojp0eXBlPgotICAgIDogc3RkOjppc19j
b252ZXJ0aWJsZTwKLSAgICAgICAgICByZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRldGFpbDo6
ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPiAoKilbXSwKLSAgICAgICAgICBFICgqKVtdPiB7fTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHNpemVfdD4KLXN0cnVjdCBpc19jb21w
bGV0ZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgaXNfY29tcGxldGU8VCwgZGVjbHR5cGUoc2l6ZW9mKFQpKT4gOiBzdGQ6OnRydWVfdHlwZSB7
fTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50PgotY2xhc3MgU3BhbiB7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX29iamVjdDxFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAg
IkEgU3BhbidzIEVsZW1lbnRUeXBlIG11c3QgYmUgYW4gb2JqZWN0IHR5cGUgKG5vdCBhICIKLSAg
ICAgICAgICAgICAgICAgICJyZWZlcmVuY2UgdHlwZSBvciB2b2lkKSIpOwotICAgIHN0YXRpY19h
c3NlcnQoZGV0YWlsOjppc19jb21wbGV0ZTxFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAg
ICAgICAgICAgIkEgU3BhbidzIEVsZW1lbnRUeXBlIG11c3QgYmUgYSBjb21wbGV0ZSB0eXBlIChu
b3QgYSBmb3J3YXJkICIKLSAgICAgICAgICAgICAgICAgICJkZWNsYXJhdGlvbikiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Fic3RyYWN0PEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAiQSBTcGFuJ3MgRWxlbWVudFR5cGUgY2Fubm90IGJlIGFuIGFic3RyYWN0
IGNsYXNzIHR5cGUiKTsKIAotICAgIHVzaW5nIHN0b3JhZ2VfdHlwZSA9IGRldGFpbDo6c3Bhbl9z
dG9yYWdlPEVsZW1lbnRUeXBlLCBFeHRlbnQ+OwordGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KK2Ns
YXNzIF9XVEZfTElCQ1BQX1RFTVBMQVRFX1ZJUyBTcGFuPF9UcCwgZHluYW1pY19leHRlbnQ+IHsK
K3ByaXZhdGU6CiAKIHB1YmxpYzoKLSAgICAvLyBjb25zdGFudHMgYW5kIHR5cGVzCi0gICAgdXNp
bmcgZWxlbWVudF90eXBlID0gRWxlbWVudFR5cGU7Ci0gICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PEVsZW1lbnRUeXBlPjo6dHlwZTsKLSAgICB1c2luZyBzaXpl
X3R5cGUgPSBzdGQ6OnNpemVfdDsKLSAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBzdGQ6OnB0
cmRpZmZfdDsKLSAgICB1c2luZyBwb2ludGVyID0gZWxlbWVudF90eXBlKjsKLSAgICB1c2luZyBj
b25zdF9wb2ludGVyID0gY29uc3QgZWxlbWVudF90eXBlKjsKLSAgICB1c2luZyByZWZlcmVuY2Ug
PSBlbGVtZW50X3R5cGUmOwotICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IGVsZW1l
bnRfdHlwZSY7Ci0gICAgdXNpbmcgaXRlcmF0b3IgPSBwb2ludGVyOwotICAgIHVzaW5nIHJldmVy
c2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwotCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gRXh0ZW50OwotCi0gICAgLy8gW3NwYW4u
Y29uc10sIFNwYW4gY29uc3RydWN0b3JzLCBjb3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3Rv
cgotICAgIHRlbXBsYXRlIDwKLSAgICAgICAgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKLSAgICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8KEUgPT0gZHluYW1pY19leHRlbnQgfHwgRSA8PSAw
KSwgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNwYW4oKSBub2V4Y2VwdAotICAgIHt9
CisvLyAgY29uc3RhbnRzIGFuZCB0eXBlcworICAgIHVzaW5nIGVsZW1lbnRfdHlwZSAgICAgICAg
ICAgPSBfVHA7CisgICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgICAgICAgICA9IHN0ZDo6cmVtb3Zl
X2N2X3Q8X1RwPjsKKyAgICB1c2luZyBzaXplX3R5cGUgICAgICAgICAgICAgID0gc3RkOjpzaXpl
X3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgICAgICA9IHN0ZDo6cHRyZGlmZl90Owor
ICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgICAgICAgPSBfVHAgKjsKKyAgICB1c2luZyBjb25z
dF9wb2ludGVyICAgICAgICAgID0gY29uc3QgX1RwICo7CisgICAgdXNpbmcgcmVmZXJlbmNlICAg
ICAgICAgICAgICA9IF9UcCAmOworICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgPSBj
b25zdCBfVHAgJjsKKyNpZiAoX1dURl9MSUJDUFBfREVCVUdfTEVWRUwgPT0gMikgfHwgZGVmaW5l
ZChfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lOVEVSX0lURVJBVE9SUykKKyAgICB1c2luZyBpdGVy
YXRvciAgICAgICAgICAgICAgID0gcG9pbnRlcjsKKyNlbHNlCisgICAgdXNpbmcgaXRlcmF0b3Ig
ICAgICAgICAgICAgICA9IF9fd3JhcF9pdGVyPHBvaW50ZXI+OworI2VuZGlmCisgICAgdXNpbmcg
cmV2ZXJzZV9pdGVyYXRvciAgICAgICA9IF9XVEZfVlNURDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVy
YXRvcj47CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuKHBvaW50ZXIgcHRyLCBzaXpl
X3R5cGUgY291bnQpCi0gICAgICAgIDogc3RvcmFnZV8ocHRyLCBjb3VudCkKLSAgICB7Ci0gICAg
ICAgIFRDQl9TUEFOX0VYUEVDVChleHRlbnQgPT0gZHluYW1pY19leHRlbnQgfHwgY291bnQgPT0g
ZXh0ZW50KTsKLSAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0g
ZHluYW1pY19leHRlbnQ7CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuKHBvaW50ZXIg
Zmlyc3RfZWxlbSwgcG9pbnRlciBsYXN0X2VsZW0pCi0gICAgICAgIDogc3RvcmFnZV8oZmlyc3Rf
ZWxlbSwgbGFzdF9lbGVtIC0gZmlyc3RfZWxlbSkKLSAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VY
UEVDVChleHRlbnQgPT0gZHluYW1pY19leHRlbnQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3RfZWxlbSAtIGZpcnN0X2VsZW0gPT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oZXh0ZW50KSk7Ci0gICAgfQorLy8gW3NwYW4uY29u
c10sIFNwYW4gY29uc3RydWN0b3JzLCBjb3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3Rvcgor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNl
cHQgOiBfX2RhdGF7bnVsbHB0cn0sIF9fc2l6ZXswfSB7fQogCi0gICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRlbnQg
fHwgTiA9PSBFKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVy
X2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50X3R5cGUgKCYpW05dLCBFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAg
aW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmYXJyKVtO
XSkgbm9leGNlcHQgOiBzdG9yYWdlXyhhcnIsIE4pCi0gICAge30KKyAgICBjb25zdGV4cHIgU3Bh
biAgICAgICAgICAgKGNvbnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgY29uc3Rl
eHByIFNwYW4mIG9wZXJhdG9yPShjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0g
ICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAg
ICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgICAgKEUg
PT0gZHluYW1pY19leHRlbnQgfHwgTiA9PSBFKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGRl
dGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiwgRWxlbWVudFR5cGU+Ojp2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwPgotICAgIFRDQl9TUEFOX0FS
UkFZX0NPTlNURVhQUiBTcGFuKHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mIGFycikgbm9leGNl
cHQKLSAgICAgICAgOiBzdG9yYWdlXyhhcnIuZGF0YSgpLCBOKQotICAgIHt9CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4ocG9pbnRlciBfX3B0ciwgc2l6
ZV90eXBlIF9fY291bnQpIDogX19kYXRhe19fcHRyfSwgX19zaXple19fY291bnR9IHt9CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4ocG9pbnRlciBfX2Ys
IHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9LCBfX3NpemV7c3RhdGljX2Nhc3Q8c3RkOjpzaXpl
X3Q+KHN0ZDo6ZGlzdGFuY2UoX19mLCBfX2wpKX0ge30KIAotICAgIHRlbXBsYXRlIDxzdGQ6OnNp
emVfdCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAotICAgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKLSAgICAgICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8
IE4gPT0gRSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9l
bGVtZW50X3R5cGVfY29tcGF0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAgICAg
ICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KLSAgICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIg
U3Bhbihjb25zdCBzdGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiBhcnIpIG5vZXhjZXB0Ci0gICAg
ICAgIDogc3RvcmFnZV8oYXJyLmRhdGEoKSwgTikKLSAgICB7fQorICAgIHRlbXBsYXRlIDxzdGQ6
OnNpemVfdCBfU3o+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25z
dGV4cHIgU3BhbihlbGVtZW50X3R5cGUgKCZfX2FycilbX1N6XSkgICAgICAgICAgbm9leGNlcHQg
OiBfX2RhdGF7X19hcnJ9LCBfX3NpemV7X1N6fSB7fQogCi0gICAgdGVtcGxhdGUgPAotICAgICAg
ICB0eXBlbmFtZSBDb250YWluZXIsIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVudCAm
JiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxDb250YWluZXI+Ojp2YWx1ZSAmJgotICAgICAgICAgICAg
ICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAg
ICAgICAgICAgICAgICBDb250YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAg
ICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNwYW4oQ29udGFpbmVyJiBjb250KQot
ICAgICAgICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNvbnQp
KQotICAgIHt9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNp
emVfdCBfU3osCisgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0
aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51bGxw
dHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAg
Y29uc3RleHByIFNwYW4oc3RkOjphcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX1N6PiYgX19hcnIp
IG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0sIF9fc2l6ZXtfU3p9IHt9CiAKLSAgICB0
ZW1wbGF0ZSA8Ci0gICAgICAgIHR5cGVuYW1lIENvbnRhaW5lciwgc3RkOjpzaXplX3QgRSA9IEV4
dGVudCwKLSAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICAgICBFID09
IGR5bmFtaWNfZXh0ZW50ICYmIGRldGFpbDo6aXNfY29udGFpbmVyPENvbnRhaW5lcj46OnZhbHVl
ICYmCi0gICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWluZXJfZWxlbWVudF90eXBlX2Nv
bXBhdGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRhaW5lciYsIEVsZW1lbnRU
eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KLSAgICBjb25zdGV4cHIg
U3Bhbihjb25zdCBDb250YWluZXImIGNvbnQpCi0gICAgICAgIDogc3RvcmFnZV8oZGV0YWlsOjpk
YXRhKGNvbnQpLCBkZXRhaWw6OnNpemUoY29udCkpCi0gICAge30KKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX090aGVyRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IF9TeiwKKyAgICAgICAgICAgICAgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5
cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBz
dGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfU3o+JiBfX2Fycikgbm9leGNlcHQgOiBfX2Rh
dGF7X19hcnIuZGF0YSgpfSwgX19zaXple19Ten0ge30KIAotICAgIGNvbnN0ZXhwciBTcGFuKGNv
bnN0IFNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPGNsYXNz
IF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAg
Y29uc3RleHByIFNwYW4oICAgICAgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1Rw
Pjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZT
VEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0g
e30KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVf
dCBPdGhlckV4dGVudCwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0g
ICAgICAgICAgICAgICAgICAoRXh0ZW50ID09IE90aGVyRXh0ZW50IHx8IEV4dGVudCA9PSBkeW5h
bWljX2V4dGVudCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxl
PE90aGVyRWxlbWVudFR5cGUgKCopW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFbGVtZW50VHlwZSAoKilbXT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAg
aW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNwYW4oY29uc3QgU3BhbjxPdGhlckVsZW1l
bnRUeXBlLCBPdGhlckV4dGVudD4mIG90aGVyKSBub2V4Y2VwdAotICAgICAgICA6IHN0b3JhZ2Vf
KG90aGVyLmRhdGEoKSwgb3RoZXIuc2l6ZSgpKQotICAgIHt9CisgICAgdGVtcGxhdGUgPGNsYXNz
IF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAg
Y29uc3RleHByIFNwYW4oY29uc3QgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8Y29uc3QgX0NvbnRhaW5l
ciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9fZGF0YXtf
V1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUo
X19jKX0ge30KIAotICAgIH5TcGFuKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0gICAgVENCX1NQ
QU5fQ09OU1RFWFBSX0FTU0lHTiBTcGFuJgotICAgIG9wZXJhdG9yPShjb25zdCBTcGFuJiBvdGhl
cikgbm9leGNlcHQgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50
VHlwZSwgc3RkOjpzaXplX3QgX090aGVyRXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVu
dFR5cGUsIF9PdGhlckV4dGVudD4mIF9fb3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVy
dGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUgKCopW10+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyX3Q+ID0gbnVsbHB0cikgbm9leGNlcHQKKyAg
ICAgICAgOiBfX2RhdGF7X19vdGhlci5kYXRhKCl9LCBfX3NpemV7X19vdGhlci5zaXplKCl9IHt9
CiAKLSAgICAvLyBbc3Bhbi5zdWJdLCBzcGFuIHN1YnZpZXdzCi0gICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IENvdW50PgotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90eXBl
LCBDb3VudD4gZmlyc3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNUKENv
dW50IDw9IHNpemUoKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpLCBDb3VudH07Ci0gICAgfQor
Ly8gICAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZSA8c3RkOjpz
aXplX3QgQ291bnQ+Ci0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUs
IENvdW50PiBsYXN0KCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0NvdW50Pgor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxl
bWVudF90eXBlLCBfQ291bnQ+IGZpcnN0KCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAg
IFRDQl9TUEFOX0VYUEVDVChDb3VudCA8PSBzaXplKCkpOwotICAgICAgICByZXR1cm4ge2RhdGEo
KSArIChzaXplKCkgLSBDb3VudCksIENvdW50fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJU
KF9Db3VudCA8PSBzaXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIp
OworICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291
bnR9OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6
ZV90IENvdW50ID0gZHluYW1pY19leHRlbnQ+Ci0gICAgdXNpbmcgc3Vic3Bhbl9yZXR1cm5fdCA9
Ci0gICAgICAgIFNwYW48RWxlbWVudFR5cGUsIENvdW50ICE9IGR5bmFtaWNfZXh0ZW50Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IENvdW50Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IChFeHRlbnQgIT0gZHluYW1pY19leHRlbnQgPyBFeHRlbnQgLSBPZmZzZXQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IGR5bmFtaWNfZXh0ZW50KT47Ci0KLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgT2Zmc2V0LCBz
dGQ6OnNpemVfdCBDb3VudCA9IGR5bmFtaWNfZXh0ZW50PgotICAgIFRDQl9TUEFOX0NPTlNURVhQ
UjExIHN1YnNwYW5fcmV0dXJuX3Q8T2Zmc2V0LCBDb3VudD4gc3Vic3BhbigpIGNvbnN0CisgICAg
dGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBsYXN0KCkg
Y29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChPZmZzZXQgPD0g
c2l6ZSgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAoQ291bnQgPT0gZHluYW1pY19leHRl
bnQgfHwgT2Zmc2V0ICsgQ291bnQgPD0gc2l6ZSgpKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgp
ICsgT2Zmc2V0LAotICAgICAgICAgICAgICAgIENvdW50ICE9IGR5bmFtaWNfZXh0ZW50ID8gQ291
bnQgOiBzaXplKCkgLSBPZmZzZXR9OworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50
IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KCkiKTsKKyAgICAg
ICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9D
b3VudCwgX0NvdW50fTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVs
ZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+Ci0gICAgZmlyc3Qoc2l6ZV90eXBlIGNvdW50KSBj
b25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNw
YW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gZmlyc3Qoc2l6ZV90eXBlIF9fY291bnQp
IGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoY291bnQgPD0g
c2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHtkYXRhKCksIGNvdW50fTsKKyAgICAgICAgX1dURl9M
SUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNw
YW46OmZpcnN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07CiAg
ICAgfQogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFt
aWNfZXh0ZW50PgotICAgIGxhc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdAorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBk
eW5hbWljX2V4dGVudD4gbGFzdCAoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoY291bnQgPD0gc2l6ZSgpKTsKLSAgICAgICAg
cmV0dXJuIHtkYXRhKCkgKyAoc2l6ZSgpIC0gY291bnQpLCBjb3VudH07CisgICAgICAgIF9XVEZf
TElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBT
cGFuOjpsYXN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIHNpemUoKSAtIF9f
Y291bnQsIF9fY291bnR9OwogICAgIH0KIAotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48
ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KLSAgICBzdWJzcGFuKHNpemVfdHlwZSBvZmZz
ZXQsIHNpemVfdHlwZSBjb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdAorICAgIHRlbXBsYXRl
IDxzdGQ6OnNpemVfdCBfT2Zmc2V0LCBzdGQ6OnNpemVfdCBfQ291bnQgPSBkeW5hbWljX2V4dGVu
dD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFu
PGVsZW1lbnRfdHlwZSwgX0NvdW50PiBzdWJzcGFuKCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0g
ICAgICAgIFRDQl9TUEFOX0VYUEVDVChvZmZzZXQgPD0gc2l6ZSgpICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgICAoY291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgb2Zmc2V0ICsgY291bnQgPD0g
c2l6ZSgpKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgb2Zmc2V0LAotICAgICAgICAgICAg
ICAgIGNvdW50ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6ZSgpIC0gb2Zmc2V0IDogY291bnR9Owor
ICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX09mZnNldCA8PSBzaXplKCksICJPZmZzZXQgb3V0
IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NF
UlQoX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IF9Db3VudCA8PSBzaXplKCkgLSBfT2Zmc2V0
LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOworICAg
ICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgX09mZnNldCwg
X0NvdW50ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6ZSgpIC0gX09mZnNldCA6IF9Db3VudH07CiAg
ICAgfQogCi0gICAgLy8gW3NwYW4ub2JzXSwgc3BhbiBvYnNlcnZlcnMKLSAgICBjb25zdGV4cHIg
c2l6ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdG9yYWdlXy5zaXplOyB9
Ci0KLSAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdAor
ICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBzdWJzcGFuKHNpemVfdHlwZSBfX29mZnNl
dCwgc2l6ZV90eXBlIF9fY291bnQgPSBkeW5hbWljX2V4dGVudCkgY29uc3Qgbm9leGNlcHQKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzaXplKCkgKiBzaXplb2YoZWxlbWVudF90eXBlKTsKKyAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fb2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2Yg
cmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX19jb3VudCAgPD0gc2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1pY19leHRl
bnQsICJjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIp
OworICAgICAgICBpZiAoX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCkKKyAgICAgICAgICAgIHJl
dHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIHNpemUoKSAtIF9fb2Zmc2V0fTsKKyAgICAgICAgX1dU
Rl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBj
b3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAg
ICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBfX2NvdW50fTsKICAgICB9CiAKLSAgICBU
Q0JfU1BBTl9OT0RJU0NBUkQgY29uc3RleHByIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2VwdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHNpemUoKSA9PSAwOwotICAgIH0KKyAgICBfV1RGX0xJQkNQ
UF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAgICAgICBjb25z
dCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemU7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiBfX3NpemUgKiBzaXplb2YoZWxlbWVudF90eXBlKTsgfQorICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgICAgICAgICAgIGNvbnN0
IG5vZXhjZXB0IHsgcmV0dXJuIF9fc2l6ZSA9PSAwOyB9CiAKLSAgICAvLyBbc3Bhbi5lbGVtXSwg
c3BhbiBlbGVtZW50IGFjY2VzcwotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIHJlZmVyZW5jZSBv
cGVyYXRvcltdKHNpemVfdHlwZSBpZHgpIGNvbnN0CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBfX2lkeCkg
Y29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChpZHggPCBzaXpl
KCkpOwotICAgICAgICByZXR1cm4gKihkYXRhKCkgKyBpZHgpOworICAgICAgICBfV1RGX0xJQkNQ
UF9BU1NFUlQoX19pZHggPCBzaXplKCksICJTcGFuPFQ+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIp
OworICAgICAgICByZXR1cm4gX19kYXRhW19faWR4XTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9D
T05TVEVYUFIxMSByZWZlcmVuY2UgZnJvbnQoKSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2VwdAog
ICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNUKCFlbXB0eSgpKTsKLSAgICAgICAgcmV0dXJu
ICpkYXRhKCk7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VD5b
XS5mcm9udCgpIG9uIGVtcHR5IFNwYW4iKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVswXTsKICAg
ICB9CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSByZWZlcmVuY2UgYmFjaygpIGNvbnN0Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBiYWNr
KCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVCghZW1wdHko
KSk7Ci0gICAgICAgIHJldHVybiAqKGRhdGEoKSArIChzaXplKCkgLSAxKSk7CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VD5bXS5iYWNrKCkgb24gZW1wdHkgU3Bh
biIpOworICAgICAgICByZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKICAgICB9CiAKLSAgICBjb25z
dGV4cHIgcG9pbnRlciBkYXRhKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3RvcmFnZV8ucHRy
OyB9CiAKLSAgICAvLyBbc3Bhbi5pdGVyYXRvcnNdLCBzcGFuIGl0ZXJhdG9yIHN1cHBvcnQKLSAg
ICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRh
KCk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcG9pbnRl
ciBkYXRhKCkgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4g
X19kYXRhOyB9CiAKLSAgICBjb25zdGV4cHIgaXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9CisvLyBbc3Bhbi5pdGVyXSwgU3BhbiBpdGVyYXRv
ciBzdXBwb3J0CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGl0
ZXJhdG9yICAgICAgICAgICAgICAgICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0
ZXJhdG9yKGRhdGEoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25z
dGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgZW5kKCkgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gaXRlcmF0b3IoZGF0YSgpICsgc2l6ZSgpKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAgICByYmVnaW4oKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAg
ICAgICAgIHJlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJl
Z2luKCkpOyB9CiAKLSAgICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgcmV2ZXJzZV9pdGVyYXRv
ciByYmVnaW4oKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJldmVyc2Vf
aXRlcmF0b3IoZW5kKCkpOwotICAgIH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WSBTcGFuPGNvbnN0IHN0ZDo6Ynl0ZSwgZHluYW1pY19leHRlbnQ+IF9fYXNfYnl0ZXMoKSBjb25z
dCBub2V4Y2VwdAorICAgIHsgcmV0dXJuIFNwYW48Y29uc3Qgc3RkOjpieXRlLCBkeW5hbWljX2V4
dGVudD57cmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdGQ6OmJ5dGUgKj4oZGF0YSgpKSwgc2l6ZV9i
eXRlcygpfTsgfQogCi0gICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIHJldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICByZXR1cm4gcmV2ZXJzZV9p
dGVyYXRvcihiZWdpbigpKTsKLSAgICB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ
VFkgU3BhbjxzdGQ6OmJ5dGUsIGR5bmFtaWNfZXh0ZW50PiBfX2FzX3dyaXRhYmxlX2J5dGVzKCkg
Y29uc3Qgbm9leGNlcHQKKyAgICB7IHJldHVybiBTcGFuPHN0ZDo6Ynl0ZSwgZHluYW1pY19leHRl
bnQ+e3JlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpieXRlICo+KGRhdGEoKSksIHNpemVfYnl0ZXMoKX07
IH0KIAogcHJpdmF0ZToKLSAgICBzdG9yYWdlX3R5cGUgc3RvcmFnZV97fTsKKyAgICBwb2ludGVy
ICAgX19kYXRhOworICAgIHNpemVfdHlwZSBfX3NpemU7CiB9OwogCi0jaWZkZWYgVENCX1NQQU5f
SEFWRV9ERURVQ1RJT05fR1VJREVTCisjaWYgIWRlZmluZWQoX1dURl9MSUJDUFBfSEFTX05PX1JB
TkdFUykKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+CitpbmxpbmUg
Y29uc3RleHByIGJvb2wgc3RkOjpyYW5nZXM6OmVuYWJsZV9ib3Jyb3dlZF9yYW5nZTxTcGFuPF9U
cCwgX0V4dGVudD4gPiA9IHRydWU7CisjZW5kaWYgLy8gIWRlZmluZWQoX1dURl9MSUJDUFBfSEFT
X05PX1JBTkdFUykKKworLy8gIGFzQnl0ZXMgJiBhc1dyaXRhYmxlQnl0ZXMKK3RlbXBsYXRlIDxj
bGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9FeHRlbnQ+CitfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWQorYXV0byBhc0J5dGVzKFNwYW48X1RwLCBfRXh0ZW50PiBfX3MpIG5vZXhjZXB0CistPiBk
ZWNsdHlwZShfX3MuX19hc19ieXRlcygpKQoreyByZXR1cm4gICAgX19zLl9fYXNfYnl0ZXMoKTsg
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgorX1dURl9MSUJD
UFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2F1dG8gYXNXcml0YWJsZUJ5dGVzKFNwYW48X1RwLCBfRXh0
ZW50PiBfX3MpIG5vZXhjZXB0CistPiBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2NvbnN0X3Y8
X1RwPiwgZGVjbHR5cGUoX19zLl9fYXNfd3JpdGFibGVfYnl0ZXMoKSk+Cit7IHJldHVybiBfX3Mu
X19hc193cml0YWJsZV9ieXRlcygpOyB9CisKKy8vICBEZWR1Y3Rpb24gZ3VpZGVzCit0ZW1wbGF0
ZTxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KKyAgICBTcGFuKF9UcCAoJilbX1N6XSkgLT4g
U3BhbjxfVHAsIF9Tej47CisKK3RlbXBsYXRlPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX1N6Pgor
ICAgIFNwYW4oc3RkOjphcnJheTxfVHAsIF9Tej4mKSAtPiBTcGFuPF9UcCwgX1N6PjsKKwordGVt
cGxhdGU8Y2xhc3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+CisgICAgU3Bhbihjb25zdCBzdGQ6OmFy
cmF5PF9UcCwgX1N6PiYpIC0+IFNwYW48Y29uc3QgX1RwLCBfU3o+OwogCi0vKiBEZWR1Y3Rpb24g
R3VpZGVzICovCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+Ci1TcGFuKFQgKCYpW05dKS0+
U3BhbjxULCBOPjsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgotU3BhbihzdGQ6OmFy
cmF5PFQsIE4+JiktPlNwYW48VCwgTj47Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4K
LVNwYW4oY29uc3Qgc3RkOjphcnJheTxULCBOPiYpLT5TcGFuPGNvbnN0IFQsIE4+OwotCi10ZW1w
bGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotU3BhbihDb250YWluZXImKS0+U3Bhbjx0eXBlbmFtZSBD
b250YWluZXI6OnZhbHVlX3R5cGU+OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotU3Bh
bihjb25zdCBDb250YWluZXImKS0+U3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVl
X3R5cGU+OwotCi0jZW5kaWYgLy8gVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCi0KLSNp
ZmRlZiBUQ0JfU1BBTl9JTkNMVURFX01BS0VfU1BBTgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVudD4KLWNvbnN0ZXhwciBTcGFuPEVsZW1lbnRUeXBl
LCBFeHRlbnQ+Ci1tYWtlX3NwYW4oU3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50PiBzKSBub2V4Y2Vw
dAotewotICAgIHJldHVybiBzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXpl
X3QgTj4KLWNvbnN0ZXhwciBTcGFuPFQsIE4+IG1ha2Vfc3BhbihUICgmYXJyKVtOXSkgbm9leGNl
cHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6
OnNpemVfdCBOPgotVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48VCwgTj4gbWFrZV9zcGFu
KHN0ZDo6YXJyYXk8VCwgTj4mIGFycikgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotVENCX1NQQU5fQVJSQVlf
Q09OU1RFWFBSIFNwYW48Y29uc3QgVCwgTj4KLW1ha2Vfc3Bhbihjb25zdCBzdGQ6OmFycmF5PFQs
IE4+JiBhcnIpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHthcnJ9OwotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29udGFpbmVyPgotY29uc3RleHByIFNwYW48dHlwZW5hbWUgQ29udGFpbmVyOjp2
YWx1ZV90eXBlPiBtYWtlX3NwYW4oQ29udGFpbmVyJiBjb250KQotewotICAgIHJldHVybiB7Y29u
dH07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1jb25zdGV4cHIgU3Bhbjxj
b25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+Ci1tYWtlX3NwYW4oY29uc3QgQ29u
dGFpbmVyJiBjb250KQotewotICAgIHJldHVybiB7Y29udH07Ci19Ci0jZW5kaWYgLy8gVENCX1NQ
QU5fSU5DTFVERV9NQUtFX1NQQU4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBz
dGQ6OnNpemVfdCBFeHRlbnQ+Ci1TcGFuPGNvbnN0IGJ5dGUsICgoRXh0ZW50ID09IGR5bmFtaWNf
ZXh0ZW50KSA/IGR5bmFtaWNfZXh0ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgotYXNCeXRlcyhT
cGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHtyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKLX0K
LQotdGVtcGxhdGUgPAotICAgIGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50LAotICAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnN0PEVsZW1lbnRUeXBlPjo6dmFs
dWUsIGludD46OnR5cGUgPSAwPgotU3BhbjxieXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4dGVu
dCkgPyBkeW5hbWljX2V4dGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiBzaXplb2YoRWxlbWVudFR5cGUpICogRXh0ZW50KT4KLWFzV3JpdGFibGVCeXRlcyhTcGFu
PEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHtyZWludGVy
cHJldF9jYXN0PGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKLX0KLQotdGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+Ci1jb25zdGV4cHIg
YXV0byBnZXQoU3BhbjxFLCBTPiBzKSAtPiBkZWNsdHlwZShzW05dKQotewotICAgIHJldHVybiBz
W05dOwotfQotCi19IC8vIG5hbWVzcGFjZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRQotCi1uYW1l
c3BhY2Ugc3RkIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0
ZW50PgotY2xhc3MgdHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxFbGVt
ZW50VHlwZSwgRXh0ZW50Pj4KLSAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3Qs
IEV4dGVudD4ge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIHR1
cGxlX3NpemU8VENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OlNwYW48Ci0gICAgRWxlbWVudFR5cGUs
IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudD4+OyAvLyBub3QgZGVmaW5l
ZAordGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBTcGFuKF9Db250YWluZXImKSAtPiBT
cGFuPHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGU+OwogCi10ZW1wbGF0ZSA8c2l6ZV90
IEksIHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50PgotY2xhc3MgdHVwbGVfZWxl
bWVudDxJLCBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50
Pj4gewotcHVibGljOgotICAgIHN0YXRpY19hc3NlcnQoRXh0ZW50ICE9IFRDQl9TUEFOX05BTUVT
UEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudCAmJgotICAgICAgICAgICAgICAgICAgICAgIEkgPCBF
eHRlbnQsCi0gICAgICAgICAgICAgICAgICAiIik7Ci0gICAgdXNpbmcgdHlwZSA9IEVsZW1lbnRU
eXBlOwotfTsKK3RlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+CisgICAgU3Bhbihjb25zdCBfQ29u
dGFpbmVyJikgLT4gU3Bhbjxjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlPjsK
IAotfSAvLyBlbmQgbmFtZXNwYWNlIHN0ZAorX1dURl9MSUJDUFBfRU5EX05BTUVTUEFDRQogCiB1
c2luZyBXVEY6OlNwYW47CiB1c2luZyBXVEY6OmFzQnl0ZXM7CiB1c2luZyBXVEY6OmFzV3JpdGFi
bGVCeXRlczsKIAotI2VuZGlmIC8vIFRDQl9TUEFOX0hQUF9JTkNMVURFRAorI2VuZGlmIC8vIF9X
VEZfTElCQ1BQX1NQQU4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XVEYvd3RmL2NmL1NwYW5DRi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
cGFuLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+
IGFzQnl0ZXMoQ0ZEYXRhUmVmIGRhdGEpCit7CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzdGQ6OmJ5dGUqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YSkpIH07Cit9CisKK2lubGluZSBTcGFuPGNvbnN0
IHN0ZDo6Ynl0ZT4gYXNCeXRlcyhSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKQoreworICAgIHJl
dHVybiBhc0J5dGVzKGRhdGEuZ2V0KCkpOworfQorCit9CisKK3VzaW5nIFdURjo6YXNCeXRlczsK
</data>
<flag name="commit-queue"
          id="453712"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431827</attachid>
            <date>2021-06-20 15:19:29 -0700</date>
            <delta_ts>2021-06-20 15:29:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227197-20210620151928.patch</filename>
            <type>text/plain</type>
            <size>46143</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFNwYW4gaW1wbGVtZW50YXRpb24gd2l0aCBv
bmUgZnJvbSBsaWJjKyssIHdoaWNoIGlzIG1vcmUgc3BlYyBjb21wbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwYW4uaDoKKwogMjAy
MS0wNi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQg
U3BhbiBpbiBTSEExLmgKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjkyLDYgKzY5Miw4IEBACiAJCUFEODlCNkI5
MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREYyQ0U2NDFFMzlGMTA2MDA2
ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUZvb3RwcmludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBREYy
Q0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNGRUI1RDI2N0ZDRDM0MDA1NDAwNkEgLyog
U3BhbkNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYW5DRi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNGRUI1RTI2N0ZDRDQ2MDA1NDAwNkEgLyogU3Bh
bkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYW5Db2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0EzMEM3RjI2NkQzMDM0MDAwRDIzMEMgLyog
U3Bhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQkNGQzNFMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQkNGQzNGMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQwLDYgKzg0Miw3IEBACiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzky
MjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAv
KiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hl
ZHVsZVBhaXJDRi5jcHAgKi8sCisJCQkJQkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5D
Ri5oICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICov
LAogCQkJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwpA
QCAtMTU4MSw2ICsxNTg0LDcgQEAKIAkJCQkxQ0E4NUNBODI0MUIwQjI2MDA3MUMyRjUgLyogUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwICovLAogCQkJCTFDQTg1Q0E3MjQxQjBCMTEw
MDcxQzJGNSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5oICovLAogCQkJCUEzMEQ0
MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAorCQkJCUJDM0ZFQjVFMjY3
RkNENDYwMDU0MDA2QSAvKiBTcGFuQ29jb2EuaCAqLywKIAkJCQlFQjYxRURDNjI0MDlDQ0MwMDAx
RUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCAqLywKIAkJCQk1Q0MwRUU4NjIxNjJCQzIy
MDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8sCiAJCQkJOTMyNDE2NTcyNDNCQzJFNTAwMzJGQUFF
IC8qIFZlY3RvckNvY29hLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUZUVy5jbWFrZQkocmV2
aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIGlmIChV
U0VfQ0YpCiAgICAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgICAgIGNmL0NG
VVJMRXh0cmFzLmgKKyAgICAgICAgY2YvU3BhbkNGLmgKICAgICAgICAgY2YvVHlwZUNhc3RzQ0Yu
aAogCiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ29uY2F0ZW5hdGVDRi5oCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgbGlzdChBUFBF
TkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgV2Vha09iakNQdHIuaAogCiAgICAgY2YvQ0ZVUkxF
eHRyYXMuaAorICAgIGNmL1NwYW5DRi5oCiAgICAgY2YvVHlwZUNhc3RzQ0YuaAogCiAgICAgY29j
b2EvQ3Jhc2hSZXBvcnRlci5oCkBAIC0xOCw2ICsxOSw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJM
SUNfSEVBREVSUwogICAgIGNvY29hL05TVVJMRXh0cmFzLmgKICAgICBjb2NvYS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3NDb2NvYS5oCiAgICAgY29jb2EvU29mdExpbmtpbmcuaAorICAgIGNvY29h
L1NwYW5Db2NvYS5oCiAgICAgY29jb2EvVmVjdG9yQ29jb2EuaAogCiAgICAgZGFyd2luL1dlYWtM
aW5raW5nLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNzkwNTQp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiBpZiAoVVNFX0NGKQogICAg
IGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5o
CisgICAgICAgIGNmL1NwYW5DRi5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAgICAg
ICB0ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRlQ0YuaApJbmRleDogU291cmNlL1dURi93dGYvU3Bh
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAkocmV2aXNpb24gMjc5MDU0
KQorKysgU291cmNlL1dURi93dGYvU3Bhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYyMCArMSw0
NTggQEAKLS8vICAgICAgICAgICAgICBDb3B5cmlnaHQgVHJpc3RhbiBCcmluZGxlIDIwMTguCi0v
LyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAx
LjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIC4uL0xJQ0VOU0VfMV8wLUJvb3N0LnR4
dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwczovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8x
XzAudHh0KQotCi0vLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIEMrKzIwJ3Mgc3RkOjpz
cGFuIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIw
MTkvbjQ4MjAucGRmCi0KLS8vIFRoaXMgaGFzIGJlZW4gbW9kaWZpZWQgZnJvbSB0aGUgb3JpZ2lu
YWwgdmVyc2lvbiB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKLS8vICAgUmVuYW1lZCB0
Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfYnl0ZXMgdG8gV1RG
Ojphc0J5dGVzLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfd3JpdGFibGVfYnl0ZXMgdG8gV1RGOjph
c1dyaXRhYmxlQnl0ZXMuCi0KLSNpZm5kZWYgVENCX1NQQU5fSFBQX0lOQ0xVREVECi0jZGVmaW5l
IFRDQl9TUEFOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y3N0
ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotCi0jaWZu
ZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKLS8vIEF0dGVtcHQgdG8gZGlzY292ZXIgd2hldGhl
ciB3ZSdyZSBiZWluZyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0Ci0jaWYgIShkZWZp
bmVkKF9fY3BwX2V4Y2VwdGlvbnMpIHx8IGRlZmluZWQoX19FWENFUFRJT05TKSB8fCBkZWZpbmVk
KF9DUFBVTldJTkQpKQotI2RlZmluZSBUQ0JfU1BBTl9OT19FWENFUFRJT05TCi0jZW5kaWYKLSNl
bmRpZgotCi0jaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKLSNpbmNsdWRlIDxjc3RkaW8+
Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2VuZGlmCisvLyAtKi0gQysrIC0qLQorLy89PT0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3BhbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6
Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisv
Lz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgX1dURl9MSUJDUFBfU1BBTgorI2RlZmlu
ZSBfV1RGX0xJQkNQUF9TUEFOCisKKy8vIEltcG9ydHMgYSBjb3B5IG9mIDxzcGFuPiBmcm9tIGU4
OTI3MDVkNzRjNzM2NmExNDA0YTNiMzQ3MTAwMWVkYWE3NjU5Zjggb2YgdGhlCisvLyBsaWJjKysg
cHJvamVjdCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0LmdpdCkgYW5kIG1v
ZGlmaWVzIGl0IHRvCisvLyB3b3JrIG9uIHRvcCBvZiBhbnkgc3RhbmRhcmQgbGlicmFyeSBpbXBs
ZW1lbnRhdGlvbi4KKy8vCisvLyAtIFJlbmFtZXMgbWFjcm9zIHdpdGggX0xJQkNQUF8gcHJlZml4
IHRvIHVzZSB0aGUgcHJlZml4IF9XVEZfTElCQ1BQXworLy8gLSBSZW5hbWVzIHN0ZDo6c3BhbiB0
byBXVEY6OlNwYW4KKy8vIC0gUmVuYW1lcyBzdGQ6OmFzX2J5dGVzL3N0ZDo6YXNfd3JpdGFibGVf
Ynl0ZXMgdG8gV1RGOjphc0J5dGVzL1dURjo6YXNXcml0YWJsZUJ5dGVzLgorLy8gLSBTdG9wICNp
bmNsdWRpbmcgaW50ZXJuYWwgbGliYysrIGhlYWRlcnMuCisvLyAtIFJlbW92ZSBjaGVjayBmb3Ig
PiBjKysxNy4KKy8vIC0gUmVtb3ZlIHB1c2gvcG9wIGF2YWlsYWJpbGl0eSBvZiBtaW4vbWF4IG1h
Y3Jvcy4KKworI2luY2x1ZGUgPGFycmF5PiAgICAgICAgLy8gZm9yIGFycmF5CisjaW5jbHVkZSA8
Y3N0ZGRlZj4gICAgICAvLyBmb3IgYnl0ZQorI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgLy8gZm9y
IGl0ZXJhdG9ycworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPiAgLy8gZm9yIHJlbW92ZV9jdiwgZXRj
CisKKy8vIEFkZHMgc29tZSBtYWNybyBkZWZpbmVzIHVzdWFsbHkgZGVmaW5lZCBpbiBfX2NvbmZp
Zy4KKworI2RlZmluZSBfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lOVEVSX0lURVJBVE9SUworI2Rl
ZmluZSBfV1RGX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0UgbmFtZXNwYWNlIFdURiB7CisjZGVmaW5l
IF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMIDAKKyNkZWZpbmUgX1dURl9MSUJDUFBfRU5EX05BTUVT
UEFDRSAgfQorI2RlZmluZSBfV1RGX0xJQkNQUF9IQVNfTk9fUkFOR0VTCisjZGVmaW5lIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisjZGVmaW5lIF9XVEZfTElCQ1BQX1RFTVBMQVRFX1ZJ
UworI2RlZmluZSBfV1RGX1ZTVEQgc3RkCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2RlZmluZSBfV1RGX0xJQkNQUF9BU1NFUlQgQVNTRVJUCisKK19XVEZfTElCQ1BQX0JFR0lOX05B
TUVTUEFDRQorCitpbmxpbmUgY29uc3RleHByIHN0ZDo6c2l6ZV90IGR5bmFtaWNfZXh0ZW50ID0g
c3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCgpOwordGVtcGxhdGUgPHR5cGVu
YW1lIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudCA9IGR5bmFtaWNfZXh0ZW50PiBjbGFzcyBTcGFu
OworCisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zcGFuX2ltcGwgOiBwdWJs
aWMgc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzdGQ6OnNpemVf
dCBfRXh0ZW50Pgorc3RydWN0IF9faXNfc3Bhbl9pbXBsPFNwYW48X1RwLCBfRXh0ZW50Pj4gOiBw
dWJsaWMgc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3Qg
X19pc19zcGFuIDogcHVibGljIF9faXNfc3Bhbl9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4g
e307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zdGRfYXJyYXlfaW1wbCA6
IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIHN0ZDo6
c2l6ZV90IF9Tej4KK3N0cnVjdCBfX2lzX3N0ZF9hcnJheV9pbXBsPHN0ZDo6YXJyYXk8X1RwLCBf
U3o+PiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4K
K3N0cnVjdCBfX2lzX3N0ZF9hcnJheSA6IHB1YmxpYyBfX2lzX3N0ZF9hcnJheV9pbXBsPHN0ZDo6
cmVtb3ZlX2N2X3Q8X1RwPj4ge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9FbGVt
ZW50VHlwZSwgY2xhc3MgPSB2b2lkPgorc3RydWN0IF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRh
aW5lciA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAs
IGNsYXNzIF9FbGVtZW50VHlwZT4KK3N0cnVjdCBfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWlu
ZXI8X1RwLCBfRWxlbWVudFR5cGUsCisgICAgICAgIHN0ZDo6dm9pZF90PAorICAgICAgICAvLyBp
cyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBTcGFuCisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjwhX19pc19zcGFuPF9UcD46OnZhbHVlLCBudWxscHRyX3Q+Ojp0eXBlLAorICAg
ICAgICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBhcnJheQorICAgICAgICAgICAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8IV9faXNfc3RkX2FycmF5PF9UcD46OnZhbHVlLCBudWxscHRy
X3Q+Ojp0eXBlLAorICAgICAgICAvLyBzZDo6aXNfYXJyYXlfdjxDb250YWluZXI+IGlzIGZhbHNl
LAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfYXJyYXlfdjxf
VHA+LCBudWxscHRyX3Q+Ojp0eXBlLAorICAgICAgICAvLyBzdGQ6OmRhdGEoY29udCkgYW5kIHN0
ZDo6c2l6ZShjb250KSBhcmUgd2VsbCBmb3JtZWQKKyAgICAgICAgICAgIGRlY2x0eXBlKHN0ZDo6
ZGF0YShzdGQ6OmRlY2x2YWw8X1RwPigpKSksCisgICAgICAgICAgICBkZWNsdHlwZShzdGQ6OnNp
emUoc3RkOjpkZWNsdmFsPF9UcD4oKSkpLAorICAgICAgICAvLyByZW1vdmVfcG9pbnRlcl90PGRl
Y2x0eXBlKGRhdGEoY29udCkpPigqKVtdIGlzIGNvbnZlcnRpYmxlIHRvIEVsZW1lbnRUeXBlKCop
W10KKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAg
IHN0ZDo6aXNfY29udmVydGlibGVfdjxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8ZGVjbHR5cGUoc3Rk
OjpkYXRhKHN0ZDo6ZGVjbHZhbDxfVHAgJj4oKSkpPigqKVtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0VsZW1lbnRUeXBlKCopW10+LAorICAgICAgICAgICAgICAgIG51bGxw
dHJfdD46OnR5cGUKKyAgICAgICAgPj4KKyAgICA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7fTsK
IAotLy8gVmFyaW91cyBmZWF0dXJlIHRlc3QgbWFjcm9zCiAKLSNpZm5kZWYgVENCX1NQQU5fTkFN
RVNQQUNFX05BTUUKLSNkZWZpbmUgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUgV1RGCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50PgorY2xhc3MgX1dURl9MSUJDUFBf
VEVNUExBVEVfVklTIFNwYW4geworcHVibGljOgorLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAg
ICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAgIHVzaW5nIHZhbHVlX3R5
cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47CisgICAgdXNpbmcgc2l6ZV90
eXBlICAgICAgICAgICAgICA9IHN0ZDo6c2l6ZV90OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlw
ZSAgICAgICAgPSBzdGQ6OnB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAg
ICAgID0gX1RwICo7CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9U
cCAqOworICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2lu
ZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQ
X0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRF
Ul9JVEVSQVRPUlMpCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7
CisjZWxzZQorICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxw
b2ludGVyPjsKICNlbmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RG
X1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogCi0jaWYgX19jcGx1c3BsdXMgPj0g
MjAxNzAzTCB8fCAoZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNWQ19MQU5HID49IDIwMTcwM0wp
Ci0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTcKLSNlbmRpZgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90eXBlIGV4dGVudCA9IF9FeHRlbnQ7CiAKLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDE0
MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0gMjAxNDAyTCkKLSNk
ZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAotI2VuZGlmCisvLyBbc3Bhbi5jb25zXSwgc3BhbiBj
b25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisgICAgdGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IF9TeiA9IF9FeHRlbnQsIHN0ZDo6ZW5hYmxlX2lmX3Q8X1N6ID09IDAs
IG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVsbHB0cn0ge30KIAotbmFtZXNw
YWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIHsKKyAgICBjb25zdGV4cHIgU3BhbiAgICAgICAg
ICAgKGNvbnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIFNwYW4m
IG9wZXJhdG9yPShjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0vLyBFc3RhYmxp
c2ggZGVmYXVsdCBjb250cmFjdCBjaGVja2luZyBiZWhhdmlvcgotI2lmICFkZWZpbmVkKFRDQl9T
UEFOX1RIUk9XX09OX0NPTlRSQUNUX1ZJT0xBVElPTikgJiYgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAhZGVmaW5lZChUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFU
SU9OKSAmJiAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIWRlZmluZWQoVENCX1NQQU5fTk9f
Q09OVFJBQ1RfQ0hFQ0tJTkcpCi0jaWYgZGVmaW5lZChOREVCVUcpIHx8ICFkZWZpbmVkKFRDQl9T
UEFOX0hBVkVfQ1BQMTQpCi0jZGVmaW5lIFRDQl9TUEFOX05PX0NPTlRSQUNUX0NIRUNLSU5HCi0j
ZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OCi0j
ZW5kaWYKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciBleHBsaWNpdCBTcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0
YXtfX3B0cn0KKyAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4
dGVudCA9PSBfX2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKHB0
ciwgbGVuKSIpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IGV4cGxpY2l0IFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9Cisg
ICAgICAgIHsgKHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gc3Rk
OjpkaXN0YW5jZShfX2YsIF9fbCksICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3Rv
ciAocHRyLCBwdHIpIik7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09OVFJB
Q1RfVklPTEFUSU9OKQotc3RydWN0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvciA6IHN0ZDo6bG9n
aWNfZXJyb3IgewotICAgIGV4cGxpY2l0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvcihjb25zdCBj
aGFyKiBtc2cpIDogc3RkOjpsb2dpY19lcnJvcihtc2cpCi0gICAge30KLX07CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmX19h
cnIpW19FeHRlbnRdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0ge30KIAotaW5s
aW5lIHZvaWQgY29udHJhY3RfdmlvbGF0aW9uKGNvbnN0IGNoYXIqIG1zZykKLXsKLSAgICB0aHJv
dyBjb250cmFjdF92aW9sYXRpb25fZXJyb3IobXNnKTsKLX0KLQotI2VsaWYgZGVmaW5lZChUQ0Jf
U1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQotW1tub3JldHVybl1dIGlubGlu
ZSB2b2lkIGNvbnRyYWN0X3Zpb2xhdGlvbihjb25zdCBjaGFyKiAvKnVudXNlZCovKQotewotICAg
IHN0ZDo6dGVybWluYXRlKCk7Ci19Ci0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVy
RWxlbWVudFR5cGUsCisgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252
ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51
bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisg
ICAgY29uc3RleHByIFNwYW4oc3RkOjphcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX0V4dGVudD4m
IF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9IHt9CiAKLSNpZiAhZGVmaW5l
ZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORykKLSNkZWZpbmUgVENCX1NQQU5fU1RSSU5H
SUZZKGNvbmQpICNjb25kCi0jZGVmaW5lIFRDQl9TUEFOX0VYUEVDVChjb25kKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNvbmQgPyAodm9p
ZCkgMCA6IGNvbnRyYWN0X3Zpb2xhdGlvbigiRXhwZWN0ZWQgIiBUQ0JfU1BBTl9TVFJJTkdJRlko
Y29uZCkpCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9FWFBFQ1QoY29uZCkKLSNlbmRpZgorICAg
IHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKKyAgICAgICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUo
KilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dU
Rl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBzdGQ6
OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIpIG5vZXhjZXB0IDogX19k
YXRhe19fYXJyLmRhdGEoKX0ge30KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykg
fHwgZGVmaW5lZChfX2NwcF9pbmxpbmVfdmFyaWFibGVzKQotI2RlZmluZSBUQ0JfU1BBTl9JTkxJ
TkVfVkFSIGlubGluZQotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fSU5MSU5FX1ZBUgotI2VuZGlm
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFNwYW4oICAgICAgX0NvbnRh
aW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0
aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxs
cHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0geworICAgICAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gX1dURl9WU1REOjpzaXplKF9fYyksICJz
aXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3RvciAocmFuZ2UpIik7CisgICAgICAgIH0K
IAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkgfHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoZGVmaW5lZChfX2NwcF9jb25zdGV4cHIp
ICYmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQ
MTRfQ09OU1RFWFBSCi0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBjb25zdGV4cHIgZXhwbGlj
aXQgU3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lcjxjb25zdCBfQ29udGFpbmVyLCBfVHA+
Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19XVEZfVlNU
RDo6ZGF0YShfX2MpfSB7CisgICAgICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9
PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2ggaW4gU3BhbidzIGNvbnN0cnVj
dG9yIChyYW5nZSkiKTsKKyAgICAgICAgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQ
UDE0X0NPTlNURVhQUikKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTQgY29uc3RleHByCi0j
ZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNAotI2VuZGlmCisgICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUs
IF9FeHRlbnQ+JiBfX290aGVyLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090
aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19fb3Ro
ZXIuZGF0YSgpfSB7fQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE0X0NPTlNURVhQ
UikgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICghZGVmaW5lZChf
TVNDX1ZFUikgfHwgX01TQ19WRVIgPiAxOTAwKQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFJf
QVNTSUdOIGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSX0FTU0lH
TgotI2VuZGlmCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBT
cGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGU+JiBfX290aGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBl
ICgqKVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIp
IG5vZXhjZXB0CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSB7IF9XVEZfTElCQ1BQ
X0FTU0VSVChfRXh0ZW50ID09IF9fb3RoZXIuc2l6ZSgpLCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFu
J3MgY29uc3RydWN0b3IgKG90aGVyIFNwYW4pIik7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5f
Tk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCi0jZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjExIGNvbnN0
ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTEgVENCX1NQQU5fQ09OU1RF
WFBSMTQKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZp
bmVkKF9fY3BwX2RlZHVjdGlvbl9ndWlkZXMpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfREVEVUNU
SU9OX0dVSURFUwotI2VuZGlmCisvLyAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAKLSNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBfbGliX2J5dGUp
Ci0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKLSNlbmRpZgorICAgIHRlbXBsYXRlIDxz
dGQ6OnNpemVfdCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAg
ICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gZmlyc3QoKSBjb25zdCBub2V4
Y2VwdAorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNv
dW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpmaXJzdCgpIik7CisgICAgICAgIHJldHVybiBTcGFu
PGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCksIF9Db3VudH07CisgICAgfQogCi0jaWYgZGVm
aW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVkKF9fY3BwX2xpYl9hcnJheV9jb25z
dGV4cHIpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ09OU1RFWFBSX1NURF9BUlJBWV9FVEMKLSNl
bmRpZgorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3Vu
dD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KF9D
b3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46Omxhc3QoKSIpOwor
ICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgc2l6ZSgp
IC0gX0NvdW50LCBfQ291bnR9OworICAgIH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9D
T05TVEVYUFJfU1REX0FSUkFZX0VUQykKLSNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBS
IGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSCi0jZW5k
aWYKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFu
PGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50KSBj
b25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQg
PD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIpOwor
ICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07CisgICAgfQogCi0jaWZkZWYgVENCX1NQ
QU5fSEFWRV9TVERfQllURQotdXNpbmcgYnl0ZSA9IHN0ZDo6Ynl0ZTsKLSNlbHNlCi11c2luZyBi
eXRlID0gdW5zaWduZWQgY2hhcjsKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4g
bGFzdChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBp
biBTcGFuOjpsYXN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIHNpemUoKSAt
IF9fY291bnQsIF9fY291bnR9OworICAgIH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9D
UFAxNykKLSNkZWZpbmUgVENCX1NQQU5fTk9ESVNDQVJEIFtbbm9kaXNjYXJkXV0KLSNlbHNlCi0j
ZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRAotI2VuZGlmCisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6
ZV90IF9PZmZzZXQsIHN0ZDo6c2l6ZV90IF9Db3VudCA9IGR5bmFtaWNfZXh0ZW50PgorICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIGF1dG8gc3Vic3Bhbigp
IGNvbnN0IG5vZXhjZXB0CisgICAgICAgIC0+IFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0g
ZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD4KKyAgICB7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoX09mZnNldCA8PSBfRXh0ZW50LCAiT2Zmc2V0IG91dCBvZiByYW5n
ZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPT0g
ZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IF9FeHRlbnQgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsg
Y291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOwogCi1UQ0JfU1BBTl9JTkxJ
TkVfVkFSIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4dGVudCA9IFNJWkVfTUFYOwor
ICAgICAgICB1c2luZyBfUmV0dXJuVHlwZSA9IFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0g
ZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD47CisgICAgICAgIHJl
dHVybiBfUmV0dXJuVHlwZXtkYXRhKCkgKyBfT2Zmc2V0LCBfQ291bnQgPT0gZHluYW1pY19leHRl
bnQgPyBzaXplKCkgLSBfT2Zmc2V0IDogX0NvdW50fTsKKyAgICB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50ID0gZHluYW1pY19leHRlbnQ+Ci1j
bGFzcyBTcGFuOwogCi1uYW1lc3BhY2UgZGV0YWlsIHsKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRl
bnQ+CisgICAgICAgc3Vic3BhbihzaXplX3R5cGUgX19vZmZzZXQsIHNpemVfdHlwZSBfX2NvdW50
ID0gZHluYW1pY19leHRlbnQpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX19vZmZzZXQgPD0gc2l6ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBT
cGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VS
VChfX2NvdW50ICA8PSBzaXplKCkgfHwgX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCwgIkNvdW50
IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAg
IGlmIChfX2NvdW50ID09IGR5bmFtaWNfZXh0ZW50KQorICAgICAgICAgICAgcmV0dXJuIHtkYXRh
KCkgKyBfX29mZnNldCwgc2l6ZSgpIC0gX19vZmZzZXR9OworICAgICAgICBfV1RGX0xJQkNQUF9B
U1NFUlQoX19jb3VudCA8PSBzaXplKCkgLSBfX29mZnNldCwgIk9mZnNldCArIGNvdW50IG91dCBv
ZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAgIHJldHVy
biB7ZGF0YSgpICsgX19vZmZzZXQsIF9fY291bnR9OworICAgIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIEUsIHN0ZDo6c2l6ZV90IFM+Ci1zdHJ1Y3Qgc3Bhbl9zdG9yYWdlIHsKLSAgICBjb25zdGV4
cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0OworICAgIF9XVEZfTElCQ1BQX0lO
TElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZSgpICAgICAgIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIF9FeHRlbnQ7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiBfRXh0ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7IH0KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgYm9vbCBlbXB0eSgpICAgICAgICAgICBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50ID09IDA7IH0KIAotICAgIGNvbnN0ZXhwciBzcGFuX3N0
b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IC8qdW51c2VkKi8pIG5vZXhjZXB0Ci0gICAgICAg
OiBwdHIocF9wdHIpCi0gICAge30KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9faWR4KSBjb25zdCBub2V4
Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgpLCAi
U3BhbjxULE4+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gX19kYXRh
W19faWR4XTsKKyAgICB9CiAKLSAgICBFKiBwdHIgPSBudWxscHRyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjpzaXplX3Qgc2l6ZSA9IFM7Ci19OworICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2VwdAorICAg
IHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgpLCAiU3BhbjxULCBOPjo6ZnJv
bnQoKSBvbiBlbXB0eSBTcGFuIik7CisgICAgICAgIHJldHVybiBfX2RhdGFbMF07CisgICAgfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRT4KLXN0cnVjdCBzcGFuX3N0b3JhZ2U8RSwgZHluYW1pY19l
eHRlbnQ+IHsKLSAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0
OwotCi0gICAgY29uc3RleHByIHNwYW5fc3RvcmFnZShFKiBwX3B0ciwgc3RkOjpzaXplX3QgcF9z
aXplKSBub2V4Y2VwdAotICAgICAgICA6IHB0cihwX3B0ciksIHNpemUocF9zaXplKQotICAgIHt9
CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBi
YWNrKCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCgh
ZW1wdHkoKSwgIlNwYW48VCwgTj46OmJhY2soKSBvbiBlbXB0eSBTcGFuIik7CisgICAgICAgIHJl
dHVybiBfX2RhdGFbc2l6ZSgpLTFdOworICAgIH0KIAotICAgIEUqIHB0ciA9IG51bGxwdHI7Ci0g
ICAgc3RkOjpzaXplX3Qgc2l6ZSA9IDA7Ci19OworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZIGNvbnN0ZXhwciBwb2ludGVyIGRhdGEoKSAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBfX2RhdGE7IH0KIAotLy8gUmVpbXBsZW1lbnRhdGlvbiBv
ZiBDKysxNyBzdGQ6OnNpemUoKSBhbmQgc3RkOjpkYXRhKCkKLSNpZiBkZWZpbmVkKFRDQl9TUEFO
X0hBVkVfQ1BQMTcpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgZGVmaW5lZChfX2NwcF9saWJfbm9ubWVtYmVyX2NvbnRhaW5lcl9hY2Nlc3MpCi11
c2luZyBzdGQ6OmRhdGE7Ci11c2luZyBzdGQ6OnNpemU7Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNz
IEM+Ci1jb25zdGV4cHIgYXV0byBzaXplKGNvbnN0IEMmIGMpIC0+IGRlY2x0eXBlKGMuc2l6ZSgp
KQotewotICAgIHJldHVybiBjLnNpemUoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6
c2l6ZV90IE4+Ci1jb25zdGV4cHIgc3RkOjpzaXplX3Qgc2l6ZShjb25zdCBUICgmKVtOXSkgbm9l
eGNlcHQKLXsKLSAgICByZXR1cm4gTjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEM+Ci1jb25zdGV4
cHIgYXV0byBkYXRhKEMmIGMpIC0+IGRlY2x0eXBlKGMuZGF0YSgpKQotewotICAgIHJldHVybiBj
LmRhdGEoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEM+Ci1jb25zdGV4cHIgYXV0byBkYXRhKGNv
bnN0IEMmIGMpIC0+IGRlY2x0eXBlKGMuZGF0YSgpKQotewotICAgIHJldHVybiBjLmRhdGEoKTsK
LX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1jb25zdGV4cHIgVCogZGF0
YShUICgmYXJyYXkpW05dKSBub2V4Y2VwdAotewotICAgIHJldHVybiBhcnJheTsKLX0KLQotdGVt
cGxhdGUgPGNsYXNzIEU+Ci1jb25zdGV4cHIgY29uc3QgRSogZGF0YShzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8RT4gaWwpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIGlsLmJlZ2luKCk7Ci19Ci0jZW5k
aWYgLy8gVENCX1NQQU5fSEFWRV9DUFAxNworLy8gW3NwYW4uaXRlcl0sIFNwYW4gaXRlcmF0b3Ig
c3VwcG9ydAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVy
YXRvciAgICAgICAgICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVy
YXRvcihkYXRhKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3Rl
eHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIGl0ZXJhdG9yKGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgcmJlZ2luKCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAg
ICAgICByZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVkKF9f
Y3BwX2xpYl92b2lkX3QpCi11c2luZyBzdGQ6OnZvaWRfdDsKLSNlbHNlCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4+Ci11c2luZyB2b2lkX3QgPSB2b2lkOwotI2VuZGlmCitwcml2YXRlOgorICAgIHBv
aW50ZXIgICAgX19kYXRhOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXVzaW5nIHVuY3ZyZWZf
dCA9Ci0gICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVm
ZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lPgotc3RydWN0IGlz
X3NwYW4gOiBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6
OnNpemVfdCBTPgotc3RydWN0IGlzX3NwYW48U3BhbjxULCBTPj4gOiBzdGQ6OnRydWVfdHlwZSB7
fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lPgotc3RydWN0IGlzX3N0ZF9hcnJheSA6IHN0ZDo6ZmFs
c2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1
Y3QgaXNfc3RkX2FycmF5PHN0ZDo6YXJyYXk8VCwgTj4+IDogc3RkOjp0cnVlX3R5cGUge307Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IGhhc19zaXplX2Fu
ZF9kYXRhIDogc3RkOjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0
cnVjdCBoYXNfc2l6ZV9hbmRfZGF0YTxULCB2b2lkX3Q8ZGVjbHR5cGUoZGV0YWlsOjpzaXplKHN0
ZDo6ZGVjbHZhbDxUPigpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
Y2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPj4KLSAgICA6IHN0ZDo6dHJ1
ZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgVSA9IHVuY3ZyZWZf
dDxDPj4KLXN0cnVjdCBpc19jb250YWluZXIgewotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2
YWx1ZSA9Ci0gICAgICAgICFpc19zcGFuPFU+Ojp2YWx1ZSAmJiAhaXNfc3RkX2FycmF5PFU+Ojp2
YWx1ZSAmJgotICAgICAgICAhc3RkOjppc19hcnJheTxVPjo6dmFsdWUgJiYgaGFzX3NpemVfYW5k
X2RhdGE8Qz46OnZhbHVlOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci11c2luZyByZW1v
dmVfcG9pbnRlcl90ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgotc3RydWN0IGlz
X2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+Ci1zdHJ1Y3QgaXNfY29udGFpbmVy
X2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgIFQsIEUsCi0gICAgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8Ci0gICAgICAgICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8
ZGVjbHR5cGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZGF0YShzdGQ6OmRl
Y2x2YWw8VD4oKSkpPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICB2b2lkPjo6dmFsdWU+
Ojp0eXBlPgotICAgIDogc3RkOjppc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICByZW1vdmVfcG9p
bnRlcl90PGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPiAoKilbXSwK
LSAgICAgICAgICBFICgqKVtdPiB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSA9
IHNpemVfdD4KLXN0cnVjdCBpc19jb21wbGV0ZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY29tcGxldGU8VCwgZGVjbHR5cGUoc2l6ZW9m
KFQpKT4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50PgotY2xhc3Mg
U3BhbiB7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX29iamVjdDxFbGVtZW50VHlwZT46OnZh
bHVlLAotICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1lbnRUeXBlIG11c3QgYmUgYW4g
b2JqZWN0IHR5cGUgKG5vdCBhICIKLSAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UgdHlwZSBv
ciB2b2lkKSIpOwotICAgIHN0YXRpY19hc3NlcnQoZGV0YWlsOjppc19jb21wbGV0ZTxFbGVtZW50
VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1lbnRUeXBlIG11
c3QgYmUgYSBjb21wbGV0ZSB0eXBlIChub3QgYSBmb3J3YXJkICIKLSAgICAgICAgICAgICAgICAg
ICJkZWNsYXJhdGlvbikiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Fic3RyYWN0PEVs
ZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAiQSBTcGFuJ3MgRWxlbWVudFR5
cGUgY2Fubm90IGJlIGFuIGFic3RyYWN0IGNsYXNzIHR5cGUiKTsKLQotICAgIHVzaW5nIHN0b3Jh
Z2VfdHlwZSA9IGRldGFpbDo6c3Bhbl9zdG9yYWdlPEVsZW1lbnRUeXBlLCBFeHRlbnQ+OwordGVt
cGxhdGUgPHR5cGVuYW1lIF9UcD4KK2NsYXNzIF9XVEZfTElCQ1BQX1RFTVBMQVRFX1ZJUyBTcGFu
PF9UcCwgZHluYW1pY19leHRlbnQ+IHsKK3ByaXZhdGU6CiAKIHB1YmxpYzoKLSAgICAvLyBjb25z
dGFudHMgYW5kIHR5cGVzCi0gICAgdXNpbmcgZWxlbWVudF90eXBlID0gRWxlbWVudFR5cGU7Ci0g
ICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PEVsZW1lbnRUeXBl
Pjo6dHlwZTsKLSAgICB1c2luZyBzaXplX3R5cGUgPSBzdGQ6OnNpemVfdDsKLSAgICB1c2luZyBk
aWZmZXJlbmNlX3R5cGUgPSBzdGQ6OnB0cmRpZmZfdDsKLSAgICB1c2luZyBwb2ludGVyID0gZWxl
bWVudF90eXBlKjsKLSAgICB1c2luZyBjb25zdF9wb2ludGVyID0gY29uc3QgZWxlbWVudF90eXBl
KjsKLSAgICB1c2luZyByZWZlcmVuY2UgPSBlbGVtZW50X3R5cGUmOwotICAgIHVzaW5nIGNvbnN0
X3JlZmVyZW5jZSA9IGNvbnN0IGVsZW1lbnRfdHlwZSY7Ci0gICAgdXNpbmcgaXRlcmF0b3IgPSBw
b2ludGVyOwotICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0
b3I8aXRlcmF0b3I+OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0g
RXh0ZW50OwotCi0gICAgLy8gW3NwYW4uY29uc10sIFNwYW4gY29uc3RydWN0b3JzLCBjb3B5LCBh
c3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvcgotICAgIHRlbXBsYXRlIDwKLSAgICAgICAgc3RkOjpz
aXplX3QgRSA9IEV4dGVudCwKLSAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8KEUgPT0g
ZHluYW1pY19leHRlbnQgfHwgRSA8PSAwKSwgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHBy
IFNwYW4oKSBub2V4Y2VwdAotICAgIHt9CisvLyAgY29uc3RhbnRzIGFuZCB0eXBlcworICAgIHVz
aW5nIGVsZW1lbnRfdHlwZSAgICAgICAgICAgPSBfVHA7CisgICAgdXNpbmcgdmFsdWVfdHlwZSAg
ICAgICAgICAgICA9IHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPjsKKyAgICB1c2luZyBzaXplX3R5cGUg
ICAgICAgICAgICAgID0gc3RkOjpzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAg
ICAgICA9IHN0ZDo6cHRyZGlmZl90OworICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgICAgICAg
PSBfVHAgKjsKKyAgICB1c2luZyBjb25zdF9wb2ludGVyICAgICAgICAgID0gY29uc3QgX1RwICo7
CisgICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgICAgICA9IF9UcCAmOworICAgIHVzaW5nIGNv
bnN0X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfVHAgJjsKKyNpZiAoX1dURl9MSUJDUFBfREVC
VUdfTEVWRUwgPT0gMikgfHwgZGVmaW5lZChfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lOVEVSX0lU
RVJBVE9SUykKKyAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gcG9pbnRlcjsKKyNl
bHNlCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IF9fd3JhcF9pdGVyPHBvaW50
ZXI+OworI2VuZGlmCisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciAgICAgICA9IF9XVEZfVlNU
RDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIx
MSBTcGFuKHBvaW50ZXIgcHRyLCBzaXplX3R5cGUgY291bnQpCi0gICAgICAgIDogc3RvcmFnZV8o
cHRyLCBjb3VudCkKLSAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChleHRlbnQgPT0gZHlu
YW1pY19leHRlbnQgfHwgY291bnQgPT0gZXh0ZW50KTsKLSAgICB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gZHluYW1pY19leHRlbnQ7CiAKLSAgICBUQ0JfU1BBTl9D
T05TVEVYUFIxMSBTcGFuKHBvaW50ZXIgZmlyc3RfZWxlbSwgcG9pbnRlciBsYXN0X2VsZW0pCi0g
ICAgICAgIDogc3RvcmFnZV8oZmlyc3RfZWxlbSwgbGFzdF9lbGVtIC0gZmlyc3RfZWxlbSkKLSAg
ICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChleHRlbnQgPT0gZHluYW1pY19leHRlbnQgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZWxlbSAtIGZpcnN0X2VsZW0gPT0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oZXh0ZW50
KSk7Ci0gICAgfQorLy8gW3NwYW4uY29uc10sIFNwYW4gY29uc3RydWN0b3JzLCBjb3B5LCBhc3Np
Z25tZW50LCBhbmQgZGVzdHJ1Y3RvcgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVsbHB0cn0sIF9fc2l6ZXswfSB7
fQogCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQs
Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAg
ICAgKEUgPT0gZHluYW1pY19leHRlbnQgfHwgTiA9PSBFKSAmJgotICAgICAgICAgICAgICAgICAg
ICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3R5cGUgKCYpW05dLCBFbGVtZW50VHlwZT46OnZh
bHVlLAotICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNw
YW4oZWxlbWVudF90eXBlICgmYXJyKVtOXSkgbm9leGNlcHQgOiBzdG9yYWdlXyhhcnIsIE4pCi0g
ICAge30KKyAgICBjb25zdGV4cHIgU3BhbiAgICAgICAgICAgKGNvbnN0IFNwYW4mKSBub2V4Y2Vw
dCA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIFNwYW4mIG9wZXJhdG9yPShjb25zdCBTcGFuJikg
bm9leGNlcHQgPSBkZWZhdWx0OwogCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6
c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAotICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRlbnQgfHwgTiA9PSBFKSAmJgot
ICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9j
b21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PHZhbHVlX3R5
cGUsIE4+JiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgIGludD46OnR5
cGUgPSAwPgotICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBTcGFuKHN0ZDo6YXJyYXk8dmFs
dWVfdHlwZSwgTj4mIGFycikgbm9leGNlcHQKLSAgICAgICAgOiBzdG9yYWdlXyhhcnIuZGF0YSgp
LCBOKQotICAgIHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IFNwYW4ocG9pbnRlciBfX3B0ciwgc2l6ZV90eXBlIF9fY291bnQpIDogX19kYXRhe19fcHRyfSwg
X19zaXple19fY291bnR9IHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9LCBfX3Np
emV7c3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHN0ZDo6ZGlzdGFuY2UoX19mLCBfX2wpKX0ge30K
IAotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAot
ICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKLSAgICAgICAgICAgICAgICAg
IChFID09IGR5bmFtaWNfZXh0ZW50IHx8IE4gPT0gRSkgJiYKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYsIEVsZW1l
bnRUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KLSAgICBU
Q0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3Bhbihjb25zdCBzdGQ6OmFycmF5PHZhbHVlX3R5cGUs
IE4+JiBhcnIpIG5vZXhjZXB0Ci0gICAgICAgIDogc3RvcmFnZV8oYXJyLmRhdGEoKSwgTikKLSAg
ICB7fQorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfU3o+CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbihlbGVtZW50X3R5cGUgKCZfX2Fycilb
X1N6XSkgICAgICAgICAgbm9leGNlcHQgOiBfX2RhdGF7X19hcnJ9LCBfX3NpemV7X1N6fSB7fQog
Ci0gICAgdGVtcGxhdGUgPAotICAgICAgICB0eXBlbmFtZSBDb250YWluZXIsIHN0ZDo6c2l6ZV90
IEUgPSBFeHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAg
ICAgRSA9PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxDb250YWluZXI+
Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRf
dHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICBDb250YWluZXImLCBFbGVtZW50
VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHBy
IFNwYW4oQ29udGFpbmVyJiBjb250KQotICAgICAgICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShj
b250KSwgZGV0YWlsOjpzaXplKGNvbnQpKQotICAgIHt9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9P
dGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBfU3osCisgICAgICAgICAgICAgIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVs
ZW1lbnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW4oc3RkOjphcnJheTxfT3RoZXJF
bGVtZW50VHlwZSwgX1N6PiYgX19hcnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0s
IF9fc2l6ZXtfU3p9IHt9CiAKLSAgICB0ZW1wbGF0ZSA8Ci0gICAgICAgIHR5cGVuYW1lIENvbnRh
aW5lciwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKLSAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8Ci0gICAgICAgICAgICBFID09IGR5bmFtaWNfZXh0ZW50ICYmIGRldGFpbDo6aXNfY29u
dGFpbmVyPENvbnRhaW5lcj46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgZGV0YWlsOjppc19j
b250YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbnRhaW5lciYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICBpbnQ+Ojp0
eXBlID0gMD4KLSAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBDb250YWluZXImIGNvbnQpCi0gICAg
ICAgIDogc3RvcmFnZV8oZGV0YWlsOjpkYXRhKGNvbnQpLCBkZXRhaWw6OnNpemUoY29udCkpCi0g
ICAge30KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90
IF9TeiwKKyAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxl
X3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVs
bHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAg
ICBjb25zdGV4cHIgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfU3o+
JiBfX2Fycikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIuZGF0YSgpfSwgX19zaXple19Ten0ge30K
IAotICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRlZmF1
bHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIFNwYW4oICAgICAgX0NvbnRhaW5lciYg
X19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9j
b250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxscHRyKQor
ICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBl
KSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhl
ckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBPdGhlckV4dGVudCwKLSAgICAgICAgICAgICAgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICAgICAgICAgICAoRXh0ZW50ID09IE90aGVy
RXh0ZW50IHx8IEV4dGVudCA9PSBkeW5hbWljX2V4dGVudCkgJiYKLSAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPE90aGVyRWxlbWVudFR5cGUgKCopW10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50VHlwZSAoKilbXT46OnZh
bHVlLAotICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+Ci0gICAgY29uc3RleHByIFNw
YW4oY29uc3QgU3BhbjxPdGhlckVsZW1lbnRUeXBlLCBPdGhlckV4dGVudD4mIG90aGVyKSBub2V4
Y2VwdAotICAgICAgICA6IHN0b3JhZ2VfKG90aGVyLmRhdGEoKSwgb3RoZXIuc2l6ZSgpKQotICAg
IHt9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIFNwYW4oY29uc3QgX0NvbnRhaW5lciYg
X19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9j
b250YWluZXI8Y29uc3QgX0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxs
cHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6
ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KIAotICAgIH5TcGFuKCkgbm9leGNlcHQg
PSBkZWZhdWx0OwogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSX0FTU0lHTiBTcGFuJgotICAgIG9w
ZXJhdG9yPShjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBkZWZhdWx0OworICAgIHRlbXBs
YXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgX090aGVyRXh0ZW50Pgor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFu
KGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUsIF9PdGhlckV4dGVudD4mIF9fb3RoZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBl
bGVtZW50X3R5cGUgKCopW10+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyX3Q+
ID0gbnVsbHB0cikgbm9leGNlcHQKKyAgICAgICAgOiBfX2RhdGF7X19vdGhlci5kYXRhKCl9LCBf
X3NpemV7X19vdGhlci5zaXplKCl9IHt9CiAKLSAgICAvLyBbc3Bhbi5zdWJdLCBzcGFuIHN1YnZp
ZXdzCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENvdW50PgotICAgIFRDQl9TUEFOX0NPTlNU
RVhQUjExIFNwYW48ZWxlbWVudF90eXBlLCBDb3VudD4gZmlyc3QoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgVENCX1NQQU5fRVhQRUNUKENvdW50IDw9IHNpemUoKSk7Ci0gICAgICAgIHJldHVybiB7
ZGF0YSgpLCBDb3VudH07Ci0gICAgfQorLy8gICAgflNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7
CiAKLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQ291bnQ+Ci0gICAgVENCX1NQQU5fQ09OU1RF
WFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIENvdW50PiBsYXN0KCkgY29uc3QKKyAgICB0ZW1wbGF0
ZSA8c3RkOjpzaXplX3QgX0NvdW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
CisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGZpcnN0KCkgY29uc3Qg
bm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChDb3VudCA8PSBzaXplKCkp
OwotICAgICAgICByZXR1cm4ge2RhdGEoKSArIChzaXplKCkgLSBDb3VudCksIENvdW50fTsKKyAg
ICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA8PSBzaXplKCksICJDb3VudCBvdXQgb2Yg
cmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIpOworICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5
cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291bnR9OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxzdGQ6
OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6ZV90IENvdW50ID0gZHluYW1pY19leHRlbnQ+Ci0gICAg
dXNpbmcgc3Vic3Bhbl9yZXR1cm5fdCA9Ci0gICAgICAgIFNwYW48RWxlbWVudFR5cGUsIENvdW50
ICE9IGR5bmFtaWNfZXh0ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IENvdW50
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChFeHRlbnQgIT0gZHluYW1pY19leHRl
bnQgPyBFeHRlbnQgLSBPZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNfZXh0ZW50KT47Ci0KLSAgICB0ZW1wbGF0
ZSA8c3RkOjpzaXplX3QgT2Zmc2V0LCBzdGQ6OnNpemVfdCBDb3VudCA9IGR5bmFtaWNfZXh0ZW50
PgotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIHN1YnNwYW5fcmV0dXJuX3Q8T2Zmc2V0LCBDb3Vu
dD4gc3Vic3BhbigpIGNvbnN0CisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9Db3VudD4KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1l
bnRfdHlwZSwgX0NvdW50PiBsYXN0KCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRD
Ql9TUEFOX0VYUEVDVChPZmZzZXQgPD0gc2l6ZSgpICYmCi0gICAgICAgICAgICAgICAgICAgICAg
ICAoQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgT2Zmc2V0ICsgQ291bnQgPD0gc2l6ZSgpKSk7
Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgT2Zmc2V0LAotICAgICAgICAgICAgICAgIENvdW50
ICE9IGR5bmFtaWNfZXh0ZW50ID8gQ291bnQgOiBzaXplKCkgLSBPZmZzZXR9OworICAgICAgICBf
V1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBp
biBTcGFuOjpsYXN0KCkiKTsKKyAgICAgICAgcmV0dXJuIFNwYW48ZWxlbWVudF90eXBlLCBfQ291
bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKICAgICB9CiAKLSAgICBUQ0Jf
U1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+Ci0gICAg
Zmlyc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4g
Zmlyc3Qoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBU
Q0JfU1BBTl9FWFBFQ1QoY291bnQgPD0gc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHtkYXRhKCks
IGNvdW50fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAi
Q291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50KSIpOworICAgICAgICByZXR1
cm4ge2RhdGEoKSwgX19jb3VudH07CiAgICAgfQogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSMTEg
U3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgotICAgIGxhc3Qoc2l6ZV90eXBlIGNv
dW50KSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3Rl
eHByIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gbGFzdCAoc2l6ZV90eXBlIF9f
Y291bnQpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoY291
bnQgPD0gc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyAoc2l6ZSgpIC0gY291bnQp
LCBjb3VudH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwg
IkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KGNvdW50KSIpOworICAgICAgICByZXR1
cm4ge2RhdGEoKSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9OwogICAgIH0KIAotICAgIFRD
Ql9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KLSAg
ICBzdWJzcGFuKHNpemVfdHlwZSBvZmZzZXQsIHNpemVfdHlwZSBjb3VudCA9IGR5bmFtaWNfZXh0
ZW50KSBjb25zdAorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfT2Zmc2V0LCBzdGQ6OnNpemVf
dCBfQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBzdWJzcGFuKCkg
Y29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChvZmZzZXQgPD0g
c2l6ZSgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAoY291bnQgPT0gZHluYW1pY19leHRl
bnQgfHwgb2Zmc2V0ICsgY291bnQgPD0gc2l6ZSgpKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgp
ICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgIGNvdW50ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6
ZSgpIC0gb2Zmc2V0IDogY291bnR9OworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX09mZnNl
dCA8PSBzaXplKCksICJPZmZzZXQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOwor
ICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IF9D
b3VudCA8PSBzaXplKCkgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGlu
IFNwYW46OnN1YnNwYW4oKSIpOworICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9D
b3VudD57ZGF0YSgpICsgX09mZnNldCwgX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6ZSgp
IC0gX09mZnNldCA6IF9Db3VudH07CiAgICAgfQogCi0gICAgLy8gW3NwYW4ub2JzXSwgc3BhbiBv
YnNlcnZlcnMKLSAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiBzdG9yYWdlXy5zaXplOyB9Ci0KLSAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVf
Ynl0ZXMoKSBjb25zdCBub2V4Y2VwdAorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwg
ZHluYW1pY19leHRlbnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBz
dWJzcGFuKHNpemVfdHlwZSBfX29mZnNldCwgc2l6ZV90eXBlIF9fY291bnQgPSBkeW5hbWljX2V4
dGVudCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIHJldHVybiBzaXplKCkgKiBzaXpl
b2YoZWxlbWVudF90eXBlKTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fb2Zmc2V0IDw9
IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNv
dW50KSIpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCAgPD0gc2l6ZSgpIHx8
IF9fY291bnQgPT0gZHluYW1pY19leHRlbnQsICJjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6
c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBpZiAoX19jb3VudCA9PSBkeW5hbWlj
X2V4dGVudCkKKyAgICAgICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIHNpemUoKSAt
IF9fb2Zmc2V0fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgp
IC0gX19vZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3Bh
bihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBf
X2NvdW50fTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9OT0RJU0NBUkQgY29uc3RleHByIGJvb2wg
ZW1wdHkoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNpemUoKSA9PSAw
OwotICAgIH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6
ZV90eXBlIHNpemUoKSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemU7IH0KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVf
Ynl0ZXMoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemUgKiBzaXplb2YoZWxlbWVudF90
eXBlKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBib29s
IGVtcHR5KCkgICAgICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fc2l6ZSA9PSAwOyB9
CiAKLSAgICAvLyBbc3Bhbi5lbGVtXSwgc3BhbiBlbGVtZW50IGFjY2VzcwotICAgIFRDQl9TUEFO
X0NPTlNURVhQUjExIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBpZHgpIGNvbnN0Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBvcGVy
YXRvcltdKHNpemVfdHlwZSBfX2lkeCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRD
Ql9TUEFOX0VYUEVDVChpZHggPCBzaXplKCkpOwotICAgICAgICByZXR1cm4gKihkYXRhKCkgKyBp
ZHgpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19pZHggPCBzaXplKCksICJTcGFuPFQ+
W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gX19kYXRhW19faWR4XTsK
ICAgICB9CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSByZWZlcmVuY2UgZnJvbnQoKSBjb25z
dAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2Ug
ZnJvbnQoKSBjb25zdCBub2V4Y2VwdAogICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNUKCFl
bXB0eSgpKTsKLSAgICAgICAgcmV0dXJuICpkYXRhKCk7CisgICAgICAgIF9XVEZfTElCQ1BQX0FT
U0VSVCghZW1wdHkoKSwgIlNwYW48VD5bXS5mcm9udCgpIG9uIGVtcHR5IFNwYW4iKTsKKyAgICAg
ICAgcmV0dXJuIF9fZGF0YVswXTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBy
ZWZlcmVuY2UgYmFjaygpIGNvbnN0CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkg
Y29uc3RleHByIHJlZmVyZW5jZSBiYWNrKCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAg
IFRDQl9TUEFOX0VYUEVDVCghZW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiAqKGRhdGEoKSArIChz
aXplKCkgLSAxKSk7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48
VD5bXS5iYWNrKCkgb24gZW1wdHkgU3BhbiIpOworICAgICAgICByZXR1cm4gX19kYXRhW3NpemUo
KS0xXTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gc3RvcmFnZV8ucHRyOyB9Ci0KLSAgICAvLyBbc3Bhbi5pdGVyYXRvcnNdLCBz
cGFuIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0KIAotICAgIGNvbnN0ZXhwciBpdGVyYXRvciBl
bmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KLQotICAgIFRD
Ql9TUEFOX0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5v
ZXhjZXB0Ci0gICAgewotICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7Ci0g
ICAgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBwb2ludGVy
IGRhdGEoKSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBf
X2RhdGE7IH0KIAotICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9y
IHJlbmQoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRl
cmF0b3IoYmVnaW4oKSk7Ci0gICAgfQorLy8gW3NwYW4uaXRlcl0sIFNwYW4gaXRlcmF0b3Igc3Vw
cG9ydAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRv
ciAgICAgICAgICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRv
cihkYXRhKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IGl0ZXJhdG9yICAgICAgICAgICAgICAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IGl0ZXJhdG9yKGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgcmJlZ2luKCkgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAg
ICByZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigp
KTsgfQogCiBwcml2YXRlOgotICAgIHN0b3JhZ2VfdHlwZSBzdG9yYWdlX3t9OworICAgIHBvaW50
ZXIgICBfX2RhdGE7CisgICAgc2l6ZV90eXBlIF9fc2l6ZTsKIH07CiAKLSNpZmRlZiBUQ0JfU1BB
Tl9IQVZFX0RFRFVDVElPTl9HVUlERVMKKyNpZiAhZGVmaW5lZChfV1RGX0xJQkNQUF9IQVNfTk9f
UkFOR0VTKQordGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KK2lubGlu
ZSBjb25zdGV4cHIgYm9vbCBzdGQ6OnJhbmdlczo6ZW5hYmxlX2JvcnJvd2VkX3JhbmdlPFNwYW48
X1RwLCBfRXh0ZW50PiA+ID0gdHJ1ZTsKKyNlbmRpZiAvLyAhZGVmaW5lZChfV1RGX0xJQkNQUF9I
QVNfTk9fUkFOR0VTKQorCisvLyAgYXNCeXRlcyAmIGFzV3JpdGFibGVCeXRlcwordGVtcGxhdGUg
PGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KK19XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCithdXRvIGFzQnl0ZXMoU3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNlcHQKKy0+
IFNwYW48Y29uc3Qgc3RkOjpieXRlLCBfRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50ID8gZHluYW1p
Y19leHRlbnQgOiBfRXh0ZW50ICogc2l6ZW9mKF9UcCk+Cit7IHJldHVybiB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgc3RkOjpieXRlICo+KF9fcy5kYXRhKCkpLCBfX3Muc2l6ZV9ieXRlcygpIH07
IH0KKwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KK19XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZCithdXRvIGFzV3JpdGFibGVCeXRlcyhTcGFuPF9UcCwgX0V4
dGVudD4gX19zKSBub2V4Y2VwdAorLT4gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19jb25zdF92
PF9UcD4sIFNwYW48c3RkOjpieXRlLCBfRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50ID8gZHluYW1p
Y19leHRlbnQgOiBfRXh0ZW50ICogc2l6ZW9mKF9UcCk+PgoreyByZXR1cm4geyByZWludGVycHJl
dF9jYXN0PHN0ZDo6Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNpemVfYnl0ZXMoKSB9OyB9CisK
Ky8vICBEZWR1Y3Rpb24gZ3VpZGVzCit0ZW1wbGF0ZTxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9T
ej4KKyAgICBTcGFuKF9UcCAoJilbX1N6XSkgLT4gU3BhbjxfVHAsIF9Tej47CisKK3RlbXBsYXRl
PGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX1N6PgorICAgIFNwYW4oc3RkOjphcnJheTxfVHAsIF9T
ej4mKSAtPiBTcGFuPF9UcCwgX1N6PjsKKwordGVtcGxhdGU8Y2xhc3MgX1RwLCBzdGQ6OnNpemVf
dCBfU3o+CisgICAgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9UcCwgX1N6PiYpIC0+IFNwYW48Y29u
c3QgX1RwLCBfU3o+OwogCi0vKiBEZWR1Y3Rpb24gR3VpZGVzICovCi10ZW1wbGF0ZSA8Y2xhc3Mg
VCwgc2l6ZV90IE4+Ci1TcGFuKFQgKCYpW05dKS0+U3BhbjxULCBOPjsKLQotdGVtcGxhdGUgPGNs
YXNzIFQsIHNpemVfdCBOPgotU3BhbihzdGQ6OmFycmF5PFQsIE4+JiktPlNwYW48VCwgTj47Ci0K
LXRlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KLVNwYW4oY29uc3Qgc3RkOjphcnJheTxULCBO
PiYpLT5TcGFuPGNvbnN0IFQsIE4+OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotU3Bh
bihDb250YWluZXImKS0+U3Bhbjx0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+OwotCi10
ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotU3Bhbihjb25zdCBDb250YWluZXImKS0+U3Bhbjxj
b25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+OwotCi0jZW5kaWYgLy8gVENCX1NQ
QU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCi0KLSNpZmRlZiBUQ0JfU1BBTl9JTkNMVURFX01BS0Vf
U1BBTgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVu
dD4KLWNvbnN0ZXhwciBTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+Ci1tYWtlX3NwYW4oU3BhbjxF
bGVtZW50VHlwZSwgRXh0ZW50PiBzKSBub2V4Y2VwdAotewotICAgIHJldHVybiBzOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLWNvbnN0ZXhwciBTcGFuPFQsIE4+
IG1ha2Vfc3BhbihUICgmYXJyKVtOXSkgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotVENCX1NQQU5fQVJSQVlf
Q09OU1RFWFBSIFNwYW48VCwgTj4gbWFrZV9zcGFuKHN0ZDo6YXJyYXk8VCwgTj4mIGFycikgbm9l
eGNlcHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBz
dGQ6OnNpemVfdCBOPgotVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48Y29uc3QgVCwgTj4K
LW1ha2Vfc3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIE4+JiBhcnIpIG5vZXhjZXB0Ci17Ci0gICAg
cmV0dXJuIHthcnJ9OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotY29uc3Rl
eHByIFNwYW48dHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlPiBtYWtlX3NwYW4oQ29udGFp
bmVyJiBjb250KQotewotICAgIHJldHVybiB7Y29udH07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDb250YWluZXI+Ci1jb25zdGV4cHIgU3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZh
bHVlX3R5cGU+Ci1tYWtlX3NwYW4oY29uc3QgQ29udGFpbmVyJiBjb250KQotewotICAgIHJldHVy
biB7Y29udH07Ci19Ci0jZW5kaWYgLy8gVENCX1NQQU5fSU5DTFVERV9NQUtFX1NQQU4KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBFeHRlbnQ+Ci1TcGFuPGNv
bnN0IGJ5dGUsICgoRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50KSA/IGR5bmFtaWNfZXh0ZW50Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemVvZihFbGVt
ZW50VHlwZSkgKiBFeHRlbnQpPgotYXNCeXRlcyhTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMp
IG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHtyZWludGVycHJldF9jYXN0PGNvbnN0IGJ5dGUqPihz
LmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKLX0KLQotdGVtcGxhdGUgPAotICAgIGNsYXNzIEVs
ZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50LAotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFz
dGQ6OmlzX2NvbnN0PEVsZW1lbnRUeXBlPjo6dmFsdWUsIGludD46OnR5cGUgPSAwPgotU3Bhbjxi
eXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4dGVudCkgPyBkeW5hbWljX2V4dGVudAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzaXplb2YoRWxlbWVudFR5cGUpICog
RXh0ZW50KT4KLWFzV3JpdGFibGVCeXRlcyhTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5v
ZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHtyZWludGVycHJldF9jYXN0PGJ5dGUqPihzLmRhdGEoKSks
IHMuc2l6ZV9ieXRlcygpfTsKLX0KLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1l
IEUsIHN0ZDo6c2l6ZV90IFM+Ci1jb25zdGV4cHIgYXV0byBnZXQoU3BhbjxFLCBTPiBzKSAtPiBk
ZWNsdHlwZShzW05dKQotewotICAgIHJldHVybiBzW05dOwotfQotCi19IC8vIG5hbWVzcGFjZSBU
Q0JfU1BBTl9OQU1FU1BBQ0VfTkFNRQotCi1uYW1lc3BhY2Ugc3RkIHsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50PgotY2xhc3MgdHVwbGVfc2l6ZTxUQ0Jf
U1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50Pj4KLSAgICA6IHB1
YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIEV4dGVudD4ge307Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIHR1cGxlX3NpemU8VENCX1NQQU5fTkFNRVNQQUNF
X05BTUU6OlNwYW48Ci0gICAgRWxlbWVudFR5cGUsIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpk
eW5hbWljX2V4dGVudD4+OyAvLyBub3QgZGVmaW5lZAordGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5l
cj4KKyAgICBTcGFuKF9Db250YWluZXImKSAtPiBTcGFuPHR5cGVuYW1lIF9Db250YWluZXI6OnZh
bHVlX3R5cGU+OwogCi10ZW1wbGF0ZSA8c2l6ZV90IEksIHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBz
aXplX3QgRXh0ZW50PgotY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBUQ0JfU1BBTl9OQU1FU1BBQ0Vf
TkFNRTo6U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50Pj4gewotcHVibGljOgotICAgIHN0YXRpY19h
c3NlcnQoRXh0ZW50ICE9IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudCAm
JgotICAgICAgICAgICAgICAgICAgICAgIEkgPCBFeHRlbnQsCi0gICAgICAgICAgICAgICAgICAi
Iik7Ci0gICAgdXNpbmcgdHlwZSA9IEVsZW1lbnRUeXBlOwotfTsKK3RlbXBsYXRlPGNsYXNzIF9D
b250YWluZXI+CisgICAgU3Bhbihjb25zdCBfQ29udGFpbmVyJikgLT4gU3Bhbjxjb25zdCB0eXBl
bmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlPjsKIAotfSAvLyBlbmQgbmFtZXNwYWNlIHN0ZAor
X1dURl9MSUJDUFBfRU5EX05BTUVTUEFDRQogCiB1c2luZyBXVEY6OlNwYW47CiB1c2luZyBXVEY6
OmFzQnl0ZXM7CiB1c2luZyBXVEY6OmFzV3JpdGFibGVCeXRlczsKIAotI2VuZGlmIC8vIFRDQl9T
UEFOX0hQUF9JTkNMVURFRAorI2VuZGlmIC8vIF9XVEZfTElCQ1BQX1NQQU4KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL2NmL1NwYW5DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL1Nw
YW5DRi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL2NmL1NwYW5DRi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitpbmxpbmUgU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGFzQnl0ZXMoQ0ZEYXRhUmVmIGRhdGEpCit7
CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdGQ6OmJ5dGUqPihDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0
YSkpIH07Cit9CisKK2lubGluZSBTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gYXNCeXRlcyhSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBkYXRhKQoreworICAgIHJldHVybiBhc0J5dGVzKGRhdGEuZ2V0KCkpOwor
fQorCit9CisKK3VzaW5nIFdURjo6YXNCeXRlczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431828</attachid>
            <date>2021-06-20 15:29:46 -0700</date>
            <delta_ts>2021-06-20 19:51:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227197-20210620152946.patch</filename>
            <type>text/plain</type>
            <size>42414</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFNwYW4gaW1wbGVtZW50YXRpb24gd2l0aCBv
bmUgZnJvbSBsaWJjKyssIHdoaWNoIGlzIG1vcmUgc3BlYyBjb21wbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwYW4uaDoKKyAgICAg
ICAgVGhlIHRjYiBzcGFuIGltcGxlbWVudGF0aW9uIGhhZCBzb21lIFNGSU5BRSBpc3N1ZXMgd2hl
biBjb252ZXJ0aW5nIGNvbnRhaW5lcnMKKyAgICAgICAgaGFkIGRhdGEoKSBhbmQgc2l6ZSgpIG1l
bWJlciBmdW5jdGlvbnMgYnV0IHdlcmUgbm90IHNwYW4gY29tcGF0aWJsZSB0aGF0IHdlcmUKKyAg
ICAgICAgY2F1c2luZyBmYWlsdXJlcy4gUmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGZpeCB0aG9zZSwg
dGhpcyBhZG9wdHMgYSBtb2RpZmllZCB2ZXJzaW9uCisgICAgICAgIG9mIHRoZSBsaWJjKysgc3Bh
biBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBtb3JlIHVwLXRvLWRhdGUuCisKKyAgICAgICAgVG8g
Zml4IE1TVkMgY29tcGlsZSBpc3N1ZXMsIHRoZSBhc19ieXRlcy9hc193cml0YWJsZV9ieXRlcyBm
dW5jdGlvbnMgaGF2ZSBiZWVuCisgICAgICAgIHJlLWltcGxlbWVudGVkIHRvIG5vdCB3b3JrIGFy
b3VuZCBhIGNvbXBpbGUgaXNzdWUgc2VlbiB3aGVyZSB1c2luZyB0aGUgZHluYW1pY19leHRlbnQK
KyAgICAgICAgc3BlY2ljaWFsaXphdGlvbiBmcm9tIHRoZSBzdGF0aWMgZXh0ZW50IHNwZWNpY2lh
bGl6YXRpb24gd2FzIGZhaWxpbmcgdG8gY29tcGlsZS4KKwogMjAyMS0wNi0yMCAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgU3BhbiBpbiBTSEExLmgKSW5k
ZXg6IFNvdXJjZS9XVEYvTElDRU5TRV8xXzAtQm9vc3QudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvTElDRU5TRV8xXzAtQm9vc3QudHh0CShyZXZpc2lvbiAyNzkwNTQpCisrKyBTb3VyY2Uv
V1RGL0xJQ0VOU0VfMV8wLUJvb3N0LnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDIzICswLDAgQEAK
LUJvb3N0IFNvZnR3YXJlIExpY2Vuc2UgLSBWZXJzaW9uIDEuMCAtIEF1Z3VzdCAxN3RoLCAyMDAz
Ci0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9yIG9yZ2FuaXphdGlvbgotb2J0YWluaW5nIGEgY29weSBvZiB0aGUgc29mdHdhcmUg
YW5kIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGNvdmVyZWQgYnkKLXRoaXMgbGljZW5zZSAo
dGhlICJTb2Z0d2FyZSIpIHRvIHVzZSwgcmVwcm9kdWNlLCBkaXNwbGF5LCBkaXN0cmlidXRlLAot
ZXhlY3V0ZSwgYW5kIHRyYW5zbWl0IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHByZXBhcmUgZGVyaXZh
dGl2ZSB3b3JrcyBvZiB0aGUKLVNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHRoaXJkLXBhcnRpZXMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvCi1kbyBzbywgYWxsIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZzoKLQotVGhlIGNvcHlyaWdodCBub3RpY2VzIGluIHRoZSBTb2Z0d2Fy
ZSBhbmQgdGhpcyBlbnRpcmUgc3RhdGVtZW50LCBpbmNsdWRpbmcKLXRoZSBhYm92ZSBsaWNlbnNl
IGdyYW50LCB0aGlzIHJlc3RyaWN0aW9uIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIsCi1t
dXN0IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBpbiB3aG9sZSBv
ciBpbiBwYXJ0LCBhbmQKLWFsbCBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTb2Z0d2FyZSwgdW5s
ZXNzIHN1Y2ggY29waWVzIG9yIGRlcml2YXRpdmUKLXdvcmtzIGFyZSBzb2xlbHkgaW4gdGhlIGZv
cm0gb2YgbWFjaGluZS1leGVjdXRhYmxlIG9iamVjdCBjb2RlIGdlbmVyYXRlZCBieQotYSBzb3Vy
Y2UgbGFuZ3VhZ2UgcHJvY2Vzc29yLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCi1GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgVElUTEUgQU5EIE5PTi1JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UCi1TSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQU5Z
T05FIERJU1RSSUJVVElORyBUSEUgU09GVFdBUkUgQkUgTElBQkxFCi1GT1IgQU5ZIERBTUFHRVMg
T1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwKLUFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpJbmRleDog
U291cmNlL1dURi93dGYvU3Bhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4u
aAkocmV2aXNpb24gMjc5MDU0KQorKysgU291cmNlL1dURi93dGYvU3Bhbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYyMCArMSw0NTggQEAKLS8vICAgICAgICAgICAgICBDb3B5cmlnaHQgVHJpc3Rh
biBCcmluZGxlIDIwMTguCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUg
TGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIC4uL0xJ
Q0VOU0VfMV8wLUJvb3N0LnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwczovL3d3dy5i
b29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9u
IG9mIEMrKzIwJ3Mgc3RkOjpzcGFuIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93
ZzIxL2RvY3MvcGFwZXJzLzIwMTkvbjQ4MjAucGRmCi0KLS8vIFRoaXMgaGFzIGJlZW4gbW9kaWZp
ZWQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbiB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdl
czoKLS8vICAgUmVuYW1lZCB0Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgotLy8gICBSZW5hbWVkIHRj
Yjo6YXNfYnl0ZXMgdG8gV1RGOjphc0J5dGVzLgotLy8gICBSZW5hbWVkIHRjYjo6YXNfd3JpdGFi
bGVfYnl0ZXMgdG8gV1RGOjphc1dyaXRhYmxlQnl0ZXMuCi0KLSNpZm5kZWYgVENCX1NQQU5fSFBQ
X0lOQ0xVREVECi0jZGVmaW5lIFRDQl9TUEFOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YXJy
YXk+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgotCi0jaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKLS8vIEF0dGVtcHQg
dG8gZGlzY292ZXIgd2hldGhlciB3ZSdyZSBiZWluZyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBz
dXBwb3J0Ci0jaWYgIShkZWZpbmVkKF9fY3BwX2V4Y2VwdGlvbnMpIHx8IGRlZmluZWQoX19FWENF
UFRJT05TKSB8fCBkZWZpbmVkKF9DUFBVTldJTkQpKQotI2RlZmluZSBUQ0JfU1BBTl9OT19FWENF
UFRJT05TCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMK
LSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2VuZGlmCisvLyAtKi0g
QysrIC0qLQorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3BhbiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0g
UHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlv
bnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZv
cm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExW
TS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgX1dURl9M
SUJDUFBfU1BBTgorI2RlZmluZSBfV1RGX0xJQkNQUF9TUEFOCisKKy8vIEltcG9ydHMgYSBjb3B5
IG9mIDxzcGFuPiBmcm9tIGU4OTI3MDVkNzRjNzM2NmExNDA0YTNiMzQ3MTAwMWVkYWE3NjU5Zjgg
b2YgdGhlCisvLyBsaWJjKysgcHJvamVjdCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1w
cm9qZWN0LmdpdCkgYW5kIG1vZGlmaWVzIGl0IHRvCisvLyB3b3JrIG9uIHRvcCBvZiBhbnkgc3Rh
bmRhcmQgbGlicmFyeSBpbXBsZW1lbnRhdGlvbi4KKy8vCisvLyAtIFJlbmFtZXMgbWFjcm9zIHdp
dGggX0xJQkNQUF8gcHJlZml4IHRvIHVzZSB0aGUgcHJlZml4IF9XVEZfTElCQ1BQXworLy8gLSBS
ZW5hbWVzIHN0ZDo6c3BhbiB0byBXVEY6OlNwYW4KKy8vIC0gUmVuYW1lcyBzdGQ6OmFzX2J5dGVz
L3N0ZDo6YXNfd3JpdGFibGVfYnl0ZXMgdG8gV1RGOjphc0J5dGVzL1dURjo6YXNXcml0YWJsZUJ5
dGVzLgorLy8gLSBTdG9wICNpbmNsdWRpbmcgaW50ZXJuYWwgbGliYysrIGhlYWRlcnMuCisvLyAt
IFJlbW92ZSBjaGVjayBmb3IgPiBjKysxNy4KKy8vIC0gUmVtb3ZlIHB1c2gvcG9wIGF2YWlsYWJp
bGl0eSBvZiBtaW4vbWF4IG1hY3Jvcy4KKworI2luY2x1ZGUgPGFycmF5PiAgICAgICAgLy8gZm9y
IGFycmF5CisjaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAvLyBmb3IgYnl0ZQorI2luY2x1ZGUgPGl0
ZXJhdG9yPiAgICAgLy8gZm9yIGl0ZXJhdG9ycworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPiAgLy8g
Zm9yIHJlbW92ZV9jdiwgZXRjCisKKy8vIEFkZHMgc29tZSBtYWNybyBkZWZpbmVzIHVzdWFsbHkg
ZGVmaW5lZCBpbiBfX2NvbmZpZy4KKworI2RlZmluZSBfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lO
VEVSX0lURVJBVE9SUworI2RlZmluZSBfV1RGX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0UgbmFtZXNw
YWNlIFdURiB7CisjZGVmaW5lIF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMIDAKKyNkZWZpbmUgX1dU
Rl9MSUJDUFBfRU5EX05BTUVTUEFDRSAgfQorI2RlZmluZSBfV1RGX0xJQkNQUF9IQVNfTk9fUkFO
R0VTCisjZGVmaW5lIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisjZGVmaW5lIF9XVEZf
TElCQ1BQX1RFTVBMQVRFX1ZJUworI2RlZmluZSBfV1RGX1ZTVEQgc3RkCisKKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2RlZmluZSBfV1RGX0xJQkNQUF9BU1NFUlQgQVNTRVJUCisKK19X
VEZfTElCQ1BQX0JFR0lOX05BTUVTUEFDRQorCitpbmxpbmUgY29uc3RleHByIHN0ZDo6c2l6ZV90
IGR5bmFtaWNfZXh0ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCgp
OwordGVtcGxhdGUgPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudCA9IGR5bmFtaWNf
ZXh0ZW50PiBjbGFzcyBTcGFuOworCisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19p
c19zcGFuX2ltcGwgOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50Pgorc3RydWN0IF9faXNfc3Bhbl9pbXBsPFNwYW48
X1RwLCBfRXh0ZW50Pj4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxj
bGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zcGFuIDogcHVibGljIF9faXNfc3Bhbl9pbXBsPHN0ZDo6
cmVtb3ZlX2N2X3Q8X1RwPj4ge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19p
c19zdGRfYXJyYXlfaW1wbCA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRl
IDxjbGFzcyBfVHAsIHN0ZDo6c2l6ZV90IF9Tej4KK3N0cnVjdCBfX2lzX3N0ZF9hcnJheV9pbXBs
PHN0ZDo6YXJyYXk8X1RwLCBfU3o+PiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVt
cGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCBfX2lzX3N0ZF9hcnJheSA6IHB1YmxpYyBfX2lzX3N0
ZF9hcnJheV9pbXBsPHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPj4ge307CisKK3RlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZSwgY2xhc3MgPSB2b2lkPgorc3RydWN0IF9faXNfc3Bh
bl9jb21wYXRpYmxlX2NvbnRhaW5lciA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUge307CisKK3Rl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZT4KK3N0cnVjdCBfX2lzX3NwYW5f
Y29tcGF0aWJsZV9jb250YWluZXI8X1RwLCBfRWxlbWVudFR5cGUsCisgICAgICAgIHN0ZDo6dm9p
ZF90PAorICAgICAgICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBTcGFuCisgICAgICAg
ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhX19pc19zcGFuPF9UcD46OnZhbHVlLCBudWxs
cHRyX3Q+Ojp0eXBlLAorICAgICAgICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBhcnJh
eQorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IV9faXNfc3RkX2FycmF5PF9U
cD46OnZhbHVlLCBudWxscHRyX3Q+Ojp0eXBlLAorICAgICAgICAvLyBzZDo6aXNfYXJyYXlfdjxD
b250YWluZXI+IGlzIGZhbHNlLAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
IXN0ZDo6aXNfYXJyYXlfdjxfVHA+LCBudWxscHRyX3Q+Ojp0eXBlLAorICAgICAgICAvLyBzdGQ6
OmRhdGEoY29udCkgYW5kIHN0ZDo6c2l6ZShjb250KSBhcmUgd2VsbCBmb3JtZWQKKyAgICAgICAg
ICAgIGRlY2x0eXBlKHN0ZDo6ZGF0YShzdGQ6OmRlY2x2YWw8X1RwPigpKSksCisgICAgICAgICAg
ICBkZWNsdHlwZShzdGQ6OnNpemUoc3RkOjpkZWNsdmFsPF9UcD4oKSkpLAorICAgICAgICAvLyBy
ZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRhdGEoY29udCkpPigqKVtdIGlzIGNvbnZlcnRpYmxl
IHRvIEVsZW1lbnRUeXBlKCopW10KKyAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxzdGQ6OnJlbW92ZV9wb2lu
dGVyX3Q8ZGVjbHR5cGUoc3RkOjpkYXRhKHN0ZDo6ZGVjbHZhbDxfVHAgJj4oKSkpPigqKVtdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0VsZW1lbnRUeXBlKCopW10+LAorICAg
ICAgICAgICAgICAgIG51bGxwdHJfdD46OnR5cGUKKyAgICAgICAgPj4KKyAgICA6IHB1YmxpYyBz
dGQ6OnRydWVfdHlwZSB7fTsKIAotLy8gVmFyaW91cyBmZWF0dXJlIHRlc3QgbWFjcm9zCiAKLSNp
Zm5kZWYgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUKLSNkZWZpbmUgVENCX1NQQU5fTkFNRVNQQUNF
X05BTUUgV1RGCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfRXh0ZW50Pgor
Y2xhc3MgX1dURl9MSUJDUFBfVEVNUExBVEVfVklTIFNwYW4geworcHVibGljOgorLy8gIGNvbnN0
YW50cyBhbmQgdHlwZXMKKyAgICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOwor
ICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAgICAgPSBzdGQ6OnJlbW92ZV9jdl90PF9UcD47
CisgICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgICAgICA9IHN0ZDo6c2l6ZV90OworICAgIHVz
aW5nIGRpZmZlcmVuY2VfdHlwZSAgICAgICAgPSBzdGQ6OnB0cmRpZmZfdDsKKyAgICB1c2luZyBw
b2ludGVyICAgICAgICAgICAgICAgID0gX1RwICo7CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAg
ICAgICAgICA9IGNvbnN0IF9UcCAqOworICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAg
PSBfVHAgJjsKKyAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7
CisjaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJD
UFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMpCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAg
ICAgICAgICA9IHBvaW50ZXI7CisjZWxzZQorICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAg
ICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsKICNlbmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRl
cmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwogCi0j
aWYgX19jcGx1c3BsdXMgPj0gMjAxNzAzTCB8fCAoZGVmaW5lZChfTVNWQ19MQU5HKSAmJiBfTVNW
Q19MQU5HID49IDIwMTcwM0wpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTcKLSNlbmRpZgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIGV4dGVudCA9IF9FeHRlbnQ7CiAKLSNpZiBf
X2NwbHVzcGx1cyA+PSAyMDE0MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xB
TkcgPj0gMjAxNDAyTCkKLSNkZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAotI2VuZGlmCisvLyBb
c3Bhbi5jb25zXSwgc3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0
cnVjdG9yCisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9TeiA9IF9FeHRlbnQsIHN0ZDo6ZW5h
YmxlX2lmX3Q8X1N6ID09IDAsIG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVs
bHB0cn0ge30KIAotbmFtZXNwYWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIHsKKyAgICBjb25z
dGV4cHIgU3BhbiAgICAgICAgICAgKGNvbnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7Cisg
ICAgY29uc3RleHByIFNwYW4mIG9wZXJhdG9yPShjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZh
dWx0OwogCi0vLyBFc3RhYmxpc2ggZGVmYXVsdCBjb250cmFjdCBjaGVja2luZyBiZWhhdmlvcgot
I2lmICFkZWZpbmVkKFRDQl9TUEFOX1RIUk9XX09OX0NPTlRSQUNUX1ZJT0xBVElPTikgJiYgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAhZGVmaW5lZChUQ0JfU1BBTl9URVJNSU5BVEVf
T05fQ09OVFJBQ1RfVklPTEFUSU9OKSAmJiAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIWRl
ZmluZWQoVENCX1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCi0jaWYgZGVmaW5lZChOREVCVUcp
IHx8ICFkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTQpCi0jZGVmaW5lIFRDQl9TUEFOX05PX0NP
TlRSQUNUX0NIRUNLSU5HCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09O
VFJBQ1RfVklPTEFUSU9OCi0jZW5kaWYKLSNlbmRpZgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9W
SVNJQklMSVRZIGNvbnN0ZXhwciBleHBsaWNpdCBTcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlw
ZSBfX2NvdW50KSA6IF9fZGF0YXtfX3B0cn0KKyAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RG
X0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfX2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBTcGFu
J3MgY29uc3RydWN0b3IgKHB0ciwgbGVuKSIpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIGV4cGxpY2l0IFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19s
KSA6IF9fZGF0YXtfX2Z9CisgICAgICAgIHsgKHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNT
RVJUKF9FeHRlbnQgPT0gc3RkOjpkaXN0YW5jZShfX2YsIF9fbCksICJzaXplIG1pc21hdGNoIGlu
IFNwYW4ncyBjb25zdHJ1Y3RvciAocHRyLCBwdHIpIik7IH0KIAotI2lmIGRlZmluZWQoVENCX1NQ
QU5fVEhST1dfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQotc3RydWN0IGNvbnRyYWN0X3Zpb2xhdGlv
bl9lcnJvciA6IHN0ZDo6bG9naWNfZXJyb3IgewotICAgIGV4cGxpY2l0IGNvbnRyYWN0X3Zpb2xh
dGlvbl9lcnJvcihjb25zdCBjaGFyKiBtc2cpIDogc3RkOjpsb2dpY19lcnJvcihtc2cpCi0gICAg
e30KLX07CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4o
ZWxlbWVudF90eXBlICgmX19hcnIpW19FeHRlbnRdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0
YXtfX2Fycn0ge30KIAotaW5saW5lIHZvaWQgY29udHJhY3RfdmlvbGF0aW9uKGNvbnN0IGNoYXIq
IG1zZykKLXsKLSAgICB0aHJvdyBjb250cmFjdF92aW9sYXRpb25fZXJyb3IobXNnKTsKLX0KLQot
I2VsaWYgZGVmaW5lZChUQ0JfU1BBTl9URVJNSU5BVEVfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQot
W1tub3JldHVybl1dIGlubGluZSB2b2lkIGNvbnRyYWN0X3Zpb2xhdGlvbihjb25zdCBjaGFyKiAv
KnVudXNlZCovKQotewotICAgIHN0ZDo6dGVybWluYXRlKCk7Ci19Ci0jZW5kaWYKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsCisgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1l
bnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lO
TElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW4oc3RkOjphcnJheTxfT3RoZXJFbGVt
ZW50VHlwZSwgX0V4dGVudD4mIF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9
IHt9CiAKLSNpZiAhZGVmaW5lZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORykKLSNkZWZp
bmUgVENCX1NQQU5fU1RSSU5HSUZZKGNvbmQpICNjb25kCi0jZGVmaW5lIFRDQl9TUEFOX0VYUEVD
VChjb25kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIGNvbmQgPyAodm9pZCkgMCA6IGNvbnRyYWN0X3Zpb2xhdGlvbigiRXhwZWN0ZWQgIiBU
Q0JfU1BBTl9TVFJJTkdJRlkoY29uZCkpCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9FWFBFQ1Qo
Y29uZCkKLSNlbmRpZgorICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKKyAg
ICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3Qg
X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9
IG51bGxwdHI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4
cHIgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19h
cnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0ge30KIAotI2lmIGRlZmluZWQoVENC
X1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9pbmxpbmVfdmFyaWFibGVzKQotI2Rl
ZmluZSBUQ0JfU1BBTl9JTkxJTkVfVkFSIGlubGluZQotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5f
SU5MSU5FX1ZBUgotI2VuZGlmCisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0
IFNwYW4oICAgICAgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUs
IG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEo
X19jKX0geworICAgICAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gX1dURl9W
U1REOjpzaXplKF9fYyksICJzaXplIG1pc21hdGNoIGluIFNwYW4ncyBjb25zdHJ1Y3RvciAocmFu
Z2UpIik7CisgICAgICAgIH0KIAotI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkgfHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoZGVmaW5l
ZChfX2NwcF9jb25zdGV4cHIpICYmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQpCi0jZGVmaW5l
IFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09OU1RFWFBSCi0jZW5kaWYKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX0NvbnRhaW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAg
ICBjb25zdGV4cHIgZXhwbGljaXQgU3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAgICAg
ICAgICBzdGQ6OmVuYWJsZV9pZl90PF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lcjxjb25z
dCBfQ29udGFpbmVyLCBfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgICAg
IDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSB7CisgICAgICAgICAgICBfV1RGX0xJQkNQ
UF9BU1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwgInNpemUgbWlzbWF0Y2gg
aW4gU3BhbidzIGNvbnN0cnVjdG9yIChyYW5nZSkiKTsKKyAgICAgICAgfQogCi0jaWYgZGVmaW5l
ZChUQ0JfU1BBTl9IQVZFX0NQUDE0X0NPTlNURVhQUikKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RF
WFBSMTQgY29uc3RleHByCi0jZWxzZQotI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNAotI2Vu
ZGlmCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48
X090aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX290aGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Omlz
X2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtd
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAg
ICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSB7fQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9I
QVZFX0NQUDE0X0NPTlNURVhQUikgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICghZGVmaW5lZChfTVNDX1ZFUikgfHwgX01TQ19WRVIgPiAxOTAwKQotI2RlZmluZSBU
Q0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOIGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQ
QU5fQ09OU1RFWFBSX0FTU0lHTgotI2VuZGlmCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVs
ZW1lbnRUeXBlPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGU+JiBfX290
aGVyLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUo
KilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cl90PiA9IG51bGxwdHIpIG5vZXhjZXB0CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0
YSgpfSB7IF9XVEZfTElCQ1BQX0FTU0VSVChfRXh0ZW50ID09IF9fb3RoZXIuc2l6ZSgpLCAic2l6
ZSBtaXNtYXRjaCBpbiBTcGFuJ3MgY29uc3RydWN0b3IgKG90aGVyIFNwYW4pIik7IH0KIAotI2lm
IGRlZmluZWQoVENCX1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCi0jZGVmaW5lIFRDQl9TUEFO
X0NPTlNURVhQUjExIGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBS
MTEgVENCX1NQQU5fQ09OU1RFWFBSMTQKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9I
QVZFX0NQUDE3KSB8fCBkZWZpbmVkKF9fY3BwX2RlZHVjdGlvbl9ndWlkZXMpCi0jZGVmaW5lIFRD
Ql9TUEFOX0hBVkVfREVEVUNUSU9OX0dVSURFUwotI2VuZGlmCisvLyAgflNwYW4oKSBub2V4Y2Vw
dCA9IGRlZmF1bHQ7CiAKLSNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmlu
ZWQoX19jcHBfbGliX2J5dGUpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKLSNlbmRp
ZgorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4g
Zmlyc3QoKSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChfQ291
bnQgPD0gX0V4dGVudCwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpmaXJzdCgpIik7Cisg
ICAgICAgIHJldHVybiBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCksIF9Db3VudH07
CisgICAgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZpbmVkKF9f
Y3BwX2xpYl9hcnJheV9jb25zdGV4cHIpCi0jZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ09OU1RFWFBS
X1NURF9BUlJBWV9FVEMKLSNlbmRpZgorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfQ291bnQ+
CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3Bhbjxl
bGVtZW50X3R5cGUsIF9Db3VudD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KF9Db3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9mIHJhbmdlIGlu
IFNwYW46Omxhc3QoKSIpOworICAgICAgICByZXR1cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3Vu
dD57ZGF0YSgpICsgc2l6ZSgpIC0gX0NvdW50LCBfQ291bnR9OworICAgIH0KIAotI2lmIGRlZmlu
ZWQoVENCX1NQQU5fSEFWRV9DT05TVEVYUFJfU1REX0FSUkFZX0VUQykKLSNkZWZpbmUgVENCX1NQ
QU5fQVJSQVlfQ09OU1RFWFBSIGNvbnN0ZXhwcgotI2Vsc2UKLSNkZWZpbmUgVENCX1NQQU5fQVJS
QVlfQ09OU1RFWFBSCi0jZW5kaWYKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
ICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNp
emVfdHlwZSBfX2NvdW50KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46
OmZpcnN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07CisgICAg
fQogCi0jaWZkZWYgVENCX1NQQU5fSEFWRV9TVERfQllURQotdXNpbmcgYnl0ZSA9IHN0ZDo6Ynl0
ZTsKLSNlbHNlCi11c2luZyBieXRlID0gdW5zaWduZWQgY2hhcjsKLSNlbmRpZgorICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBl
LCBkeW5hbWljX2V4dGVudD4gbGFzdChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQK
KyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNv
dW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4g
e2RhdGEoKSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9OworICAgIH0KIAotI2lmIGRlZmlu
ZWQoVENCX1NQQU5fSEFWRV9DUFAxNykKLSNkZWZpbmUgVENCX1NQQU5fTk9ESVNDQVJEIFtbbm9k
aXNjYXJkXV0KLSNlbHNlCi0jZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRAotI2VuZGlmCisgICAg
dGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9PZmZzZXQsIHN0ZDo6c2l6ZV90IF9Db3VudCA9IGR5bmFt
aWNfZXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3Rl
eHByIGF1dG8gc3Vic3BhbigpIGNvbnN0IG5vZXhjZXB0CisgICAgICAgIC0+IFNwYW48ZWxlbWVu
dF90eXBlLCBfQ291bnQgIT0gZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09m
ZnNldD4KKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX09mZnNldCA8PSBfRXh0ZW50LCAi
T2Zmc2V0IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChfQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IF9FeHRlbnQgLSBf
T2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIp
OwogCi1UQ0JfU1BBTl9JTkxJTkVfVkFSIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4
dGVudCA9IFNJWkVfTUFYOworICAgICAgICB1c2luZyBfUmV0dXJuVHlwZSA9IFNwYW48ZWxlbWVu
dF90eXBlLCBfQ291bnQgIT0gZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50IC0gX09m
ZnNldD47CisgICAgICAgIHJldHVybiBfUmV0dXJuVHlwZXtkYXRhKCkgKyBfT2Zmc2V0LCBfQ291
bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBfT2Zmc2V0IDogX0NvdW50fTsKKyAgICB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50ID0g
ZHluYW1pY19leHRlbnQ+Ci1jbGFzcyBTcGFuOwogCi1uYW1lc3BhY2UgZGV0YWlsIHsKKyAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRf
dHlwZSwgZHluYW1pY19leHRlbnQ+CisgICAgICAgc3Vic3BhbihzaXplX3R5cGUgX19vZmZzZXQs
IHNpemVfdHlwZSBfX2NvdW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0IG5vZXhjZXB0CisgICAg
eworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19vZmZzZXQgPD0gc2l6ZSgpLCAiT2Zmc2V0
IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQpIik7CisgICAgICAg
IF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50ICA8PSBzaXplKCkgfHwgX19jb3VudCA9PSBkeW5h
bWljX2V4dGVudCwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwg
Y291bnQpIik7CisgICAgICAgIGlmIChfX2NvdW50ID09IGR5bmFtaWNfZXh0ZW50KQorICAgICAg
ICAgICAgcmV0dXJuIHtkYXRhKCkgKyBfX29mZnNldCwgc2l6ZSgpIC0gX19vZmZzZXR9OworICAg
ICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXplKCkgLSBfX29mZnNldCwgIk9m
ZnNldCArIGNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpzdWJzcGFuKG9mZnNldCwgY291bnQp
Iik7CisgICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIF9fY291bnR9OworICAgIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+Ci1zdHJ1Y3Qgc3Bhbl9zdG9y
YWdlIHsKLSAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0Owor
ICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6
ZSgpICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9FeHRlbnQ7IH0KKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7IH0K
KyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgYm9vbCBlbXB0eSgp
ICAgICAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50ID09IDA7IH0KIAotICAg
IGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IC8qdW51c2VkKi8p
IG5vZXhjZXB0Ci0gICAgICAgOiBwdHIocF9wdHIpCi0gICAge30KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBl
IF9faWR4KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJU
KF9faWR4IDwgc2l6ZSgpLCAiU3BhbjxULE4+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAg
ICAgICByZXR1cm4gX19kYXRhW19faWR4XTsKKyAgICB9CiAKLSAgICBFKiBwdHIgPSBudWxscHRy
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzaXplX3Qgc2l6ZSA9IFM7Ci19OworICAgIF9X
VEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBj
b25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgp
LCAiU3BhbjxULCBOPjo6ZnJvbnQoKSBvbiBlbXB0eSBTcGFuIik7CisgICAgICAgIHJldHVybiBf
X2RhdGFbMF07CisgICAgfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRT4KLXN0cnVjdCBzcGFuX3N0
b3JhZ2U8RSwgZHluYW1pY19leHRlbnQ+IHsKLSAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKCkg
bm9leGNlcHQgPSBkZWZhdWx0OwotCi0gICAgY29uc3RleHByIHNwYW5fc3RvcmFnZShFKiBwX3B0
ciwgc3RkOjpzaXplX3QgcF9zaXplKSBub2V4Y2VwdAotICAgICAgICA6IHB0cihwX3B0ciksIHNp
emUocF9zaXplKQotICAgIHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIHJlZmVyZW5jZSBiYWNrKCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VCwgTj46OmJhY2soKSBvbiBlbXB0eSBT
cGFuIik7CisgICAgICAgIHJldHVybiBfX2RhdGFbc2l6ZSgpLTFdOworICAgIH0KIAotICAgIEUq
IHB0ciA9IG51bGxwdHI7Ci0gICAgc3RkOjpzaXplX3Qgc2l6ZSA9IDA7Ci19OworICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBwb2ludGVyIGRhdGEoKSAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX2RhdGE7IH0KIAotLy8g
UmVpbXBsZW1lbnRhdGlvbiBvZiBDKysxNyBzdGQ6OnNpemUoKSBhbmQgc3RkOjpkYXRhKCkKLSNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgZGVmaW5lZChfX2NwcF9saWJfbm9ubWVtYmVyX2Nv
bnRhaW5lcl9hY2Nlc3MpCi11c2luZyBzdGQ6OmRhdGE7Ci11c2luZyBzdGQ6OnNpemU7Ci0jZWxz
ZQotdGVtcGxhdGUgPGNsYXNzIEM+Ci1jb25zdGV4cHIgYXV0byBzaXplKGNvbnN0IEMmIGMpIC0+
IGRlY2x0eXBlKGMuc2l6ZSgpKQotewotICAgIHJldHVybiBjLnNpemUoKTsKLX0KLQotdGVtcGxh
dGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1jb25zdGV4cHIgc3RkOjpzaXplX3Qgc2l6ZShj
b25zdCBUICgmKVtOXSkgbm9leGNlcHQKLXsKLSAgICByZXR1cm4gTjsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIEM+Ci1jb25zdGV4cHIgYXV0byBkYXRhKEMmIGMpIC0+IGRlY2x0eXBlKGMuZGF0YSgp
KQotewotICAgIHJldHVybiBjLmRhdGEoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEM+Ci1jb25z
dGV4cHIgYXV0byBkYXRhKGNvbnN0IEMmIGMpIC0+IGRlY2x0eXBlKGMuZGF0YSgpKQotewotICAg
IHJldHVybiBjLmRhdGEoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+
Ci1jb25zdGV4cHIgVCogZGF0YShUICgmYXJyYXkpW05dKSBub2V4Y2VwdAotewotICAgIHJldHVy
biBhcnJheTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEU+Ci1jb25zdGV4cHIgY29uc3QgRSogZGF0
YShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RT4gaWwpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIGls
LmJlZ2luKCk7Ci19Ci0jZW5kaWYgLy8gVENCX1NQQU5fSEFWRV9DUFAxNworLy8gW3NwYW4uaXRl
cl0sIFNwYW4gaXRlcmF0b3Igc3VwcG9ydAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICAgIGVuZCgpIGNv
bnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAg
ICAgICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihl
bmQoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2
ZXJzZV9pdGVyYXRvciAgICAgICAgICByZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2
ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQogCi0jaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQ
UDE3KSB8fCBkZWZpbmVkKF9fY3BwX2xpYl92b2lkX3QpCi11c2luZyBzdGQ6OnZvaWRfdDsKLSNl
bHNlCi10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+Ci11c2luZyB2b2lkX3QgPSB2b2lkOwotI2VuZGlm
Citwcml2YXRlOgorICAgIHBvaW50ZXIgICAgX19kYXRhOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXVzaW5nIHVuY3ZyZWZfdCA9Ci0gICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8dHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lPgotc3RydWN0IGlzX3NwYW4gOiBzdGQ6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBTPgotc3RydWN0IGlzX3NwYW48U3BhbjxULCBTPj4g
OiBzdGQ6OnRydWVfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lPgotc3RydWN0IGlzX3N0
ZF9hcnJheSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0
ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgaXNfc3RkX2FycmF5PHN0ZDo6YXJyYXk8VCwgTj4+IDogc3Rk
Ojp0cnVlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgot
c3RydWN0IGhhc19zaXplX2FuZF9kYXRhIDogc3RkOjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfc2l6ZV9hbmRfZGF0YTxULCB2b2lkX3Q8ZGVjbHR5
cGUoZGV0YWlsOjpzaXplKHN0ZDo6ZGVjbHZhbDxUPigpKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkp
Pj4KLSAgICA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlw
ZW5hbWUgVSA9IHVuY3ZyZWZfdDxDPj4KLXN0cnVjdCBpc19jb250YWluZXIgewotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9Ci0gICAgICAgICFpc19zcGFuPFU+Ojp2YWx1ZSAmJiAh
aXNfc3RkX2FycmF5PFU+Ojp2YWx1ZSAmJgotICAgICAgICAhc3RkOjppc19hcnJheTxVPjo6dmFs
dWUgJiYgaGFzX3NpemVfYW5kX2RhdGE8Qz46OnZhbHVlOwogfTsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci11c2luZyByZW1vdmVfcG9pbnRlcl90ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9p
bnRlcjxUPjo6dHlwZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUg
PSB2b2lkPgotc3RydWN0IGlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZSA6IHN0
ZDo6ZmFsc2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+Ci1z
dHJ1Y3QgaXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgIFQsIEUsCi0g
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICFzdGQ6OmlzX3NhbWU8dHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8ZGVjbHR5cGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICB2b2lkPjo6dmFsdWU+Ojp0eXBlPgotICAgIDogc3RkOjppc19jb252ZXJ0aWJsZTwKLSAg
ICAgICAgICByZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2
YWw8VD4oKSkpPiAoKilbXSwKLSAgICAgICAgICBFICgqKVtdPiB7fTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lLCB0eXBlbmFtZSA9IHNpemVfdD4KLXN0cnVjdCBpc19jb21wbGV0ZSA6IHN0ZDo6ZmFs
c2VfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY29tcGxldGU8
VCwgZGVjbHR5cGUoc2l6ZW9mKFQpKT4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKLQotfSAvLyBuYW1l
c3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXpl
X3QgRXh0ZW50PgotY2xhc3MgU3BhbiB7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX29iamVj
dDxFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1l
bnRUeXBlIG11c3QgYmUgYW4gb2JqZWN0IHR5cGUgKG5vdCBhICIKLSAgICAgICAgICAgICAgICAg
ICJyZWZlcmVuY2UgdHlwZSBvciB2b2lkKSIpOwotICAgIHN0YXRpY19hc3NlcnQoZGV0YWlsOjpp
c19jb21wbGV0ZTxFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgIkEgU3Bh
bidzIEVsZW1lbnRUeXBlIG11c3QgYmUgYSBjb21wbGV0ZSB0eXBlIChub3QgYSBmb3J3YXJkICIK
LSAgICAgICAgICAgICAgICAgICJkZWNsYXJhdGlvbikiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Fic3RyYWN0PEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAi
QSBTcGFuJ3MgRWxlbWVudFR5cGUgY2Fubm90IGJlIGFuIGFic3RyYWN0IGNsYXNzIHR5cGUiKTsK
LQotICAgIHVzaW5nIHN0b3JhZ2VfdHlwZSA9IGRldGFpbDo6c3Bhbl9zdG9yYWdlPEVsZW1lbnRU
eXBlLCBFeHRlbnQ+OwordGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KK2NsYXNzIF9XVEZfTElCQ1BQ
X1RFTVBMQVRFX1ZJUyBTcGFuPF9UcCwgZHluYW1pY19leHRlbnQ+IHsKK3ByaXZhdGU6CiAKIHB1
YmxpYzoKLSAgICAvLyBjb25zdGFudHMgYW5kIHR5cGVzCi0gICAgdXNpbmcgZWxlbWVudF90eXBl
ID0gRWxlbWVudFR5cGU7Ci0gICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2N2PEVsZW1lbnRUeXBlPjo6dHlwZTsKLSAgICB1c2luZyBzaXplX3R5cGUgPSBzdGQ6OnNp
emVfdDsKLSAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBzdGQ6OnB0cmRpZmZfdDsKLSAgICB1
c2luZyBwb2ludGVyID0gZWxlbWVudF90eXBlKjsKLSAgICB1c2luZyBjb25zdF9wb2ludGVyID0g
Y29uc3QgZWxlbWVudF90eXBlKjsKLSAgICB1c2luZyByZWZlcmVuY2UgPSBlbGVtZW50X3R5cGUm
OwotICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IGVsZW1lbnRfdHlwZSY7Ci0gICAg
dXNpbmcgaXRlcmF0b3IgPSBwb2ludGVyOwotICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBz
dGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3R5cGUgZXh0ZW50ID0gRXh0ZW50OwotCi0gICAgLy8gW3NwYW4uY29uc10sIFNwYW4gY29u
c3RydWN0b3JzLCBjb3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvcgotICAgIHRlbXBsYXRl
IDwKLSAgICAgICAgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKLSAgICAgICAgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8KEUgPT0gZHluYW1pY19leHRlbnQgfHwgRSA8PSAwKSwgaW50Pjo6dHlwZSA9
IDA+Ci0gICAgY29uc3RleHByIFNwYW4oKSBub2V4Y2VwdAotICAgIHt9CisvLyAgY29uc3RhbnRz
IGFuZCB0eXBlcworICAgIHVzaW5nIGVsZW1lbnRfdHlwZSAgICAgICAgICAgPSBfVHA7CisgICAg
dXNpbmcgdmFsdWVfdHlwZSAgICAgICAgICAgICA9IHN0ZDo6cmVtb3ZlX2N2X3Q8X1RwPjsKKyAg
ICB1c2luZyBzaXplX3R5cGUgICAgICAgICAgICAgID0gc3RkOjpzaXplX3Q7CisgICAgdXNpbmcg
ZGlmZmVyZW5jZV90eXBlICAgICAgICA9IHN0ZDo6cHRyZGlmZl90OworICAgIHVzaW5nIHBvaW50
ZXIgICAgICAgICAgICAgICAgPSBfVHAgKjsKKyAgICB1c2luZyBjb25zdF9wb2ludGVyICAgICAg
ICAgID0gY29uc3QgX1RwICo7CisgICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgICAgICA9IF9U
cCAmOworICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfVHAgJjsKKyNp
ZiAoX1dURl9MSUJDUFBfREVCVUdfTEVWRUwgPT0gMikgfHwgZGVmaW5lZChfV1RGX0xJQkNQUF9B
QklfU1BBTl9QT0lOVEVSX0lURVJBVE9SUykKKyAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAg
ICAgID0gcG9pbnRlcjsKKyNlbHNlCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9
IF9fd3JhcF9pdGVyPHBvaW50ZXI+OworI2VuZGlmCisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRv
ciAgICAgICA9IF9XVEZfVlNURDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CiAKLSAgICBU
Q0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuKHBvaW50ZXIgcHRyLCBzaXplX3R5cGUgY291bnQpCi0g
ICAgICAgIDogc3RvcmFnZV8ocHRyLCBjb3VudCkKLSAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VY
UEVDVChleHRlbnQgPT0gZHluYW1pY19leHRlbnQgfHwgY291bnQgPT0gZXh0ZW50KTsKLSAgICB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gZHluYW1pY19leHRlbnQ7
CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuKHBvaW50ZXIgZmlyc3RfZWxlbSwgcG9p
bnRlciBsYXN0X2VsZW0pCi0gICAgICAgIDogc3RvcmFnZV8oZmlyc3RfZWxlbSwgbGFzdF9lbGVt
IC0gZmlyc3RfZWxlbSkKLSAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChleHRlbnQgPT0g
ZHluYW1pY19leHRlbnQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZWxlbSAtIGZp
cnN0X2VsZW0gPT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6
OnB0cmRpZmZfdD4oZXh0ZW50KSk7Ci0gICAgfQorLy8gW3NwYW4uY29uc10sIFNwYW4gY29uc3Ry
dWN0b3JzLCBjb3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvcgorICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQgOiBfX2RhdGF7bnVs
bHB0cn0sIF9fc2l6ZXswfSB7fQogCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6
c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAotICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRlbnQgfHwgTiA9PSBFKSAmJgot
ICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9j
b21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3R5cGUgKCYpW05d
LCBFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+
Ci0gICAgY29uc3RleHByIFNwYW4oZWxlbWVudF90eXBlICgmYXJyKVtOXSkgbm9leGNlcHQgOiBz
dG9yYWdlXyhhcnIsIE4pCi0gICAge30KKyAgICBjb25zdGV4cHIgU3BhbiAgICAgICAgICAgKGNv
bnN0IFNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIFNwYW4mIG9wZXJh
dG9yPShjb25zdCBTcGFuJikgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0gICAgdGVtcGxhdGUgPHN0
ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgICAgICAgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPAotICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRl
bnQgfHwgTiA9PSBFKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFp
bmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKLSAgICAgICAg
ICAgICAgICAgIGludD46OnR5cGUgPSAwPgotICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBT
cGFuKHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mIGFycikgbm9leGNlcHQKLSAgICAgICAgOiBz
dG9yYWdlXyhhcnIuZGF0YSgpLCBOKQotICAgIHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIFNwYW4ocG9pbnRlciBfX3B0ciwgc2l6ZV90eXBlIF9fY291bnQp
IDogX19kYXRhe19fcHRyfSwgX19zaXple19fY291bnR9IHt9CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIFNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6
IF9fZGF0YXtfX2Z9LCBfX3NpemV7c3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHN0ZDo6ZGlzdGFu
Y2UoX19mLCBfX2wpKX0ge30KIAotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOLCBzdGQ6OnNp
emVfdCBFID0gRXh0ZW50LAotICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwK
LSAgICAgICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8IE4gPT0gRSkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29t
cGF0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjphcnJheTx2YWx1
ZV90eXBlLCBOPiYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICBpbnQ+
Ojp0eXBlID0gMD4KLSAgICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3Bhbihjb25zdCBzdGQ6
OmFycmF5PHZhbHVlX3R5cGUsIE4+JiBhcnIpIG5vZXhjZXB0Ci0gICAgICAgIDogc3RvcmFnZV8o
YXJyLmRhdGEoKSwgTikKLSAgICB7fQorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfU3o+Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3BhbihlbGVt
ZW50X3R5cGUgKCZfX2FycilbX1N6XSkgICAgICAgICAgbm9leGNlcHQgOiBfX2RhdGF7X19hcnJ9
LCBfX3NpemV7X1N6fSB7fQogCi0gICAgdGVtcGxhdGUgPAotICAgICAgICB0eXBlbmFtZSBDb250
YWluZXIsIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCi0gICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPAotICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2Nv
bnRhaW5lcjxDb250YWluZXI+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIGRldGFpbDo6aXNf
Y29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAotICAgICAgICAgICAgICAgICAgICBD
b250YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAotICAgICAgICAgICAgaW50Pjo6dHlwZSA9
IDA+Ci0gICAgY29uc3RleHByIFNwYW4oQ29udGFpbmVyJiBjb250KQotICAgICAgICA6IHN0b3Jh
Z2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNvbnQpKQotICAgIHt9CisgICAg
dGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBfU3osCisgICAg
ICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZV92PF9PdGhlckVs
ZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRy
PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW4o
c3RkOjphcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX1N6PiYgX19hcnIpIG5vZXhjZXB0IDogX19k
YXRhe19fYXJyLmRhdGEoKX0sIF9fc2l6ZXtfU3p9IHt9CiAKLSAgICB0ZW1wbGF0ZSA8Ci0gICAg
ICAgIHR5cGVuYW1lIENvbnRhaW5lciwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKLSAgICAgICAg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICAgICBFID09IGR5bmFtaWNfZXh0ZW50
ICYmIGRldGFpbDo6aXNfY29udGFpbmVyPENvbnRhaW5lcj46OnZhbHVlICYmCi0gICAgICAgICAg
ICAgICAgZGV0YWlsOjppc19jb250YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbnRhaW5lciYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCi0g
ICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KLSAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBDb250
YWluZXImIGNvbnQpCi0gICAgICAgIDogc3RvcmFnZV8oZGV0YWlsOjpkYXRhKGNvbnQpLCBkZXRh
aWw6OnNpemUoY29udCkpCi0gICAge30KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVu
dFR5cGUsIHN0ZDo6c2l6ZV90IF9TeiwKKyAgICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVu
dF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9PdGhl
ckVsZW1lbnRUeXBlLCBfU3o+JiBfX2Fycikgbm9leGNlcHQgOiBfX2RhdGF7X19hcnIuZGF0YSgp
fSwgX19zaXple19Ten0ge30KIAotICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW4mIG90aGVy
KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIFNwYW4o
ICAgICAgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lz
X3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxw
dHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0s
IF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPdGhlckVsZW1lbnRUeXBlLCBzdGQ6OnNpemVfdCBPdGhlckV4dGVudCwK
LSAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8Ci0gICAgICAgICAgICAgICAg
ICAoRXh0ZW50ID09IE90aGVyRXh0ZW50IHx8IEV4dGVudCA9PSBkeW5hbWljX2V4dGVudCkgJiYK
LSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPE90aGVyRWxlbWVudFR5
cGUgKCopW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVt
ZW50VHlwZSAoKilbXT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDA+
Ci0gICAgY29uc3RleHByIFNwYW4oY29uc3QgU3BhbjxPdGhlckVsZW1lbnRUeXBlLCBPdGhlckV4
dGVudD4mIG90aGVyKSBub2V4Y2VwdAotICAgICAgICA6IHN0b3JhZ2VfKG90aGVyLmRhdGEoKSwg
b3RoZXIuc2l6ZSgpKQotICAgIHt9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Cisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIFNwYW4o
Y29uc3QgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxfX2lz
X3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8Y29uc3QgX0NvbnRhaW5lciwgX1RwPjo6dmFsdWUs
IG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEo
X19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZTVEQ6OnNpemUoX19jKX0ge30KIAotICAg
IH5TcGFuKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogCi0gICAgVENCX1NQQU5fQ09OU1RFWFBSX0FT
U0lHTiBTcGFuJgotICAgIG9wZXJhdG9yPShjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBk
ZWZhdWx0OworICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwgc3RkOjpzaXpl
X3QgX090aGVyRXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAg
ICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48X090aGVyRWxlbWVudFR5cGUsIF9PdGhlckV4
dGVudD4mIF9fb3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGVfdjxfT3RoZXJF
bGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5cGUgKCopW10+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyX3Q+ID0gbnVsbHB0cikgbm9leGNlcHQKKyAgICAgICAgOiBfX2RhdGF7
X19vdGhlci5kYXRhKCl9LCBfX3NpemV7X19vdGhlci5zaXplKCl9IHt9CiAKLSAgICAvLyBbc3Bh
bi5zdWJdLCBzcGFuIHN1YnZpZXdzCi0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENvdW50Pgot
ICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90eXBlLCBDb3VudD4gZmlyc3Qo
KSBjb25zdAotICAgIHsKLSAgICAgICAgVENCX1NQQU5fRVhQRUNUKENvdW50IDw9IHNpemUoKSk7
Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpLCBDb3VudH07Ci0gICAgfQorLy8gICAgflNwYW4oKSBu
b2V4Y2VwdCA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQ291bnQ+Ci0g
ICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIENvdW50PiBsYXN0KCkg
Y29uc3QKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0NvdW50PgorICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBfQ291
bnQ+IGZpcnN0KCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVD
VChDb3VudCA8PSBzaXplKCkpOwotICAgICAgICByZXR1cm4ge2RhdGEoKSArIChzaXplKCkgLSBD
b3VudCksIENvdW50fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA8PSBzaXpl
KCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6Zmlyc3QoKSIpOworICAgICAgICByZXR1
cm4gU3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpLCBfQ291bnR9OwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6ZV90IENvdW50ID0gZHlu
YW1pY19leHRlbnQ+Ci0gICAgdXNpbmcgc3Vic3Bhbl9yZXR1cm5fdCA9Ci0gICAgICAgIFNwYW48
RWxlbWVudFR5cGUsIENvdW50ICE9IGR5bmFtaWNfZXh0ZW50Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA/IENvdW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChFeHRl
bnQgIT0gZHluYW1pY19leHRlbnQgPyBFeHRlbnQgLSBPZmZzZXQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNfZXh0ZW50
KT47Ci0KLSAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgT2Zmc2V0LCBzdGQ6OnNpemVfdCBDb3Vu
dCA9IGR5bmFtaWNfZXh0ZW50PgotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIHN1YnNwYW5fcmV0
dXJuX3Q8T2Zmc2V0LCBDb3VudD4gc3Vic3BhbigpIGNvbnN0CisgICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNv
bnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBsYXN0KCkgY29uc3Qgbm9leGNlcHQK
ICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChPZmZzZXQgPD0gc2l6ZSgpICYmCi0gICAg
ICAgICAgICAgICAgICAgICAgICAoQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgT2Zmc2V0ICsg
Q291bnQgPD0gc2l6ZSgpKSk7Ci0gICAgICAgIHJldHVybiB7ZGF0YSgpICsgT2Zmc2V0LAotICAg
ICAgICAgICAgICAgIENvdW50ICE9IGR5bmFtaWNfZXh0ZW50ID8gQ291bnQgOiBzaXplKCkgLSBP
ZmZzZXR9OworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50IDw9IHNpemUoKSwgIkNv
dW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KCkiKTsKKyAgICAgICAgcmV0dXJuIFNwYW48
ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsK
ICAgICB9CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHlu
YW1pY19leHRlbnQ+Ci0gICAgZmlyc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdAorICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBl
LCBkeW5hbWljX2V4dGVudD4gZmlyc3Qoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0
CiAgICAgewotICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoY291bnQgPD0gc2l6ZSgpKTsKLSAgICAg
ICAgcmV0dXJuIHtkYXRhKCksIGNvdW50fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9f
Y291bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OmZpcnN0KGNvdW50
KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07CiAgICAgfQogCi0gICAgVENC
X1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgotICAg
IGxhc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgY29uc3RleHByIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4g
bGFzdCAoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0CiAgICAgewotICAgICAgICBU
Q0JfU1BBTl9FWFBFQ1QoY291bnQgPD0gc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHtkYXRhKCkg
KyAoc2l6ZSgpIC0gY291bnQpLCBjb3VudH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChf
X2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBTcGFuOjpsYXN0KGNvdW50
KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9
OwogICAgIH0KIAotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90eXBlLCBk
eW5hbWljX2V4dGVudD4KLSAgICBzdWJzcGFuKHNpemVfdHlwZSBvZmZzZXQsIHNpemVfdHlwZSBj
b3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdAorICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBf
T2Zmc2V0LCBzdGQ6OnNpemVfdCBfQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBTcGFuPGVsZW1lbnRfdHlwZSwg
X0NvdW50PiBzdWJzcGFuKCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFO
X0VYUEVDVChvZmZzZXQgPD0gc2l6ZSgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAoY291
bnQgPT0gZHluYW1pY19leHRlbnQgfHwgb2Zmc2V0ICsgY291bnQgPD0gc2l6ZSgpKSk7Ci0gICAg
ICAgIHJldHVybiB7ZGF0YSgpICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgIGNvdW50ID09IGR5
bmFtaWNfZXh0ZW50ID8gc2l6ZSgpIC0gb2Zmc2V0IDogY291bnR9OworICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX09mZnNldCA8PSBzaXplKCksICJPZmZzZXQgb3V0IG9mIHJhbmdlIGluIFNw
YW46OnN1YnNwYW4oKSIpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50ID09IGR5
bmFtaWNfZXh0ZW50IHx8IF9Db3VudCA8PSBzaXplKCkgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsgY291
bnQgb3V0IG9mIHJhbmdlIGluIFNwYW46OnN1YnNwYW4oKSIpOworICAgICAgICByZXR1cm4gU3Bh
bjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgX09mZnNldCwgX0NvdW50ID09IGR5bmFt
aWNfZXh0ZW50ID8gc2l6ZSgpIC0gX09mZnNldCA6IF9Db3VudH07CiAgICAgfQogCi0gICAgLy8g
W3NwYW4ub2JzXSwgc3BhbiBvYnNlcnZlcnMKLSAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUo
KSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdG9yYWdlXy5zaXplOyB9Ci0KLSAgICBjb25zdGV4
cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdAorICAgIGNvbnN0ZXhwciBT
cGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKKyAgICBzdWJzcGFuKHNpemVfdHlwZSBfX29mZnNldCwgc2l6ZV90eXBlIF9f
Y291bnQgPSBkeW5hbWljX2V4dGVudCkgY29uc3Qgbm9leGNlcHQKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzaXplKCkgKiBzaXplb2YoZWxlbWVudF90eXBlKTsKKyAgICAgICAgX1dURl9MSUJDUFBf
QVNTRVJUKF9fb2Zmc2V0IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gU3Bhbjo6
c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19j
b3VudCAgPD0gc2l6ZSgpIHx8IF9fY291bnQgPT0gZHluYW1pY19leHRlbnQsICJjb3VudCBvdXQg
b2YgcmFuZ2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBpZiAo
X19jb3VudCA9PSBkeW5hbWljX2V4dGVudCkKKyAgICAgICAgICAgIHJldHVybiB7ZGF0YSgpICsg
X19vZmZzZXQsIHNpemUoKSAtIF9fb2Zmc2V0fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJU
KF9fY291bnQgPD0gc2l6ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFu
Z2UgaW4gU3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2Rh
dGEoKSArIF9fb2Zmc2V0LCBfX2NvdW50fTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9OT0RJU0NB
UkQgY29uc3RleHByIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHNpemUoKSA9PSAwOwotICAgIH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiBfX3NpemU7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemUg
KiBzaXplb2YoZWxlbWVudF90eXBlKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgICAgICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIF9fc2l6ZSA9PSAwOyB9CiAKLSAgICAvLyBbc3Bhbi5lbGVtXSwgc3BhbiBlbGVtZW50IGFj
Y2VzcwotICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVf
dHlwZSBpZHgpIGNvbnN0CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3Rl
eHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBfX2lkeCkgY29uc3Qgbm9leGNlcHQK
ICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVChpZHggPCBzaXplKCkpOwotICAgICAgICBy
ZXR1cm4gKihkYXRhKCkgKyBpZHgpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19pZHgg
PCBzaXplKCksICJTcGFuPFQ+W10gaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1
cm4gX19kYXRhW19faWR4XTsKICAgICB9CiAKLSAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSByZWZl
cmVuY2UgZnJvbnQoKSBjb25zdAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNv
bnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2VwdAogICAgIHsKLSAgICAgICAg
VENCX1NQQU5fRVhQRUNUKCFlbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuICpkYXRhKCk7CisgICAg
ICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgIlNwYW48VD5bXS5mcm9udCgpIG9uIGVt
cHR5IFNwYW4iKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVswXTsKICAgICB9CiAKLSAgICBUQ0Jf
U1BBTl9DT05TVEVYUFIxMSByZWZlcmVuY2UgYmFjaygpIGNvbnN0CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBiYWNrKCkgY29uc3Qgbm9leGNl
cHQKICAgICB7Ci0gICAgICAgIFRDQl9TUEFOX0VYUEVDVCghZW1wdHkoKSk7Ci0gICAgICAgIHJl
dHVybiAqKGRhdGEoKSArIChzaXplKCkgLSAxKSk7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VS
VCghZW1wdHkoKSwgIlNwYW48VD5bXS5iYWNrKCkgb24gZW1wdHkgU3BhbiIpOworICAgICAgICBy
ZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgcG9pbnRlciBk
YXRhKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3RvcmFnZV8ucHRyOyB9Ci0KLSAgICAvLyBb
c3Bhbi5pdGVyYXRvcnNdLCBzcGFuIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICBjb25zdGV4cHIgaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0KIAotICAgIGNv
bnN0ZXhwciBpdGVyYXRvciBlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBz
aXplKCk7IH0KLQotICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9y
IHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0Ci0gICAgewotICAgICAgICByZXR1cm4gcmV2ZXJzZV9p
dGVyYXRvcihlbmQoKSk7Ci0gICAgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBwb2ludGVyIGRhdGEoKSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBu
b2V4Y2VwdCB7IHJldHVybiBfX2RhdGE7IH0KIAotICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQ
UiByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCBub2V4Y2VwdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7Ci0gICAgfQorLy8gW3NwYW4uaXRlcl0s
IFNwYW4gaXRlcmF0b3Igc3VwcG9ydAorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
IGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2Vw
dCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICAgIGVuZCgpIGNvbnN0
IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAg
ICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQo
KSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJz
ZV9pdGVyYXRvciAgICAgICAgICByZW5kKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJz
ZV9pdGVyYXRvcihiZWdpbigpKTsgfQogCiBwcml2YXRlOgotICAgIHN0b3JhZ2VfdHlwZSBzdG9y
YWdlX3t9OworICAgIHBvaW50ZXIgICBfX2RhdGE7CisgICAgc2l6ZV90eXBlIF9fc2l6ZTsKIH07
CiAKLSNpZmRlZiBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9HVUlERVMKKyNpZiAhZGVmaW5lZChf
V1RGX0xJQkNQUF9IQVNfTk9fUkFOR0VTKQordGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXpl
X3QgX0V4dGVudD4KK2lubGluZSBjb25zdGV4cHIgYm9vbCBzdGQ6OnJhbmdlczo6ZW5hYmxlX2Jv
cnJvd2VkX3JhbmdlPFNwYW48X1RwLCBfRXh0ZW50PiA+ID0gdHJ1ZTsKKyNlbmRpZiAvLyAhZGVm
aW5lZChfV1RGX0xJQkNQUF9IQVNfTk9fUkFOR0VTKQorCisvLyAgYXNCeXRlcyAmIGFzV3JpdGFi
bGVCeXRlcwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX0V4dGVudD4KK19XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZCithdXRvIGFzQnl0ZXMoU3BhbjxfVHAsIF9FeHRlbnQ+
IF9fcykgbm9leGNlcHQKKy0+IFNwYW48Y29uc3Qgc3RkOjpieXRlLCBfRXh0ZW50ID09IGR5bmFt
aWNfZXh0ZW50ID8gZHluYW1pY19leHRlbnQgOiBfRXh0ZW50ICogc2l6ZW9mKF9UcCk+Cit7IHJl
dHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RkOjpieXRlICo+KF9fcy5kYXRhKCkpLCBf
X3Muc2l6ZV9ieXRlcygpIH07IH0KKwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc3RkOjpzaXplX3Qg
X0V4dGVudD4KK19XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCithdXRvIGFzV3JpdGFibGVC
eXRlcyhTcGFuPF9UcCwgX0V4dGVudD4gX19zKSBub2V4Y2VwdAorLT4gc3RkOjplbmFibGVfaWZf
dDwhc3RkOjppc19jb25zdF92PF9UcD4sIFNwYW48c3RkOjpieXRlLCBfRXh0ZW50ID09IGR5bmFt
aWNfZXh0ZW50ID8gZHluYW1pY19leHRlbnQgOiBfRXh0ZW50ICogc2l6ZW9mKF9UcCk+PgoreyBy
ZXR1cm4geyByZWludGVycHJldF9jYXN0PHN0ZDo6Ynl0ZSAqPihfX3MuZGF0YSgpKSwgX19zLnNp
emVfYnl0ZXMoKSB9OyB9CisKKy8vICBEZWR1Y3Rpb24gZ3VpZGVzCit0ZW1wbGF0ZTxjbGFzcyBf
VHAsIHN0ZDo6c2l6ZV90IF9Tej4KKyAgICBTcGFuKF9UcCAoJilbX1N6XSkgLT4gU3BhbjxfVHAs
IF9Tej47CisKK3RlbXBsYXRlPGNsYXNzIF9UcCwgc3RkOjpzaXplX3QgX1N6PgorICAgIFNwYW4o
c3RkOjphcnJheTxfVHAsIF9Tej4mKSAtPiBTcGFuPF9UcCwgX1N6PjsKKwordGVtcGxhdGU8Y2xh
c3MgX1RwLCBzdGQ6OnNpemVfdCBfU3o+CisgICAgU3Bhbihjb25zdCBzdGQ6OmFycmF5PF9UcCwg
X1N6PiYpIC0+IFNwYW48Y29uc3QgX1RwLCBfU3o+OwogCi0vKiBEZWR1Y3Rpb24gR3VpZGVzICov
Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+Ci1TcGFuKFQgKCYpW05dKS0+U3BhbjxULCBO
PjsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgotU3BhbihzdGQ6OmFycmF5PFQsIE4+
JiktPlNwYW48VCwgTj47Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KLVNwYW4oY29u
c3Qgc3RkOjphcnJheTxULCBOPiYpLT5TcGFuPGNvbnN0IFQsIE4+OwotCi10ZW1wbGF0ZSA8Y2xh
c3MgQ29udGFpbmVyPgotU3BhbihDb250YWluZXImKS0+U3Bhbjx0eXBlbmFtZSBDb250YWluZXI6
OnZhbHVlX3R5cGU+OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotU3Bhbihjb25zdCBD
b250YWluZXImKS0+U3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+Owot
Ci0jZW5kaWYgLy8gVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCi0KLSNpZmRlZiBUQ0Jf
U1BBTl9JTkNMVURFX01BS0VfU1BBTgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUs
IHN0ZDo6c2l6ZV90IEV4dGVudD4KLWNvbnN0ZXhwciBTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+
Ci1tYWtlX3NwYW4oU3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50PiBzKSBub2V4Y2VwdAotewotICAg
IHJldHVybiBzOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLWNv
bnN0ZXhwciBTcGFuPFQsIE4+IG1ha2Vfc3BhbihUICgmYXJyKVtOXSkgbm9leGNlcHQKLXsKLSAg
ICByZXR1cm4ge2Fycn07Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBO
PgotVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48VCwgTj4gbWFrZV9zcGFuKHN0ZDo6YXJy
YXk8VCwgTj4mIGFycikgbm9leGNlcHQKLXsKLSAgICByZXR1cm4ge2Fycn07Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBS
IFNwYW48Y29uc3QgVCwgTj4KLW1ha2Vfc3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIE4+JiBhcnIp
IG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHthcnJ9OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29udGFpbmVyPgotY29uc3RleHByIFNwYW48dHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBl
PiBtYWtlX3NwYW4oQ29udGFpbmVyJiBjb250KQotewotICAgIHJldHVybiB7Y29udH07Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1jb25zdGV4cHIgU3Bhbjxjb25zdCB0eXBl
bmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+Ci1tYWtlX3NwYW4oY29uc3QgQ29udGFpbmVyJiBj
b250KQotewotICAgIHJldHVybiB7Y29udH07Ci19Ci0jZW5kaWYgLy8gVENCX1NQQU5fSU5DTFVE
RV9NQUtFX1NQQU4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzdGQ6OnNpemVf
dCBFeHRlbnQ+Ci1TcGFuPGNvbnN0IGJ5dGUsICgoRXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50KSA/
IGR5bmFtaWNfZXh0ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgotYXNCeXRlcyhTcGFuPEVsZW1l
bnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHtyZWludGVycHJldF9j
YXN0PGNvbnN0IGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKLX0KLQotdGVtcGxh
dGUgPAotICAgIGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50LAotICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnN0PEVsZW1lbnRUeXBlPjo6dmFsdWUsIGludD46
OnR5cGUgPSAwPgotU3BhbjxieXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4dGVudCkgPyBkeW5h
bWljX2V4dGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzaXpl
b2YoRWxlbWVudFR5cGUpICogRXh0ZW50KT4KLWFzV3JpdGFibGVCeXRlcyhTcGFuPEVsZW1lbnRU
eXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Ci17Ci0gICAgcmV0dXJuIHtyZWludGVycHJldF9jYXN0
PGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKLX0KLQotdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IE4sIHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+Ci1jb25zdGV4cHIgYXV0byBnZXQo
U3BhbjxFLCBTPiBzKSAtPiBkZWNsdHlwZShzW05dKQotewotICAgIHJldHVybiBzW05dOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRQotCi1uYW1lc3BhY2Ugc3Rk
IHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50PgotY2xh
c3MgdHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxFbGVtZW50VHlwZSwg
RXh0ZW50Pj4KLSAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIEV4dGVudD4g
e307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KLWNsYXNzIHR1cGxlX3NpemU8
VENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OlNwYW48Ci0gICAgRWxlbWVudFR5cGUsIFRDQl9TUEFO
X05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudD4+OyAvLyBub3QgZGVmaW5lZAordGVtcGxh
dGU8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBTcGFuKF9Db250YWluZXImKSAtPiBTcGFuPHR5cGVu
YW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGU+OwogCi10ZW1wbGF0ZSA8c2l6ZV90IEksIHR5cGVu
YW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50PgotY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBU
Q0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50Pj4gewotcHVi
bGljOgotICAgIHN0YXRpY19hc3NlcnQoRXh0ZW50ICE9IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1F
OjpkeW5hbWljX2V4dGVudCAmJgotICAgICAgICAgICAgICAgICAgICAgIEkgPCBFeHRlbnQsCi0g
ICAgICAgICAgICAgICAgICAiIik7Ci0gICAgdXNpbmcgdHlwZSA9IEVsZW1lbnRUeXBlOwotfTsK
K3RlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+CisgICAgU3Bhbihjb25zdCBfQ29udGFpbmVyJikg
LT4gU3Bhbjxjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlPjsKIAotfSAvLyBl
bmQgbmFtZXNwYWNlIHN0ZAorX1dURl9MSUJDUFBfRU5EX05BTUVTUEFDRQogCiB1c2luZyBXVEY6
OlNwYW47CiB1c2luZyBXVEY6OmFzQnl0ZXM7CiB1c2luZyBXVEY6OmFzV3JpdGFibGVCeXRlczsK
IAotI2VuZGlmIC8vIFRDQl9TUEFOX0hQUF9JTkNMVURFRAorI2VuZGlmIC8vIF9XVEZfTElCQ1BQ
X1NQQU4K
</data>

          </attachment>
      

    </bug>

</bugzilla>