<?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>243208</bug_id>
          
          <creation_ts>2022-07-26 04:26:52 -0700</creation_ts>
          <short_desc>[WASM-GC] Add support for struct.new, struct.get and struct.set</short_desc>
          <delta_ts>2022-11-02 17:15:04 -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>WebAssembly</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>247394</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1886744</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-07-26 04:26:52 -0700</bug_when>
    <thetext>Wasm GC proposal introduces structs (https://github.com/WebAssembly/gc/blob/main/proposals/gc/MVP.md#structures)
To enhance support of Wasm GC proposal in JSC this patch supports struct.new, struct.get and struct.set operations. These operations have been chosen because it is convenient to test it together and hard to test it separately.
Current implementation isn&apos;t optimal, at least for B3 and Air tiers, but optimization (replacing runtime call to a load by known offset) for struct.get/set could be easily added as a next step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887058</commentid>
    <comment_count>1</comment_count>
      <attachid>461243</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-07-27 08:48:11 -0700</bug_when>
    <thetext>Created attachment 461243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887063</commentid>
    <comment_count>2</comment_count>
      <attachid>461245</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-07-27 08:51:14 -0700</bug_when>
    <thetext>Created attachment 461245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887064</commentid>
    <comment_count>3</comment_count>
      <attachid>461246</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-07-27 08:52:26 -0700</bug_when>
    <thetext>Created attachment 461246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887066</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-07-27 08:54:23 -0700</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1888361</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-02 04:27:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/97971445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891316</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-08-15 05:36:20 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/3303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1905880</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-15 11:20:19 -0700</bug_when>
    <thetext>Committed 255586@main (481cb6061b39): &lt;https://commits.webkit.org/255586@main&gt;

Reviewed commits have been landed. Closing PR #3303 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1905904</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-10-15 14:31:56 -0700</bug_when>
    <thetext>Re-opening for pull request https://github.com/WebKit/WebKit/pull/5421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1905905</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-15 14:34:35 -0700</bug_when>
    <thetext>Committed 255592@main (463d09c7e89e): &lt;https://commits.webkit.org/255592@main&gt;

Reviewed commits have been landed. Closing PR #5421 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461243</attachid>
            <date>2022-07-27 08:48:11 -0700</date>
            <delta_ts>2022-07-27 08:51:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243208-20220727224809.patch</filename>
            <type>text/plain</type>
            <size>97220</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">RnJvbSAwODg2ZDhhMzU3ZWYxMTk1Y2JiMzEwNjE5ODcyOWMxNWE0MWNhZTNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEbWl0cnkgQmV6aGV0c2tvdiA8ZGJlemhldHNrb3ZAaWdhbGlh
LmNvbT4KRGF0ZTogTW9uLCAxNiBNYXkgMjAyMiAxOTozMTo0MSArMDcwMApTdWJqZWN0OiBbUEFU
Q0hdIGludHJvZHVjZSBzdHJ1Y3QubmV3LCBzdHJ1Y3QuZ2V0IGFuZCBzdHJ1Y3Quc2V0LgoKLS0t
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgfCAgIDIgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0ICAgICAgICAgICAgIHwgICA0ICsKIC4u
Li9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgICB8ICAyMyArCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCAgICAgICAgICAgfCAgIDEgKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oICAgICAgICAgICAgIHwgICAyICsKIC4uLi9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmggICB8ICAgMSArCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtICAgfCAgIDMgKwogLi4uL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIHwgICAzICsKIC4uLi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggICB8ICAgMSArCiAuLi4vd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwICAgICAgICAgICAgICAgfCAxMDQgKysrCiAuLi4vSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgfCAxMDQgKysrCiAuLi4vSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCAgfCAxMjkgKysrKwogLi4uL3dhc20vV2FzbUlS
R2VuZXJhdG9ySGVscGVycy5oICAgICAgICAgICAgIHwgIDI5ICsKIC4uLi93YXNtL1dhc21MTElu
dEdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAzNiArKwogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIHwgIDM3ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5oICAgfCAgIDQgKwogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5jcHAgIHwgIDMyICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuaCAgICB8ICAgMyArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU3RydWN0LmNwcCAgICAgfCAxMTIgKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVN0cnVjdC5oICAgICAgIHwgIDgxICsrKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJs
eUhlbHBlcnMuaCAgICAgICAgICAgIHwgICAyICsKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlT
dHJ1Y3QuY3BwICAgICAgICAgICB8ICA4NiArKysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlT
dHJ1Y3QuaCAgICAgICAgICAgICB8ICA3MiArKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5U3Ry
dWN0Q29uc3RydWN0b3IuY3BwICB8ICA5MSArKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5U3Ry
dWN0Q29uc3RydWN0b3IuaCAgICB8ICA1NSArKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1
Y3RQcm90b3R5cGUuY3BwICAgIHwgIDcyICsrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1
Y3RQcm90b3R5cGUuaCAgICAgIHwgIDU5ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93
YXNtLmpzb24gICAgICAgICAgfCAgIDMgKwogSlNUZXN0cy93YXNtL2djL3N0cnVjdHMuanMgICAg
ICAgICAgICAgICAgICAgIHwgNjExICsrKysrKysrKysrKysrKysrKwogSlNUZXN0cy93YXNtL3dh
c20uanNvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIDMwIGZpbGVzIGNoYW5nZWQs
IDE3NjUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TdHJ1Y3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVN0cnVjdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5jcHAKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5U3RydWN0
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVN0cnVjdENvbnN0cnVjdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
U3RydWN0UHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlLmgKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWUwOThjYWVmY2FjLi41ZmFjMGVjNjY0OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE0Miw2ICsxNDIsOCBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5jcHAKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29u
c3RydWN0b3IuY3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlw
ZS5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IuY3BwCisgICAg
d2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5jcHAKICAgICB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUuY3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDlkMGRjOWVkYjYxNi4uYWE2Yzg5NzExYTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMTI5LDYgKzExMjksNyBAQCB3YXNt
L1dhc21TbG93UGF0aHMuY3BwCiB3YXNtL1dhc21TdHJlYW1pbmdDb21waWxlci5jcHAKIHdhc20v
V2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKIHdhc20vV2FzbVN0cmVhbWluZ1BsYW4uY3BwCit3YXNt
L1dhc21TdHJ1Y3QuY3BwCiB3YXNtL1dhc21UYWJsZS5jcHAKIHdhc20vV2FzbVRhZy5jcHAKIHdh
c20vV2FzbVRodW5rcy5jcHAKQEAgLTExNDgsNiArMTE0OSw3IEBAIHdhc20vanMvSlNXZWJBc3Nl
bWJseUxpbmtFcnJvci5jcHAKIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAKIHdhc20v
anMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKIHdhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5jcHAKK3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5jcHAKIHdhc20vanMvSlNXZWJB
c3NlbWJseVRhYmxlLmNwcAogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNwcAogd2FzbS9qcy9X
YXNtVG9KUy5jcHAKQEAgLTExNzEsNiArMTE3Myw4IEBAIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGUuY3BwCiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAogd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAogd2FzbS9qcy9XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKK3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1
Y3RDb25zdHJ1Y3Rvci5jcHAKK3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUuY3Bw
CiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKIHdhc20vanMvV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKIHdhc20vanMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rv
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CmluZGV4IDZjNDgzZGY0ODk1Mi4uZDhiZDY4OWJjMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE5MTAsNCArMTkxMCwyNyBAQCBv
cCA6aTMxX2dldF91LAogICAgICAgICByZWY6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CiAKK29w
IDpzdHJ1Y3RfbmV3LAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIHR5cGVJbmRleDogdW5zaWduZWQsCisgICAgICAgIGZpcnN0VmFsdWU6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICB9CisKK29wIDpzdHJ1Y3RfZ2V0LAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHN0cnVjdFJlZmVyZW5jZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICB0eXBlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBmaWVsZElu
ZGV4OiB1bnNpZ25lZCwKKyAgICB9CisKK29wIDpzdHJ1Y3Rfc2V0LAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgc3RydWN0UmVmZXJlbmNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHR5cGVJbmRl
eDogdW5zaWduZWQsCisgICAgICAgIGZpZWxkSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICB2YWx1
ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKwogZW5kX3NlY3Rpb24gOldhc20KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggOGE0YzA4MmNiMzZlLi5hMmVlNjFjZDliNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zNDgsNiArMzQ4LDcgQEAgSGVhcDo6
SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgd2ViQXNzZW1ibHlHbG9iYWxI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkp
CiAgICAgLCB3ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
QXJnczxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkpCiAgICAgLCB3ZWJBc3NlbWJseU1lbW9yeUhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkK
KyAgICAsIHdlYkFzc2VtYmx5U3RydWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU1dlYkFzc2VtYmx5U3RydWN0PigpKQogICAgICwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNb2R1bGU+KCkpCiAgICAg
LCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCiAgICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5VGFibGU+KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggNDE4ZjI0ZmQxMjEyLi4yNWJkZjZiMzE2YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE3NSw2ICsxNzUsNyBAQCBjbGFzcyBI
ZWFwOwogICAgIHYod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNzZW1ibHlHbG9iYWxIZWFw
Q2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpIFwKICAgICB2KHdlYkFzc2VtYmx5SW5zdGFu
Y2VTcGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKSBcCiAgICAgdih3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3NlbWJseU1lbW9y
eUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkgXAorICAgIHYod2ViQXNzZW1ibHlT
dHJ1Y3RTcGFjZSwgd2ViQXNzZW1ibHlTdHJ1Y3RIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlT
dHJ1Y3QpIFwKICAgICB2KHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdlYkFzc2VtYmx5TW9kdWxl
SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKSBcCiAgICAgdih3ZWJBc3NlbWJseU1v
ZHVsZVJlY29yZFNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQpIFwKICAgICB2KHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgd2Vi
QXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKSBcCkBAIC05Njcs
NiArOTY4LDcgQEAgcHVibGljOgogICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUdsb2Jh
bEhlYXBDZWxsVHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlJbnN0YW5jZUhl
YXBDZWxsVHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5U3RydWN0SGVhcENlbGxUeXBl
OwogICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKICAg
ICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CiAg
ICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAppbmRleCAwYjQ0ZmUw
MWU5NDUuLjdmZmE5YWEyM2E1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFN1YnNwYWNlVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU3Vic3BhY2VUeXBlcy5oCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5U3RydWN0
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseVRhZy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCBlNzA5YTZmMTY5OTIuLmQ1MDFkOWU5YmZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC03
MjEsNiArNzIxLDkgQEAgc2xvd1dhc21PcChzZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5n
KQogc2xvd1dhc21PcChtZW1vcnlfYXRvbWljX3dhaXQzMikKIHNsb3dXYXNtT3AobWVtb3J5X2F0
b21pY193YWl0NjQpCiBzbG93V2FzbU9wKG1lbW9yeV9hdG9taWNfbm90aWZ5KQorc2xvd1dhc21P
cChzdHJ1Y3RfbmV3KQorc2xvd1dhc21PcChzdHJ1Y3RfZ2V0KQorc2xvd1dhc21PcChzdHJ1Y3Rf
c2V0KQogCiB3YXNtT3AoZ3Jvd19tZW1vcnksIFdhc21Hcm93TWVtb3J5LCBtYWNybyhjdHgpCiAg
ICAgY2FsbFdhc21TbG93UGF0aChfc2xvd19wYXRoX3dhc21fZ3Jvd19tZW1vcnkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZmFk
YzA2Njc4YTczLi42OGFkOWMwM2I1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE2MSw2ICsxNjEsNyBAQAogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgorI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlTdHJ1Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKQEAgLTI0
Niw2ICsyNDcsOCBAQAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCiAjaW5j
bHVkZSAiV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIldl
YkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlT
dHJ1Y3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5VGFnQ29u
c3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IDczZTU2ODE2ZTU1ZC4uYjIxYTI2ZjkwMzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE4MSw2ICsxODEsNyBA
QCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAgICAgbWFjcm8o
V2ViQXNzZW1ibHlNZW1vcnksICAgICAgIHdlYkFzc2VtYmx5TWVtb3J5LCAgICAgICB3ZWJBc3Nl
bWJseU1lbW9yeSwgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSwgICAgICAgTWVtb3J5LCAgICAg
ICBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oV2ViQXNzZW1ibHlN
b2R1bGUsICAgICAgIHdlYkFzc2VtYmx5TW9kdWxlLCAgICAgICB3ZWJBc3NlbWJseU1vZHVsZSwg
ICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSwgICAgICAgTW9kdWxlLCAgICAgICBvYmplY3QsIHR5
cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oV2ViQXNzZW1ibHlSdW50aW1lRXJyb3Is
IHdlYkFzc2VtYmx5UnVudGltZUVycm9yLCB3ZWJBc3NlbWJseVJ1bnRpbWVFcnJvciwgRXJyb3JJ
bnN0YW5jZSwgICAgICAgICAgICAgUnVudGltZUVycm9yLCBlcnJvciwgIHR5cGVFeHBvc2VkQnlE
ZWZhdWx0KSBcCisgICAgbWFjcm8oV2ViQXNzZW1ibHlTdHJ1Y3QsICAgICAgIHdlYkFzc2VtYmx5
U3RydWN0LCAgICAgICB3ZWJBc3NlbWJseVN0cnVjdCwgICAgICAgSlNXZWJBc3NlbWJseVN0cnVj
dCwgICAgICAgU3RydWN0LCAgICAgICBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAg
ICAgbWFjcm8oV2ViQXNzZW1ibHlUYWJsZSwgICAgICAgIHdlYkFzc2VtYmx5VGFibGUsICAgICAg
ICB3ZWJBc3NlbWJseVRhYmxlLCAgICAgICAgSlNXZWJBc3NlbWJseVRhYmxlLCAgICAgICAgVGFi
bGUsICAgICAgICBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oV2Vi
QXNzZW1ibHlUYWcsICAgICAgICAgIHdlYkFzc2VtYmx5VGFnLCAgICAgICAgICB3ZWJBc3NlbWJs
eVRhZywgICAgICAgICAgSlNXZWJBc3NlbWJseVRhZywgICAgICAgICAgVGFnLCAgICAgICAgICBv
YmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAxY2VjZmQyZWE4NWMu
Ljc1YzkxMzgxOWQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCkBAIC0zODEsNiArMzgxLDkgQEAgcHVibGljOgogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEkzMU5ldyhFeHByZXNzaW9uVHlwZSB2YWx1
ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkSTMxR2V0UyhFeHByZXNzaW9uVHlwZSByZWYsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEkzMUdldFUo
RXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTdHJ1Y3ROZXcodWludDMyX3QgaW5kZXgsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFN0cnVjdEdldChFeHByZXNzaW9u
VHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJ
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkU3RydWN0U2V0KEV4cHJlc3Npb25UeXBlIHN0cnVjdFJlZmVyZW5jZSwg
dWludDMyX3QgdHlwZUluZGV4LCB1aW50MzJfdCBmaWVsZEluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSk7CiAKICAgICAvLyBCYXNpYyBvcGVyYXRvcnMKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CkBA
IC0zMDY2LDYgKzMwNjksMTA3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZEkzMUdldFUoRXhw
cmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkU3RydWN0TmV3KHVpbnQzMl90IHR5
cGVJbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSAq
bV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJbmRleF0tPmFzPFN0cnVjdFR5cGU+KCk7CisgICAg
QVNTRVJUKHN0cnVjdFR5cGUuZmllbGRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKworICAgIEFT
U0VSVCh0eXBlSW5kZXggPCBtX2luZm8udHlwZUNvdW50KCkpOworICAgIHJlc3VsdCA9IHRtcEZv
clR5cGUoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgbV9pbmZvLnR5cGVTaWdu
YXR1cmVzW3R5cGVJbmRleF0tPmluZGV4KCkgfSk7CisKKyAgICBhdXRvKiBwYXRjaCA9IGFkZFBh
dGNocG9pbnQoQjM6OkludDY0KTsKKyAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9s
YXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CisgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRz
LmFwcGVuZChCMzo6VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworCisg
ICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCA4PiBwYXRjaEFyZ3M7CisgICAgcGF0Y2hBcmdzLmFw
cGVuZChDb25zdHJhaW5lZFRtcChpbnN0YW5jZVZhbHVlKCksIEIzOjpWYWx1ZVJlcDo6cmVnKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0cmFpbmVk
VG1wKFRtcChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciksIEIzOjpWYWx1ZVJlcDo6cmVnKEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJn
cy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJhaW5lZFRtcChh
cmdzW2ldLCBCMzo6VmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpKSk7CisKKyAgICBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIGhhbmRsZSA9IHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaCwgcGF0Y2hBcmdzKTsKKyAgICBwYXRjaC0+
c2V0R2VuZXJhdG9yKFt0aGlzLCB0eXBlSW5kZXgsIGhhbmRsZV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAg
ICBoYW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICBlbWl0U3RydWN0
TmV3SW1wbChqaXQsIHR5cGVJbmRleCk7CisgICAgfSk7CisKKyAgICBUbXAgcmVzdWx0U3RydWN0
ID0gVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UGF0Y2hwb2ludChtX2N1
cnJlbnRCbG9jaywgcGF0Y2gsIFZlY3RvcjxUbXAsIDg+Ojpmcm9tKHJlc3VsdFN0cnVjdCksIFdU
Rk1vdmUocGF0Y2hBcmdzKSk7CisgICAgYXBwZW5kKE1vdmUsIHJlc3VsdFN0cnVjdCwgcmVzdWx0
KTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFN0cnVj
dEdldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwg
dWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJl
c3VsdAoreworICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSAqbV9pbmZvLnR5cGVTaWduYXR1
cmVzW3R5cGVJbmRleF0tPmFzPFN0cnVjdFR5cGU+KCk7CisgICAgQVNTRVJUKHR5cGVJbmRleCA8
IG1faW5mby50eXBlQ291bnQoKSk7CisgICAgQVNTRVJUKGZpZWxkSW5kZXggPCBzdHJ1Y3RUeXBl
LmZpZWxkQ291bnQoKSk7CisKKyAgICBhdXRvIHJldHVyblZhbHVlID0gZzY0KCk7CisgICAgZW1p
dENDYWxsKCZvcGVyYXRpb25XYXNtU3RydWN0R2V0LCByZXR1cm5WYWx1ZSwgc3RydWN0UmVmZXJl
bmNlLCBhZGRDb25zdGFudChUeXBlczo6STMyLCBmaWVsZEluZGV4KSk7CisKKyAgICBjb25zdCBh
dXRvIGZpZWxkVHlwZSA9IHN0cnVjdFR5cGUuZmllbGQoZmllbGRJbmRleCkudHlwZTsKKyAgICBy
ZXN1bHQgPSB0bXBGb3JUeXBlKGZpZWxkVHlwZSk7CisgICAgc3dpdGNoIChmaWVsZFR5cGUua2lu
ZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgYXBwZW5kKE1vdmUzMiwgcmV0
dXJuVmFsdWUsIHJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6
OlJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgIGNhc2UgVHlwZUtpbmQ6Okk2
NDoKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJldHVyblZhbHVlLCByZXN1bHQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CisgICAgICAgIGFwcGVuZChNb3ZlMzJUb0Zs
b2F0LCByZXR1cm5WYWx1ZSwgcmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBl
S2luZDo6RjY0OgorICAgICAgICBhcHBlbmQoTW92ZTY0VG9Eb3VibGUsIHJldHVyblZhbHVlLCBy
ZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8g
QWlySVJHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVu
Y2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5
cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBl
ID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOwor
ICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8udHlwZUNvdW50KCkpOworICAgIEFTU0VSVChm
aWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENvdW50KCkpOworCisgICAgY29uc3QgYXV0byBm
aWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7CisgICAgYXV0byB2
YWx1ZUFzSW50NjQgPSB0bXBGb3JUeXBlKFR5cGVzOjpJNjQpOworICAgIHN3aXRjaCAoZmllbGRU
eXBlLmtpbmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgIGFwcGVuZChNb3Zl
MzIsIHZhbHVlLCB2YWx1ZUFzSW50NjQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jcmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICBjYXNlIFR5
cGVLaW5kOjpSZWY6CisgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICBjYXNlIFR5cGVL
aW5kOjpJNjQ6CisgICAgICAgIGFwcGVuZChNb3ZlLCB2YWx1ZSwgdmFsdWVBc0ludDY0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOgorICAgICAgICBhcHBlbmQoTW92
ZUZsb2F0VG8zMiwgdmFsdWUsIHZhbHVlQXNJbnQ2NCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgYXBwZW5kKE1vdmVEb3VibGVUbzY0LCB2YWx1ZSwg
dmFsdWVBc0ludDY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBlbWl0Q0NhbGwoJm9wZXJh
dGlvbldhc21TdHJ1Y3RTZXQsIFR5cGVkVG1wKCksIHN0cnVjdFJlZmVyZW5jZSwgYWRkQ29uc3Rh
bnQoVHlwZXM6OkkzMiwgZmllbGRJbmRleCksIHZhbHVlQXNJbnQ2NCk7CisKKyAgICByZXR1cm4g
eyB9OworfQorCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUg
Y29uZGl0aW9uLCBFeHByZXNzaW9uVHlwZSBub25aZXJvLCBFeHByZXNzaW9uVHlwZSB6ZXJvLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKG5v
blplcm8udHlwZSgpID09IHplcm8udHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA4ZGUxMGZhN2MyOTcuLmM2MGFjMTM2
OWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMzU4LDYgKzM1OCw5IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFHZXRVKEV4cHJlc3Npb25U
eXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90IHR5cGVJbmRleCwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0R2V0KEV4cHJlc3Npb25UeXBlIHN0
cnVjdFJlZmVyZW5jZSwgdWludDMyX3QgdHlwZUluZGV4LCB1aW50MzJfdCBmaWVsZEluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRTdHJ1Y3RTZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJf
dCB0eXBlSW5kZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsK
IAogICAgIC8vIEJhc2ljIG9wZXJhdG9ycwogICAgIHRlbXBsYXRlPE9wVHlwZT4KQEAgLTIzMjQs
NiArMjMyNywxMDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRJMzFHZXRVKEV4cHJlc3Npb25U
eXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGEKICAgICByZXR1cm4geyB9Owog
fQogCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFN0cnVjdE5ldyh1aW50MzJfdCB0eXBlSW5kZXgs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvIHR5cGUgPSBUeXBlIHsgVHlwZUtpbmQ6
OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+aW5k
ZXgoKSB9OworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNocG9p
bnRWYWx1ZT4odG9CM1R5cGUodHlwZSksIG9yaWdpbigpKTsKKyAgICBwYXRjaC0+YXBwZW5kKGlu
c3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwo
KSk7CisgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzID0gVmVjdG9yPEIzOjpWYWx1ZVJlcCwg
MT4geyBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSB9OworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRjaC0+YXBw
ZW5kKGdldChhcmdzW2ldKSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpKTsKKworICAgIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgaGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKG1fY3VycmVudEJsb2NrLCBwYXRjaCk7Cisg
ICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbdGhpcywgdHlwZUluZGV4LCBoYW5kbGVdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CisgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKKyAgICAgICAgaGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAg
ZW1pdFN0cnVjdE5ld0ltcGwoaml0LCB0eXBlSW5kZXgpOworICAgIH0pOworICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmQocGF0Y2gpOworICAgIHJlc3VsdCA9IHB1c2gocGF0Y2gpOworCisgICAg
cmV0dXJuIHsgfTsKK30KKworYXV0byBCM0lSR2VuZXJhdG9yOjphZGRTdHJ1Y3RHZXQoRXhwcmVz
c2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZp
ZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAg
ICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5k
ZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8udHlw
ZUNvdW50KCkpOworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENvdW50
KCkpOworCisgICAgVmFsdWUqIHJlc3VsdEFzSW50NjQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0LCBvcmlnaW4oKSwKKyAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0
YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtU3RydWN0R2V0KSksCisg
ICAgICAgIGdldChzdHJ1Y3RSZWZlcmVuY2UpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgZmllbGRJbmRleCkpOworCisgICAgY29uc3Qg
YXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7CisgICAg
c3dpdGNoIChmaWVsZFR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAg
ICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEIzOjpUcnVuYywgb3JpZ2luKCksIHJlc3VsdEFzSW50NjQpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
CisgICAgY2FzZSBUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6Cisg
ICAgY2FzZSBUeXBlS2luZDo6STY0OgorICAgICAgICByZXN1bHQgPSBwdXNoKHJlc3VsdEFzSW50
NjQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVLaW5kOjpGMzI6IHsKKyAgICAgICAg
VmFsdWUqIHJlc3VsdEFzSTMyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBCMzo6VHJ1bmMsIG9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKKyAgICAgICAgcmVzdWx0
ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpCaXR3
aXNlQ2FzdCwgb3JpZ2luKCksIHJlc3VsdEFzSTMyKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6Qml0d2lzZUNhc3QsIG9yaWdpbigp
LCByZXN1bHRBc0ludDY0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsK
K30KKworCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBz
dHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwg
RXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRv
JiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1
Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8udHlwZUNvdW50KCkpOwor
ICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENvdW50KCkpOworCisgICAg
Y29uc3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7
CisgICAgVmFsdWUqIHZhbHVlQXNJbnQ2NCA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmaWVsZFR5
cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgdmFsdWVBc0ludDY0
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6WkV4dDMyLCBv
cmlnaW4oKSwgZ2V0KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgIGNhc2UgVHlwZUtpbmQ6
Okk2NDoKKyAgICAgICAgdmFsdWVBc0ludDY0ID0gZ2V0KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZUFzSW50MzIg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNlQ2Fz
dCwgb3JpZ2luKCksIGdldCh2YWx1ZSkpOworICAgICAgICB2YWx1ZUFzSW50NjQgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpaRXh0MzIsIG9yaWdpbigpLCB2
YWx1ZUFzSW50MzIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlS2luZDo6
RjY0OgorICAgICAgICB2YWx1ZUFzSW50NjQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIEIzOjpCaXR3aXNlQ2FzdCwgb3JpZ2luKCksIGdldCh2YWx1ZSkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4oCisgICAgICAgIG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NG
dW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21TdHJ1Y3RTZXQpKSwKKyAgICAg
ICAgZ2V0KHN0cnVjdFJlZmVyZW5jZSksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBmaWVsZEluZGV4KSwKKyAgICAgICAg
dmFsdWVBc0ludDY0KTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUgbm9u
WmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYWx1ZT4obV9wcm9jLCBCMzo6U2VsZWN0LCBvcmlnaW4oKSwgZ2V0KGNvbmRpdGlvbiksIGdl
dChub25aZXJvKSwgZ2V0KHplcm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDRmNjA1M2QxNjUyMS4uOWUyZDdhNGFjNzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApA
QCAtMTg1LDYgKzE4NSwxOSBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VNZW1vcnlJbml0SW1tZWRpYXRlcyhNZW1vcnlJbml0SW1t
ZWRpYXRlcyYpOwogCisgICAgc3RydWN0IFN0cnVjdFR5cGVJbmRleEFuZEZpZWxkSW5kZXggewor
ICAgICAgICB1aW50MzJfdCBzdHJ1Y3RUeXBlSW5kZXg7CisgICAgICAgIHVpbnQzMl90IGZpZWxk
SW5kZXg7CisgICAgfTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJz
ZVN0cnVjdFR5cGVJbmRleEFuZEZpZWxkSW5kZXgoU3RydWN0VHlwZUluZGV4QW5kRmllbGRJbmRl
eCYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24pOworCisgICAgc3RydWN0IFN0cnVjdEZp
ZWxkTWFuaXB1bGF0aW9uIHsKKyAgICAgICAgU3RydWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCBp
bmRpY2VzOworICAgICAgICBUeXBlZEV4cHJlc3Npb24gc3RydWN0UmVmZXJlbmNlOworICAgICAg
ICBTdHJ1Y3RGaWVsZCBmaWVsZDsKKyAgICB9OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlU3RydWN0RmllbGRNYW5pcHVsYXRpb24oU3RydWN0RmllbGRNYW5pcHVs
YXRpb24mIHJlc3VsdCwgY29uc3QgY2hhciogb3BlcmF0aW9uKTsKKwogI2RlZmluZSBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRfZXhwcmVzc2lvbikgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlM
UyhtX2NvbnRleHQuYWRkX2V4cHJlc3Npb24pCiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4u
QXJncz4KQEAgLTczMSw2ICs3NDQsNTIgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VNZW1vcnlJbml0SW1tZWRpYXRlcyhNZW1vcnlJbml0SW1tZWRpYXRlcyYgcmUKICAgICBy
ZXR1cm4geyB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgorYXV0byBGdW5jdGlv
blBhcnNlcjxDb250ZXh0Pjo6cGFyc2VTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVsZEluZGV4KFN0cnVj
dFR5cGVJbmRleEFuZEZpZWxkSW5kZXgmIHJlc3VsdCwgY29uc3QgY2hhciogb3BlcmF0aW9uKSAt
PiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgdHlwZUluZGV4OworICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHR5cGVJbmRleCksICJjYW4ndCBnZXQgdHlwZSBp
bmRleCBmb3IiLCBvcGVyYXRpb24pOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodHlwZUlu
ZGV4ID49IG1faW5mby50eXBlQ291bnQoKSwgb3BlcmF0aW9uLCAiIGluZGV4ICIsIHR5cGVJbmRl
eCwgIiBpcyBvdXQgb2YgYm91bmQiKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2lu
Zm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+aXM8U3RydWN0VHlwZT4oKSwgb3BlcmF0aW9u
LCAiOiBpbnZhbGlkIHR5cGUgaW5kZXgiLCB0eXBlSW5kZXgpOworCisgICAgdWludDMyX3QgZmll
bGRJbmRleDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmaWVsZElu
ZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4IGZvciAiLCBvcGVyYXRpb24pOworICAgIGNvbnN0
IGF1dG8mIHN0cnVjdFR5cGUgPSAqbV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJbmRleF0tPmFz
PFN0cnVjdFR5cGU+KCk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmaWVsZEluZGV4ID49IHN0
cnVjdFR5cGUuZmllbGRDb3VudCgpLCBvcGVyYXRpb24sICIgZmllbGQgaW1tZWRpYXRlICIsIGZp
ZWxkSW5kZXgsICIgaXMgb3V0IG9mIGJvdW5kcyIpOworCisgICAgcmVzdWx0LmZpZWxkSW5kZXgg
PSBmaWVsZEluZGV4OworICAgIHJlc3VsdC5zdHJ1Y3RUeXBlSW5kZXggPSB0eXBlSW5kZXg7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KK2F1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlU3RydWN0RmllbGRNYW5pcHVsYXRpb24oU3RydWN0
RmllbGRNYW5pcHVsYXRpb24mIHJlc3VsdCwgY29uc3QgY2hhciogb3BlcmF0aW9uKSAtPiBQYXJ0
aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgdHlwZUluZGV4OworICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVmFyVUludDMyKHR5cGVJbmRleCksICJjYW4ndCBnZXQgdHlwZSBpbmRleCBm
b3IiLCBvcGVyYXRpb24pOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYodHlwZUluZGV4ID49
IG1faW5mby50eXBlQ291bnQoKSwgb3BlcmF0aW9uLCAiIGluZGV4ICIsIHR5cGVJbmRleCwgIiBp
cyBvdXQgb2YgYm91bmQiKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2luZm8udHlw
ZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+aXM8U3RydWN0VHlwZT4oKSwgb3BlcmF0aW9uLCAiOiBp
bnZhbGlkIHR5cGUgaW5kZXgiLCB0eXBlSW5kZXgpOworCisgICAgVHlwZWRFeHByZXNzaW9uIHN0
cnVjdFJlZjsKKyAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHN0cnVjdFJl
ZiwgInN0cnVjdCByZWZlcmVuY2UiKTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1Jl
ZldpdGhUeXBlSW5kZXgoc3RydWN0UmVmLnR5cGUoKSksIG9wZXJhdGlvbiwgIiBpbnZhbGlkIGlu
ZGV4OiAiLCBzdHJ1Y3RSZWYudHlwZSgpLmtpbmQpOworICAgIGNvbnN0IFR5cGVJbmRleCBzdHJ1
Y3RUeXBlSW5kZXggPSBzdHJ1Y3RSZWYudHlwZSgpLmluZGV4OworICAgIGNvbnN0IFR5cGVEZWZp
bml0aW9uJiBzdHJ1Y3RUeXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHN0cnVj
dFR5cGVJbmRleCk7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighc3RydWN0VHlwZURlZmlu
aXRpb24uaXM8U3RydWN0VHlwZT4oKSwgb3BlcmF0aW9uLCAiIHR5cGUgaW5kZXggcG9pbnRzIGlu
dG8gYSBub24gc3RydWN0IHR5cGUiKTsKKyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKnN0
cnVjdFR5cGVEZWZpbml0aW9uLmFzPFN0cnVjdFR5cGU+KCk7CisgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRihzdHJ1Y3RSZWYudHlwZSgpLmluZGV4ICE9IG1faW5mby50eXBlU2lnbmF0dXJlc1t0
eXBlSW5kZXhdLT5pbmRleCgpLCBvcGVyYXRpb24sICI6IHBvcHBlZCBzdHJ1Y3QgaGFzIGEgZGlm
ZmVyZW50IHR5cGUgaW5kZXggdGhhbiBzcGVjaWZpZWQgaW4gaW1tZWRkaWF0ZSIpOworCisgICAg
dWludDMyX3QgZmllbGRJbmRleDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihmaWVsZEluZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4IGZvciAiLCBvcGVyYXRpb24p
OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZmllbGRJbmRleCA+PSBzdHJ1Y3RUeXBlLmZpZWxk
Q291bnQoKSwgb3BlcmF0aW9uLCAiIGZpZWxkIGltbWVkaWF0ZSAiLCBmaWVsZEluZGV4LCAiIGlz
IG91dCBvZiBib3VuZHMiKTsKKworICAgIHJlc3VsdC5zdHJ1Y3RSZWZlcmVuY2UgPSBzdHJ1Y3RS
ZWY7CisgICAgcmVzdWx0LmluZGljZXMuZmllbGRJbmRleCA9IGZpZWxkSW5kZXg7CisgICAgcmVz
dWx0LmluZGljZXMuc3RydWN0VHlwZUluZGV4ID0gdHlwZUluZGV4OworICAgIHJlc3VsdC5maWVs
ZCA9IHN0cnVjdFR5cGUuZmllbGQoZmllbGRJbmRleCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OmNoZWNrQnJhbmNoVGFyZ2V0KGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKQEAgLTEwOTYsNiArMTE1NSw2MCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVj
dEFuZEFwcGVuZChUeXBlczo6STMyLCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQorICAgICAgICBjYXNlIEdDT3BUeXBlOjpTdHJ1Y3ROZXc6IHsKKyAgICAgICAg
ICAgIHVpbnQzMl90IHR5cGVJbmRleDsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlVmFyVUludDMyKHR5cGVJbmRleCksICJjYW4ndCBnZXQgdHlwZSBpbmRleCBmb3Igc3Ry
dWN0Lm5ldyIpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0eXBlSW5kZXgg
Pj0gbV9pbmZvLnR5cGVDb3VudCgpLCAic3RydWN0Lm5ldyB0eXBlIGluZGV4ICIsIHR5cGVJbmRl
eCwgIiBpcyBvdXQgb2YgYm91bmQiKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoIW1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pczxTdHJ1Y3RUeXBlPigpLCAi
c3RydWN0Lm5ldzogdHlwZSBpbmRleCBwb2ludHMgaW50byBhIG5vbiBzdHJ1Y3QgdHlwZSIsIHR5
cGVJbmRleCk7CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8qIHN0cnVjdFR5cGUgPSBtX2luZm8u
dHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+YXM8U3RydWN0VHlwZT4oKTsKKyAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpID4gbV9leHByZXNz
aW9uU3RhY2suc2l6ZSgpLCAic3RydWN0Lm5ldyAiLCB0eXBlSW5kZXgsICIgcmVxdWlyZXMgIiwg
c3RydWN0VHlwZS0+ZmllbGRDb3VudCgpLCAiIHZhbHVlcywgYnV0IHRoZSBleHByZXNzaW9uIHN0
YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVz
Iik7CisKKyAgICAgICAgICAgIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4gYXJnczsKKyAgICAgICAg
ICAgIHNpemVfdCBmaXJzdEFyZ3VtZW50SW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkg
LSBzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCk7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFhcmdzLnRyeVJlc2VydmVDYXBhY2l0eShzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCkpLCAi
Y2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3Igc3RydWN0Lm5ldyAiLCBzdHJ1Y3RUeXBl
LT5maWVsZENvdW50KCksICIgdmFsdWVzIik7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBmaXJzdEFyZ3VtZW50SW5kZXg7IGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFj
ay5hdChpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBmaWVsZFR5cGUgPSBzdHJ1Y3RU
eXBlLT5maWVsZChTdHJ1Y3RGaWVsZENvdW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpKS50eXBl
OworICAgICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmcu
dHlwZSgpLCBmaWVsZFR5cGUpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBzdHJ1Y3QubmV3
LCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAiLCBleHBlY3RlZCAiLCBmaWVsZFR5cGUua2luZCk7
CisgICAgICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoYXJnKTsKKyAgICAgICAgICAg
ICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpID09IGFy
Z3Muc2l6ZSgpKTsKKworICAgICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAgICAg
ICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkU3RydWN0TmV3KHR5cGVJbmRleCwgYXJn
cywgcmVzdWx0KSk7CisgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRB
cHBlbmQoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgbV9pbmZvLnR5cGVTaWdu
YXR1cmVzW3R5cGVJbmRleF0tPmluZGV4KCkgfSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdDT3BUeXBlOjpTdHJ1Y3RHZXQ6IHsK
KyAgICAgICAgICAgIFN0cnVjdEZpZWxkTWFuaXB1bGF0aW9uIHN0cnVjdEdldElucHV0OworICAg
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VTdHJ1Y3RGaWVsZE1hbmlwdWxhdGlv
bihzdHJ1Y3RHZXRJbnB1dCwgInN0cnVjdC5nZXQiKSk7CisKKyAgICAgICAgICAgIEV4cHJlc3Np
b25UeXBlIHJlc3VsdDsKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFN0
cnVjdEdldChzdHJ1Y3RHZXRJbnB1dC5zdHJ1Y3RSZWZlcmVuY2UsIHN0cnVjdEdldElucHV0Lmlu
ZGljZXMuc3RydWN0VHlwZUluZGV4LCBzdHJ1Y3RHZXRJbnB1dC5pbmRpY2VzLmZpZWxkSW5kZXgs
IHJlc3VsdCkpOworCisgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRB
cHBlbmQoc3RydWN0R2V0SW5wdXQuZmllbGQudHlwZSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdDT3BUeXBlOjpTdHJ1Y3RTZXQ6
IHsKKyAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiB2YWx1ZTsKKyAgICAgICAgICAgIFdBU01f
VFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8odmFsdWUsICJzdHJ1Y3Quc2V0IHZhbHVlIik7
CisKKyAgICAgICAgICAgIFN0cnVjdEZpZWxkTWFuaXB1bGF0aW9uIHN0cnVjdFNldElucHV0Owor
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VTdHJ1Y3RGaWVsZE1hbmlwdWxh
dGlvbihzdHJ1Y3RTZXRJbnB1dCwgInN0cnVjdC5zZXQiKSk7CisKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGZpZWxkID0gc3RydWN0U2V0SW5wdXQuZmllbGQ7CisgICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGZpZWxkLm11dGFiaWxpdHkgIT0gTXV0YWJpbGl0eTo6TXV0YWJsZSwgInRo
ZSBmaWVsZCAiLCBzdHJ1Y3RTZXRJbnB1dC5pbmRpY2VzLmZpZWxkSW5kZXgsICIgY2FuJ3QgYmUg
c2V0IGJlY2F1c2UgaXQgaXMgaW1tdXRhYmxlIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFpc1N1YnR5cGUodmFsdWUudHlwZSgpLCBmaWVsZC50eXBlKSwgInR5cGUgbWlzbWF0
Y2ggaW4gc3RydWN0LnNldCIpOworCisgICAgICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVY
VChhZGRTdHJ1Y3RTZXQoc3RydWN0U2V0SW5wdXQuc3RydWN0UmVmZXJlbmNlLCBzdHJ1Y3RTZXRJ
bnB1dC5pbmRpY2VzLnN0cnVjdFR5cGVJbmRleCwgc3RydWN0U2V0SW5wdXQuaW5kaWNlcy5maWVs
ZEluZGV4LCB2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQogCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJp
bnZhbGlkIGV4dGVuZGVkIEdDIG9wICIsIGV4dE9wKTsKQEAgLTIwMDcsNiArMjEyMCwyMiBAQCBh
dXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgY2FzZSBHQ09wVHlwZTo6STMxR2V0UzoKICAgICAg
ICAgY2FzZSBHQ09wVHlwZTo6STMxR2V0VToKICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdE5ldzogeworICAgICAgICAgICAgdWludDMyX3QgdHlw
ZUluZGV4OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
dHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4IGltbWVkaWF0ZSBmb3Igc3RydWN0Lm5l
dyBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKHR5cGVJbmRleCA+PSBtX2luZm8udHlwZUNvdW50KCksICJzdHJ1Y3QubmV3IHR5cGUgaW5k
ZXggIiwgdHlwZUluZGV4LCAiIGlzIG91dCBvZiBib3VuZCBpbiB1bnJlYWNoYWJsZSBjb250ZXh0
Iik7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0NP
cFR5cGU6OlN0cnVjdEdldDogeworICAgICAgICAgICAgU3RydWN0VHlwZUluZGV4QW5kRmllbGRJ
bmRleCB1bnVzZWQ7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVN0cnVj
dFR5cGVJbmRleEFuZEZpZWxkSW5kZXgodW51c2VkLCAic3RydWN0LmdldCIpKTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHQ09wVHlwZTo6U3RydWN0
U2V0OiB7CisgICAgICAgICAgICBTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVsZEluZGV4IHVudXNlZDsK
KyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlU3RydWN0VHlwZUluZGV4QW5k
RmllbGRJbmRleCh1bnVzZWQsICJzdHJ1Y3Quc2V0IikpOworICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRih0cnVlLCAiaW52YWxpZCBleHRlbmRlZCBHQyBvcCAiLCBleHRPcCk7CiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21J
UkdlbmVyYXRvckhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JUkdl
bmVyYXRvckhlbHBlcnMuaAppbmRleCAyMWQ1ZWRhNmVkNGUuLjE2M2VkMDA2NTcyOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUlSR2VuZXJhdG9ySGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JUkdlbmVyYXRvckhlbHBlcnMu
aApAQCAtMTYzLDYgKzE2MywzNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFRocm93SW1wbChD
Q2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgpCiAgICAgfSk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgdm9pZCBlbWl0U3RydWN0TmV3SW1wbChDQ2FsbEhlbHBlcnMmIGppdCwg
dW5zaWduZWQgdHlwZUluZGV4KQoreworICAgIC8vIEluc3RhbmNlIGluIGFyZ3VtZW50R1BSMAor
ICAgIC8vIGZyYW1lIHBvaW50ZXIgaW4gYXJndW1lbnRHUFIxCisgICAgLy8gYXJndW1lbnRzIHRv
IHRoZSBzdHJ1Y3RfbmV3IG9mZiBvZiBzdGFjayBwb2ludGVyCisKKyAgICBHUFJSZWcgc2NyYXRj
aCA9IEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMDsKKyAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBJbnN0YW5jZTo6
b2Zmc2V0T2ZPd25lcigpKSwgc2NyYXRjaCk7CisgICAgeworICAgICAgICBhdXRvIHByZWNpc2VB
bGxvY2F0aW9uQ2FzZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywg
c2NyYXRjaCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoUHJlY2lzZUFsbG9jYXRpb246Omhh
bGZBbGlnbm1lbnQpKTsKKyAgICAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gpOworICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaCwgTWFya2VkQmxvY2s6Om9mZnNldE9m
Rm9vdGVyICsgTWFya2VkQmxvY2s6OkZvb3Rlcjo6b2Zmc2V0T2ZWTSgpKSwgc2NyYXRjaCk7Cisg
ICAgICAgIGF1dG8gbG9hZGVkQ2FzZSA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgcHJlY2lzZUFs
bG9jYXRpb25DYXNlLmxpbmsoJmppdCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoLCBQcmVjaXNlQWxsb2NhdGlvbjo6b2Zmc2V0T2ZXZWFrU2V0KCkg
KyBXZWFrU2V0OjpvZmZzZXRPZlZNKCkgLSBQcmVjaXNlQWxsb2NhdGlvbjo6aGVhZGVyU2l6ZSgp
KSwgc2NyYXRjaCk7CisKKyAgICAgICAgbG9hZGVkQ2FzZS5saW5rKCZqaXQpOworICAgIH0KKyAg
ICBqaXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihzY3Jh
dGNoKTsKKworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHlwZUlu
ZGV4KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGpp
dC5hZGRMaW5rVGFzayhbY2FsbF0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAg
bGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uV2FzbVN0cnVjdE5ldykpOworICAgIH0pOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgYnVp
bGRFbnRyeUJ1ZmZlckZvckNhdGNoKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQogewogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gY29udGV4dC5mcDxDYWxsRnJhbWUqPigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggYWU3
MDkwYjUzOGRlLi41MjIxZWNmMzFiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMzA3LDYgKzMwNyw5IEBAIHB1YmxpYzoK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lv
blR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRJMzFHZXRVKEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Cisg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90
IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTdHJ1Y3RHZXQo
RXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQz
Ml90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RS
ZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVz
c2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gQmFzaWMgb3BlcmF0b3JzCiAgICAgdGVtcGxhdGU8
T3BUeXBlPgpAQCAtMTg4Niw2ICsxODg5LDM5IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEkz
MUdldFUoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU3RydWN0TmV3KHVp
bnQzMl90IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gV2UgaGF2ZSB0byBtYXRlcmlh
bGl6ZSB0aGUgYXJndW1lbnRzIGhlcmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBjb25zdGFudHMg
b3IKKyAgICAvLyBkZWxheWVkIG1vdmVzLCBidXQgdGhlIHdhc21fc3RydWN0X25ldyBvcGNvZGUg
ZXhwZWN0cyBhbGwgdGhlIGFyZ3VtZW50cyB0byBiZSBjb250aWd1b3VzCisgICAgLy8gaW4gdGhl
IHN0YWNrLiBUaGUgcmVhc29uIHdlIGRvbid0IGNhbGwgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRM
b2NhbHMgaGVyZSBpcyB0aGF0CisgICAgLy8gaXQgZXhwZWN0cyBhIHN0YWNrLCBub3QgYSB2ZWN0
b3Igb2YgRXhwcmVzc2lvblR5cGUgYXJndW1lbnRzLgorICAgIHdhbGtFeHByZXNzaW9uU3RhY2so
YXJncywgWyZdKFZpcnR1YWxSZWdpc3RlciYgYXJnLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewor
ICAgICAgICBpZiAoYXJnID09IHNsb3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFdh
c21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgYXJnKTsKKyAgICAgICAgYXJnID0gc2xvdDsKKyAgICB9
KTsKKworICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBXYXNtU3RydWN0TmV3OjplbWl0KHRoaXMs
IHJlc3VsdCwgaW5kZXgsIGFyZ3MuaXNFbXB0eSgpID8gVmlydHVhbFJlZ2lzdGVyKCkgOiBhcmdz
WzBdKTsKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRTdHJ1
Y3RHZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgs
IHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgV2FzbVN0cnVjdEdldDo6ZW1pdCh0
aGlzLCByZXN1bHQsIHN0cnVjdFJlZmVyZW5jZSwgdHlwZUluZGV4LCBmaWVsZEluZGV4KTsKKwor
ICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChF
eHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMy
X3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBXYXNtU3RydWN0U2V0OjplbWl0KHRoaXMsIHN0cnVjdFJlZmVyZW5jZSwgdHlwZUluZGV4
LCBmaWVsZEluZGV4LCB2YWx1ZSk7CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIExMSW50
R2VuZXJhdG9yOjpsaW5rU3dpdGNoVGFyZ2V0cyhMYWJlbCYgbGFiZWwsIHVuc2lnbmVkIGxvY2F0
aW9uKQogewogICAgIGF1dG8gaXQgPSBtX3N3aXRjaGVzLmZpbmQoJmxhYmVsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA2ZmRmMjAxMWQ4
ZjYuLmU2MzZhNTVmNjExNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlTdHJ1
Y3QuaCIKICNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJSZWxlYXNlSGVhcEFj
Y2Vzc1Njb3BlLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTgyOSw2
ICs4MzAsNDIgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21SZWZGdW5j
LCBFbmNvZGVkSlNWYWx1ZSwgKEluc3RhbmNlKiBpbnN0YW4KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHZhbHVlKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldh
c21TdHJ1Y3ROZXcsIEVuY29kZWRKU1ZhbHVlLCAoSW5zdGFuY2UqIGluc3RhbmNlLCB1aW50MzJf
dCB0eXBlSW5kZXgsIHVpbnQ2NF90KiBhcmd1bWVudHMpKQoreworICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSoganNJbnN0YW5jZSA9IGluc3RhbmNlLT5vd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U+KCk7CisgICAgUmVmPFR5cGVEZWZpbml0aW9uPiBzdHJ1Y3RUeXBlRGVmaW5pdGlvbiA9IGpz
SW5zdGFuY2UtPmluc3RhbmNlKCkubW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50eXBlU2ln
bmF0dXJlc1t0eXBlSW5kZXhdOworICAgIGNvbnN0IFN0cnVjdFR5cGUmIHN0cnVjdFR5cGUgPSAq
c3RydWN0VHlwZURlZmluaXRpb24tPmFzPFN0cnVjdFR5cGU+KCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzSW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiB2YWx1
ZXMoc3RydWN0VHlwZS5maWVsZENvdW50KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzdHJ1Y3RUeXBlLmZpZWxkQ291bnQoKTsgKytpKQorICAgICAgICB2YWx1ZXNbaV0gPSBhcmd1
bWVudHNbaV07CisKKyAgICBKU1ZhbHVlIHN0cnVjdFZhbHVlID0gSlNXZWJBc3NlbWJseVN0cnVj
dDo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlTdHJ1
Y3RTdHJ1Y3R1cmUoKSwgV2FzbTo6V2FzbVN0cnVjdDo6Y3JlYXRlKFdURk1vdmUoc3RydWN0VHlw
ZURlZmluaXRpb24pLCBXVEZNb3ZlKHZhbHVlcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHN0cnVjdFZhbHVlKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bldhc21TdHJ1Y3RHZXQsIEVuY29kZWRKU1ZhbHVlLCAoRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN0
cnVjdFJlZmVyZW5jZSwgdWludDMyX3QgZmllbGRJbmRleCkpCit7CisgICAgYXV0byBzdHJ1Y3RS
ZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN0cnVjdFJlZmVyZW5jZSk7CisgICAg
QVNTRVJUKHN0cnVjdFJlZmVyZW5jZS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogc3RydWN0
dXJlQXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihzdHJ1Y3RSZWZlcmVuY2UpOworICAgIEFT
U0VSVChzdHJ1Y3R1cmVBc09iamVjdC0+aW5oZXJpdHM8SlNXZWJBc3NlbWJseVN0cnVjdD4oKSk7
CisgICAgSlNXZWJBc3NlbWJseVN0cnVjdCogc3RydWN0UG9pbnRlciA9IGpzQ2FzdDxKU1dlYkFz
c2VtYmx5U3RydWN0Kj4oc3RydWN0dXJlQXNPYmplY3QpOworICAgIHJldHVybiBzdHJ1Y3RQb2lu
dGVyLT5uYXRpdmVTdHJ1Y3QoKS0+Z2V0KGZpZWxkSW5kZXgpOworfQorCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVN0cnVjdFNldCwgdm9pZCwgKEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEVuY29kZWRKU1Zh
bHVlIHZhbHVlKSkKK3sKKyAgICBhdXRvIHN0cnVjdFJlZmVyZW5jZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkU3RydWN0UmVmZXJlbmNlKTsKKyAgICBBU1NFUlQoc3RydWN0UmVmZXJlbmNlLmlz
T2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBzdHJ1Y3R1cmVBc09iamVjdCA9IGpzQ2FzdDxKU09i
amVjdCo+KHN0cnVjdFJlZmVyZW5jZSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZUFzT2JqZWN0LT5p
bmhlcml0czxKU1dlYkFzc2VtYmx5U3RydWN0PigpKTsKKyAgICBKU1dlYkFzc2VtYmx5U3RydWN0
KiBzdHJ1Y3RQb2ludGVyID0ganNDYXN0PEpTV2ViQXNzZW1ibHlTdHJ1Y3QqPihzdHJ1Y3R1cmVB
c09iamVjdCk7CisgICAgcmV0dXJuIHN0cnVjdFBvaW50ZXItPm5hdGl2ZVN0cnVjdCgpLT5zZXQo
ZmllbGRJbmRleCwgdmFsdWUpOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uR2V0V2FzbVRhYmxlU2l6ZSwgaW50MzJfdCwgKEluc3RhbmNlKiBpbnN0YW5jZSwgdW5zaWdu
ZWQgdGFibGVJbmRleCkpCiB7CiAgICAgcmV0dXJuIGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4
KS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMu
aAppbmRleCA1Y2MwMzE0OGVhZWUuLjZjMTE5ODZmY2YwNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5oCkBAIC04OSw2ICs4OSwxMCBAQCBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1lbW9yeUF0b21pY05vdGlmeSwgaW50MzJfdCwgKElu
c3RhbmNlKiwgdW5zaQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtTWVt
b3J5SW5pdCwgc2l6ZV90LCAoSW5zdGFuY2UqLCB1bnNpZ25lZCBkYXRhU2VnbWVudEluZGV4LCB1
aW50MzJfdCBkc3RBZGRyZXNzLCB1aW50MzJfdCBzcmNBZGRyZXNzLCB1aW50MzJfdCBsZW5ndGgp
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbURhdGFEcm9wLCB2b2lk
LCAoSW5zdGFuY2UqLCB1bnNpZ25lZCBkYXRhU2VnbWVudEluZGV4KSk7CiAKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVN0cnVjdE5ldywgRW5jb2RlZEpTVmFsdWUsIChJ
bnN0YW5jZSosIHVpbnQzMl90LCB1aW50NjRfdCopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uV2FzbVN0cnVjdEdldCwgRW5jb2RlZEpTVmFsdWUsIChFbmNvZGVkSlNWYWx1
ZSwgdWludDMyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVN0
cnVjdFNldCwgdm9pZCwgKEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUp
KTsKKwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVGhyb3csIHZvaWQq
LCAoSW5zdGFuY2UqLCBDYWxsRnJhbWUqLCB1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgdWludDY0
X3QqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21SZXRocm93LCB2
b2lkKiwgKEluc3RhbmNlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgdGhyb3duVmFsdWUp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRl
eCAxZTU0ODhlNjI0ZjQuLmRhMTM1ZmFhMmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTMyMiw2ICszMjIsMzggQEAgV0FTTV9TTE9XX1BB
VEhfREVDTChyZWZfZnVuYykKICAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25XYXNtUmVm
RnVuYyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KSk7CiB9CiAKK1dBU01f
U0xPV19QQVRIX0RFQ0woc3RydWN0X25ldykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21TdHJ1Y3ROZXc+KCk7CisgICAgY29uc3QgYXV0byYgbW9kdWxlSW5mb3JtYXRpb24g
PSBpbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKTsKKyAgICBBU1NFUlQoaW5z
dHJ1Y3Rpb24ubV90eXBlSW5kZXggPCBtb2R1bGVJbmZvcm1hdGlvbi50eXBlQ291bnQoKSk7Cisg
ICAgY29uc3QgYXV0byYgc3RydWN0VHlwZSA9ICptb2R1bGVJbmZvcm1hdGlvbi50eXBlU2lnbmF0
dXJlc1tpbnN0cnVjdGlvbi5tX3R5cGVJbmRleF0tPmFzPFdhc206OlN0cnVjdFR5cGU+KCk7CisK
KyAgICBGaXhlZFZlY3Rvcjx1aW50NjRfdD4gdmFsdWVzKHN0cnVjdFR5cGUuZmllbGRDb3VudCgp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RydWN0VHlwZS5maWVsZENvdW50KCk7
ICsraSkKKyAgICAgICAgdmFsdWVzW2ldID0gUkVBRCgoaW5zdHJ1Y3Rpb24ubV9maXJzdFZhbHVl
IC0gaSkpLmVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRp
b25XYXNtU3RydWN0TmV3KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCwgdmFsdWVz
LmRhdGEoKSkpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKHN0cnVjdF9nZXQpCit7CisgICAg
VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21TdHJ1Y3RHZXQ+KCk7CisgICAgYXV0byBzdHJ1Y3RSZWZlcmVuY2UgPSBSRUFEKGluc3RydWN0
aW9uLm1fc3RydWN0UmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpOworICAgIFdBU01fUkVUVVJO
KFdhc206Om9wZXJhdGlvbldhc21TdHJ1Y3RHZXQoc3RydWN0UmVmZXJlbmNlLCBpbnN0cnVjdGlv
bi5tX2ZpZWxkSW5kZXgpKTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChzdHJ1Y3Rfc2V0KQor
eworICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBj
LT5hczxXYXNtU3RydWN0U2V0PigpOworICAgIGF1dG8gc3RydWN0UmVmZXJlbmNlID0gUkVBRChp
bnN0cnVjdGlvbi5tX3N0cnVjdFJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKTsKKyAgICBhdXRv
IHZhbHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5lbmNvZGVkSlNWYWx1ZSgpOworICAg
IFdhc206Om9wZXJhdGlvbldhc21TdHJ1Y3RTZXQoc3RydWN0UmVmZXJlbmNlLCBpbnN0cnVjdGlv
bi5tX2ZpZWxkSW5kZXgsIHZhbHVlKTsKKyAgICBXQVNNX0VORCgpOworfQorCiBXQVNNX1NMT1df
UEFUSF9ERUNMKHRhYmxlX2dldCkKIHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21UYWJsZUdldD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMu
aAppbmRleCA4OWY2ZTM5NGQ4NmMuLmMyNTJkMTgzM2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApAQCAtODksNiArODksOSBAQCBXQVNNX1NMT1dfUEFU
SF9ISURERU5fREVDTChtZW1vcnlfYXRvbWljX25vdGlmeSk7CiBXQVNNX1NMT1dfUEFUSF9ISURE
RU5fREVDTCh0aHJvdyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChyZXRocm93KTsKIFdB
U01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldHJpZXZlX2FuZF9jbGVhcl9leGNlcHRpb24pOwor
V0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woc3RydWN0X25ldyk7CitXQVNNX1NMT1dfUEFUSF9I
SURERU5fREVDTChzdHJ1Y3RfZ2V0KTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHN0cnVj
dF9zZXQpOwogCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV90
aHJvd19leGNlcHRpb24oQ2FsbEZyYW1lKiwgY29uc3QgV2FzbUluc3RydWN0aW9uKiwgV2FzbTo6
SW5zdGFuY2UqIGluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKSBSRUZFUkVOQ0VEX0ZST01f
QVNNIFdURl9JTlRFUk5BTDsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0
aF93YXNtX3BvcGNvdW50KGNvbnN0IFdhc21JbnN0cnVjdGlvbiogcGMsIHVpbnQzMl90KSBSRUZF
UkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TdHJ1Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVN0cnVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4x
ZmNkMDhiZjlmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU3RydWN0LmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldhc21TdHJ1Y3QuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNwYWNl
IEpTQzo6V2FzbSB7CisKK2NvbnN0ZXhwciBzaXplX3QgdHlwZUtpbmRTaXplKFR5cGVLaW5kIGtp
bmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBUeXBlS2luZDo6STMyOgorICAg
IGNhc2UgVHlwZUtpbmQ6OkYzMjogeworICAgICAgICByZXR1cm4gMzI7CisgICAgfQorICAgIGNh
c2UgVHlwZUtpbmQ6Okk2NDoKKyAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgY2FzZSBUeXBl
S2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgY2FzZSBU
eXBlS2luZDo6UmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6IHsKKyAgICAgICAgcmV0
dXJuIDY0OworICAgIH0KKyAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgIGNhc2UgVHlwZUtp
bmQ6OlN0cnVjdDoKKyAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgorICAgIGNhc2UgVHlwZUtpbmQ6
OkkzMXJlZjogeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3NpemVfdCBXYXNtU3RydWN0OjpzdHJ1
Y3REYXRhQWxsb2NhdGlvblNpemUoY29uc3QgU3RydWN0VHlwZSogc3RydWN0VHlwZSkKK3sKKyAg
ICBzaXplX3QgdG90YWxTaXplID0gMHU7CisgICAgZm9yIChTdHJ1Y3RGaWVsZENvdW50IGkgPSAw
OyBpIDwgc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpOyArK2kpCisgICAgICAgIHRvdGFsU2l6ZSAr
PSB0eXBlS2luZFNpemUoc3RydWN0VHlwZS0+ZmllbGQoaSkudHlwZS5raW5kKTsKKyAgICByZXR1
cm4gdG90YWxTaXplOworfQorCitXYXNtU3RydWN0OjpXYXNtU3RydWN0KFJlZjxUeXBlRGVmaW5p
dGlvbj4mJiB0eXBlLCBGaXhlZFZlY3Rvcjx1aW50NjRfdD4mJiBhcmd1bWVudHMpCisgICAgOiBt
X3R5cGUoV1RGTW92ZSh0eXBlKSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGZpZWxkSW5kZXggPSAw
OyBmaWVsZEluZGV4IDwgc3RydWN0VHlwZSgpLmZpZWxkQ291bnQoKTsgKytmaWVsZEluZGV4KQor
ICAgICAgICBzZXQoZmllbGRJbmRleCwgYXJndW1lbnRzW2ZpZWxkSW5kZXhdKTsKK30KKwordWlu
dDY0X3QgV2FzbVN0cnVjdDo6Z2V0KHVpbnQzMl90IGZpZWxkSW5kZXgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGZpZWxkSW5kZXggPCBzdHJ1Y3RUeXBlKCkuZmllbGRDb3VudCgpKTsKKyAgICBjb25z
dCB1aW50OF90KiB0YXJnZXRQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4odGhpcykgKyBvZmZzZXRPZlRhaWwoKSArIGdldEZpZWxkT2Zmc2V0KGZpZWxkSW5kZXgpOwor
ICAgIHVpbnQ2NF90IHBheWxvYWQgPSAwOworICAgIGlmICh0eXBlS2luZFNpemUoZmllbGRLaW5k
KGZpZWxkSW5kZXgpKSA9PSA2NCkKKyAgICAgICAgcGF5bG9hZCA9ICpyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ2NF90Kj4odGFyZ2V0UG9pbnRlcik7CisgICAgZWxzZSB7CisgICAgICAgIEFT
U0VSVCh0eXBlS2luZFNpemUoZmllbGRLaW5kKGZpZWxkSW5kZXgpKSA9PSAzMik7CisgICAgICAg
IHBheWxvYWQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHRhcmdldFBvaW50
ZXIpOworICAgIH0KKyAgICByZXR1cm4gcGF5bG9hZDsKK30KKworc2l6ZV90IFdhc21TdHJ1Y3Q6
OmdldEZpZWxkT2Zmc2V0KHVpbnQzMl90IGZpZWxkSW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGZpZWxkSW5kZXggPCBzdHJ1Y3RUeXBlKCkuZmllbGRDb3VudCgpKTsKKworICAgIHNpemVfdCBm
aWVsZE9mZnNldCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpZWxkSW5kZXg7
ICsraSkKKyAgICAgICAgZmllbGRPZmZzZXQgKz0gdHlwZUtpbmRTaXplKGZpZWxkS2luZChpKSk7
CisgICAgcmV0dXJuIGZpZWxkT2Zmc2V0OworfQorCit2b2lkIFdhc21TdHJ1Y3Q6OnNldCh1aW50
MzJfdCBmaWVsZEluZGV4LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICB1aW50OF90KiB0YXJnZXRQ
b2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGhpcykgKyBvZmZzZXRPZlRhaWwo
KSArIGdldEZpZWxkT2Zmc2V0KGZpZWxkSW5kZXgpOworICAgIGlmICh0eXBlS2luZFNpemUoZmll
bGRLaW5kKGZpZWxkSW5kZXgpKSA9PSAzMikgeworICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHRhcmdldFBvaW50ZXIpID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQodHlwZUtpbmRTaXplKGZpZWxkS2lu
ZChmaWVsZEluZGV4KSkgPT0gNjQpOworICAgICpyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4o
dGFyZ2V0UG9pbnRlcikgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJ1Y3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjQ4YmVhZWE4MTVmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJ1Y3QuaApAQCAtMCwwICsxLDgxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlNsb3RWaXNpdG9yTWFj
cm9zLmgiCisjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgorI2luY2x1ZGUgIldhc21UeXBlRGVmaW5p
dGlvbi5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKKworY2xhc3MgSW5zdGFuY2U7CisKK2NsYXNzIFdhc21TdHJ1Y3Qg
ZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2FzbVN0cnVjdD4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdhc21TdHJ1Y3QpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEKFdhc21TdHJ1Y3QpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2FzbVN0cnVjdD4gY3Jl
YXRlKFJlZjxUeXBlRGVmaW5pdGlvbj4mJiB0eXBlLCBGaXhlZFZlY3Rvcjx1aW50NjRfdD4mJiBh
cmd1bWVudHMpCisgICAgeworICAgICAgICBjb25zdCBzaXplX3QgdG90YWxTaXplID0gdG90YWxB
bGxvY2F0aW9uU2l6ZSh0eXBlLT5hczxTdHJ1Y3RUeXBlPigpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2ModG90YWxTaXplKSkgV2FzbVN0cnVjdChX
VEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
c2l6ZV90IHRvdGFsQWxsb2NhdGlvblNpemUoY29uc3QgU3RydWN0VHlwZSogc3RydWN0VHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZlRhaWwoKSArIFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjxzaXplb2YodWludDY0X3QpPihzdHJ1Y3REYXRhQWxsb2NhdGlvblNpemUoc3RydWN0
VHlwZSkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZUYWlsKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90
KT4oc2l6ZW9mKFdhc21TdHJ1Y3QpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IHN0cnVj
dERhdGFBbGxvY2F0aW9uU2l6ZShjb25zdCBTdHJ1Y3RUeXBlKik7CisKKyAgICB1aW50NjRfdCBn
ZXQodWludDMyX3QpIGNvbnN0OworCisgICAgdm9pZCBzZXQodWludDMyX3QgZmllbGRJbmRleCwg
dWludDY0X3QgdmFsdWUpOworCisgICAgY29uc3QgU3RydWN0VHlwZSYgc3RydWN0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuICptX3R5cGUtPmFzPFN0cnVjdFR5cGU+KCk7IH0KK3ByaXZhdGU6CisgICAg
V2FzbVN0cnVjdChSZWY8VHlwZURlZmluaXRpb24+JiYsIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYm
KTsKKworICAgIFN0cnVjdEZpZWxkIGZpZWxkKHVpbnQzMl90IGZpZWxkSW5kZXgpIGNvbnN0IHsg
cmV0dXJuIHN0cnVjdFR5cGUoKS5maWVsZChmaWVsZEluZGV4KTsgfQorICAgIFR5cGVLaW5kIGZp
ZWxkS2luZCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdCB7IHJldHVybiBmaWVsZChmaWVsZElu
ZGV4KS50eXBlLmtpbmQ7IH0KKworICAgIHNpemVfdCBnZXRGaWVsZE9mZnNldCh1aW50MzJfdCBm
aWVsZEluZGV4KSBjb25zdDsKKworICAgIFJlZjxUeXBlRGVmaW5pdGlvbj4gbV90eXBlOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SGVscGVycy5oCmluZGV4IDU4YTExOGYxNGY5MS4uYzBmMTYzZDIzZTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgK
QEAgLTE2NSw2ICsxNjUsOCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgdG9KU1ZhbHVlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdhc206OlR5cGUgdAogICAgICAgICByZXR1
cm4ganNOdW1iZXIocHVyaWZ5TmFOKGJpdHdpc2VfY2FzdDxkb3VibGU+KGJpdHMpKSk7CiAgICAg
Y2FzZSBXYXNtOjpUeXBlS2luZDo6STY0OgogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihiaXRzKSk7CisgICAgY2Fz
ZSBXYXNtOjpUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGw6
CiAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgV2FzbTo6VHlw
ZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNWYWx1ZT4oYml0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5U3RydWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlTdHJ1Y3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDdj
ZjA2MGZjY2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVN0cnVjdC5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlTdHJ1Y3QuaCIKKworI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJXYXNtRm9ybWF0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseVN0cnVj
dDo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuU3RydWN0Il9zLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHlTdHJ1Y3QpIH07
CisKK0pTV2ViQXNzZW1ibHlTdHJ1Y3Q6OkpTV2ViQXNzZW1ibHlTdHJ1Y3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFdhc206Oldhc21TdHJ1Y3Q+JiYgbmF0aXZlU3RydWN0KQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9zdHJ1Y3QoV1RGTW92ZShuYXRpdmVT
dHJ1Y3QpKQoreworfQorCitKU1dlYkFzc2VtYmx5U3RydWN0KiBKU1dlYkFzc2VtYmx5U3RydWN0
OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUmVmPFdhc206Oldhc21TdHJ1Y3Q+JiYgbmF0aXZlU3RydWN0KQoreworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFn
bG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RW5hYmxlZCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byogc3RydWN0VmFsdWUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5U3RydWN0Pih2bSkpIEpTV2Vi
QXNzZW1ibHlTdHJ1Y3Qodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShuYXRpdmVTdHJ1Y3QpKTsKKyAg
ICBzdHJ1Y3RWYWx1ZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBzdHJ1Y3RWYWx1
ZTsKK30KKwordm9pZCBKU1dlYkFzc2VtYmx5U3RydWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgSlNXZWJBc3Nl
bWJseVN0cnVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisKKyAgICBh
dXRvKiB3YXNtU3RydWN0ID0ganNDYXN0PEpTV2ViQXNzZW1ibHlTdHJ1Y3QqPihjZWxsKTsKKyAg
ICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gd2FzbVN0cnVjdC0+bmF0aXZlU3RydWN0KCktPnN0
cnVjdFR5cGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RydWN0VHlwZS5maWVs
ZENvdW50KCk7ICsraSkgeworICAgICAgICBpZiAoaXNSZWZUeXBlKHN0cnVjdFR5cGUuZmllbGQo
aSkudHlwZSkpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChiaXR3aXNlX2Nhc3Q8V3JpdGVC
YXJyaWVyPFVua25vd24+Pih3YXNtU3RydWN0LT5uYXRpdmVTdHJ1Y3QoKS0+Z2V0KGkpKSk7Cisg
ICAgfQorfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oSlNXZWJBc3NlbWJseVN0cnVjdCk7CisK
K3ZvaWQgSlNXZWJBc3NlbWJseVN0cnVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAg
c3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseVN0cnVjdCo+KGNlbGwpLT5KU1dlYkFzc2VtYmx5U3Ry
dWN0Ojp+SlNXZWJBc3NlbWJseVN0cnVjdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlTdHJ1Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlTdHJ1Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmQyOGViZGMxNzc4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlTdHJ1Y3QuaApAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2FzbVN0cnVjdC5oIgorI2luY2x1ZGUgPHd0Zi9NYWxsb2NQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U1dlYkFzc2VtYmx5U3RydWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgR0NDbGllbnQ6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0ud2ViQXNzZW1ibHlTdHJ1Y3RT
cGFjZTxtb2RlPigpOworICAgIH0KKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEZp
bmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBKU1dlYkFzc2VtYmx5U3RydWN0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0
cnVjdHVyZSosIFJlZjxXYXNtOjpXYXNtU3RydWN0PiYmKTsKKworICAgIERFQ0xBUkVfVklTSVRf
Q0hJTERSRU47CisKKyAgICBXYXNtOjpXYXNtU3RydWN0KiBuYXRpdmVTdHJ1Y3QoKSB7IHJldHVy
biBtX3N0cnVjdC5wdHIoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJseVN0cnVj
dChWTSYsIFN0cnVjdHVyZSosIFJlZjxXYXNtOjpXYXNtU3RydWN0PiYmKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CisKKyAgICBSZWY8V2FzbTo6V2FzbVN0cnVjdD4gbV9zdHJ1Y3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
U3RydWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi41MmQwZjBkOWYwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yLmNwcApAQCAt
MCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3RydWN0Q29uc3Ry
dWN0b3IuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIkl0ZXJhdG9y
T3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlTdHJ1Y3QuaCIKKyNpbmNs
dWRlICJXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiV2ViQXNzZW1i
bHlTdHJ1Y3RDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biJfcywgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseVN0cnVjdCwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9y
KSB9OworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5U3RydWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dl
YkFzc2VtYmx5U3RydWN0KTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVN0cnVjdENvbnN0
cnVjdG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseVN0cnVjdAor
IEBlbmQKKyAqLworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3Nl
bWJseVN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiV2ViQXNzZW1ibHkuU3RydWN0IGlzIG5vdCBhY2Nlc3NpYmxlIGZyb20g
SlMiX3MpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYmx5
U3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseS5TdHJ1Y3QgaXMgbm90IGFjY2Vz
c2libGUgZnJvbSBKUyJfcykpOworfQorCitXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yKiBX
ZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCit7Cisg
ICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3Nl
bWJseVN0cnVjdENvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCB0aGlz
UHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogV2Vi
QXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
SW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9p
ZCBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdl
YkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDEsICJTdHJ1Y3QiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0
U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKK1dlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3I6Oldl
YkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEpTV2ViQXNzZW1ibHlTdHJ1Y3QsIGNvbnN0
cnVjdEpTV2ViQXNzZW1ibHlTdHJ1Y3QpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODRkZGUwZjI3OWU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1
Y3RDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5
cGU7CisKK2NsYXNzIFdlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVu
Y3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRp
YyBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBX
ZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBXZWJBc3NlbWJseVN0
cnVjdFByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0
UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIw
N2U4OTU2ODc1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5U3RydWN0Lmgi
CisKKyNpbmNsdWRlICJXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZTo6
c19pbmZvID0geyAiV2ViQXNzZW1ibHkuU3RydWN0Il9zLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90
eXBlVGFibGVXZWJBc3NlbWJseVN0cnVjdCwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJs
eVN0cnVjdFByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5
U3RydWN0CisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKiBXZWJBc3Nl
bWJseVN0cnVjdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZT4odm0pKSBXZWJBc3NlbWJseVN0
cnVjdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5U3Ry
dWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlTdHJ1Y3RQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlw
ZTo6V2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE4YjJlZjIyZTA3YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3Ry
dWN0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseVN0cnVj
dFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgorICAgIHN0YXRpYyBHQ0NsaWVudDo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CisgICAgfQorCisgICAgc3RhdGljIFdlYkFzc2VtYmx5U3RydWN0
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1i
bHlTdHJ1Y3RQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCBkZTJmNTNh
ZDhlNTguLmQ2ZWIxYTY3ZWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpA
QCAtNzgsNiArNzgsOSBAQAogICAgICAgICAicmVmLm51bGwiOiAgICAgICAgICAgIHsgImNhdGVn
b3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAyMDgsICJyZXR1cm4iOiBbImV4dGVybnJlZiIs
ICJmdW5jcmVmIl0sICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAicmVmdHlwZSIsICAgICAgICAidHlwZSI6
ICJyZWZfdHlwZSJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgbnVsbCByZWZlcmVuY2UiIH0sCiAgICAgICAg
ICJyZWYuaXNfbnVsbCI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1
ZSI6IDIwOSwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFy
YW1ldGVyIjogWyJleHRlcm5yZWYiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiZGV0ZXJt
aW5lIGlmIGEgcmVmZXJlbmNlIGlzIG51bGwiIH0sCiAgICAgICAgICJyZWYuZnVuYyI6ICAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIxMCwgInJldHVybiI6
IFsiZnVuY3JlZiJdLCAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9p
bmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRo
ZSBmdW5jdGlvbiBhdCB0aGUgZ2l2ZW4gaW5kZXgiIH0sCisgICAgICAgICJzdHJ1Y3QubmV3Ijog
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZ2MiLCAgICAgICAgICJ2YWx1ZSI6IDI1MSwgInJldHVy
biI6IFsicmVmX3R5cGUiXSwgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2lu
ZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYWxsb2NhdGVzIGEgbmV3IHN0cnVj
dHVyZSIsICJleHRlbmRlZE9wIjogNyB9LAorICAgICAgICAic3RydWN0LmdldCI6ICAgICAgICAg
IHsgImNhdGVnb3J5IjogImdjIiwgICAgICAgICAidmFsdWUiOiAyNTEsICJyZXR1cm4iOiBbImFu
eSJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogImZpZWxkX2luZGV4IiwidHlwZSI6ICJ2
YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogInJlYWRzIHRoZSBmaWVsZCBmcm9tIGEgc3RydWN0
dXJlIiwgImV4dGVuZGVkT3AiOiAzIH0sCisgICAgICAgICJzdHJ1Y3Quc2V0IjogICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAiZ2MiLCAgICAgICAgICJ2YWx1ZSI6IDI1MSwgInJldHVybiI6IFsiYW55
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJyZWZfdHlwZSJdLCAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAiZmllbGRfaW5kZXgiLCJ0eXBlIjogInZh
cnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAic2V0cyB0aGUgZmllbGQgZnJvbSBhIHN0cnVjdHVy
ZSIsICJleHRlbmRlZE9wIjogNiB9LAogICAgICAgICAiZ2V0X2xvY2FsIjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzIsICJyZXR1cm4iOiBbImFueSJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0
ZXIiIH0sCiAgICAgICAgICJzZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3Bl
Y2lhbCIsICAgICJ2YWx1ZSI6ICAzMywgInJldHVybiI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAid3JpdGUgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0sCiAgICAgICAg
ICJ0ZWVfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1
ZSI6ICAzNCwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFy
YW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUg
YSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB0aGUgc2FtZSB2YWx1ZSIg
fSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9nYy9zdHJ1Y3RzLmpzIGIvSlNUZXN0cy93YXNt
L2djL3N0cnVjdHMuanMKaW5kZXggNThlYTBjODIyZjhjLi5kOTNkOTI2ZDE5NjEgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvd2FzbS9nYy9zdHJ1Y3RzLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9nYy9zdHJ1
Y3RzLmpzCkBAIC04MCw0ICs4MCw2MTUgQEAgZnVuY3Rpb24gdGVzdFN0cnVjdERlY2xhcmF0aW9u
KCkgewogICApOwogfQogCitmdW5jdGlvbiB0ZXN0U3RydWN0TmV3KCkgeworICB7CisgICAgLyoK
KyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkRW1wdHkgKHN0cnVjdCkpCisgICAgICog
ICAoZnVuYyAoZXhwb3J0ICJtYWluIikKKyAgICAgKiAgICAgKGRyb3AKKyAgICAgKiAgICAgICAo
c3RydWN0Lm5ldyAkRW1wdHkpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisg
ICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA2XHgwMlx4NjBceDAwXHgw
MFx4NWZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZl
XHgwMFx4MDBceDBhXHgwOFx4MDFceDA2XHgwMFx4ZmJceDA3XHgwMVx4MWFceDBiIikpOworICAg
IGluc3RhbmNlLmV4cG9ydHMubWFpbigpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogKG1v
ZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGkzMikgKGZpZWxk
ICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpCisgICAgICogICAgIChk
cm9wCisgICAgICogICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29uc3QgMTkpIChpMzIu
Y29uc3QgMzcpKQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICogKQorICAgICovCisg
ICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMFx4MDBceDVmXHgw
Mlx4N2ZceDAwXHg3Zlx4MDBceDAzXHgwMlx4MDFceDAwXHgwN1x4MDhceDAxXHgwNFx4NmRceDYx
XHg2OVx4NmVceDAwXHgwMFx4MGFceDBjXHgwMVx4MGFceDAwXHg0MVx4MTNceDQxXHgyNVx4ZmJc
eDA3XHgwMVx4MWFceDBiIikpOworICAgIGluc3RhbmNlLmV4cG9ydHMubWFpbigpOworCisgICAg
LyoKKyAgICAgKiBpbnZhbGlkIHR5cGUgaW5kZXggZm9yIHN0cnVjdC5uZXcKKyAgICAgKiAobW9k
dWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggaTMyKSAoZmllbGQg
JHkgaTMyKSkpCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikKKyAgICAgKiAgICAgKGRy
b3AKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAoaTMyLmNvbnN0IDE5KSAoaTMyLmNvbnN0IDM3
KSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGFzc2Vy
dC50aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisgICAgICAgICAgIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAwXHg1Zlx4
MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA4XHgwMVx4MDRceDZkXHg2
MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgwMFx4NDFceDEzXHg0MVx4MjVceGZi
XHgwN1x4MDNceDFhXHgwYiIKKyAgICAgICAgKSwKKyAgICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwKKyAgICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogc3RydWN0
Lm5ldyB0eXBlIGluZGV4IDMgaXMgb3V0IG9mIGJvdW5kLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAw
IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgICApOwor
ICB9CisKKyAgeworICAgIC8qCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50
IChzdHJ1Y3QgKGZpZWxkICR4IGkzMikgKGZpZWxkICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMg
KGV4cG9ydCAibWFpbiIpCisgICAgICogICAgIHVucmVhY2hhYmxlCisgICAgICogICAgIHN0cnVj
dC5uZXcgJFBvaW50IChpMzIuY29uc3QgMTkpIChpMzIuY29uc3QgMzcpCisgICAgICogICApCisg
ICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJc
eDYwXHgwMFx4MDBceDVmXHgwMlx4N2ZceDAwXHg3Zlx4MDBceDAzXHgwMlx4MDFceDAwXHgwN1x4
MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDBjXHgwMVx4MGFceDAwXHgw
MFx4NDFceDEzXHg0MVx4MjVceGZiXHgwN1x4MDFceDBiIikpOworCisgICAgLyoKKyAgICAgKiBp
bnZhbGlkIHR5cGUgaW5kZXggZm9yIHN0cnVjdC5uZXcgaW4gdW5yZWFjaGFibGUgY29udGV4dAor
ICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBp
MzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChmdW5jIChleHBvcnQgIm1haW4iKQorICAg
ICAqICAgICB1bnJlYWNoYWJsZQorICAgICAqICAgICBzdHJ1Y3QubmV3IChpMzIuY29uc3QgMTkp
IChpMzIuY29uc3QgMzcpCisgICAgICogICApCisgICAgICogKQorICAgICovCisgICAgYXNzZXJ0
LnRocm93cygKKyAgICAgICgpID0+CisgICAgICAgIG1vZHVsZSgKKyAgICAgICAgICAiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMFx4MDBceDVmXHgw
Mlx4N2ZceDAwXHg3Zlx4MDBceDAzXHgwMlx4MDFceDAwXHgwN1x4MDhceDAxXHgwNFx4NmRceDYx
XHg2OVx4NmVceDAwXHgwMFx4MGFceDBjXHgwMVx4MGFceDAwXHgwMFx4NDFceDEzXHg0MVx4MjVc
eGZiXHgwN1x4MDJceDBiIgorICAgICAgICApLAorICAgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVy
cm9yLAorICAgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgOTog
c3RydWN0Lm5ldyB0eXBlIGluZGV4IDIgaXMgb3V0IG9mIGJvdW5kIGluIHVucmVhY2hhYmxlIGNv
bnRleHQsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoYnVmZmVyKScpIgorICAgICk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdFN0cnVj
dEdldCgpIHsKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoaTMyKQorICAgICAqCisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGkzMikpKQor
ICAgICAqICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAg
IChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQg
KGkzMi5jb25zdCAzNykpCisgICAgICogICAgICApCisgICAgICogICAgKQorICAgICAqICkKKyAg
ICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDlceDAyXHg1Zlx4MDFceDdm
XHgwMFx4NjBceDAwXHgwMVx4N2ZceDAzXHgwMlx4MDFceDAxXHgwN1x4MDhceDAxXHgwNFx4NmRc
eDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDBkXHgwMVx4MGJceDAwXHg0MVx4MjVceGZiXHgwN1x4
MDBceGZiXHgwM1x4MDBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0
cy5tYWluKCksIDM3KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGYzMikKKyAg
ICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVs
ZCAkeCBmMzIpKSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBmMzIp
CisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0cnVj
dC5uZXcgJFBvaW50IChmMzIuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkK
KyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5XHgw
Mlx4NWZceDAxXHg3ZFx4MDBceDYwXHgwMFx4MDFceDdkXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4
XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgxMFx4MDFceDBlXHgwMFx4NDNc
eDAwXHgwMFx4MTRceDQyXHhmYlx4MDdceDAwXHhmYlx4MDNceDAwXHgwMFx4MGIiKSk7CisgICAg
YXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAzNyk7CisgIH0KKworICB7CisgICAg
LyoKKyAgICAgKiBQb2ludChpNjQpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAo
dHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggaTY0KSkpCisgICAgICogICAoZnVuYyAoZXhw
b3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICogICAgIChpNjQuZXEKKyAgICAgKiAgICAg
ICAoaTY0LmNvbnN0IDM3KQorICAgICAqICAgICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAg
ICAqICAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpNjQuY29uc3QgMzcpKQorICAgICAqICAg
ICAgICkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxl
dCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDlceDAyXHg1Zlx4MDFceDdlXHgwMFx4NjBceDAw
XHgwMVx4N2ZceDAzXHgwMlx4MDFceDAxXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVc
eDAwXHgwMFx4MGFceDEwXHgwMVx4MGVceDAwXHg0Mlx4MjVceDQyXHgyNVx4ZmJceDA3XHgwMFx4
ZmJceDAzXHgwMFx4MDBceDUxXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0
cy5tYWluKCksIDEpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoZjY0KQorICAg
ICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxk
ICR4IGY2NCkpKQorICAgICAqICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGY2NCkK
KyAgICAgKiAgICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgICAoc3RydWN0
Lm5ldyAkUG9pbnQgKGY2NC5jb25zdCAzNykpCisgICAgICogICAgICApCisgICAgICogICAgKQor
ICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDlceDAy
XHg1Zlx4MDFceDdjXHgwMFx4NjBceDAwXHgwMVx4N2NceDAzXHgwMlx4MDFceDAxXHgwN1x4MDhc
eDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDE0XHgwMVx4MTJceDAwXHg0NFx4
MDBceDAwXHgwMFx4MDBceDAwXHg4MFx4NDJceDQwXHhmYlx4MDdceDAwXHhmYlx4MDNceDAwXHgw
MFx4MGIiKSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAzNyk7Cisg
IH0KKworICB7CisgICAgLyoKKyAgICAgKiBQb2ludChleHRlcm5yZWYpCisgICAgICoKKyAgICAg
KiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggZXh0ZXJu
cmVmKSkpCisgICAgICogICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChwYXJhbSAkb2JqIGV4dGVy
bnJlZikgKHJlc3VsdCBleHRlcm5yZWYpCisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQg
JHgKKyAgICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChsb2NhbC5nZXQgJG9iaikpCisg
ICAgICogICAgICApCisgICAgICogICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0
YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg1Zlx4MDFceDZmXHgwMFx4NjBceDAxXHg2Zlx4
MDFceDZmXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgw
MFx4MDBceDBhXHgwZFx4MDFceDBiXHgwMFx4MjBceDAwXHhmYlx4MDdceDAwXHhmYlx4MDNceDAw
XHgwMFx4MGIiKSk7CisgICAgbGV0IG9iaiA9IHt9OworICAgIGFzc2VydC5lcShpbnN0YW5jZS5l
eHBvcnRzLm1haW4ob2JqKSwgb2JqKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIChtb2R1
bGUKKyAgICAgKiAgIChmdW5jIChleHBvcnQgImYiKSAocGFyYW0gZjY0KSAocmVzdWx0IGY2NCkg
KGxvY2FsLmdldCAwKSkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UxID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHgwNlx4MDFceDYwXHgwMVx4N2NceDAxXHg3Y1x4MDNceDAyXHgwMVx4MDBceDA3
XHgwNVx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4MGIi
KSk7CisKKyAgICAvKgorICAgICAqIFBvaW50KGZ1bmNyZWYpCisgICAgICoKKyAgICAgKiAobW9k
dWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggZnVuY3JlZikpKQor
ICAgICAqICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocGFyYW0gJHAgZnVuY3JlZikgKHJlc3Vs
dCBmdW5jcmVmKQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAg
ICAgIChzdHJ1Y3QubmV3ICRQb2ludCAobG9jYWwuZ2V0ICRwKSkKKyAgICAgKiAgICAgICkKKyAg
ICAgKiAgICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlMiA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4MGFceDAyXHg1Zlx4MDFceDcwXHgwMFx4NjBceDAxXHg3MFx4MDFceDcwXHgwM1x4MDJc
eDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwZFx4
MDFceDBiXHgwMFx4MjBceDAwXHhmYlx4MDdceDAwXHhmYlx4MDNceDAwXHgwMFx4MGIiKSk7Cisg
ICAgbGV0IGZvbyA9IGluc3RhbmNlMS5leHBvcnRzLmY7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNl
Mi5leHBvcnRzLm1haW4oZm9vKSwgZm9vKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBv
aW50KGkzMiwgaTMyKQorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBv
aW50IChzdHJ1Y3QgKGZpZWxkICR4IGkzMikgKGZpZWxkICR5IGkzMikpKQorICAgICAqICAgIChm
dW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgIChzdHJ1Y3QuZ2V0
ICRQb2ludCAkeAorICAgICAqICAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGkzMi5jb25zdCAx
OSkgKGkzMi5jb25zdCAzNykpCisgICAgICogICAgICApCisgICAgICogICAgKQorICAgICAqICkK
KyAgICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg1Zlx4MDJc
eDdmXHgwMFx4N2ZceDAwXHg2MFx4MDBceDAxXHg3Zlx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4
MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4MGZceDAxXHgwZFx4MDBceDQxXHgx
M1x4NDFceDI1XHhmYlx4MDdceDAwXHhmYlx4MDNceDAwXHgwMFx4MGIiKSk7CisgICAgYXNzZXJ0
LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAxOSk7CisgIH0KKworICB7CisgICAgLyoKKyAg
ICAgKiBQb2ludChmMzIsIGYzMikKKyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0
eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBmMzIpIChmaWVsZCAkeSBmMzIpKSkKKyAgICAg
KiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBmMzIpCisgICAgICogICAgICAoc3Ry
dWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChmMzIu
Y29uc3QgMTkpIChmMzIuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAg
ICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4
NWZceDAyXHg3ZFx4MDBceDdkXHgwMFx4NjBceDAwXHgwMVx4N2RceDAzXHgwMlx4MDFceDAxXHgw
N1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDE1XHgwMVx4MTNceDAw
XHg0M1x4MDBceDAwXHg5OFx4NDFceDQzXHgwMFx4MDBceDE0XHg0Mlx4ZmJceDA3XHgwMFx4ZmJc
eDAzXHgwMFx4MDBceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4o
KSwgMTkpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoaTMyLCBmNjQpCisgICAg
ICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQg
JHggaTMyKSAoZmllbGQgJHkgZjY0KSkpCisgICAgICogICAgKGZ1bmMgKGV4cG9ydCAiZ2V0X3gi
KSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAq
ICAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGkzMi5jb25zdCAxOSkgKGY2NC5jb25zdCAzNykp
CisgICAgICogICAgICApCisgICAgICogICAgKQorICAgICAqICAgIChmdW5jIChleHBvcnQgImdl
dF95IikgKHJlc3VsdCBmNjQpCisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHkKKyAg
ICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29uc3QgMTkpIChmNjQuY29uc3Qg
MzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBs
ZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBmXHgwM1x4NWZceDAyXHg3Zlx4MDBceDdjXHgw
MFx4NjBceDAwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwM1x4MDNceDAyXHgwMVx4MDJceDA3
XHgxMVx4MDJceDA1XHg2N1x4NjVceDc0XHg1Zlx4NzhceDAwXHgwMFx4MDVceDY3XHg2NVx4NzRc
eDVmXHg3OVx4MDBceDAxXHgwYVx4MmJceDAyXHgxNFx4MDBceDQxXHgxM1x4NDRceDAwXHgwMFx4
MDBceDAwXHgwMFx4ODBceDQyXHg0MFx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgx
NFx4MDBceDQxXHgxM1x4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDQyXHg0MFx4ZmJceDA3
XHgwMFx4ZmJceDAzXHgwMFx4MDFceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBv
cnRzLmdldF94KCksIDE5KTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfeSgp
LCAzNyk7CisgIH0KKworICB7CisgICAgLy8gdW5yZWFjaGFibGUgY29udGV4dAorCisgICAgLyoK
KyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHgg
aTMyKSAoZmllbGQgJHkgaTMyKSkpCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJl
c3VsdCBpMzIpCisgICAgICogICAgIHVucmVhY2hhYmxlCisgICAgICogICAgIChzdHJ1Y3QuZ2V0
ICRQb2ludCAkeAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5
KSAoaTMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAg
ICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg1Zlx4MDJceDdm
XHgwMFx4N2ZceDAwXHg2MFx4MDBceDAxXHg3Zlx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFc
eDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4MTBceDAxXHgwZVx4MDBceDAwXHg0MVx4
MTNceDQxXHgyNVx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOworCisgICAgLyoK
KyAgICAgKiBpbnZhbGlkIHR5cGUgaW5kZXggZm9yIHN0cnVjdC5nZXQgaW4gdW5yZWFjaGFibGUg
Y29udGV4dAorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChz
dHJ1Y3QgKGZpZWxkICR4IGkzMikgKGZpZWxkICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMgKGV4
cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAqICAgICB1bnJlYWNoYWJsZQorICAgICAq
ICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9p
bnQgKGkzMi5jb25zdCAxOSkgKGkzMi5jb25zdCAzNykpCisgICAgICogICAgICkKKyAgICAgKiAg
ICkKKyAgICAgKiApCisgICAgKi8KKyAgICBhc3NlcnQudGhyb3dzKAorICAgICAgKCkgPT4KKyAg
ICAgICAgbW9kdWxlKAorICAgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDBiXHgwMlx4NWZceDAyXHg3Zlx4MDBceDdmXHgwMFx4NjBceDAwXHgwMVx4N2ZceDAz
XHgwMlx4MDFceDAxXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFc
eDEwXHgwMVx4MGVceDAwXHgwMFx4NDFceDEzXHg0MVx4MjVceGZiXHgwN1x4MDBceGZiXHgwM1x4
MDNceDAwXHgwYiIKKyAgICAgICAgKSwKKyAgICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwK
KyAgICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDEyOiAsIGlu
IGZ1bmN0aW9uIGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YnVmZmVyKScpIgorICAgICk7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdFN0cnVjdFNldCgpIHsK
KyAgeworICAgIC8qCisgICAgICogUG9pbnQoaTMyKQorICAgICAqCisgICAgICogKG1vZHVsZQor
ICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMyKSkpKQorICAg
ICAqICAgKGZ1bmMgJGRvVGVzdCAocGFyYW0gJHAgKHJlZiAkUG9pbnQpKSAocmVzdWx0IGkzMikK
KyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdl
dCAkcCkKKyAgICAgKiAgICAgICAoaTMyLmNvbnN0IDM3KQorICAgICAqICAgICApCisgICAgICog
ICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisg
ICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAi
bWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAqICAgICAoY2FsbCAkZG9UZXN0CisgICAgICogICAg
ICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29uc3QgMCkpCisgICAgICogICAgICkKKyAgICAg
KiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eDBmXHgwM1x4NWZceDAxXHg3Zlx4MDFceDYwXHgwMVx4NmJceDAwXHgwMVx4N2ZceDYwXHgwMFx4
MDFceDdmXHgwM1x4MDNceDAyXHgwMVx4MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2
ZVx4MDBceDAxXHgwYVx4MWNceDAyXHgxMFx4MDBceDIwXHgwMFx4NDFceDI1XHhmYlx4MDZceDAw
XHgwMFx4MjBceDAwXHhmYlx4MDNceDAwXHgwMFx4MGJceDA5XHgwMFx4NDFceDAwXHhmYlx4MDdc
eDAwXHgxMFx4MDBceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4o
KSwgMzcpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoZjMyKQorICAgICAqCisg
ICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4ICht
dXQgZjMyKSkpKQorICAgICAqICAgKGZ1bmMgJGRvVGVzdCAocGFyYW0gJHAgKHJlZiAkUG9pbnQp
KSAocmVzdWx0IGYzMikKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4CisgICAgICog
ICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAoZjMyLmNvbnN0IDM3KQorICAgICAq
ICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChs
b2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKgorICAgICAqICAg
KGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgZjMyKQorICAgICAqICAgICAoY2FsbCAkZG9U
ZXN0CisgICAgICogICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChmMzIuY29uc3QgMCkpCisgICAg
ICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2Ug
PSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDBmXHgwM1x4NWZceDAxXHg3ZFx4MDFceDYwXHgwMVx4NmJceDAwXHgw
MVx4N2RceDYwXHgwMFx4MDFceDdkXHgwM1x4MDNceDAyXHgwMVx4MDJceDA3XHgwOFx4MDFceDA0
XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MjJceDAyXHgxM1x4MDBceDIwXHgwMFx4NDNc
eDAwXHgwMFx4MTRceDQyXHhmYlx4MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4MDNceDAwXHgwMFx4
MGJceDBjXHgwMFx4NDNceDAwXHgwMFx4MDBceDAwXHhmYlx4MDdceDAwXHgxMFx4MDBceDBiIikp
OworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMzcpOworICB9CisKKyAg
eworICAgIC8qCisgICAgICogUG9pbnQoaTY0KQorICAgICAqCisgICAgICogKG1vZHVsZQorICAg
ICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgaTY0KSkpKQorICAgICAq
ICAgKGZ1bmMgJGRvVGVzdCAocGFyYW0gJHAgKHJlZiAkUG9pbnQpKSAocmVzdWx0IGk2NCkKKyAg
ICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAk
cCkKKyAgICAgKiAgICAgICAoaTY0LmNvbnN0IDM3KQorICAgICAqICAgICApCisgICAgICogICAg
IChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAg
ICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFp
biIpIChyZXN1bHQgaTY0KQorICAgICAqICAgICAoY2FsbCAkZG9UZXN0CisgICAgICogICAgICAg
KHN0cnVjdC5uZXcgJFBvaW50IChpNjQuY29uc3QgMCkpCisgICAgICogICAgICkKKyAgICAgKiAg
ICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBm
XHgwM1x4NWZceDAxXHg3ZVx4MDFceDYwXHgwMVx4NmJceDAwXHgwMVx4N2VceDYwXHgwMFx4MDFc
eDdlXHgwM1x4MDNceDAyXHgwMVx4MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4
MDBceDAxXHgwYVx4MWNceDAyXHgxMFx4MDBceDIwXHgwMFx4NDJceDI1XHhmYlx4MDZceDAwXHgw
MFx4MjBceDAwXHhmYlx4MDNceDAwXHgwMFx4MGJceDA5XHgwMFx4NDJceDAwXHhmYlx4MDdceDAw
XHgxMFx4MDBceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSA9
PSAzNywgdHJ1ZSk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiBQb2ludChmNjQpCisgICAg
ICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQg
JHggKG11dCBmNjQpKSkpCisgICAgICogICAoZnVuYyAkZG9UZXN0IChwYXJhbSAkcCAocmVmICRQ
b2ludCkpIChyZXN1bHQgZjY0KQorICAgICAqICAgICAoc3RydWN0LnNldCAkUG9pbnQgJHgKKyAg
ICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICAgIChmNjQuY29uc3QgMzcpCisg
ICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAg
ICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqCisgICAg
ICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBmNjQpCisgICAgICogICAgIChjYWxs
ICRkb1Rlc3QKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGY2NC5jb25zdCAwKSkK
KyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0
YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4MGZceDAzXHg1Zlx4MDFceDdjXHgwMVx4NjBceDAxXHg2Ylx4
MDBceDAxXHg3Y1x4NjBceDAwXHgwMVx4N2NceDAzXHgwM1x4MDJceDAxXHgwMlx4MDdceDA4XHgw
MVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFceDBhXHgyYVx4MDJceDE3XHgwMFx4MjBceDAw
XHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHg4MFx4NDJceDQwXHhmYlx4MDZceDAwXHgwMFx4MjBc
eDAwXHhmYlx4MDNceDAwXHgwMFx4MGJceDEwXHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4ZmJceDA3XHgwMFx4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5z
dGFuY2UuZXhwb3J0cy5tYWluKCksIDM3KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBv
aW50KGV4dGVybnJlZikKKyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQ
b2ludCAoc3RydWN0IChmaWVsZCAkeCAobXV0IGV4dGVybnJlZikpKSkKKyAgICAgKiAgIChmdW5j
ICRkb1NldCAocGFyYW0gJHAgKHJlZiAkUG9pbnQpKSAocGFyYW0gJG9iaiBleHRlcm5yZWYpIChy
ZXN1bHQgZXh0ZXJucmVmKQorICAgICAqICAgICAoc3RydWN0LnNldCAkUG9pbnQgJHgKKyAgICAg
KiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICAgIChsb2NhbC5nZXQgJG9iaikKKyAg
ICAgKiAgICAgKQorICAgICAqICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAg
ICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAg
KiAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocGFyYW0gJG9iaiBleHRlcm5yZWYpIChyZXN1bHQg
ZXh0ZXJucmVmKQorICAgICAqICAgICAoY2FsbCAkZG9TZXQKKyAgICAgKiAgICAgICAoc3RydWN0
Lm5ldyAkUG9pbnQgKHJlZi5udWxsIGV4dGVybikpCisgICAgICogICAgICAgKGxvY2FsLmdldCAk
b2JqKQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0
IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgxMVx4MDNceDVmXHgwMVx4NmZceDAxXHg2MFx4MDJc
eDZiXHgwMFx4NmZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDZmXHgwM1x4MDNceDAyXHgwMVx4
MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MWVceDAyXHgx
MFx4MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4MDNceDAw
XHgwMFx4MGJceDBiXHgwMFx4ZDBceDZmXHhmYlx4MDdceDAwXHgyMFx4MDBceDEwXHgwMFx4MGIi
KSk7CisgICAgbGV0IG9iaiA9IHt9OworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1h
aW4ob2JqKSwgb2JqKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIChtb2R1bGUKKyAgICAg
KiAgIChmdW5jIChleHBvcnQgImYiKSAocGFyYW0gZjY0KSAocmVzdWx0IGY2NCkgKGxvY2FsLmdl
dCAwKSkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UxID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHgwNlx4MDFceDYwXHgwMVx4N2NceDAxXHg3Y1x4MDNceDAyXHgwMVx4MDBceDA3XHgwNVx4MDFc
eDAxXHg2Nlx4MDBceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4MGIiKSk7CisKKyAg
ICAvKgorICAgICAqIFBvaW50KGZ1bmNyZWYpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAg
ICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggKG11dCBmdW5jcmVmKSkpKQorICAg
ICAqICAgKGZ1bmMgJGRvU2V0IChwYXJhbSAkcCAocmVmICRQb2ludCkpIChwYXJhbSAkb2JqIGZ1
bmNyZWYpIChyZXN1bHQgZnVuY3JlZikKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4
CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRv
YmopCisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAg
ICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAq
CisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHBhcmFtICRvYmogZnVuY3JlZikgKHJl
c3VsdCBmdW5jcmVmKQorICAgICAqICAgICAoY2FsbCAkZG9TZXQKKyAgICAgKiAgICAgICAoc3Ry
dWN0Lm5ldyAkUG9pbnQgKHJlZi5udWxsIGZ1bmMpKQorICAgICAqICAgICAgIChsb2NhbC5nZXQg
JG9iaikKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxl
dCBpbnN0YW5jZTIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDExXHgwM1x4NWZceDAxXHg3MFx4MDFceDYwXHgw
Mlx4NmJceDAwXHg3MFx4MDFceDcwXHg2MFx4MDFceDcwXHgwMVx4NzBceDAzXHgwM1x4MDJceDAx
XHgwMlx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFceDBhXHgxZVx4MDJc
eDEwXHgwMFx4MjBceDAwXHgyMFx4MDFceGZiXHgwNlx4MDBceDAwXHgyMFx4MDBceGZiXHgwM1x4
MDBceDAwXHgwYlx4MGJceDAwXHhkMFx4NzBceGZiXHgwN1x4MDBceDIwXHgwMFx4MTBceDAwXHgw
YiIpKTsKKyAgICBsZXQgZm9vID0gaW5zdGFuY2UxLmV4cG9ydHMuZjsKKyAgICBhc3NlcnQuZXEo
aW5zdGFuY2UyLmV4cG9ydHMubWFpbihmb28pLCBmb28pOworICB9CisKKyAgeworICAgIC8qCisg
ICAgICogUG9pbnQoaTMyLCBpMzIpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAo
dHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggKG11dCBpMzIpKSAoZmllbGQgJHkgKG11dCBp
MzIpKSkpCisgICAgICogICAoZnVuYyAkZG9TZXQgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHBh
cmFtICR2YWwgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50
ICR5CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0
ICR2YWwpCisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR5Cisg
ICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAg
ICAqCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICog
ICAgIChjYWxsICRkb1NldAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNv
bnN0IDApIChpMzIuY29uc3QgMCkpCisgICAgICogICAgICAgKGkzMi5jb25zdCAxOSkKKyAgICAg
KiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZSA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4MTJceDAzXHg1Zlx4MDJceDdmXHgwMVx4N2ZceDAxXHg2MFx4MDJceDZi
XHgwMFx4N2ZceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2ZceDAzXHgwM1x4MDJceDAxXHgwMlx4MDdc
eDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFceDBhXHgyMFx4MDJceDEwXHgwMFx4
MjBceDAwXHgyMFx4MDFceGZiXHgwNlx4MDBceDAxXHgyMFx4MDBceGZiXHgwM1x4MDBceDAxXHgw
Ylx4MGRceDAwXHg0MVx4MDBceDQxXHgwMFx4ZmJceDA3XHgwMFx4NDFceDEzXHgxMFx4MDBceDBi
IikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMTkpOworICB9CisK
KyAgeworICAgIC8qCisgICAgICogUG9pbnQoaTMyLCBpNjQpCisgICAgICoKKyAgICAgKiAobW9k
dWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggKG11dCBpMzIpKSAo
ZmllbGQgJHkgKG11dCBpNjQpKSkpCisgICAgICogICAoZnVuYyAkZG9TZXQgKHBhcmFtICRwIChy
ZWYgJFBvaW50KSkgKHBhcmFtICR2YWwgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKHN0
cnVjdC5zZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAg
ICAgICAobG9jYWwuZ2V0ICR2YWwpCisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5n
ZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQor
ICAgICAqICAgKQorICAgICAqCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3Vs
dCBpMzIpCisgICAgICogICAgIChjYWxsICRkb1NldAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3
ICRQb2ludCAoaTMyLmNvbnN0IDApIChpNjQuY29uc3QgMCkpCisgICAgICogICAgICAgKGkzMi5j
b25zdCAxOSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAg
IGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MTJceDAzXHg1Zlx4MDJceDdmXHgwMVx4N2Vc
eDAxXHg2MFx4MDJceDZiXHgwMFx4N2ZceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2ZceDAzXHgwM1x4
MDJceDAxXHgwMlx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFceDBhXHgy
MFx4MDJceDEwXHgwMFx4MjBceDAwXHgyMFx4MDFceGZiXHgwNlx4MDBceDAwXHgyMFx4MDBceGZi
XHgwM1x4MDBceDAwXHgwYlx4MGRceDAwXHg0MVx4MDBceDQyXHgwMFx4ZmJceDA3XHgwMFx4NDFc
eDEzXHgxMFx4MDBceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4o
KSwgMTkpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogdHJ5aW5nIHRvIHNldCBhIG5vbi1t
dXRhYmxlIGZpZWxkCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9p
bnQgKHN0cnVjdCAoZmllbGQgJHggKGkzMikpKSkKKyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBh
cmFtICRwIChyZWYgJFBvaW50KSkgKHJlc3VsdCBpMzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0
ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGkz
Mi5jb25zdCAzNykKKyAgICAgKiAgICAgKQorICAgICAqICAgICAoc3RydWN0LmdldCAkUG9pbnQg
JHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICApCisgICAgICogICAp
CisgICAgICoKKyAgICAgKiAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAg
ICAgKiAgICAgKGNhbGwgJGRvVGVzdAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAo
aTMyLmNvbnN0IDApKQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICogKQorICAgICov
CisgICAgYXNzZXJ0LnRocm93cygKKyAgICAgICgpID0+CisgICAgICAgIG1vZHVsZSgKKyAgICAg
ICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDNceDVmXHgw
MVx4N2ZceDAwXHg2MFx4MDFceDZiXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4MDNceDAz
XHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFc
eDFjXHgwMlx4MTBceDAwXHgyMFx4MDBceDQxXHgyNVx4ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4
ZmJceDAzXHgwMFx4MDBceDBiXHgwOVx4MDBceDQxXHgwMFx4ZmJceDA3XHgwMFx4MTBceDAwXHgw
YiIKKyAgICAgICAgKSwKKyAgICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAgICJX
ZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDk6IHRoZSBmaWVsZCAwIGNh
bid0IGJlIHNldCBiZWNhdXNlIGl0IGlzIGltbXV0YWJsZSwgaW4gZnVuY3Rpb24gYXQgaW5kZXgg
MCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiCisgICAgKTsK
KyAgfQorCisgIHsKKyAgICAvLyB1bnJlYWNoYWJsZSBjb250ZXh0CisKKyAgICAvKgorICAgICAq
CisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4
IChtdXQgaTMyKSkpKQorICAgICAqICAgKGZ1bmMgJGRvVGVzdCAocGFyYW0gJHAgKHJlZiAkUG9p
bnQpKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKHVucmVhY2hhYmxlKQorICAgICAqICAgICAo
c3RydWN0LnNldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAgICAq
ICAgICAgIChpMzIuY29uc3QgMzcpCisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5n
ZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQor
ICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4MGJceDAyXHg1Zlx4MDFceDdmXHgwMVx4NjBceDAxXHg2Ylx4MDBceDAxXHg3Zlx4MDNc
eDAyXHgwMVx4MDFceDBhXHgxM1x4MDFceDExXHgwMFx4MDBceDIwXHgwMFx4NDFceDI1XHhmYlx4
MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4MDNceDAwXHgwMFx4MGIiKSk7CisKKyAgICAvKgorICAg
ICAqIGludmFsaWQgdHlwZSBpbmRleCBmb3Igc3RydWN0LnNldCBpbiB1bnJlYWNoYWJsZSBjb250
ZXh0CisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVj
dCAoZmllbGQgJHggKG11dCBpMzIpKSkpCisgICAgICogICAoZnVuYyAkZG9UZXN0IChwYXJhbSAk
cCAocmVmICRQb2ludCkpIChyZXN1bHQgaTMyKQorICAgICAqICAgICAodW5yZWFjaGFibGUpCisg
ICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQg
JHApCisgICAgICogICAgICAgKGkzMi5jb25zdCAzNykKKyAgICAgKiAgICAgKQorICAgICAqICAg
ICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAg
ICAqICAgICApCisgICAgICogICApCisgICAgICogKQorICAgICovCisgICAgYXNzZXJ0LnRocm93
cygKKyAgICAgICgpID0+CisgICAgICAgIG1vZHVsZSgKKyAgICAgICAgICAiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4MDJceDVmXHgwMVx4N2ZceDAxXHg2MFx4MDFc
eDZiXHgwMFx4MDFceDdmXHgwM1x4MDJceDAxXHgwMVx4MGFceDEzXHgwMVx4MTFceDAwXHgwMFx4
MjBceDAwXHg0MVx4MjVceGZiXHgwNlx4MDBceDAwXHgyMFx4MDBceGZiXHgwM1x4MDVceDAwXHgw
YiIKKyAgICAgICAgKSwKKyAgICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAgICJX
ZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE1OiAsIGluIGZ1bmN0aW9u
IGF0IGluZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScp
IgorICAgICk7CisgIH0KK30KKwogdGVzdFN0cnVjdERlY2xhcmF0aW9uKCk7Cit0ZXN0U3RydWN0
TmV3KCk7Cit0ZXN0U3RydWN0R2V0KCk7Cit0ZXN0U3RydWN0U2V0KCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCBkZTJm
NTNhZDhlNTguLmQ2ZWIxYTY3ZWJjZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNv
bgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC03OCw2ICs3OCw5IEBACiAgICAgICAg
ICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1
ZSI6IDIwOCwgInJldHVybiI6IFsiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwgICAgICAgICAicGFy
YW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3si
bmFtZSI6ICJyZWZ0eXBlIiwgICAgICAgICJ0eXBlIjogInJlZl90eXBlIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25z
dGFudCBudWxsIHJlZmVyZW5jZSIgfSwKICAgICAgICAgInJlZi5pc19udWxsIjogICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJpMzIi
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImV4dGVybnJlZiJdLCAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXRlcm1pbmUgaWYgYSByZWZlcmVuY2UgaXMgbnVs
bCIgfSwKICAgICAgICAgInJlZi5mdW5jIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVj
aWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0dXJuIjogWyJmdW5jcmVmIl0sICAgICAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMy
In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJyZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBp
bmRleCIgfSwKKyAgICAgICAgInN0cnVjdC5uZXciOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJn
YyIsICAgICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjogWyJyZWZfdHlwZSJdLCAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJhbGxvY2F0ZXMgYSBuZXcgc3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA3IH0s
CisgICAgICAgICJzdHJ1Y3QuZ2V0IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZ2MiLCAgICAg
ICAgICJ2YWx1ZSI6IDI1MSwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAiZmllbGRfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24i
OiAicmVhZHMgdGhlIGZpZWxkIGZyb20gYSBzdHJ1Y3R1cmUiLCAiZXh0ZW5kZWRPcCI6IDMgfSwK
KyAgICAgICAgInN0cnVjdC5zZXQiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAgICAg
ICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbInJlZl90eXBlIl0sICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJmaWVsZF9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6
ICJzZXRzIHRoZSBmaWVsZCBmcm9tIGEgc3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA2IH0sCiAg
ICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAg
ICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
cmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInNldF9sb2Nh
bCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMzLCAi
cmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxv
Y2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZh
cmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnki
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFt
ZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461245</attachid>
            <date>2022-07-27 08:51:14 -0700</date>
            <delta_ts>2022-07-27 08:52:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243208-20220727225112.patch</filename>
            <type>text/plain</type>
            <size>97280</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhZTA5OGNhZWZjYWNjZTZkOGNj
MDNkMTVkZDY3NGRiZTAyZjA5NDk5Li41ZmFjMGVjNjY0OTM3NWM2ZTk0YTMyYzc5YTU2NDcwODc3
MjIzMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNDIsNiArMTQy
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseVJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdENvbnN0cnVj
dG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUuY3BwCiAgICAg
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCiAgICAgd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWdDb25z
dHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA5ZDBkYzllZGI2MTZl
MzNlY2NhMzM5MWYxOWZhNjQ4MmM3MzdmYWQ5Li5hYTZjODk3MTFhNzQ4OTNmMDk2YTJkMWZjN2Nk
ZmU5NTA5NDVlZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMTI5LDYgKzEx
MjksNyBAQCB3YXNtL1dhc21TbG93UGF0aHMuY3BwCiB3YXNtL1dhc21TdHJlYW1pbmdDb21waWxl
ci5jcHAKIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKIHdhc20vV2FzbVN0cmVhbWluZ1Bs
YW4uY3BwCit3YXNtL1dhc21TdHJ1Y3QuY3BwCiB3YXNtL1dhc21UYWJsZS5jcHAKIHdhc20vV2Fz
bVRhZy5jcHAKIHdhc20vV2FzbVRodW5rcy5jcHAKQEAgLTExNDgsNiArMTE0OSw3IEBAIHdhc20v
anMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5jcHAKIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKIHdhc20vanMvSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvci5jcHAKK3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5jcHAKIHdh
c20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNw
cAogd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTExNzEsNiArMTE3Myw4IEBAIHdhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAog
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKK3dhc20vanMvV2Vi
QXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5jcHAKK3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQ
cm90b3R5cGUuY3BwCiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKIHdh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKIHdhc20vanMvV2ViQXNzZW1ibHlU
YWdDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCmluZGV4IDZjNDgzZGY0ODk1MjhiOTMwYzU2YmRmNjRiZTFlZDU4Mzc3Y2E3
NDAuLmQ4YmQ2ODliYzMzOTllNzA3YmQ3NDU0YzE2NzNlYmU0NTBjYmJkZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTkxMCw0ICsx
OTEwLDI3IEBAIG9wIDppMzFfZ2V0X3UsCiAgICAgICAgIHJlZjogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0KIAorb3AgOnN0cnVjdF9uZXcsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdHlwZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgZmlyc3RW
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKworb3AgOnN0cnVjdF9nZXQsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3RydWN0UmVmZXJl
bmNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHR5cGVJbmRleDogdW5zaWduZWQsCisgICAg
ICAgIGZpZWxkSW5kZXg6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOnN0cnVjdF9zZXQsCisgICAg
YXJnczogeworICAgICAgICBzdHJ1Y3RSZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgdHlwZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgZmllbGRJbmRleDogdW5zaWduZWQsCisg
ICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBlbmRfc2VjdGlvbiA6V2Fz
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4YTRjMDgyY2IzNmVlYmYwODA1
OGU5YjhiNTdjMzU3YTE2NTJiODFlLi5hMmVlNjFjZDliNjZkODE5N2I2NjM2MTQzZGFlYmNjZmQ1
MTdlM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzQ4LDYgKzM0OCw3
IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHdlYkFzc2Vt
Ymx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5
R2xvYmFsPigpKQogICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQogICAgICwgd2ViQXNzZW1i
bHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlN
ZW1vcnk+KCkpCisgICAgLCB3ZWJBc3NlbWJseVN0cnVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVN0cnVjdD4oKSkKICAgICAsIHdlYkFzc2VtYmx5TW9k
dWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TW9kdWxl
PigpKQogICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQogICAgICwgd2ViQXNzZW1i
bHlUYWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRh
YmxlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDQxOGYyNGZkMTIxMmRjZGEw
NzEwNDUwMWQxODMwYTVjMThkYTZmNjIuLjI1YmRmNmIzMTZjNjA2OGZiOTI0ZjQ3OTExMGE1YWI4
MmI4ZWIyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE3NSw2ICsxNzUsNyBA
QCBjbGFzcyBIZWFwOwogICAgIHYod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNzZW1ibHlH
bG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpIFwKICAgICB2KHdlYkFzc2Vt
Ymx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKSBcCiAgICAgdih3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3Nl
bWJseU1lbW9yeUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkgXAorICAgIHYod2Vi
QXNzZW1ibHlTdHJ1Y3RTcGFjZSwgd2ViQXNzZW1ibHlTdHJ1Y3RIZWFwQ2VsbFR5cGUsIEpTV2Vi
QXNzZW1ibHlTdHJ1Y3QpIFwKICAgICB2KHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdlYkFzc2Vt
Ymx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKSBcCiAgICAgdih3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxs
VHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpIFwKICAgICB2KHdlYkFzc2VtYmx5VGFibGVT
cGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKSBc
CkBAIC05NjcsNiArOTY4LDcgQEAgcHVibGljOgogICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3Nl
bWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlJ
bnN0YW5jZUhlYXBDZWxsVHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNZW1v
cnlIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5U3RydWN0SGVh
cENlbGxUeXBlOwogICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxs
VHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGU7CiAgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAppbmRl
eCAwYjQ0ZmUwMWU5NDVkMjI0ZDU3MTJhODA2NmQxMTIwODkxY2I1NGM2Li43ZmZhOWFhMjNhNTcx
NjkyNTNlNDI2MWE3ZGFlY2FhZGRmZGUwNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5Lmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlTdHJ1Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5VGFnLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGU3MDlhNmYxNjk5Mjk1YzY5
OThlM2EzMDMxZTliMzY3MWYxNGU5YzIuLmQ1MDFkOWU5YmZkMTBlOTlmZTFjNGY1YzZjM2JkZTEz
MGEwOThkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3Nl
bWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFz
bQpAQCAtNzIxLDYgKzcyMSw5IEBAIHNsb3dXYXNtT3Aoc2V0X2dsb2JhbF9yZWZfcG9ydGFibGVf
YmluZGluZykKIHNsb3dXYXNtT3AobWVtb3J5X2F0b21pY193YWl0MzIpCiBzbG93V2FzbU9wKG1l
bW9yeV9hdG9taWNfd2FpdDY0KQogc2xvd1dhc21PcChtZW1vcnlfYXRvbWljX25vdGlmeSkKK3Ns
b3dXYXNtT3Aoc3RydWN0X25ldykKK3Nsb3dXYXNtT3Aoc3RydWN0X2dldCkKK3Nsb3dXYXNtT3Ao
c3RydWN0X3NldCkKIAogd2FzbU9wKGdyb3dfbWVtb3J5LCBXYXNtR3Jvd01lbW9yeSwgbWFjcm8o
Y3R4KQogICAgIGNhbGxXYXNtU2xvd1BhdGgoX3Nsb3dfcGF0aF93YXNtX2dyb3dfbWVtb3J5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGZhZGMwNjY3OGE3M2JlNWIxODdkODFhNDhjOGUwOGViNTdhODBlOTQuLjY4YWQ5YzAzYjVh
NmU4MWNlMzUxNTk4Y2MyMzA2YTAwNmY1ZWViOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE2MSw2ICsxNjEsNyBAQAogI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9k
dWxlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlTdHJ1Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIK
QEAgLTI0Niw2ICsyNDcsOCBAQAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgi
CiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3RydWN0UHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5
VGFnQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDczZTU2ODE2ZTU1ZDg5NWNmN2VkMTIwMjE4ZjhkZGNhYTVjZmIw
NDguLmIyMWEyNmY5MDMzNjllZDdmMGNhYmUzZDAyM2EwMTdiNDg4MDM1NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTgxLDYgKzE4
MSw3IEBAIGNvbnN0ZXhwciBib29sIHR5cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBt
YWNybyhXZWJBc3NlbWJseU1lbW9yeSwgICAgICAgd2ViQXNzZW1ibHlNZW1vcnksICAgICAgIHdl
YkFzc2VtYmx5TWVtb3J5LCAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5LCAgICAgICBNZW1vcnks
ICAgICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhXZWJBc3Nl
bWJseU1vZHVsZSwgICAgICAgd2ViQXNzZW1ibHlNb2R1bGUsICAgICAgIHdlYkFzc2VtYmx5TW9k
dWxlLCAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlLCAgICAgICBNb2R1bGUsICAgICAgIG9iamVj
dCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvciwgd2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIHdlYkFzc2VtYmx5UnVudGltZUVycm9yLCBF
cnJvckluc3RhbmNlLCAgICAgICAgICAgICBSdW50aW1lRXJyb3IsIGVycm9yLCAgdHlwZUV4cG9z
ZWRCeURlZmF1bHQpIFwKKyAgICBtYWNybyhXZWJBc3NlbWJseVN0cnVjdCwgICAgICAgd2ViQXNz
ZW1ibHlTdHJ1Y3QsICAgICAgIHdlYkFzc2VtYmx5U3RydWN0LCAgICAgICBKU1dlYkFzc2VtYmx5
U3RydWN0LCAgICAgICBTdHJ1Y3QsICAgICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQp
IFwKICAgICBtYWNybyhXZWJBc3NlbWJseVRhYmxlLCAgICAgICAgd2ViQXNzZW1ibHlUYWJsZSwg
ICAgICAgIHdlYkFzc2VtYmx5VGFibGUsICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUsICAgICAg
ICBUYWJsZSwgICAgICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNy
byhXZWJBc3NlbWJseVRhZywgICAgICAgICAgd2ViQXNzZW1ibHlUYWcsICAgICAgICAgIHdlYkFz
c2VtYmx5VGFnLCAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFnLCAgICAgICAgICBUYWcsICAgICAg
ICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDFjZWNmZDJl
YTg1YzU2YzlmMjMyMDcxMWY4MDE5YmRlNDQ3YWFmNjMuLjc1YzkxMzgxOWQ0NWRkMjA5MmEwYzI4
YzkwMDZkOGU4NTkzMThkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMzgxLDYgKzM4MSw5IEBAIHB1YmxpYzoKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lvblR5cGUg
dmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFH
ZXRVKEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90IGluZGV4
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTdHJ1Y3RHZXQoRXhwcmVz
c2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZp
ZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVu
Y2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5
cGUgdmFsdWUpOwogCiAgICAgLy8gQmFzaWMgb3BlcmF0b3JzCiAgICAgdGVtcGxhdGU8T3BUeXBl
PgpAQCAtMzA2Niw2ICszMDY5LDEwNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRJMzFHZXRV
KEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUAogICAgIHJl
dHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFN0cnVjdE5ldyh1aW50MzJf
dCB0eXBlSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBl
ID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOwor
ICAgIEFTU0VSVChzdHJ1Y3RUeXBlLmZpZWxkQ291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisKKyAg
ICBBU1NFUlQodHlwZUluZGV4IDwgbV9pbmZvLnR5cGVDb3VudCgpKTsKKyAgICByZXN1bHQgPSB0
bXBGb3JUeXBlKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby50eXBl
U2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pbmRleCgpIH0pOworCisgICAgYXV0byogcGF0Y2ggPSBh
ZGRQYXRjaHBvaW50KEIzOjpJbnQ2NCk7CisgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworICAgIHBhdGNoLT5yZXN1bHRDb25zdHJh
aW50cy5hcHBlbmQoQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsK
KworICAgIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgOD4gcGF0Y2hBcmdzOworICAgIHBhdGNoQXJn
cy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoaW5zdGFuY2VWYWx1ZSgpLCBCMzo6VmFsdWVSZXA6OnJl
ZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJh
aW5lZFRtcChUbXAoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpLCBCMzo6VmFsdWVSZXA6OnJl
ZyhHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFyZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRU
bXAoYXJnc1tpXSwgQjM6OlZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KGkgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSkpOworCisgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBoYW5kbGUgPSBw
cmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2gsIHBhdGNoQXJncyk7CisgICAgcGF0
Y2gtPnNldEdlbmVyYXRvcihbdGhpcywgdHlwZUluZGV4LCBoYW5kbGVdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgaGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgZW1pdFN0
cnVjdE5ld0ltcGwoaml0LCB0eXBlSW5kZXgpOworICAgIH0pOworCisgICAgVG1wIHJlc3VsdFN0
cnVjdCA9IFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFBhdGNocG9pbnQo
bV9jdXJyZW50QmxvY2ssIHBhdGNoLCBWZWN0b3I8VG1wLCA4Pjo6ZnJvbShyZXN1bHRTdHJ1Y3Qp
LCBXVEZNb3ZlKHBhdGNoQXJncykpOworICAgIGFwcGVuZChNb3ZlLCByZXN1bHRTdHJ1Y3QsIHJl
c3VsdCk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRT
dHJ1Y3RHZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5k
ZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2ln
bmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5k
ZXggPCBtX2luZm8udHlwZUNvdW50KCkpOworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0
VHlwZS5maWVsZENvdW50KCkpOworCisgICAgYXV0byByZXR1cm5WYWx1ZSA9IGc2NCgpOworICAg
IGVtaXRDQ2FsbCgmb3BlcmF0aW9uV2FzbVN0cnVjdEdldCwgcmV0dXJuVmFsdWUsIHN0cnVjdFJl
ZmVyZW5jZSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgZmllbGRJbmRleCkpOworCisgICAgY29u
c3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7Cisg
ICAgcmVzdWx0ID0gdG1wRm9yVHlwZShmaWVsZFR5cGUpOworICAgIHN3aXRjaCAoZmllbGRUeXBl
LmtpbmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgIGFwcGVuZChNb3ZlMzIs
IHJldHVyblZhbHVlLCByZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVLaW5k
OjpGdW5jcmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICBjYXNlIFR5cGVL
aW5kOjpSZWY6CisgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICBjYXNlIFR5cGVLaW5k
OjpJNjQ6CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXR1cm5WYWx1ZSwgcmVzdWx0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOgorICAgICAgICBhcHBlbmQoTW92ZTMy
VG9GbG9hdCwgcmV0dXJuVmFsdWUsIHJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgYXBwZW5kKE1vdmU2NFRvRG91YmxlLCByZXR1cm5WYWx1
ZSwgcmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCith
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRTdHJ1Y3RTZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVm
ZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Np
b25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgY29uc3QgYXV0byYgc3RydWN0
VHlwZSA9ICptX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+YXM8U3RydWN0VHlwZT4o
KTsKKyAgICBBU1NFUlQodHlwZUluZGV4IDwgbV9pbmZvLnR5cGVDb3VudCgpKTsKKyAgICBBU1NF
UlQoZmllbGRJbmRleCA8IHN0cnVjdFR5cGUuZmllbGRDb3VudCgpKTsKKworICAgIGNvbnN0IGF1
dG8gZmllbGRUeXBlID0gc3RydWN0VHlwZS5maWVsZChmaWVsZEluZGV4KS50eXBlOworICAgIGF1
dG8gdmFsdWVBc0ludDY0ID0gdG1wRm9yVHlwZShUeXBlczo6STY0KTsKKyAgICBzd2l0Y2ggKGZp
ZWxkVHlwZS5raW5kKSB7CisgICAgY2FzZSBUeXBlS2luZDo6STMyOgorICAgICAgICBhcHBlbmQo
TW92ZTMyLCB2YWx1ZSwgdmFsdWVBc0ludDY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlS2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgY2FzZSBU
eXBlS2luZDo6STY0OgorICAgICAgICBhcHBlbmQoTW92ZSwgdmFsdWUsIHZhbHVlQXNJbnQ2NCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAgYXBwZW5k
KE1vdmVGbG9hdFRvMzIsIHZhbHVlLCB2YWx1ZUFzSW50NjQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgICAgIGFwcGVuZChNb3ZlRG91YmxlVG82NCwgdmFs
dWUsIHZhbHVlQXNJbnQ2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgZW1pdENDYWxsKCZv
cGVyYXRpb25XYXNtU3RydWN0U2V0LCBUeXBlZFRtcCgpLCBzdHJ1Y3RSZWZlcmVuY2UsIGFkZENv
bnN0YW50KFR5cGVzOjpJMzIsIGZpZWxkSW5kZXgpLCB2YWx1ZUFzSW50NjQpOworCisgICAgcmV0
dXJuIHsgfTsKK30KKwogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25U
eXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVy
bywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VS
VChub25aZXJvLnR5cGUoKSA9PSB6ZXJvLnR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggOGRlMTBmYTdjMjk3MjllNmY0
MjkzM2FiODU3MzdiY2RmYzk3ZjZiMy4uYzYwYWMxMzY5YzQxMDI3MDgxMDcyYTBmYjM4MDcyZmIy
NDMxNDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtMzU4LDYgKzM1OCw5IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFHZXRVKEV4cHJlc3Np
b25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90IHR5cGVJbmRleCwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0R2V0KEV4cHJlc3Npb25UeXBl
IHN0cnVjdFJlZmVyZW5jZSwgdWludDMyX3QgdHlwZUluZGV4LCB1aW50MzJfdCBmaWVsZEluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRTdHJ1Y3RTZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50
MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KTsKIAogICAgIC8vIEJhc2ljIG9wZXJhdG9ycwogICAgIHRlbXBsYXRlPE9wVHlwZT4KQEAgLTIz
MjQsNiArMjMyNywxMDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRJMzFHZXRVKEV4cHJlc3Np
b25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGEKICAgICByZXR1cm4geyB9
OwogfQogCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFN0cnVjdE5ldyh1aW50MzJfdCB0eXBlSW5k
ZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvIHR5cGUgPSBUeXBlIHsgVHlwZUtp
bmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+
aW5kZXgoKSB9OworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNo
cG9pbnRWYWx1ZT4odG9CM1R5cGUodHlwZSksIG9yaWdpbigpKTsKKyAgICBwYXRjaC0+YXBwZW5k
KGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0Nh
bGwoKSk7CisgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzID0gVmVjdG9yPEIzOjpWYWx1ZVJl
cCwgMT4geyBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSB9OworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRjaC0+
YXBwZW5kKGdldChhcmdzW2ldKSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpKTsKKworICAgIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgaGFuZGxl
ID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKG1fY3VycmVudEJsb2NrLCBwYXRjaCk7
CisgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbdGhpcywgdHlwZUluZGV4LCBoYW5kbGVdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKKyAgICAgICAgaGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAg
ICAgZW1pdFN0cnVjdE5ld0ltcGwoaml0LCB0eXBlSW5kZXgpOworICAgIH0pOworICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmQocGF0Y2gpOworICAgIHJlc3VsdCA9IHB1c2gocGF0Y2gpOworCisg
ICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBCM0lSR2VuZXJhdG9yOjphZGRTdHJ1Y3RHZXQoRXhw
cmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90
IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBl
SW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8u
dHlwZUNvdW50KCkpOworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENv
dW50KCkpOworCisgICAgVmFsdWUqIHJlc3VsdEFzSW50NjQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0LCBvcmlnaW4oKSwKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtU3RydWN0R2V0KSks
CisgICAgICAgIGdldChzdHJ1Y3RSZWZlcmVuY2UpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgZmllbGRJbmRleCkpOworCisgICAgY29u
c3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7Cisg
ICAgc3dpdGNoIChmaWVsZFR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAg
ICAgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEIzOjpUcnVuYywgb3JpZ2luKCksIHJlc3VsdEFzSW50NjQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5y
ZWY6CisgICAgY2FzZSBUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6
CisgICAgY2FzZSBUeXBlS2luZDo6STY0OgorICAgICAgICByZXN1bHQgPSBwdXNoKHJlc3VsdEFz
SW50NjQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVLaW5kOjpGMzI6IHsKKyAgICAg
ICAgVmFsdWUqIHJlc3VsdEFzSTMyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBCMzo6VHJ1bmMsIG9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKKyAgICAgICAgcmVz
dWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpC
aXR3aXNlQ2FzdCwgb3JpZ2luKCksIHJlc3VsdEFzSTMyKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2gobV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6Qml0d2lzZUNhc3QsIG9yaWdp
bigpLCByZXN1bHRBc0ludDY0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHsg
fTsKK30KKworCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlw
ZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRl
eCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBh
dXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxT
dHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8udHlwZUNvdW50KCkp
OworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENvdW50KCkpOworCisg
ICAgY29uc3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5
cGU7CisgICAgVmFsdWUqIHZhbHVlQXNJbnQ2NCA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmaWVs
ZFR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgdmFsdWVBc0lu
dDY0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6WkV4dDMy
LCBvcmlnaW4oKSwgZ2V0KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgIGNhc2UgVHlw
ZUtpbmQ6OlJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgIGNhc2UgVHlwZUtp
bmQ6Okk2NDoKKyAgICAgICAgdmFsdWVBc0ludDY0ID0gZ2V0KHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZUFzSW50
MzIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNl
Q2FzdCwgb3JpZ2luKCksIGdldCh2YWx1ZSkpOworICAgICAgICB2YWx1ZUFzSW50NjQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpaRXh0MzIsIG9yaWdpbigp
LCB2YWx1ZUFzSW50MzIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlS2lu
ZDo6RjY0OgorICAgICAgICB2YWx1ZUFzSW50NjQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNlQ2FzdCwgb3JpZ2luKCksIGdldCh2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCisgICAgICAgIG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpLAorICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21TdHJ1Y3RTZXQpKSwKKyAg
ICAgICAgZ2V0KHN0cnVjdFJlZmVyZW5jZSksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBmaWVsZEluZGV4KSwKKyAgICAg
ICAgdmFsdWVBc0ludDY0KTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUg
bm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6U2VsZWN0LCBvcmlnaW4oKSwgZ2V0KGNvbmRpdGlvbiks
IGdldChub25aZXJvKSwgZ2V0KHplcm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDRmNjA1M2QxNjUyMTAwMGFjOTYwMDcyMTdk
ZTE1MTg2MWEyNjAwNzMuLjllMmQ3YTRhYzc0MjdlZTA4YzcwODE1NWNjNDVmYzM4OTA5MDQ0N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
CkBAIC0xODUsNiArMTg1LDE5IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9yeUluaXRJbW1lZGlhdGVzKE1lbW9yeUluaXRJ
bW1lZGlhdGVzJik7CiAKKyAgICBzdHJ1Y3QgU3RydWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCB7
CisgICAgICAgIHVpbnQzMl90IHN0cnVjdFR5cGVJbmRleDsKKyAgICAgICAgdWludDMyX3QgZmll
bGRJbmRleDsKKyAgICB9OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlU3RydWN0VHlwZUluZGV4QW5kRmllbGRJbmRleChTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVsZElu
ZGV4JiByZXN1bHQsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbik7CisKKyAgICBzdHJ1Y3QgU3RydWN0
RmllbGRNYW5pcHVsYXRpb24geworICAgICAgICBTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVsZEluZGV4
IGluZGljZXM7CisgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBzdHJ1Y3RSZWZlcmVuY2U7CisgICAg
ICAgIFN0cnVjdEZpZWxkIGZpZWxkOworICAgIH07CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VTdHJ1Y3RGaWVsZE1hbmlwdWxhdGlvbihTdHJ1Y3RGaWVsZE1hbmlw
dWxhdGlvbiYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24pOworCiAjZGVmaW5lIFdBU01f
VFJZX0FERF9UT19DT05URVhUKGFkZF9leHByZXNzaW9uKSBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZB
SUxTKG1fY29udGV4dC5hZGRfZXhwcmVzc2lvbikKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAu
Li5BcmdzPgpAQCAtNzMxLDYgKzc0NCw1MiBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZU1lbW9yeUluaXRJbW1lZGlhdGVzKE1lbW9yeUluaXRJbW1lZGlhdGVzJiByZQogICAg
IHJldHVybiB7IH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+CithdXRvIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVN0cnVjdFR5cGVJbmRleEFuZEZpZWxkSW5kZXgoU3Ry
dWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24p
IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCB0eXBlSW5kZXg7CisgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBl
IGluZGV4IGZvciIsIG9wZXJhdGlvbik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0eXBl
SW5kZXggPj0gbV9pbmZvLnR5cGVDb3VudCgpLCBvcGVyYXRpb24sICIgaW5kZXggIiwgdHlwZUlu
ZGV4LCAiIGlzIG91dCBvZiBib3VuZCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1f
aW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pczxTdHJ1Y3RUeXBlPigpLCBvcGVyYXRp
b24sICI6IGludmFsaWQgdHlwZSBpbmRleCIsIHR5cGVJbmRleCk7CisKKyAgICB1aW50MzJfdCBm
aWVsZEluZGV4OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZpZWxk
SW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggZm9yICIsIG9wZXJhdGlvbik7CisgICAgY29u
c3QgYXV0byYgc3RydWN0VHlwZSA9ICptX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+
YXM8U3RydWN0VHlwZT4oKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZpZWxkSW5kZXggPj0g
c3RydWN0VHlwZS5maWVsZENvdW50KCksIG9wZXJhdGlvbiwgIiBmaWVsZCBpbW1lZGlhdGUgIiwg
ZmllbGRJbmRleCwgIiBpcyBvdXQgb2YgYm91bmRzIik7CisKKyAgICByZXN1bHQuZmllbGRJbmRl
eCA9IGZpZWxkSW5kZXg7CisgICAgcmVzdWx0LnN0cnVjdFR5cGVJbmRleCA9IHR5cGVJbmRleDsK
KyAgICByZXR1cm4geyB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgorYXV0byBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VTdHJ1Y3RGaWVsZE1hbmlwdWxhdGlvbihTdHJ1
Y3RGaWVsZE1hbmlwdWxhdGlvbiYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24pIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCB0eXBlSW5kZXg7CisgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJVSW50MzIodHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4
IGZvciIsIG9wZXJhdGlvbik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0eXBlSW5kZXgg
Pj0gbV9pbmZvLnR5cGVDb3VudCgpLCBvcGVyYXRpb24sICIgaW5kZXggIiwgdHlwZUluZGV4LCAi
IGlzIG91dCBvZiBib3VuZCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1faW5mby50
eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pczxTdHJ1Y3RUeXBlPigpLCBvcGVyYXRpb24sICI6
IGludmFsaWQgdHlwZSBpbmRleCIsIHR5cGVJbmRleCk7CisKKyAgICBUeXBlZEV4cHJlc3Npb24g
c3RydWN0UmVmOworICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oc3RydWN0
UmVmLCAic3RydWN0IHJlZmVyZW5jZSIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlz
UmVmV2l0aFR5cGVJbmRleChzdHJ1Y3RSZWYudHlwZSgpKSwgb3BlcmF0aW9uLCAiIGludmFsaWQg
aW5kZXg6ICIsIHN0cnVjdFJlZi50eXBlKCkua2luZCk7CisgICAgY29uc3QgVHlwZUluZGV4IHN0
cnVjdFR5cGVJbmRleCA9IHN0cnVjdFJlZi50eXBlKCkuaW5kZXg7CisgICAgY29uc3QgVHlwZURl
ZmluaXRpb24mIHN0cnVjdFR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoc3Ry
dWN0VHlwZUluZGV4KTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFzdHJ1Y3RUeXBlRGVm
aW5pdGlvbi5pczxTdHJ1Y3RUeXBlPigpLCBvcGVyYXRpb24sICIgdHlwZSBpbmRleCBwb2ludHMg
aW50byBhIG5vbiBzdHJ1Y3QgdHlwZSIpOworICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSAq
c3RydWN0VHlwZURlZmluaXRpb24uYXM8U3RydWN0VHlwZT4oKTsKKyAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKHN0cnVjdFJlZi50eXBlKCkuaW5kZXggIT0gbV9pbmZvLnR5cGVTaWduYXR1cmVz
W3R5cGVJbmRleF0tPmluZGV4KCksIG9wZXJhdGlvbiwgIjogcG9wcGVkIHN0cnVjdCBoYXMgYSBk
aWZmZXJlbnQgdHlwZSBpbmRleCB0aGFuIHNwZWNpZmllZCBpbiBpbW1lZGRpYXRlIik7CisKKyAg
ICB1aW50MzJfdCBmaWVsZEluZGV4OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKGZpZWxkSW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggZm9yICIsIG9wZXJhdGlv
bik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmaWVsZEluZGV4ID49IHN0cnVjdFR5cGUuZmll
bGRDb3VudCgpLCBvcGVyYXRpb24sICIgZmllbGQgaW1tZWRpYXRlICIsIGZpZWxkSW5kZXgsICIg
aXMgb3V0IG9mIGJvdW5kcyIpOworCisgICAgcmVzdWx0LnN0cnVjdFJlZmVyZW5jZSA9IHN0cnVj
dFJlZjsKKyAgICByZXN1bHQuaW5kaWNlcy5maWVsZEluZGV4ID0gZmllbGRJbmRleDsKKyAgICBy
ZXN1bHQuaW5kaWNlcy5zdHJ1Y3RUeXBlSW5kZXggPSB0eXBlSW5kZXg7CisgICAgcmVzdWx0LmZp
ZWxkID0gc3RydWN0VHlwZS5maWVsZChmaWVsZEluZGV4KTsKKyAgICByZXR1cm4geyB9OworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgogYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6Y2hlY2tCcmFuY2hUYXJnZXQoY29uc3QgQ29udHJvbFR5cGUmIHRhcmdldCkgLT4gUGFydGlh
bFJlc3VsdAogewpAQCAtMTA5Niw2ICsxMTU1LDYwIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3Ry
dWN0QW5kQXBwZW5kKFR5cGVzOjpJMzIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CisgICAgICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdE5ldzogeworICAgICAg
ICAgICAgdWludDMyX3QgdHlwZUluZGV4OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIodHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4IGZvciBz
dHJ1Y3QubmV3Iik7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHR5cGVJbmRl
eCA+PSBtX2luZm8udHlwZUNvdW50KCksICJzdHJ1Y3QubmV3IHR5cGUgaW5kZXggIiwgdHlwZUlu
ZGV4LCAiIGlzIG91dCBvZiBib3VuZCIpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighbV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJbmRleF0tPmlzPFN0cnVjdFR5cGU+KCks
ICJzdHJ1Y3QubmV3OiB0eXBlIGluZGV4IHBvaW50cyBpbnRvIGEgbm9uIHN0cnVjdCB0eXBlIiwg
dHlwZUluZGV4KTsKKworICAgICAgICAgICAgY29uc3QgYXV0byogc3RydWN0VHlwZSA9IG1faW5m
by50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCkgPiBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICJzdHJ1Y3QubmV3ICIsIHR5cGVJbmRleCwgIiByZXF1aXJlcyAi
LCBzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCksICIgdmFsdWVzLCBidXQgdGhlIGV4cHJlc3Npb24g
c3RhY2sgY3VycmVudGx5IGhvbGRzICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1
ZXMiKTsKKworICAgICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiBhcmdzOworICAgICAg
ICAgICAgc2l6ZV90IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSAtIHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIWFyZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKSks
ICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1Y3QubmV3ICIsIHN0cnVjdFR5
cGUtPmZpZWxkQ291bnQoKSwgIiB2YWx1ZXMiKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0
YWNrLmF0KGkpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZpZWxkVHlwZSA9IHN0cnVj
dFR5cGUtPmZpZWxkKFN0cnVjdEZpZWxkQ291bnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkpLnR5
cGU7CisgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFy
Zy50eXBlKCksIGZpZWxkVHlwZSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIHN0cnVjdC5u
ZXcsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVkICIsIGZpZWxkVHlwZS5raW5k
KTsKKyAgICAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCkgPT0g
YXJncy5zaXplKCkpOworCisgICAgICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAg
ICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRTdHJ1Y3ROZXcodHlwZUluZGV4LCBh
cmdzLCByZXN1bHQpKTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8udHlwZVNp
Z25hdHVyZXNbdHlwZUluZGV4XS0+aW5kZXgoKSB9LCByZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdEdldDog
eworICAgICAgICAgICAgU3RydWN0RmllbGRNYW5pcHVsYXRpb24gc3RydWN0R2V0SW5wdXQ7Cisg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVN0cnVjdEZpZWxkTWFuaXB1bGF0
aW9uKHN0cnVjdEdldElucHV0LCAic3RydWN0LmdldCIpKTsKKworICAgICAgICAgICAgRXhwcmVz
c2lvblR5cGUgcmVzdWx0OworICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRk
U3RydWN0R2V0KHN0cnVjdEdldElucHV0LnN0cnVjdFJlZmVyZW5jZSwgc3RydWN0R2V0SW5wdXQu
aW5kaWNlcy5zdHJ1Y3RUeXBlSW5kZXgsIHN0cnVjdEdldElucHV0LmluZGljZXMuZmllbGRJbmRl
eCwgcmVzdWx0KSk7CisKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChzdHJ1Y3RHZXRJbnB1dC5maWVsZC50eXBlLCByZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdFNl
dDogeworICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIHZhbHVlOworICAgICAgICAgICAgV0FT
TV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh2YWx1ZSwgInN0cnVjdC5zZXQgdmFsdWUi
KTsKKworICAgICAgICAgICAgU3RydWN0RmllbGRNYW5pcHVsYXRpb24gc3RydWN0U2V0SW5wdXQ7
CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVN0cnVjdEZpZWxkTWFuaXB1
bGF0aW9uKHN0cnVjdFNldElucHV0LCAic3RydWN0LnNldCIpKTsKKworICAgICAgICAgICAgY29u
c3QgYXV0byYgZmllbGQgPSBzdHJ1Y3RTZXRJbnB1dC5maWVsZDsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZmllbGQubXV0YWJpbGl0eSAhPSBNdXRhYmlsaXR5OjpNdXRhYmxlLCAi
dGhlIGZpZWxkICIsIHN0cnVjdFNldElucHV0LmluZGljZXMuZmllbGRJbmRleCwgIiBjYW4ndCBi
ZSBzZXQgYmVjYXVzZSBpdCBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIGZpZWxkLnR5cGUpLCAidHlwZSBtaXNt
YXRjaCBpbiBzdHJ1Y3Quc2V0Iik7CisKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZFN0cnVjdFNldChzdHJ1Y3RTZXRJbnB1dC5zdHJ1Y3RSZWZlcmVuY2UsIHN0cnVjdFNl
dElucHV0LmluZGljZXMuc3RydWN0VHlwZUluZGV4LCBzdHJ1Y3RTZXRJbnB1dC5pbmRpY2VzLmZp
ZWxkSW5kZXgsIHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CiAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwg
ImludmFsaWQgZXh0ZW5kZWQgR0Mgb3AgIiwgZXh0T3ApOwpAQCAtMjAwNyw2ICsyMTIwLDIyIEBA
IGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9u
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNlIEdDT3BUeXBlOjpJMzFHZXRTOgogICAg
ICAgICBjYXNlIEdDT3BUeXBlOjpJMzFHZXRVOgogICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgY2FzZSBHQ09wVHlwZTo6U3RydWN0TmV3OiB7CisgICAgICAgICAgICB1aW50MzJfdCB0
eXBlSW5kZXg7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih0eXBlSW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggaW1tZWRpYXRlIGZvciBzdHJ1Y3Qu
bmV3IGluIHVucmVhY2hhYmxlIGNvbnRleHQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYodHlwZUluZGV4ID49IG1faW5mby50eXBlQ291bnQoKSwgInN0cnVjdC5uZXcgdHlwZSBp
bmRleCAiLCB0eXBlSW5kZXgsICIgaXMgb3V0IG9mIGJvdW5kIGluIHVucmVhY2hhYmxlIGNvbnRl
eHQiKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
Q09wVHlwZTo6U3RydWN0R2V0OiB7CisgICAgICAgICAgICBTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVs
ZEluZGV4IHVudXNlZDsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlU3Ry
dWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCh1bnVzZWQsICJzdHJ1Y3QuZ2V0IikpOworICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdDT3BUeXBlOjpTdHJ1
Y3RTZXQ6IHsKKyAgICAgICAgICAgIFN0cnVjdFR5cGVJbmRleEFuZEZpZWxkSW5kZXggdW51c2Vk
OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VTdHJ1Y3RUeXBlSW5kZXhB
bmRGaWVsZEluZGV4KHVudXNlZCwgInN0cnVjdC5zZXQiKSk7CisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKHRydWUsICJpbnZhbGlkIGV4dGVuZGVkIEdDIG9wICIsIGV4dE9wKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUlSR2VuZXJhdG9ySGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUlS
R2VuZXJhdG9ySGVscGVycy5oCmluZGV4IDIxZDVlZGE2ZWQ0ZTU3OWI4YzdhZTIyY2M4NmIyYjE3
MTBiNzRiYTcuLjE2M2VkMDA2NTcyODEzMGM4MTYwY2JjZDhkODNhM2FkNDkzMzkyMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JUkdlbmVyYXRvckhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSVJHZW5lcmF0b3JIZWxwZXJz
LmgKQEAgLTE2Myw2ICsxNjMsMzUgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRUaHJvd0ltcGwo
Q0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4KQogICAgIH0pOwogfQog
CitzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFN0cnVjdE5ld0ltcGwoQ0NhbGxIZWxwZXJzJiBqaXQs
IHVuc2lnbmVkIHR5cGVJbmRleCkKK3sKKyAgICAvLyBJbnN0YW5jZSBpbiBhcmd1bWVudEdQUjAK
KyAgICAvLyBmcmFtZSBwb2ludGVyIGluIGFyZ3VtZW50R1BSMQorICAgIC8vIGFyZ3VtZW50cyB0
byB0aGUgc3RydWN0X25ldyBvZmYgb2Ygc3RhY2sgcG9pbnRlcgorCisgICAgR1BSUmVnIHNjcmF0
Y2ggPSBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjA7CisgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSW5zdGFuY2U6
Om9mZnNldE9mT3duZXIoKSksIHNjcmF0Y2gpOworICAgIHsKKyAgICAgICAgYXV0byBwcmVjaXNl
QWxsb2NhdGlvbkNhc2UgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8s
IHNjcmF0Y2gsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFByZWNpc2VBbGxvY2F0aW9uOjpo
YWxmQWxpZ25tZW50KSk7CisgICAgICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3JhdGNoKTsKKyAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gsIE1hcmtlZEJsb2NrOjpvZmZzZXRP
ZkZvb3RlciArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om9mZnNldE9mVk0oKSksIHNjcmF0Y2gpOwor
ICAgICAgICBhdXRvIGxvYWRlZENhc2UgPSBqaXQuanVtcCgpOworCisgICAgICAgIHByZWNpc2VB
bGxvY2F0aW9uQ2FzZS5saW5rKCZqaXQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc2NyYXRjaCwgUHJlY2lzZUFsbG9jYXRpb246Om9mZnNldE9mV2Vha1NldCgp
ICsgV2Vha1NldDo6b2Zmc2V0T2ZWTSgpIC0gUHJlY2lzZUFsbG9jYXRpb246OmhlYWRlclNpemUo
KSksIHNjcmF0Y2gpOworCisgICAgICAgIGxvYWRlZENhc2UubGluaygmaml0KTsKKyAgICB9Cisg
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoc2Ny
YXRjaCk7CisKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHR5cGVJ
bmRleCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIEND
YWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBq
aXQuYWRkTGlua1Rhc2soW2NhbGxdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAg
IGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbldhc21TdHJ1Y3ROZXcpKTsKKyAgICB9KTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGJ1
aWxkRW50cnlCdWZmZXJGb3JDYXRjaChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IGNvbnRleHQuZnA8Q2FsbEZyYW1lKj4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGFl
NzA5MGI1MzhkZTE3YTc3YzNiNjEwNjNlOWYxYjBiMzJjNTBjYmQuLjUyMjFlY2YzMWI4NmUwZTVi
Mzg5NGE5MzUwMzQzM2JmZGM0NGVjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMzA3LDYgKzMwNyw5IEBAIHB1YmxpYzoK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lv
blR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRJMzFHZXRVKEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Cisg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90
IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTdHJ1Y3RHZXQo
RXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQz
Ml90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RS
ZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVz
c2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gQmFzaWMgb3BlcmF0b3JzCiAgICAgdGVtcGxhdGU8
T3BUeXBlPgpAQCAtMTg4Niw2ICsxODg5LDM5IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEkz
MUdldFUoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU3RydWN0TmV3KHVp
bnQzMl90IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gV2UgaGF2ZSB0byBtYXRlcmlh
bGl6ZSB0aGUgYXJndW1lbnRzIGhlcmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBjb25zdGFudHMg
b3IKKyAgICAvLyBkZWxheWVkIG1vdmVzLCBidXQgdGhlIHdhc21fc3RydWN0X25ldyBvcGNvZGUg
ZXhwZWN0cyBhbGwgdGhlIGFyZ3VtZW50cyB0byBiZSBjb250aWd1b3VzCisgICAgLy8gaW4gdGhl
IHN0YWNrLiBUaGUgcmVhc29uIHdlIGRvbid0IGNhbGwgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRM
b2NhbHMgaGVyZSBpcyB0aGF0CisgICAgLy8gaXQgZXhwZWN0cyBhIHN0YWNrLCBub3QgYSB2ZWN0
b3Igb2YgRXhwcmVzc2lvblR5cGUgYXJndW1lbnRzLgorICAgIHdhbGtFeHByZXNzaW9uU3RhY2so
YXJncywgWyZdKFZpcnR1YWxSZWdpc3RlciYgYXJnLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewor
ICAgICAgICBpZiAoYXJnID09IHNsb3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFdh
c21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgYXJnKTsKKyAgICAgICAgYXJnID0gc2xvdDsKKyAgICB9
KTsKKworICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBXYXNtU3RydWN0TmV3OjplbWl0KHRoaXMs
IHJlc3VsdCwgaW5kZXgsIGFyZ3MuaXNFbXB0eSgpID8gVmlydHVhbFJlZ2lzdGVyKCkgOiBhcmdz
WzBdKTsKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRTdHJ1
Y3RHZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgs
IHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgV2FzbVN0cnVjdEdldDo6ZW1pdCh0
aGlzLCByZXN1bHQsIHN0cnVjdFJlZmVyZW5jZSwgdHlwZUluZGV4LCBmaWVsZEluZGV4KTsKKwor
ICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChF
eHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMy
X3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBXYXNtU3RydWN0U2V0OjplbWl0KHRoaXMsIHN0cnVjdFJlZmVyZW5jZSwgdHlwZUluZGV4
LCBmaWVsZEluZGV4LCB2YWx1ZSk7CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIExMSW50
R2VuZXJhdG9yOjpsaW5rU3dpdGNoVGFyZ2V0cyhMYWJlbCYgbGFiZWwsIHVuc2lnbmVkIGxvY2F0
aW9uKQogewogICAgIGF1dG8gaXQgPSBtX3N3aXRjaGVzLmZpbmQoJmxhYmVsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA2ZmRmMjAxMWQ4
ZjZlMTEzNDdjYTI1Mjk4N2E2ZjJlOWIzZmZkM2YzLi5lNjM2YTU1ZjYxMTQ4MWJlNTg3YjAxMjY2
ZWQ3MTE0YThlY2MwZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9w
ZXJhdGlvbnMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVN0cnVj
dC5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNj
ZXNzU2NvcGUuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtODI5LDYg
KzgzMCw0MiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVJlZkZ1bmMs
IEVuY29kZWRKU1ZhbHVlLCAoSW5zdGFuY2UqIGluc3RhbgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2Fz
bVN0cnVjdE5ldywgRW5jb2RlZEpTVmFsdWUsIChJbnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90
IHR5cGVJbmRleCwgdWludDY0X3QqIGFyZ3VtZW50cykpCit7CisgICAgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBqc0luc3RhbmNlID0gaW5zdGFuY2UtPm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZT4oKTsKKyAgICBSZWY8VHlwZURlZmluaXRpb24+IHN0cnVjdFR5cGVEZWZpbml0aW9uID0ganNJ
bnN0YW5jZS0+aW5zdGFuY2UoKS5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnR5cGVTaWdu
YXR1cmVzW3R5cGVJbmRleF07CisgICAgY29uc3QgU3RydWN0VHlwZSYgc3RydWN0VHlwZSA9ICpz
dHJ1Y3RUeXBlRGVmaW5pdGlvbi0+YXM8U3RydWN0VHlwZT4oKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNJbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IHZhbHVl
cyhzdHJ1Y3RUeXBlLmZpZWxkQ291bnQoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0cnVjdFR5cGUuZmllbGRDb3VudCgpOyArK2kpCisgICAgICAgIHZhbHVlc1tpXSA9IGFyZ3Vt
ZW50c1tpXTsKKworICAgIEpTVmFsdWUgc3RydWN0VmFsdWUgPSBKU1dlYkFzc2VtYmx5U3RydWN0
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVN0cnVj
dFN0cnVjdHVyZSgpLCBXYXNtOjpXYXNtU3RydWN0OjpjcmVhdGUoV1RGTW92ZShzdHJ1Y3RUeXBl
RGVmaW5pdGlvbiksIFdURk1vdmUodmFsdWVzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc3RydWN0VmFsdWUpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
V2FzbVN0cnVjdEdldCwgRW5jb2RlZEpTVmFsdWUsIChFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Ry
dWN0UmVmZXJlbmNlLCB1aW50MzJfdCBmaWVsZEluZGV4KSkKK3sKKyAgICBhdXRvIHN0cnVjdFJl
ZmVyZW5jZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3RydWN0UmVmZXJlbmNlKTsKKyAgICBB
U1NFUlQoc3RydWN0UmVmZXJlbmNlLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBzdHJ1Y3R1
cmVBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHN0cnVjdFJlZmVyZW5jZSk7CisgICAgQVNT
RVJUKHN0cnVjdHVyZUFzT2JqZWN0LT5pbmhlcml0czxKU1dlYkFzc2VtYmx5U3RydWN0PigpKTsK
KyAgICBKU1dlYkFzc2VtYmx5U3RydWN0KiBzdHJ1Y3RQb2ludGVyID0ganNDYXN0PEpTV2ViQXNz
ZW1ibHlTdHJ1Y3QqPihzdHJ1Y3R1cmVBc09iamVjdCk7CisgICAgcmV0dXJuIHN0cnVjdFBvaW50
ZXItPm5hdGl2ZVN0cnVjdCgpLT5nZXQoZmllbGRJbmRleCk7Cit9CisKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25XYXNtU3RydWN0U2V0LCB2b2lkLCAoRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN0cnVjdFJlZmVyZW5jZSwgdWludDMyX3QgZmllbGRJbmRleCwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpKQoreworICAgIGF1dG8gc3RydWN0UmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdHJ1Y3RSZWZlcmVuY2UpOworICAgIEFTU0VSVChzdHJ1Y3RSZWZlcmVuY2UuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIHN0cnVjdHVyZUFzT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oc3RydWN0UmVmZXJlbmNlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlQXNPYmplY3QtPmlu
aGVyaXRzPEpTV2ViQXNzZW1ibHlTdHJ1Y3Q+KCkpOworICAgIEpTV2ViQXNzZW1ibHlTdHJ1Y3Qq
IHN0cnVjdFBvaW50ZXIgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseVN0cnVjdCo+KHN0cnVjdHVyZUFz
T2JqZWN0KTsKKyAgICByZXR1cm4gc3RydWN0UG9pbnRlci0+bmF0aXZlU3RydWN0KCktPnNldChm
aWVsZEluZGV4LCB2YWx1ZSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25HZXRXYXNtVGFibGVTaXplLCBpbnQzMl90LCAoSW5zdGFuY2UqIGluc3RhbmNlLCB1bnNpZ25l
ZCB0YWJsZUluZGV4KSkKIHsKICAgICByZXR1cm4gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgp
LT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5o
CmluZGV4IDVjYzAzMTQ4ZWFlZWI5NTUwZmRkN2Q1MTMzOWM4MmY2NjMzMTU3YzYuLjZjMTE5ODZm
Y2YwNDVlZDc2N2EwNmM0ZGVkNzI2ODBjY2E0Yzg0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaApAQCAtODksNiArODksMTAgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NZW1vcnlBdG9taWNOb3RpZnksIGludDMyX3QsIChJbnN0
YW5jZSosIHVuc2kKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbU1lbW9y
eUluaXQsIHNpemVfdCwgKEluc3RhbmNlKiwgdW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCwgdWlu
dDMyX3QgZHN0QWRkcmVzcywgdWludDMyX3Qgc3JjQWRkcmVzcywgdWludDMyX3QgbGVuZ3RoKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21EYXRhRHJvcCwgdm9pZCwg
KEluc3RhbmNlKiwgdW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkpOwogCitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21TdHJ1Y3ROZXcsIEVuY29kZWRKU1ZhbHVlLCAoSW5z
dGFuY2UqLCB1aW50MzJfdCwgdWludDY0X3QqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbldhc21TdHJ1Y3RHZXQsIEVuY29kZWRKU1ZhbHVlLCAoRW5jb2RlZEpTVmFsdWUs
IHVpbnQzMl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21TdHJ1
Y3RTZXQsIHZvaWQsIChFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIEVuY29kZWRKU1ZhbHVlKSk7
CisKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVRocm93LCB2b2lkKiwg
KEluc3RhbmNlKiwgQ2FsbEZyYW1lKiwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIHVpbnQ2NF90
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtUmV0aHJvdywgdm9p
ZCosIChJbnN0YW5jZSosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIHRocm93blZhbHVlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXgg
MWU1NDg4ZTYyNGY0ZmU4MzhlYjFlMDQyMmExMTA0ZmI0NWQ5ZDQ5OC4uZGExMzVmYWEyYTUxNGYy
NDhiZTViN2VhMGQzNDVmNDE3ZmMzYTY5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTMyMiw2ICszMjIsMzggQEAgV0FTTV9TTE9XX1BBVEhf
REVDTChyZWZfZnVuYykKICAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25XYXNtUmVmRnVu
YyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KSk7CiB9CiAKK1dBU01fU0xP
V19QQVRIX0RFQ0woc3RydWN0X25ldykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21TdHJ1Y3ROZXc+KCk7CisgICAgY29uc3QgYXV0byYgbW9kdWxlSW5mb3JtYXRpb24gPSBp
bnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKTsKKyAgICBBU1NFUlQoaW5zdHJ1
Y3Rpb24ubV90eXBlSW5kZXggPCBtb2R1bGVJbmZvcm1hdGlvbi50eXBlQ291bnQoKSk7CisgICAg
Y29uc3QgYXV0byYgc3RydWN0VHlwZSA9ICptb2R1bGVJbmZvcm1hdGlvbi50eXBlU2lnbmF0dXJl
c1tpbnN0cnVjdGlvbi5tX3R5cGVJbmRleF0tPmFzPFdhc206OlN0cnVjdFR5cGU+KCk7CisKKyAg
ICBGaXhlZFZlY3Rvcjx1aW50NjRfdD4gdmFsdWVzKHN0cnVjdFR5cGUuZmllbGRDb3VudCgpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RydWN0VHlwZS5maWVsZENvdW50KCk7ICsr
aSkKKyAgICAgICAgdmFsdWVzW2ldID0gUkVBRCgoaW5zdHJ1Y3Rpb24ubV9maXJzdFZhbHVlIC0g
aSkpLmVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25X
YXNtU3RydWN0TmV3KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCwgdmFsdWVzLmRh
dGEoKSkpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKHN0cnVjdF9nZXQpCit7CisgICAgVU5V
U0VEX1BBUkFNKGluc3RhbmNlKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21T
dHJ1Y3RHZXQ+KCk7CisgICAgYXV0byBzdHJ1Y3RSZWZlcmVuY2UgPSBSRUFEKGluc3RydWN0aW9u
Lm1fc3RydWN0UmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpOworICAgIFdBU01fUkVUVVJOKFdh
c206Om9wZXJhdGlvbldhc21TdHJ1Y3RHZXQoc3RydWN0UmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5t
X2ZpZWxkSW5kZXgpKTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChzdHJ1Y3Rfc2V0KQorewor
ICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtU3RydWN0U2V0PigpOworICAgIGF1dG8gc3RydWN0UmVmZXJlbmNlID0gUkVBRChpbnN0
cnVjdGlvbi5tX3N0cnVjdFJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKTsKKyAgICBhdXRvIHZh
bHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5lbmNvZGVkSlNWYWx1ZSgpOworICAgIFdh
c206Om9wZXJhdGlvbldhc21TdHJ1Y3RTZXQoc3RydWN0UmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5t
X2ZpZWxkSW5kZXgsIHZhbHVlKTsKKyAgICBXQVNNX0VORCgpOworfQorCiBXQVNNX1NMT1dfUEFU
SF9ERUNMKHRhYmxlX2dldCkKIHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21U
YWJsZUdldD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApp
bmRleCA4OWY2ZTM5NGQ4NmMyNjc3OWM4MWFhMmUzOGMwMzEwMWE0OGFkNTQwLi5jMjUyZDE4MzNk
NzM5ZjY3OGJmNDg5MzE3YmMwMGYzMDgyMjNhMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC04OSw2ICs4OSw5IEBAIFdBU01fU0xPV19QQVRIX0hJ
RERFTl9ERUNMKG1lbW9yeV9hdG9taWNfbm90aWZ5KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKHRocm93KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldGhyb3cpOwogV0FTTV9T
TE9XX1BBVEhfSElEREVOX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbik7CitXQVNN
X1NMT1dfUEFUSF9ISURERU5fREVDTChzdHJ1Y3RfbmV3KTsKK1dBU01fU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHN0cnVjdF9nZXQpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woc3RydWN0X3Nl
dCk7CiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Rocm93
X2V4Y2VwdGlvbihDYWxsRnJhbWUqLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qLCBXYXNtOjpJbnN0
YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpIFJFRkVSRU5DRURfRlJPTV9BU00g
V1RGX0lOVEVSTkFMOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dh
c21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5D
RURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVN0cnVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U3RydWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmNkMDhiZjlmZTQ2MDY1MDNjOWE0OWQ5Njk1MDliMDBm
MTM0MjM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVN0cnVjdC5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
YXNtU3RydWN0LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0M6
Oldhc20geworCitjb25zdGV4cHIgc2l6ZV90IHR5cGVLaW5kU2l6ZShUeXBlS2luZCBraW5kKQor
eworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICBjYXNl
IFR5cGVLaW5kOjpGMzI6IHsKKyAgICAgICAgcmV0dXJuIDMyOworICAgIH0KKyAgICBjYXNlIFR5
cGVLaW5kOjpJNjQ6CisgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOiB7CisgICAgICAgIHJldHVybiA2
NDsKKyAgICB9CisgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICBjYXNlIFR5cGVLaW5kOjpT
dHJ1Y3Q6CisgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzFy
ZWY6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworfQorCitzaXplX3QgV2FzbVN0cnVjdDo6c3RydWN0RGF0
YUFsbG9jYXRpb25TaXplKGNvbnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUpCit7CisgICAgc2l6
ZV90IHRvdGFsU2l6ZSA9IDB1OworICAgIGZvciAoU3RydWN0RmllbGRDb3VudCBpID0gMDsgaSA8
IHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKTsgKytpKQorICAgICAgICB0b3RhbFNpemUgKz0gdHlw
ZUtpbmRTaXplKHN0cnVjdFR5cGUtPmZpZWxkKGkpLnR5cGUua2luZCk7CisgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKK30KKworV2FzbVN0cnVjdDo6V2FzbVN0cnVjdChSZWY8VHlwZURlZmluaXRpb24+
JiYgdHlwZSwgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiYgYXJndW1lbnRzKQorICAgIDogbV90eXBl
KFdURk1vdmUodHlwZSkpCit7CisgICAgZm9yICh1bnNpZ25lZCBmaWVsZEluZGV4ID0gMDsgZmll
bGRJbmRleCA8IHN0cnVjdFR5cGUoKS5maWVsZENvdW50KCk7ICsrZmllbGRJbmRleCkKKyAgICAg
ICAgc2V0KGZpZWxkSW5kZXgsIGFyZ3VtZW50c1tmaWVsZEluZGV4XSk7Cit9CisKK3VpbnQ2NF90
IFdhc21TdHJ1Y3Q6OmdldCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdAoreworICAgIEFTU0VS
VChmaWVsZEluZGV4IDwgc3RydWN0VHlwZSgpLmZpZWxkQ291bnQoKSk7CisgICAgY29uc3QgdWlu
dDhfdCogdGFyZ2V0UG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRo
aXMpICsgb2Zmc2V0T2ZUYWlsKCkgKyBnZXRGaWVsZE9mZnNldChmaWVsZEluZGV4KTsKKyAgICB1
aW50NjRfdCBwYXlsb2FkID0gMDsKKyAgICBpZiAodHlwZUtpbmRTaXplKGZpZWxkS2luZChmaWVs
ZEluZGV4KSkgPT0gNjQpCisgICAgICAgIHBheWxvYWQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50NjRfdCo+KHRhcmdldFBvaW50ZXIpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQo
dHlwZUtpbmRTaXplKGZpZWxkS2luZChmaWVsZEluZGV4KSkgPT0gMzIpOworICAgICAgICBwYXls
b2FkID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih0YXJnZXRQb2ludGVyKTsK
KyAgICB9CisgICAgcmV0dXJuIHBheWxvYWQ7Cit9CisKK3NpemVfdCBXYXNtU3RydWN0OjpnZXRG
aWVsZE9mZnNldCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChmaWVs
ZEluZGV4IDwgc3RydWN0VHlwZSgpLmZpZWxkQ291bnQoKSk7CisKKyAgICBzaXplX3QgZmllbGRP
ZmZzZXQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWVsZEluZGV4OyArK2kp
CisgICAgICAgIGZpZWxkT2Zmc2V0ICs9IHR5cGVLaW5kU2l6ZShmaWVsZEtpbmQoaSkpOworICAg
IHJldHVybiBmaWVsZE9mZnNldDsKK30KKwordm9pZCBXYXNtU3RydWN0OjpzZXQodWludDMyX3Qg
ZmllbGRJbmRleCwgdWludDY0X3QgdmFsdWUpCit7CisgICAgdWludDhfdCogdGFyZ2V0UG9pbnRl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgb2Zmc2V0T2ZUYWlsKCkgKyBn
ZXRGaWVsZE9mZnNldChmaWVsZEluZGV4KTsKKyAgICBpZiAodHlwZUtpbmRTaXplKGZpZWxkS2lu
ZChmaWVsZEluZGV4KSkgPT0gMzIpIHsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPih0YXJnZXRQb2ludGVyKSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKHR5cGVLaW5kU2l6ZShmaWVsZEtpbmQoZmll
bGRJbmRleCkpID09IDY0KTsKKyAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KHRhcmdl
dFBvaW50ZXIpID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RydWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiZWFlYTgxNWZlMjQy
NzI0NzkyYTI4NDNlZjNiZGVkYTVhYWUxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJ1Y3QuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlNsb3RWaXNpdG9yTWFjcm9zLmgi
CisjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgorI2luY2x1ZGUgIldhc21UeXBlRGVmaW5pdGlvbi5o
IgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBXYXNtIHsKKworY2xhc3MgSW5zdGFuY2U7CisKK2NsYXNzIFdhc21TdHJ1Y3QgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2FzbVN0cnVjdD4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdhc21TdHJ1Y3QpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFdh
c21TdHJ1Y3QpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2FzbVN0cnVjdD4gY3JlYXRlKFJl
ZjxUeXBlRGVmaW5pdGlvbj4mJiB0eXBlLCBGaXhlZFZlY3Rvcjx1aW50NjRfdD4mJiBhcmd1bWVu
dHMpCisgICAgeworICAgICAgICBjb25zdCBzaXplX3QgdG90YWxTaXplID0gdG90YWxBbGxvY2F0
aW9uU2l6ZSh0eXBlLT5hczxTdHJ1Y3RUeXBlPigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2ModG90YWxTaXplKSkgV2FzbVN0cnVjdChXVEZNb3Zl
KHR5cGUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90
IHRvdGFsQWxsb2NhdGlvblNpemUoY29uc3QgU3RydWN0VHlwZSogc3RydWN0VHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBvZmZzZXRPZlRhaWwoKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2YodWludDY0X3QpPihzdHJ1Y3REYXRhQWxsb2NhdGlvblNpemUoc3RydWN0VHlwZSkp
OworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZUYWlsKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6
ZW9mKFdhc21TdHJ1Y3QpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IHN0cnVjdERhdGFB
bGxvY2F0aW9uU2l6ZShjb25zdCBTdHJ1Y3RUeXBlKik7CisKKyAgICB1aW50NjRfdCBnZXQodWlu
dDMyX3QpIGNvbnN0OworCisgICAgdm9pZCBzZXQodWludDMyX3QgZmllbGRJbmRleCwgdWludDY0
X3QgdmFsdWUpOworCisgICAgY29uc3QgU3RydWN0VHlwZSYgc3RydWN0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuICptX3R5cGUtPmFzPFN0cnVjdFR5cGU+KCk7IH0KK3ByaXZhdGU6CisgICAgV2FzbVN0
cnVjdChSZWY8VHlwZURlZmluaXRpb24+JiYsIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYmKTsKKwor
ICAgIFN0cnVjdEZpZWxkIGZpZWxkKHVpbnQzMl90IGZpZWxkSW5kZXgpIGNvbnN0IHsgcmV0dXJu
IHN0cnVjdFR5cGUoKS5maWVsZChmaWVsZEluZGV4KTsgfQorICAgIFR5cGVLaW5kIGZpZWxkS2lu
ZCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdCB7IHJldHVybiBmaWVsZChmaWVsZEluZGV4KS50
eXBlLmtpbmQ7IH0KKworICAgIHNpemVfdCBnZXRGaWVsZE9mZnNldCh1aW50MzJfdCBmaWVsZElu
ZGV4KSBjb25zdDsKKworICAgIFJlZjxUeXBlRGVmaW5pdGlvbj4gbV90eXBlOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5k
ZXggYTBjNzAyYTI0OTBlYTlkMTk1YTVmODdhMjZkNGQ1MjI5NWQ0YzFjOC4uYmQ2MzBmOTI5YTJk
NjkyY2M5MTc2OWNiYTNmYmQxNDU4YWY0MTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIEpTV2ViQXNzZW1ibHk6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Il9zLCAmQmFzZTo6
c19pbmZvLCAmd2ViQXMKICAgTWVtb3J5ICAgICAgICAgIGNyZWF0ZVdlYkFzc2VtYmx5TWVtb3J5
ICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIE1vZHVsZSAgICAgICAgICBjcmVh
dGVXZWJBc3NlbWJseU1vZHVsZSAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBS
dW50aW1lRXJyb3IgICAgY3JlYXRlV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IgIERvbnRFbnVtfFBy
b3BlcnR5Q2FsbGJhY2sKKyAgU3RydWN0ICAgICAgICAgIGNyZWF0ZVdlYkFzc2VtYmx5U3RydWN0
ICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFRhYmxlICAgICAgICAgICBjcmVh
dGVXZWJBc3NlbWJseVRhYmxlICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBU
YWcgICAgICAgICAgICAgY3JlYXRlV2ViQXNzZW1ibHlUYWcgICAgICAgICAgIERvbnRFbnVtfFBy
b3BlcnR5Q2FsbGJhY2sKICAgY29tcGlsZSAgICAgICAgIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMg
ICAgICAgICBGdW5jdGlvbiAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaAppbmRleCA1OGExMThmMTRmOTEyMGVkMDg2MGMxZGI3
NjI3OTZhMjc5YTNjN2ViLi5jMGYxNjNkMjNlN2Y1NjczOTM2MzI5OGU5OWNlMjgzMWU5MGZkNmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTE2NSw2ICsxNjUsOCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgdG9K
U1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdhc206OlR5cGUgdAog
ICAgICAgICByZXR1cm4ganNOdW1iZXIocHVyaWZ5TmFOKGJpdHdpc2VfY2FzdDxkb3VibGU+KGJp
dHMpKSk7CiAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STY0OgogICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihiaXRz
KSk7CisgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgV2FzbTo6VHlwZUtp
bmQ6OlJlZk51bGw6CiAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNh
c2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
SlNWYWx1ZT4oYml0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5U3RydWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlTdHJ1Y3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3Y2YwNjBmY2NlY2M4OTBmNjNi
NmFkZTZlNTA3MzZmMGNjNWRiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5U3RydWN0LmNwcApAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVN0cnVjdC5oIgorCisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIldh
c21Gb3JtYXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFz
c2VtYmx5U3RydWN0OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5TdHJ1Y3QiX3MsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXZWJBc3NlbWJs
eVN0cnVjdCkgfTsKKworSlNXZWJBc3NlbWJseVN0cnVjdDo6SlNXZWJBc3NlbWJseVN0cnVjdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJiBuYXRp
dmVTdHJ1Y3QpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3N0cnVjdChXVEZN
b3ZlKG5hdGl2ZVN0cnVjdCkpCit7Cit9CisKK0pTV2ViQXNzZW1ibHlTdHJ1Y3QqIEpTV2ViQXNz
ZW1ibHlTdHJ1Y3Q6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJiBuYXRpdmVTdHJ1
Y3QpCit7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBpZiAoIWdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlFbmFibGVkKCkpIHsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVFdmFsRXJyb3Io
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1lc3Nh
Z2UoKSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvKiBzdHJ1
Y3RWYWx1ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlTdHJ1Y3Q+
KHZtKSkgSlNXZWJBc3NlbWJseVN0cnVjdCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5hdGl2ZVN0
cnVjdCkpOworICAgIHN0cnVjdFZhbHVlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IHN0cnVjdFZhbHVlOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlTdHJ1Y3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9p
ZCBKU1dlYkFzc2VtYmx5U3RydWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9y
KTsKKworICAgIGF1dG8qIHdhc21TdHJ1Y3QgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseVN0cnVjdCo+
KGNlbGwpOworICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSB3YXNtU3RydWN0LT5uYXRpdmVT
dHJ1Y3QoKS0+c3RydWN0VHlwZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHJ1
Y3RUeXBlLmZpZWxkQ291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChpc1JlZlR5cGUoc3RydWN0
VHlwZS5maWVsZChpKS50eXBlKSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGJpdHdpc2Vf
Y2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4+KHdhc21TdHJ1Y3QtPm5hdGl2ZVN0cnVjdCgpLT5n
ZXQoaSkpKTsKKyAgICB9Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihKU1dlYkFzc2VtYmx5
U3RydWN0KTsKKwordm9pZCBKU1dlYkFzc2VtYmx5U3RydWN0OjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5U3RydWN0Kj4oY2VsbCktPkpTV2Vi
QXNzZW1ibHlTdHJ1Y3Q6On5KU1dlYkFzc2VtYmx5U3RydWN0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyOGViZGMxNzc4Y2VmMjBmYTI2YTQzMzE5ZGE2ZjM0MmNhODlkY2UKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5U3RydWN0LmgK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIldhc21TdHJ1Y3QuaCIKKyNpbmNsdWRlIDx3
dGYvTWFsbG9jUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSlNXZWJBc3NlbWJseVN0cnVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLndlYkFzc2Vt
Ymx5U3RydWN0U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVN0cnVjdCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgVk0mLCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJik7CisKKyAgICBERUNM
QVJFX1ZJU0lUX0NISUxEUkVOOworCisgICAgV2FzbTo6V2FzbVN0cnVjdCogbmF0aXZlU3RydWN0
KCkgeyByZXR1cm4gbV9zdHJ1Y3QucHRyKCk7IH0KKworcHJvdGVjdGVkOgorICAgIEpTV2ViQXNz
ZW1ibHlTdHJ1Y3QoVk0mLCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgUmVmPFdhc206Oldhc21TdHJ1Y3Q+
IG1fc3RydWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDBm
MGQ5ZjAwNDQyZjgzYjc5YTExNDFiNTU0YTRmNDBmYzgwMGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9y
LmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3Ry
dWN0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUg
Ikl0ZXJhdG9yT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlTdHJ1Y3Qu
aCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiJfcywgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eVN0cnVjdCwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVN0cnVjdENv
bnN0cnVjdG9yKSB9OworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5U3RydWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGNhbGxKU1dlYkFzc2VtYmx5U3RydWN0KTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVN0
cnVjdENvbnN0cnVjdG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eVN0cnVjdAorIEBlbmQKKyAqLworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0
SlNXZWJBc3NlbWJseVN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2ViQXNzZW1ibHkuU3RydWN0IGlzIG5vdCBhY2Nlc3Np
YmxlIGZyb20gSlMiX3MpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dl
YkFzc2VtYmx5U3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseS5TdHJ1Y3QgaXMg
bm90IGFjY2Vzc2libGUgZnJvbSBKUyJfcykpOworfQorCitXZWJBc3NlbWJseVN0cnVjdENvbnN0
cnVjdG9yKiBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUqIHRoaXNQcm90b3R5
cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5U3RydWN0Q29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCB0aGlzUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVj
dHVyZSogV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
K30KKwordm9pZCBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJTdHJ1Y3QiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKK1dlYkFzc2VtYmx5U3RydWN0Q29uc3Ry
dWN0b3I6OldlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEpTV2ViQXNzZW1ibHlTdHJ1
Y3QsIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlTdHJ1Y3QpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0ZGRlMGYyNzllOTA3MWY0NTU3MzljNTUxOWU0M2E5YjhjYTg4YTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVN0cnVjdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseVN0cnVj
dFByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFdlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFz
c2VtYmx5U3RydWN0UHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1
Y3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlTdHJ1Y3RQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwN2U4OTU2ODc1ZDVjMWJkOTEyYmRl
YWNkZTZmNmExOWExMDJiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5oIgorCisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVN0
cnVjdC5oIgorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlTdHJ1Y3RQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LlN0cnVjdCJfcywgJkJhc2U6OnNfaW5mbywg
JnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlTdHJ1Y3QsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgV2Vi
QXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJB
c3NlbWJseVN0cnVjdAorIEBlbmQKKyAqLworCitXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZSog
V2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGU+KHZtKSkgV2ViQXNz
ZW1ibHlTdHJ1Y3RQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBXZWJBc3Nl
bWJseVN0cnVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5U3Ry
dWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworV2ViQXNzZW1ibHlTdHJ1Y3RQ
cm90b3R5cGU6OldlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYThiMmVmMjJlMDdiZjNkZTc5NjEwY2FlNjFmMDJiNTFiOWViYWI2Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5U3RydWN0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJs
eVN0cnVjdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBHQ0NsaWVudDo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CisgICAgfQorCisgICAgc3RhdGljIFdlYkFzc2VtYmx5
U3RydWN0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgV2Vi
QXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCBk
ZTJmNTNhZDhlNTg5N2Q3ZGEzNmIxZTdlZDg3ZGU4MWQ5NTA1YTliLi5kNmViMWE2N2ViY2UzYzIz
NmZkNjE5MTRlYmNjNTUzMjkxYjk0MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5q
c29uCkBAIC03OCw2ICs3OCw5IEBACiAgICAgICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiZXh0ZXJu
cmVmIiwgImZ1bmNyZWYiXSwgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJyZWZ0eXBlIiwgICAgICAgICJ0
eXBlIjogInJlZl90eXBlIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKICAg
ICAgICAgInJlZi5pc19udWxsIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImV4dGVybnJlZiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJk
ZXRlcm1pbmUgaWYgYSByZWZlcmVuY2UgaXMgbnVsbCIgfSwKICAgICAgICAgInJlZi5mdW5jIjog
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0
dXJuIjogWyJmdW5jcmVmIl0sICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0
aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZXR1cm4gYSByZWZlcmVuY2Ug
dG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBpbmRleCIgfSwKKyAgICAgICAgInN0cnVjdC5u
ZXciOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAgICAgICAgInZhbHVlIjogMjUxLCAi
cmV0dXJuIjogWyJyZWZfdHlwZSJdLCAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5
cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhbGxvY2F0ZXMgYSBuZXcg
c3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA3IH0sCisgICAgICAgICJzdHJ1Y3QuZ2V0IjogICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAiZ2MiLCAgICAgICAgICJ2YWx1ZSI6IDI1MSwgInJldHVybiI6
IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4
IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAiZmllbGRfaW5kZXgiLCJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAicmVhZHMgdGhlIGZpZWxkIGZyb20gYSBz
dHJ1Y3R1cmUiLCAiZXh0ZW5kZWRPcCI6IDMgfSwKKyAgICAgICAgInN0cnVjdC5zZXQiOiAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAgICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjog
WyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbInJlZl90eXBl
Il0sICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgi
LCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJmaWVsZF9pbmRleCIsInR5cGUi
OiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJzZXRzIHRoZSBmaWVsZCBmcm9tIGEgc3Ry
dWN0dXJlIiwgImV4dGVuZGVkT3AiOiA2IH0sCiAgICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsi
YW55Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIs
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBh
cmFtZXRlciIgfSwKICAgICAgICAgInNldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMzLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAg
ICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3
cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZh
bHVlIiB9LApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2djL3N0cnVjdHMuanMgYi9KU1Rlc3Rz
L3dhc20vZ2Mvc3RydWN0cy5qcwppbmRleCA1OGVhMGM4MjJmOGM1MzRiM2VlZTE5ZGJhOTQ2Y2Y3
NmIyZjc2MTE0Li5kOTNkOTI2ZDE5NjEwNDFiZWIzZDY2MmZhOGIxYTBlN2Y3MTAwNzE2IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcworKysgYi9KU1Rlc3RzL3dhc20vZ2Mv
c3RydWN0cy5qcwpAQCAtODAsNCArODAsNjE1IEBAIGZ1bmN0aW9uIHRlc3RTdHJ1Y3REZWNsYXJh
dGlvbigpIHsKICAgKTsKIH0KIAorZnVuY3Rpb24gdGVzdFN0cnVjdE5ldygpIHsKKyAgeworICAg
IC8qCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJEVtcHR5IChzdHJ1Y3QpKQorICAg
ICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpCisgICAgICogICAgIChkcm9wCisgICAgICogICAg
ICAgKHN0cnVjdC5uZXcgJEVtcHR5KQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICog
KQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1v
ZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNlx4MDJceDYwXHgw
MFx4MDBceDVmXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5
XHg2ZVx4MDBceDAwXHgwYVx4MDhceDAxXHgwNlx4MDBceGZiXHgwN1x4MDFceDFhXHgwYiIpKTsK
KyAgICBpbnN0YW5jZS5leHBvcnRzLm1haW4oKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAq
IChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChm
aWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChmdW5jIChleHBvcnQgIm1haW4iKQorICAgICAqICAg
ICAoZHJvcAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5KSAo
aTMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAq
LworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAwXHg1
Zlx4MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA4XHgwMVx4MDRceDZk
XHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgwMFx4NDFceDEzXHg0MVx4MjVc
eGZiXHgwN1x4MDFceDFhXHgwYiIpKTsKKyAgICBpbnN0YW5jZS5leHBvcnRzLm1haW4oKTsKKwor
ICAgIC8qCisgICAgICogaW52YWxpZCB0eXBlIGluZGV4IGZvciBzdHJ1Y3QubmV3CisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGkzMikgKGZp
ZWxkICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpCisgICAgICogICAg
IChkcm9wCisgICAgICogICAgICAgKHN0cnVjdC5uZXcgKGkzMi5jb25zdCAxOSkgKGkzMi5jb25z
dCAzNykpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBh
c3NlcnQudGhyb3dzKAorICAgICAgKCkgPT4KKyAgICAgICAgbW9kdWxlKAorICAgICAgICAgICJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAwXHgwMFx4
NWZceDAyXHg3Zlx4MDBceDdmXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3XHgwOFx4MDFceDA0XHg2
ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4MGNceDAxXHgwYVx4MDBceDQxXHgxM1x4NDFceDI1
XHhmYlx4MDdceDAzXHgxYVx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21w
aWxlRXJyb3IsCisgICAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHN0
cnVjdC5uZXcgdHlwZSBpbmRleCAzIGlzIG91dCBvZiBib3VuZCwgaW4gZnVuY3Rpb24gYXQgaW5k
ZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiCisgICAg
KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQ
b2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChm
dW5jIChleHBvcnQgIm1haW4iKQorICAgICAqICAgICB1bnJlYWNoYWJsZQorICAgICAqICAgICBz
dHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5KSAoaTMyLmNvbnN0IDM3KQorICAgICAqICAg
KQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFc
eDAyXHg2MFx4MDBceDAwXHg1Zlx4MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4
MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgw
MFx4MDBceDQxXHgxM1x4NDFceDI1XHhmYlx4MDdceDAxXHgwYiIpKTsKKworICAgIC8qCisgICAg
ICogaW52YWxpZCB0eXBlIGluZGV4IGZvciBzdHJ1Y3QubmV3IGluIHVucmVhY2hhYmxlIGNvbnRl
eHQKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQg
JHggaTMyKSAoZmllbGQgJHkgaTMyKSkpCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikK
KyAgICAgKiAgICAgdW5yZWFjaGFibGUKKyAgICAgKiAgICAgc3RydWN0Lm5ldyAoaTMyLmNvbnN0
IDE5KSAoaTMyLmNvbnN0IDM3KQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGFz
c2VydC50aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisgICAgICAgICAgIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAwXHg1
Zlx4MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA4XHgwMVx4MDRceDZk
XHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgwMFx4MDBceDQxXHgxM1x4NDFc
eDI1XHhmYlx4MDdceDAyXHgwYiIKKyAgICAgICAgKSwKKyAgICAgIFdlYkFzc2VtYmx5LkNvbXBp
bGVFcnJvciwKKyAgICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRl
IDk6IHN0cnVjdC5uZXcgdHlwZSBpbmRleCAyIGlzIG91dCBvZiBib3VuZCBpbiB1bnJlYWNoYWJs
ZSBjb250ZXh0LCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgICApOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RT
dHJ1Y3RHZXQoKSB7CisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMikKKyAgICAgKgorICAg
ICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIp
KSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICog
ICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBv
aW50IChpMzIuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiAp
CisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5XHgwMlx4NWZceDAx
XHg3Zlx4MDBceDYwXHgwMFx4MDFceDdmXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRc
eDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwZFx4MDFceDBiXHgwMFx4NDFceDI1XHhmYlx4
MDdceDAwXHhmYlx4MDNceDAwXHgwMFx4MGIiKSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMubWFpbigpLCAzNyk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiBQb2ludChmMzIp
CisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAo
ZmllbGQgJHggZjMyKSkpCisgICAgICogICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQg
ZjMyKQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgIChz
dHJ1Y3QubmV3ICRQb2ludCAoZjMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgICkKKyAgICAgKiAg
ICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgw
OVx4MDJceDVmXHgwMVx4N2RceDAwXHg2MFx4MDBceDAxXHg3ZFx4MDNceDAyXHgwMVx4MDFceDA3
XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4MTBceDAxXHgwZVx4MDBc
eDQzXHgwMFx4MDBceDE0XHg0Mlx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOwor
ICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMzcpOworICB9CisKKyAgewor
ICAgIC8qCisgICAgICogUG9pbnQoaTY0KQorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAq
ICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGk2NCkpKQorICAgICAqICAgKGZ1bmMg
KGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAqICAgICAoaTY0LmVxCisgICAgICog
ICAgICAgKGk2NC5jb25zdCAzNykKKyAgICAgKiAgICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgK
KyAgICAgKiAgICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTY0LmNvbnN0IDM3KSkKKyAgICAg
KiAgICAgICApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAg
ICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5XHgwMlx4NWZceDAxXHg3ZVx4MDBceDYw
XHgwMFx4MDFceDdmXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4Njlc
eDZlXHgwMFx4MDBceDBhXHgxMFx4MDFceDBlXHgwMFx4NDJceDI1XHg0Mlx4MjVceGZiXHgwN1x4
MDBceGZiXHgwM1x4MDBceDAwXHg1MVx4MGIiKSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMubWFpbigpLCAxKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGY2NCkK
KyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChm
aWVsZCAkeCBmNjQpKSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBm
NjQpCisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0
cnVjdC5uZXcgJFBvaW50IChmNjQuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAg
ICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5
XHgwMlx4NWZceDAxXHg3Y1x4MDBceDYwXHgwMFx4MDFceDdjXHgwM1x4MDJceDAxXHgwMVx4MDdc
eDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgxNFx4MDFceDEyXHgwMFx4
NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDQyXHg0MFx4ZmJceDA3XHgwMFx4ZmJceDAzXHgw
MFx4MDBceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMzcp
OworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoZXh0ZXJucmVmKQorICAgICAqCisg
ICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGV4
dGVybnJlZikpKQorICAgICAqICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocGFyYW0gJG9iaiBl
eHRlcm5yZWYpIChyZXN1bHQgZXh0ZXJucmVmKQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBv
aW50ICR4CisgICAgICogICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAobG9jYWwuZ2V0ICRvYmop
KQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQg
aW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NWZceDAxXHg2Zlx4MDBceDYwXHgwMVx4
NmZceDAxXHg2Zlx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2
ZVx4MDBceDAwXHgwYVx4MGRceDAxXHgwYlx4MDBceDIwXHgwMFx4ZmJceDA3XHgwMFx4ZmJceDAz
XHgwMFx4MDBceDBiIikpOworICAgIGxldCBvYmogPSB7fTsKKyAgICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy5tYWluKG9iaiksIG9iaik7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiAo
bW9kdWxlCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBm
NjQpIChsb2NhbC5nZXQgMCkpCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlMSA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4MDZceDAxXHg2MFx4MDFceDdjXHgwMVx4N2NceDAzXHgwMlx4MDFceDAw
XHgwN1x4MDVceDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA2XHgwMVx4MDRceDAwXHgyMFx4MDBc
eDBiIikpOworCisgICAgLyoKKyAgICAgKiBQb2ludChmdW5jcmVmKQorICAgICAqCisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGZ1bmNyZWYp
KSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHBhcmFtICRwIGZ1bmNyZWYpIChy
ZXN1bHQgZnVuY3JlZikKKyAgICAgKiAgICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAq
ICAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGxvY2FsLmdldCAkcCkpCisgICAgICogICAgICAp
CisgICAgICogICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZTIgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDBhXHgwMlx4NWZceDAxXHg3MFx4MDBceDYwXHgwMVx4NzBceDAxXHg3MFx4MDNc
eDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4
MGRceDAxXHgwYlx4MDBceDIwXHgwMFx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikp
OworICAgIGxldCBmb28gPSBpbnN0YW5jZTEuZXhwb3J0cy5mOworICAgIGFzc2VydC5lcShpbnN0
YW5jZTIuZXhwb3J0cy5tYWluKGZvbyksIGZvbyk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAg
KiBQb2ludChpMzIsIGkzMikKKyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBl
ICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAg
ICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICogICAgICAoc3RydWN0
LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29u
c3QgMTkpIChpMzIuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAg
KiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NWZc
eDAyXHg3Zlx4MDBceDdmXHgwMFx4NjBceDAwXHgwMVx4N2ZceDAzXHgwMlx4MDFceDAxXHgwN1x4
MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDBmXHgwMVx4MGRceDAwXHg0
MVx4MTNceDQxXHgyNVx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOworICAgIGFz
c2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMTkpOworICB9CisKKyAgeworICAgIC8q
CisgICAgICogUG9pbnQoZjMyLCBmMzIpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICog
ICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggZjMyKSAoZmllbGQgJHkgZjMyKSkpCisg
ICAgICogICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgZjMyKQorICAgICAqICAgICAg
KHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAo
ZjMyLmNvbnN0IDE5KSAoZjMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgICkKKyAgICAgKiAgICAp
CisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4
MDJceDVmXHgwMlx4N2RceDAwXHg3ZFx4MDBceDYwXHgwMFx4MDFceDdkXHgwM1x4MDJceDAxXHgw
MVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgxNVx4MDFceDEz
XHgwMFx4NDNceDAwXHgwMFx4OThceDQxXHg0M1x4MDBceDAwXHgxNFx4NDJceGZiXHgwN1x4MDBc
eGZiXHgwM1x4MDBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDE5KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMiwgZjY0KQor
ICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZp
ZWxkICR4IGkzMikgKGZpZWxkICR5IGY2NCkpKQorICAgICAqICAgIChmdW5jIChleHBvcnQgImdl
dF94IikgKHJlc3VsdCBpMzIpCisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAg
ICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29uc3QgMTkpIChmNjQuY29uc3Qg
MzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0
ICJnZXRfeSIpIChyZXN1bHQgZjY0KQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR5
CisgICAgICogICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5KSAoZjY0LmNv
bnN0IDM3KSkKKyAgICAgKiAgICAgICkKKyAgICAgKiAgICApCisgICAgICogKQorICAgICovCisg
ICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDNceDVmXHgwMlx4N2ZceDAwXHg3
Y1x4MDBceDYwXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Y1x4MDNceDAzXHgwMlx4MDFceDAy
XHgwN1x4MTFceDAyXHgwNVx4NjdceDY1XHg3NFx4NWZceDc4XHgwMFx4MDBceDA1XHg2N1x4NjVc
eDc0XHg1Zlx4NzlceDAwXHgwMVx4MGFceDJiXHgwMlx4MTRceDAwXHg0MVx4MTNceDQ0XHgwMFx4
MDBceDAwXHgwMFx4MDBceDgwXHg0Mlx4NDBceGZiXHgwN1x4MDBceGZiXHgwM1x4MDBceDAwXHgw
Ylx4MTRceDAwXHg0MVx4MTNceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDgwXHg0Mlx4NDBceGZi
XHgwN1x4MDBceGZiXHgwM1x4MDBceDAxXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2Uu
ZXhwb3J0cy5nZXRfeCgpLCAxOSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0
X3koKSwgMzcpOworICB9CisKKyAgeworICAgIC8vIHVucmVhY2hhYmxlIGNvbnRleHQKKworICAg
IC8qCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxk
ICR4IGkzMikgKGZpZWxkICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIp
IChyZXN1bHQgaTMyKQorICAgICAqICAgICB1bnJlYWNoYWJsZQorICAgICAqICAgICAoc3RydWN0
LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGkzMi5jb25z
dCAxOSkgKGkzMi5jb25zdCAzNykpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiAp
CisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NWZceDAy
XHg3Zlx4MDBceDdmXHgwMFx4NjBceDAwXHgwMVx4N2ZceDAzXHgwMlx4MDFceDAxXHgwN1x4MDhc
eDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDEwXHgwMVx4MGVceDAwXHgwMFx4
NDFceDEzXHg0MVx4MjVceGZiXHgwN1x4MDBceGZiXHgwM1x4MDBceDAwXHgwYiIpKTsKKworICAg
IC8qCisgICAgICogaW52YWxpZCB0eXBlIGluZGV4IGZvciBzdHJ1Y3QuZ2V0IGluIHVucmVhY2hh
YmxlIGNvbnRleHQKKyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2lu
dCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChmdW5j
IChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgdW5yZWFjaGFibGUKKyAg
ICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKHN0cnVjdC5uZXcg
JFBvaW50IChpMzIuY29uc3QgMTkpIChpMzIuY29uc3QgMzcpKQorICAgICAqICAgICApCisgICAg
ICogICApCisgICAgICogKQorICAgICovCisgICAgYXNzZXJ0LnRocm93cygKKyAgICAgICgpID0+
CisgICAgICAgIG1vZHVsZSgKKyAgICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHgwYlx4MDJceDVmXHgwMlx4N2ZceDAwXHg3Zlx4MDBceDYwXHgwMFx4MDFceDdm
XHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBc
eDBhXHgxMFx4MDFceDBlXHgwMFx4MDBceDQxXHgxM1x4NDFceDI1XHhmYlx4MDdceDAwXHhmYlx4
MDNceDAzXHgwMFx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJy
b3IsCisgICAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxMjog
LCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJ1ZmZlciknKSIKKyAgICApOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHJ1Y3RTZXQo
KSB7CisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMikKKyAgICAgKgorICAgICAqIChtb2R1
bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCAobXV0IGkzMikpKSkK
KyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHJlc3VsdCBp
MzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2Nh
bC5nZXQgJHApCisgICAgICogICAgICAgKGkzMi5jb25zdCAzNykKKyAgICAgKiAgICAgKQorICAg
ICAqICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRw
KQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAgKiAgIChmdW5jIChleHBv
cnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKGNhbGwgJGRvVGVzdAorICAgICAq
ICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDApKQorICAgICAqICAgICApCisg
ICAgICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHgwZlx4MDNceDVmXHgwMVx4N2ZceDAxXHg2MFx4MDFceDZiXHgwMFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3Zlx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2
OVx4NmVceDAwXHgwMVx4MGFceDFjXHgwMlx4MTBceDAwXHgyMFx4MDBceDQxXHgyNVx4ZmJceDA2
XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgwOVx4MDBceDQxXHgwMFx4ZmJc
eDA3XHgwMFx4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDM3KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGYzMikKKyAgICAg
KgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAk
eCAobXV0IGYzMikpKSkKKyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYgJFBv
aW50KSkgKHJlc3VsdCBmMzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAg
ICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGYzMi5jb25zdCAzNykKKyAg
ICAgKiAgICAgKQorICAgICAqICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAg
ICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAg
KiAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGYzMikKKyAgICAgKiAgICAgKGNhbGwg
JGRvVGVzdAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoZjMyLmNvbnN0IDApKQor
ICAgICAqICAgICApCisgICAgICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3Rh
bmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDNceDVmXHgwMVx4N2RceDAxXHg2MFx4MDFceDZiXHgw
MFx4MDFceDdkXHg2MFx4MDBceDAxXHg3ZFx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAx
XHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDIyXHgwMlx4MTNceDAwXHgyMFx4MDBc
eDQzXHgwMFx4MDBceDE0XHg0Mlx4ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4
MDBceDBiXHgwY1x4MDBceDQzXHgwMFx4MDBceDAwXHgwMFx4ZmJceDA3XHgwMFx4MTBceDAwXHgw
YiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDM3KTsKKyAgfQor
CisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGk2NCkKKyAgICAgKgorICAgICAqIChtb2R1bGUK
KyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCAobXV0IGk2NCkpKSkKKyAg
ICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHJlc3VsdCBpNjQp
CisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5n
ZXQgJHApCisgICAgICogICAgICAgKGk2NC5jb25zdCAzNykKKyAgICAgKiAgICAgKQorICAgICAq
ICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQor
ICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAgKiAgIChmdW5jIChleHBvcnQg
Im1haW4iKSAocmVzdWx0IGk2NCkKKyAgICAgKiAgICAgKGNhbGwgJGRvVGVzdAorICAgICAqICAg
ICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTY0LmNvbnN0IDApKQorICAgICAqICAgICApCisgICAg
ICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHgwZlx4MDNceDVmXHgwMVx4N2VceDAxXHg2MFx4MDFceDZiXHgwMFx4MDFceDdlXHg2MFx4MDBc
eDAxXHg3ZVx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4
NmVceDAwXHgwMVx4MGFceDFjXHgwMlx4MTBceDAwXHgyMFx4MDBceDQyXHgyNVx4ZmJceDA2XHgw
MFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgwOVx4MDBceDQyXHgwMFx4ZmJceDA3
XHgwMFx4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWlu
KCkgPT0gMzcsIHRydWUpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoZjY0KQor
ICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZp
ZWxkICR4IChtdXQgZjY0KSkpKQorICAgICAqICAgKGZ1bmMgJGRvVGVzdCAocGFyYW0gJHAgKHJl
ZiAkUG9pbnQpKSAocmVzdWx0IGY2NCkKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4
CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAoZjY0LmNvbnN0IDM3
KQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAq
ICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKgor
ICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgZjY0KQorICAgICAqICAgICAo
Y2FsbCAkZG9UZXN0CisgICAgICogICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChmNjQuY29uc3Qg
MCkpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQg
aW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBmXHgwM1x4NWZceDAxXHg3Y1x4MDFceDYwXHgwMVx4
NmJceDAwXHgwMVx4N2NceDYwXHgwMFx4MDFceDdjXHgwM1x4MDNceDAyXHgwMVx4MDJceDA3XHgw
OFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MmFceDAyXHgxN1x4MDBceDIw
XHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDQyXHg0MFx4ZmJceDA2XHgwMFx4MDBc
eDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgxMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceGZiXHgwN1x4MDBceDEwXHgwMFx4MGIiKSk7CisgICAgYXNzZXJ0LmVx
KGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAzNyk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAg
KiBQb2ludChleHRlcm5yZWYpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlw
ZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggKG11dCBleHRlcm5yZWYpKSkpCisgICAgICogICAo
ZnVuYyAkZG9TZXQgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHBhcmFtICRvYmogZXh0ZXJucmVm
KSAocmVzdWx0IGV4dGVybnJlZikKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4Cisg
ICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRvYmop
CisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICog
ICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqCisg
ICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHBhcmFtICRvYmogZXh0ZXJucmVmKSAocmVz
dWx0IGV4dGVybnJlZikKKyAgICAgKiAgICAgKGNhbGwgJGRvU2V0CisgICAgICogICAgICAgKHN0
cnVjdC5uZXcgJFBvaW50IChyZWYubnVsbCBleHRlcm4pKQorICAgICAqICAgICAgIChsb2NhbC5n
ZXQgJG9iaikKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAg
IGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MTFceDAzXHg1Zlx4MDFceDZmXHgwMVx4NjBc
eDAyXHg2Ylx4MDBceDZmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg2Zlx4MDNceDAzXHgwMlx4
MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDFlXHgw
Mlx4MTBceDAwXHgyMFx4MDBceDIwXHgwMVx4ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAz
XHgwMFx4MDBceDBiXHgwYlx4MDBceGQwXHg2Zlx4ZmJceDA3XHgwMFx4MjBceDAwXHgxMFx4MDBc
eDBiIikpOworICAgIGxldCBvYmogPSB7fTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0
cy5tYWluKG9iaiksIG9iaik7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiAobW9kdWxlCisg
ICAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpIChsb2Nh
bC5nZXQgMCkpCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlMSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4MDZceDAxXHg2MFx4MDFceDdjXHgwMVx4N2NceDAzXHgwMlx4MDFceDAwXHgwN1x4MDVc
eDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA2XHgwMVx4MDRceDAwXHgyMFx4MDBceDBiIikpOwor
CisgICAgLyoKKyAgICAgKiBQb2ludChmdW5jcmVmKQorICAgICAqCisgICAgICogKG1vZHVsZQor
ICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgZnVuY3JlZikpKSkK
KyAgICAgKiAgIChmdW5jICRkb1NldCAocGFyYW0gJHAgKHJlZiAkUG9pbnQpKSAocGFyYW0gJG9i
aiBmdW5jcmVmKSAocmVzdWx0IGZ1bmNyZWYpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2lu
dCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGxvY2FsLmdl
dCAkb2JqKQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAor
ICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAg
ICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChwYXJhbSAkb2JqIGZ1bmNyZWYp
IChyZXN1bHQgZnVuY3JlZikKKyAgICAgKiAgICAgKGNhbGwgJGRvU2V0CisgICAgICogICAgICAg
KHN0cnVjdC5uZXcgJFBvaW50IChyZWYubnVsbCBmdW5jKSkKKyAgICAgKiAgICAgICAobG9jYWwu
Z2V0ICRvYmopCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAg
ICBsZXQgaW5zdGFuY2UyID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgxMVx4MDNceDVmXHgwMVx4NzBceDAxXHg2
MFx4MDJceDZiXHgwMFx4NzBceDAxXHg3MFx4NjBceDAxXHg3MFx4MDFceDcwXHgwM1x4MDNceDAy
XHgwMVx4MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MWVc
eDAyXHgxMFx4MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4
MDNceDAwXHgwMFx4MGJceDBiXHgwMFx4ZDBceDcwXHhmYlx4MDdceDAwXHgyMFx4MDBceDEwXHgw
MFx4MGIiKSk7CisgICAgbGV0IGZvbyA9IGluc3RhbmNlMS5leHBvcnRzLmY7CisgICAgYXNzZXJ0
LmVxKGluc3RhbmNlMi5leHBvcnRzLm1haW4oZm9vKSwgZm9vKTsKKyAgfQorCisgIHsKKyAgICAv
KgorICAgICAqIFBvaW50KGkzMiwgaTMyKQorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAq
ICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMyKSkgKGZpZWxkICR5ICht
dXQgaTMyKSkpKQorICAgICAqICAgKGZ1bmMgJGRvU2V0IChwYXJhbSAkcCAocmVmICRQb2ludCkp
IChwYXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQ
b2ludCAkeQorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGxvY2Fs
LmdldCAkdmFsKQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAk
eQorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkK
KyAgICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAg
ICAqICAgICAoY2FsbCAkZG9TZXQKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGkz
Mi5jb25zdCAwKSAoaTMyLmNvbnN0IDApKQorICAgICAqICAgICAgIChpMzIuY29uc3QgMTkpCisg
ICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFu
Y2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceDEyXHgwM1x4NWZceDAyXHg3Zlx4MDFceDdmXHgwMVx4NjBceDAy
XHg2Ylx4MDBceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwM1x4MDNceDAyXHgwMVx4MDJc
eDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MjBceDAyXHgxMFx4
MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMVx4MjBceDAwXHhmYlx4MDNceDAwXHgw
MVx4MGJceDBkXHgwMFx4NDFceDAwXHg0MVx4MDBceGZiXHgwN1x4MDBceDQxXHgxM1x4MTBceDAw
XHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDE5KTsKKyAg
fQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMiwgaTY0KQorICAgICAqCisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMy
KSkgKGZpZWxkICR5IChtdXQgaTY0KSkpKQorICAgICAqICAgKGZ1bmMgJGRvU2V0IChwYXJhbSAk
cCAocmVmICRQb2ludCkpIChwYXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICogICAg
IChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAg
ICogICAgICAgKGxvY2FsLmdldCAkdmFsKQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1
Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAg
ICkKKyAgICAgKiAgICkKKyAgICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChy
ZXN1bHQgaTMyKQorICAgICAqICAgICAoY2FsbCAkZG9TZXQKKyAgICAgKiAgICAgICAoc3RydWN0
Lm5ldyAkUG9pbnQgKGkzMi5jb25zdCAwKSAoaTY0LmNvbnN0IDApKQorICAgICAqICAgICAgIChp
MzIuY29uc3QgMTkpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8K
KyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDEyXHgwM1x4NWZceDAyXHg3Zlx4MDFc
eDdlXHgwMVx4NjBceDAyXHg2Ylx4MDBceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwM1x4
MDNceDAyXHgwMVx4MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgw
YVx4MjBceDAyXHgxMFx4MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMFx4MjBceDAw
XHhmYlx4MDNceDAwXHgwMFx4MGJceDBkXHgwMFx4NDFceDAwXHg0Mlx4MDBceGZiXHgwN1x4MDBc
eDQxXHgxM1x4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDE5KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIHRyeWluZyB0byBzZXQgYSBu
b24tbXV0YWJsZSBmaWVsZAorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUg
JFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChpMzIpKSkpCisgICAgICogICAoZnVuYyAkZG9UZXN0
IChwYXJhbSAkcCAocmVmICRQb2ludCkpIChyZXN1bHQgaTMyKQorICAgICAqICAgICAoc3RydWN0
LnNldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICAg
IChpMzIuY29uc3QgMzcpCisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBv
aW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAq
ICAgKQorICAgICAqCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIp
CisgICAgICogICAgIChjYWxsICRkb1Rlc3QKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9p
bnQgKGkzMi5jb25zdCAwKSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAg
ICAqLworICAgIGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisg
ICAgICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGZceDAzXHg1
Zlx4MDFceDdmXHgwMFx4NjBceDAxXHg2Ylx4MDBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2ZceDAz
XHgwM1x4MDJceDAxXHgwMlx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFc
eDBhXHgxY1x4MDJceDEwXHgwMFx4MjBceDAwXHg0MVx4MjVceGZiXHgwNlx4MDBceDAwXHgyMFx4
MDBceGZiXHgwM1x4MDBceDAwXHgwYlx4MDlceDAwXHg0MVx4MDBceGZiXHgwN1x4MDBceDEwXHgw
MFx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAg
ICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA5OiB0aGUgZmllbGQg
MCBjYW4ndCBiZSBzZXQgYmVjYXVzZSBpdCBpcyBpbW11dGFibGUsIGluIGZ1bmN0aW9uIGF0IGlu
ZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICAg
ICk7CisgIH0KKworICB7CisgICAgLy8gdW5yZWFjaGFibGUgY29udGV4dAorCisgICAgLyoKKyAg
ICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVs
ZCAkeCAobXV0IGkzMikpKSkKKyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYg
JFBvaW50KSkgKHJlc3VsdCBpMzIpCisgICAgICogICAgICh1bnJlYWNoYWJsZSkKKyAgICAgKiAg
ICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAg
ICAgKiAgICAgICAoaTMyLmNvbnN0IDM3KQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1
Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAg
ICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDBiXHgwMlx4NWZceDAxXHg3Zlx4MDFceDYwXHgwMVx4NmJceDAwXHgwMVx4N2Zc
eDAzXHgwMlx4MDFceDAxXHgwYVx4MTNceDAxXHgxMVx4MDBceDAwXHgyMFx4MDBceDQxXHgyNVx4
ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOworCisgICAgLyoK
KyAgICAgKiBpbnZhbGlkIHR5cGUgaW5kZXggZm9yIHN0cnVjdC5zZXQgaW4gdW5yZWFjaGFibGUg
Y29udGV4dAorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChz
dHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMyKSkpKQorICAgICAqICAgKGZ1bmMgJGRvVGVzdCAocGFy
YW0gJHAgKHJlZiAkUG9pbnQpKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKHVucmVhY2hhYmxl
KQorICAgICAqICAgICAoc3RydWN0LnNldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwu
Z2V0ICRwKQorICAgICAqICAgICAgIChpMzIuY29uc3QgMzcpCisgICAgICogICAgICkKKyAgICAg
KiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkK
KyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGFzc2VydC50
aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisgICAgICAgICAgIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg1Zlx4MDFceDdmXHgwMVx4NjBc
eDAxXHg2Ylx4MDBceDAxXHg3Zlx4MDNceDAyXHgwMVx4MDFceDBhXHgxM1x4MDFceDExXHgwMFx4
MDBceDIwXHgwMFx4NDFceDI1XHhmYlx4MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4MDNceDA1XHgw
MFx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAg
ICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNTogLCBpbiBmdW5j
dGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZl
ciknKSIKKyAgICApOworICB9Cit9CisKIHRlc3RTdHJ1Y3REZWNsYXJhdGlvbigpOwordGVzdFN0
cnVjdE5ldygpOwordGVzdFN0cnVjdEdldCgpOwordGVzdFN0cnVjdFNldCgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXgg
ZGUyZjUzYWQ4ZTU4OTdkN2RhMzZiMWU3ZWQ4N2RlODFkOTUwNWE5Yi4uZDZlYjFhNjdlYmNlM2My
MzZmZDYxOTE0ZWJjYzU1MzI5MWI5NDIwOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20u
anNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC03OCw2ICs3OCw5IEBACiAgICAg
ICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwgICAgICAgICAi
cGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJyZWZ0eXBlIiwgICAgICAgICJ0eXBlIjogInJlZl90eXBlIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBj
b25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKICAgICAgICAgInJlZi5pc19udWxsIjogICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJp
MzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImV4dGVybnJlZiJd
LCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXRlcm1pbmUgaWYgYSByZWZlcmVuY2UgaXMg
bnVsbCIgfSwKICAgICAgICAgInJlZi5mdW5jIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0dXJuIjogWyJmdW5jcmVmIl0sICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJyZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZl
biBpbmRleCIgfSwKKyAgICAgICAgInN0cnVjdC5uZXciOiAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJnYyIsICAgICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjogWyJyZWZfdHlwZSJdLCAgICAg
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJhbGxvY2F0ZXMgYSBuZXcgc3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA3
IH0sCisgICAgICAgICJzdHJ1Y3QuZ2V0IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZ2MiLCAg
ICAgICAgICJ2YWx1ZSI6IDI1MSwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAiZmllbGRfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRp
b24iOiAicmVhZHMgdGhlIGZpZWxkIGZyb20gYSBzdHJ1Y3R1cmUiLCAiZXh0ZW5kZWRPcCI6IDMg
fSwKKyAgICAgICAgInN0cnVjdC5zZXQiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAg
ICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbInJlZl90eXBlIl0sICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJmaWVsZF9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlv
biI6ICJzZXRzIHRoZSBmaWVsZCBmcm9tIGEgc3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA2IH0s
CiAgICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInNldF9s
b2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMz
LCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIi
OiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
ImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2Fs
IHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJh
bnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBh
cmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461246</attachid>
            <date>2022-07-27 08:52:26 -0700</date>
            <delta_ts>2022-07-27 09:09:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243208-20220727225224.patch</filename>
            <type>text/plain</type>
            <size>97280</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhZTA5OGNhZWZjYWNjZTZkOGNj
MDNkMTVkZDY3NGRiZTAyZjA5NDk5Li41ZmFjMGVjNjY0OTM3NWM2ZTk0YTMyYzc5YTU2NDcwODc3
MjIzMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNDIsNiArMTQy
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseVJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdENvbnN0cnVj
dG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUuY3BwCiAgICAg
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCiAgICAgd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1ibHlUYWdDb25z
dHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA5ZDBkYzllZGI2MTZl
MzNlY2NhMzM5MWYxOWZhNjQ4MmM3MzdmYWQ5Li5hYTZjODk3MTFhNzQ4OTNmMDk2YTJkMWZjN2Nk
ZmU5NTA5NDVlZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMTI5LDYgKzEx
MjksNyBAQCB3YXNtL1dhc21TbG93UGF0aHMuY3BwCiB3YXNtL1dhc21TdHJlYW1pbmdDb21waWxl
ci5jcHAKIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKIHdhc20vV2FzbVN0cmVhbWluZ1Bs
YW4uY3BwCit3YXNtL1dhc21TdHJ1Y3QuY3BwCiB3YXNtL1dhc21UYWJsZS5jcHAKIHdhc20vV2Fz
bVRhZy5jcHAKIHdhc20vV2FzbVRodW5rcy5jcHAKQEAgLTExNDgsNiArMTE0OSw3IEBAIHdhc20v
anMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9y
eS5jcHAKIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKIHdhc20vanMvSlNXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvci5jcHAKK3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5jcHAKIHdh
c20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFnLmNw
cAogd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTExNzEsNiArMTE3Myw4IEBAIHdhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAog
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKK3dhc20vanMvV2Vi
QXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5jcHAKK3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQ
cm90b3R5cGUuY3BwCiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKIHdh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKIHdhc20vanMvV2ViQXNzZW1ibHlU
YWdDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCmluZGV4IDZjNDgzZGY0ODk1MjhiOTMwYzU2YmRmNjRiZTFlZDU4Mzc3Y2E3
NDAuLmQ4YmQ2ODliYzMzOTllNzA3YmQ3NDU0YzE2NzNlYmU0NTBjYmJkZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTkxMCw0ICsx
OTEwLDI3IEBAIG9wIDppMzFfZ2V0X3UsCiAgICAgICAgIHJlZjogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0KIAorb3AgOnN0cnVjdF9uZXcsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgdHlwZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgZmlyc3RW
YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKworb3AgOnN0cnVjdF9nZXQsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc3RydWN0UmVmZXJl
bmNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHR5cGVJbmRleDogdW5zaWduZWQsCisgICAg
ICAgIGZpZWxkSW5kZXg6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOnN0cnVjdF9zZXQsCisgICAg
YXJnczogeworICAgICAgICBzdHJ1Y3RSZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgdHlwZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgZmllbGRJbmRleDogdW5zaWduZWQsCisg
ICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBlbmRfc2VjdGlvbiA6V2Fz
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA4YTRjMDgyY2IzNmVlYmYwODA1
OGU5YjhiNTdjMzU3YTE2NTJiODFlLi5hMmVlNjFjZDliNjZkODE5N2I2NjM2MTQzZGFlYmNjZmQ1
MTdlM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzQ4LDYgKzM0OCw3
IEBAIEhlYXA6OkhlYXAoVk0mIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHdlYkFzc2Vt
Ymx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5
R2xvYmFsPigpKQogICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQogICAgICwgd2ViQXNzZW1i
bHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlN
ZW1vcnk+KCkpCisgICAgLCB3ZWJBc3NlbWJseVN0cnVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVN0cnVjdD4oKSkKICAgICAsIHdlYkFzc2VtYmx5TW9k
dWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TW9kdWxl
PigpKQogICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkPigpKQogICAgICwgd2ViQXNzZW1i
bHlUYWJsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRh
YmxlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDQxOGYyNGZkMTIxMmRjZGEw
NzEwNDUwMWQxODMwYTVjMThkYTZmNjIuLjI1YmRmNmIzMTZjNjA2OGZiOTI0ZjQ3OTExMGE1YWI4
MmI4ZWIyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE3NSw2ICsxNzUsNyBA
QCBjbGFzcyBIZWFwOwogICAgIHYod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNzZW1ibHlH
bG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpIFwKICAgICB2KHdlYkFzc2Vt
Ymx5SW5zdGFuY2VTcGFjZSwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKSBcCiAgICAgdih3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3Nl
bWJseU1lbW9yeUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkgXAorICAgIHYod2Vi
QXNzZW1ibHlTdHJ1Y3RTcGFjZSwgd2ViQXNzZW1ibHlTdHJ1Y3RIZWFwQ2VsbFR5cGUsIEpTV2Vi
QXNzZW1ibHlTdHJ1Y3QpIFwKICAgICB2KHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsIHdlYkFzc2Vt
Ymx5TW9kdWxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKSBcCiAgICAgdih3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxs
VHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpIFwKICAgICB2KHdlYkFzc2VtYmx5VGFibGVT
cGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKSBc
CkBAIC05NjcsNiArOTY4LDcgQEAgcHVibGljOgogICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3Nl
bWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlJ
bnN0YW5jZUhlYXBDZWxsVHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNZW1v
cnlIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5U3RydWN0SGVh
cENlbGxUeXBlOwogICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxs
VHlwZTsKICAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGU7CiAgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAppbmRl
eCAwYjQ0ZmUwMWU5NDVkMjI0ZDU3MTJhODA2NmQxMTIwODkxY2I1NGM2Li43ZmZhOWFhMjNhNTcx
NjkyNTNlNDI2MWE3ZGFlY2FhZGRmZGUwNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5Lmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlTdHJ1Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5VGFnLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGU3MDlhNmYxNjk5Mjk1YzY5
OThlM2EzMDMxZTliMzY3MWYxNGU5YzIuLmQ1MDFkOWU5YmZkMTBlOTlmZTFjNGY1YzZjM2JkZTEz
MGEwOThkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3Nl
bWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFz
bQpAQCAtNzIxLDYgKzcyMSw5IEBAIHNsb3dXYXNtT3Aoc2V0X2dsb2JhbF9yZWZfcG9ydGFibGVf
YmluZGluZykKIHNsb3dXYXNtT3AobWVtb3J5X2F0b21pY193YWl0MzIpCiBzbG93V2FzbU9wKG1l
bW9yeV9hdG9taWNfd2FpdDY0KQogc2xvd1dhc21PcChtZW1vcnlfYXRvbWljX25vdGlmeSkKK3Ns
b3dXYXNtT3Aoc3RydWN0X25ldykKK3Nsb3dXYXNtT3Aoc3RydWN0X2dldCkKK3Nsb3dXYXNtT3Ao
c3RydWN0X3NldCkKIAogd2FzbU9wKGdyb3dfbWVtb3J5LCBXYXNtR3Jvd01lbW9yeSwgbWFjcm8o
Y3R4KQogICAgIGNhbGxXYXNtU2xvd1BhdGgoX3Nsb3dfcGF0aF93YXNtX2dyb3dfbWVtb3J5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGZhZGMwNjY3OGE3M2JlNWIxODdkODFhNDhjOGUwOGViNTdhODBlOTQuLjY4YWQ5YzAzYjVh
NmU4MWNlMzUxNTk4Y2MyMzA2YTAwNmY1ZWViOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE2MSw2ICsxNjEsNyBAQAogI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9k
dWxlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlTdHJ1Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIK
QEAgLTI0Niw2ICsyNDcsOCBAQAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgi
CiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIldlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3RydWN0UHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5
VGFnQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDczZTU2ODE2ZTU1ZDg5NWNmN2VkMTIwMjE4ZjhkZGNhYTVjZmIw
NDguLmIyMWEyNmY5MDMzNjllZDdmMGNhYmUzZDAyM2EwMTdiNDg4MDM1NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTgxLDYgKzE4
MSw3IEBAIGNvbnN0ZXhwciBib29sIHR5cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBt
YWNybyhXZWJBc3NlbWJseU1lbW9yeSwgICAgICAgd2ViQXNzZW1ibHlNZW1vcnksICAgICAgIHdl
YkFzc2VtYmx5TWVtb3J5LCAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5LCAgICAgICBNZW1vcnks
ICAgICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhXZWJBc3Nl
bWJseU1vZHVsZSwgICAgICAgd2ViQXNzZW1ibHlNb2R1bGUsICAgICAgIHdlYkFzc2VtYmx5TW9k
dWxlLCAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlLCAgICAgICBNb2R1bGUsICAgICAgIG9iamVj
dCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNybyhXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvciwgd2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIHdlYkFzc2VtYmx5UnVudGltZUVycm9yLCBF
cnJvckluc3RhbmNlLCAgICAgICAgICAgICBSdW50aW1lRXJyb3IsIGVycm9yLCAgdHlwZUV4cG9z
ZWRCeURlZmF1bHQpIFwKKyAgICBtYWNybyhXZWJBc3NlbWJseVN0cnVjdCwgICAgICAgd2ViQXNz
ZW1ibHlTdHJ1Y3QsICAgICAgIHdlYkFzc2VtYmx5U3RydWN0LCAgICAgICBKU1dlYkFzc2VtYmx5
U3RydWN0LCAgICAgICBTdHJ1Y3QsICAgICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQp
IFwKICAgICBtYWNybyhXZWJBc3NlbWJseVRhYmxlLCAgICAgICAgd2ViQXNzZW1ibHlUYWJsZSwg
ICAgICAgIHdlYkFzc2VtYmx5VGFibGUsICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUsICAgICAg
ICBUYWJsZSwgICAgICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBtYWNy
byhXZWJBc3NlbWJseVRhZywgICAgICAgICAgd2ViQXNzZW1ibHlUYWcsICAgICAgICAgIHdlYkFz
c2VtYmx5VGFnLCAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFnLCAgICAgICAgICBUYWcsICAgICAg
ICAgIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDFjZWNmZDJl
YTg1YzU2YzlmMjMyMDcxMWY4MDE5YmRlNDQ3YWFmNjMuLjc1YzkxMzgxOWQ0NWRkMjA5MmEwYzI4
YzkwMDZkOGU4NTkzMThkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMzgxLDYgKzM4MSw5IEBAIHB1YmxpYzoKICAgICBQ
YXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lvblR5cGUg
dmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFH
ZXRVKEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90IGluZGV4
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
KyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTdHJ1Y3RHZXQoRXhwcmVz
c2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZp
ZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVu
Y2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5
cGUgdmFsdWUpOwogCiAgICAgLy8gQmFzaWMgb3BlcmF0b3JzCiAgICAgdGVtcGxhdGU8T3BUeXBl
PgpAQCAtMzA2Niw2ICszMDY5LDEwNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRJMzFHZXRV
KEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUAogICAgIHJl
dHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFN0cnVjdE5ldyh1aW50MzJf
dCB0eXBlSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBl
ID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOwor
ICAgIEFTU0VSVChzdHJ1Y3RUeXBlLmZpZWxkQ291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisKKyAg
ICBBU1NFUlQodHlwZUluZGV4IDwgbV9pbmZvLnR5cGVDb3VudCgpKTsKKyAgICByZXN1bHQgPSB0
bXBGb3JUeXBlKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby50eXBl
U2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pbmRleCgpIH0pOworCisgICAgYXV0byogcGF0Y2ggPSBh
ZGRQYXRjaHBvaW50KEIzOjpJbnQ2NCk7CisgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworICAgIHBhdGNoLT5yZXN1bHRDb25zdHJh
aW50cy5hcHBlbmQoQjM6OlZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsK
KworICAgIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgOD4gcGF0Y2hBcmdzOworICAgIHBhdGNoQXJn
cy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoaW5zdGFuY2VWYWx1ZSgpLCBCMzo6VmFsdWVSZXA6OnJl
ZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJh
aW5lZFRtcChUbXAoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpLCBCMzo6VmFsdWVSZXA6OnJl
ZyhHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFyZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRU
bXAoYXJnc1tpXSwgQjM6OlZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KGkgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSkpOworCisgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBoYW5kbGUgPSBw
cmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2gsIHBhdGNoQXJncyk7CisgICAgcGF0
Y2gtPnNldEdlbmVyYXRvcihbdGhpcywgdHlwZUluZGV4LCBoYW5kbGVdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgaGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAgICAgZW1pdFN0
cnVjdE5ld0ltcGwoaml0LCB0eXBlSW5kZXgpOworICAgIH0pOworCisgICAgVG1wIHJlc3VsdFN0
cnVjdCA9IFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFBhdGNocG9pbnQo
bV9jdXJyZW50QmxvY2ssIHBhdGNoLCBWZWN0b3I8VG1wLCA4Pjo6ZnJvbShyZXN1bHRTdHJ1Y3Qp
LCBXVEZNb3ZlKHBhdGNoQXJncykpOworICAgIGFwcGVuZChNb3ZlLCByZXN1bHRTdHJ1Y3QsIHJl
c3VsdCk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRT
dHJ1Y3RHZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5k
ZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2ln
bmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5k
ZXggPCBtX2luZm8udHlwZUNvdW50KCkpOworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0
VHlwZS5maWVsZENvdW50KCkpOworCisgICAgYXV0byByZXR1cm5WYWx1ZSA9IGc2NCgpOworICAg
IGVtaXRDQ2FsbCgmb3BlcmF0aW9uV2FzbVN0cnVjdEdldCwgcmV0dXJuVmFsdWUsIHN0cnVjdFJl
ZmVyZW5jZSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgZmllbGRJbmRleCkpOworCisgICAgY29u
c3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7Cisg
ICAgcmVzdWx0ID0gdG1wRm9yVHlwZShmaWVsZFR5cGUpOworICAgIHN3aXRjaCAoZmllbGRUeXBl
LmtpbmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzI6CisgICAgICAgIGFwcGVuZChNb3ZlMzIs
IHJldHVyblZhbHVlLCByZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVLaW5k
OjpGdW5jcmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICBjYXNlIFR5cGVL
aW5kOjpSZWY6CisgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICBjYXNlIFR5cGVLaW5k
OjpJNjQ6CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXR1cm5WYWx1ZSwgcmVzdWx0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOgorICAgICAgICBhcHBlbmQoTW92ZTMy
VG9GbG9hdCwgcmV0dXJuVmFsdWUsIHJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VHlwZUtpbmQ6OkY2NDoKKyAgICAgICAgYXBwZW5kKE1vdmU2NFRvRG91YmxlLCByZXR1cm5WYWx1
ZSwgcmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCith
dXRvIEFpcklSR2VuZXJhdG9yOjphZGRTdHJ1Y3RTZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVm
ZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Np
b25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgY29uc3QgYXV0byYgc3RydWN0
VHlwZSA9ICptX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+YXM8U3RydWN0VHlwZT4o
KTsKKyAgICBBU1NFUlQodHlwZUluZGV4IDwgbV9pbmZvLnR5cGVDb3VudCgpKTsKKyAgICBBU1NF
UlQoZmllbGRJbmRleCA8IHN0cnVjdFR5cGUuZmllbGRDb3VudCgpKTsKKworICAgIGNvbnN0IGF1
dG8gZmllbGRUeXBlID0gc3RydWN0VHlwZS5maWVsZChmaWVsZEluZGV4KS50eXBlOworICAgIGF1
dG8gdmFsdWVBc0ludDY0ID0gdG1wRm9yVHlwZShUeXBlczo6STY0KTsKKyAgICBzd2l0Y2ggKGZp
ZWxkVHlwZS5raW5kKSB7CisgICAgY2FzZSBUeXBlS2luZDo6STMyOgorICAgICAgICBhcHBlbmQo
TW92ZTMyLCB2YWx1ZSwgdmFsdWVBc0ludDY0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlS2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgY2FzZSBU
eXBlS2luZDo6STY0OgorICAgICAgICBhcHBlbmQoTW92ZSwgdmFsdWUsIHZhbHVlQXNJbnQ2NCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKKyAgICAgICAgYXBwZW5k
KE1vdmVGbG9hdFRvMzIsIHZhbHVlLCB2YWx1ZUFzSW50NjQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgICAgIGFwcGVuZChNb3ZlRG91YmxlVG82NCwgdmFs
dWUsIHZhbHVlQXNJbnQ2NCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgZW1pdENDYWxsKCZv
cGVyYXRpb25XYXNtU3RydWN0U2V0LCBUeXBlZFRtcCgpLCBzdHJ1Y3RSZWZlcmVuY2UsIGFkZENv
bnN0YW50KFR5cGVzOjpJMzIsIGZpZWxkSW5kZXgpLCB2YWx1ZUFzSW50NjQpOworCisgICAgcmV0
dXJuIHsgfTsKK30KKwogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25U
eXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUgbm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVy
bywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VS
VChub25aZXJvLnR5cGUoKSA9PSB6ZXJvLnR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggOGRlMTBmYTdjMjk3MjllNmY0
MjkzM2FiODU3MzdiY2RmYzk3ZjZiMy4uYzYwYWMxMzY5YzQxMDI3MDgxMDcyYTBmYjM4MDcyZmIy
NDMxNDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtMzU4LDYgKzM1OCw5IEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFHZXRVKEV4cHJlc3Np
b25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90IHR5cGVJbmRleCwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0R2V0KEV4cHJlc3Npb25UeXBl
IHN0cnVjdFJlZmVyZW5jZSwgdWludDMyX3QgdHlwZUluZGV4LCB1aW50MzJfdCBmaWVsZEluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRTdHJ1Y3RTZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50
MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVl
KTsKIAogICAgIC8vIEJhc2ljIG9wZXJhdG9ycwogICAgIHRlbXBsYXRlPE9wVHlwZT4KQEAgLTIz
MjQsNiArMjMyNywxMDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRJMzFHZXRVKEV4cHJlc3Np
b25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGEKICAgICByZXR1cm4geyB9
OwogfQogCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFN0cnVjdE5ldyh1aW50MzJfdCB0eXBlSW5k
ZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBhdXRvIHR5cGUgPSBUeXBlIHsgVHlwZUtp
bmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+
aW5kZXgoKSB9OworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2ggPSBtX3Byb2MuYWRkPFBhdGNo
cG9pbnRWYWx1ZT4odG9CM1R5cGUodHlwZSksIG9yaWdpbigpKTsKKyAgICBwYXRjaC0+YXBwZW5k
KGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBwYXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0Nh
bGwoKSk7CisgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzID0gVmVjdG9yPEIzOjpWYWx1ZVJl
cCwgMT4geyBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSB9OworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRjaC0+
YXBwZW5kKGdldChhcmdzW2ldKSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQoaSAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpKTsKKworICAgIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgaGFuZGxl
ID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKG1fY3VycmVudEJsb2NrLCBwYXRjaCk7
CisgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbdGhpcywgdHlwZUluZGV4LCBoYW5kbGVdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKKyAgICAgICAgaGFuZGxlLmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKKyAgICAg
ICAgZW1pdFN0cnVjdE5ld0ltcGwoaml0LCB0eXBlSW5kZXgpOworICAgIH0pOworICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmQocGF0Y2gpOworICAgIHJlc3VsdCA9IHB1c2gocGF0Y2gpOworCisg
ICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBCM0lSR2VuZXJhdG9yOjphZGRTdHJ1Y3RHZXQoRXhw
cmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQzMl90
IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBjb25zdCBhdXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBl
SW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8u
dHlwZUNvdW50KCkpOworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENv
dW50KCkpOworCisgICAgVmFsdWUqIHJlc3VsdEFzSW50NjQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6OkludDY0LCBvcmlnaW4oKSwKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtU3RydWN0R2V0KSks
CisgICAgICAgIGdldChzdHJ1Y3RSZWZlcmVuY2UpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgZmllbGRJbmRleCkpOworCisgICAgY29u
c3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5cGU7Cisg
ICAgc3dpdGNoIChmaWVsZFR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAg
ICAgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEIzOjpUcnVuYywgb3JpZ2luKCksIHJlc3VsdEFzSW50NjQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5y
ZWY6CisgICAgY2FzZSBUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6
CisgICAgY2FzZSBUeXBlS2luZDo6STY0OgorICAgICAgICByZXN1bHQgPSBwdXNoKHJlc3VsdEFz
SW50NjQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVLaW5kOjpGMzI6IHsKKyAgICAg
ICAgVmFsdWUqIHJlc3VsdEFzSTMyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBCMzo6VHJ1bmMsIG9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKKyAgICAgICAgcmVz
dWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpC
aXR3aXNlQ2FzdCwgb3JpZ2luKCksIHJlc3VsdEFzSTMyKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgICAgIHJlc3VsdCA9IHB1c2gobV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6Qml0d2lzZUNhc3QsIG9yaWdp
bigpLCByZXN1bHRBc0ludDY0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHsg
fTsKK30KKworCithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlw
ZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRl
eCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCBh
dXRvJiBzdHJ1Y3RUeXBlID0gKm1faW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxT
dHJ1Y3RUeXBlPigpOworICAgIEFTU0VSVCh0eXBlSW5kZXggPCBtX2luZm8udHlwZUNvdW50KCkp
OworICAgIEFTU0VSVChmaWVsZEluZGV4IDwgc3RydWN0VHlwZS5maWVsZENvdW50KCkpOworCisg
ICAgY29uc3QgYXV0byBmaWVsZFR5cGUgPSBzdHJ1Y3RUeXBlLmZpZWxkKGZpZWxkSW5kZXgpLnR5
cGU7CisgICAgVmFsdWUqIHZhbHVlQXNJbnQ2NCA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmaWVs
ZFR5cGUua2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgdmFsdWVBc0lu
dDY0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6WkV4dDMy
LCBvcmlnaW4oKSwgZ2V0KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgIGNhc2UgVHlw
ZUtpbmQ6OlJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgIGNhc2UgVHlwZUtp
bmQ6Okk2NDoKKyAgICAgICAgdmFsdWVBc0ludDY0ID0gZ2V0KHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUeXBlS2luZDo6RjMyOiB7CisgICAgICAgIFZhbHVlKiB2YWx1ZUFzSW50
MzIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNl
Q2FzdCwgb3JpZ2luKCksIGdldCh2YWx1ZSkpOworICAgICAgICB2YWx1ZUFzSW50NjQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpaRXh0MzIsIG9yaWdpbigp
LCB2YWx1ZUFzSW50MzIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlS2lu
ZDo6RjY0OgorICAgICAgICB2YWx1ZUFzSW50NjQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNlQ2FzdCwgb3JpZ2luKCksIGdldCh2YWx1ZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4oCisgICAgICAgIG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpLAorICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldhc21TdHJ1Y3RTZXQpKSwKKyAg
ICAgICAgZ2V0KHN0cnVjdFJlZmVyZW5jZSksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBmaWVsZEluZGV4KSwKKyAgICAg
ICAgdmFsdWVBc0ludDY0KTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUg
bm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2gobV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBCMzo6U2VsZWN0LCBvcmlnaW4oKSwgZ2V0KGNvbmRpdGlvbiks
IGdldChub25aZXJvKSwgZ2V0KHplcm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDRmNjA1M2QxNjUyMTAwMGFjOTYwMDcyMTdk
ZTE1MTg2MWEyNjAwNzMuLjllMmQ3YTRhYzc0MjdlZTA4YzcwODE1NWNjNDVmYzM4OTA5MDQ0N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
CkBAIC0xODUsNiArMTg1LDE5IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZU1lbW9yeUluaXRJbW1lZGlhdGVzKE1lbW9yeUluaXRJ
bW1lZGlhdGVzJik7CiAKKyAgICBzdHJ1Y3QgU3RydWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCB7
CisgICAgICAgIHVpbnQzMl90IHN0cnVjdFR5cGVJbmRleDsKKyAgICAgICAgdWludDMyX3QgZmll
bGRJbmRleDsKKyAgICB9OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlU3RydWN0VHlwZUluZGV4QW5kRmllbGRJbmRleChTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVsZElu
ZGV4JiByZXN1bHQsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbik7CisKKyAgICBzdHJ1Y3QgU3RydWN0
RmllbGRNYW5pcHVsYXRpb24geworICAgICAgICBTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVsZEluZGV4
IGluZGljZXM7CisgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBzdHJ1Y3RSZWZlcmVuY2U7CisgICAg
ICAgIFN0cnVjdEZpZWxkIGZpZWxkOworICAgIH07CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VTdHJ1Y3RGaWVsZE1hbmlwdWxhdGlvbihTdHJ1Y3RGaWVsZE1hbmlw
dWxhdGlvbiYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24pOworCiAjZGVmaW5lIFdBU01f
VFJZX0FERF9UT19DT05URVhUKGFkZF9leHByZXNzaW9uKSBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZB
SUxTKG1fY29udGV4dC5hZGRfZXhwcmVzc2lvbikKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAu
Li5BcmdzPgpAQCAtNzMxLDYgKzc0NCw1MiBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZU1lbW9yeUluaXRJbW1lZGlhdGVzKE1lbW9yeUluaXRJbW1lZGlhdGVzJiByZQogICAg
IHJldHVybiB7IH07CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+CithdXRvIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZVN0cnVjdFR5cGVJbmRleEFuZEZpZWxkSW5kZXgoU3Ry
dWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24p
IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCB0eXBlSW5kZXg7CisgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBl
IGluZGV4IGZvciIsIG9wZXJhdGlvbik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0eXBl
SW5kZXggPj0gbV9pbmZvLnR5cGVDb3VudCgpLCBvcGVyYXRpb24sICIgaW5kZXggIiwgdHlwZUlu
ZGV4LCAiIGlzIG91dCBvZiBib3VuZCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1f
aW5mby50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pczxTdHJ1Y3RUeXBlPigpLCBvcGVyYXRp
b24sICI6IGludmFsaWQgdHlwZSBpbmRleCIsIHR5cGVJbmRleCk7CisKKyAgICB1aW50MzJfdCBm
aWVsZEluZGV4OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZpZWxk
SW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggZm9yICIsIG9wZXJhdGlvbik7CisgICAgY29u
c3QgYXV0byYgc3RydWN0VHlwZSA9ICptX2luZm8udHlwZVNpZ25hdHVyZXNbdHlwZUluZGV4XS0+
YXM8U3RydWN0VHlwZT4oKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZpZWxkSW5kZXggPj0g
c3RydWN0VHlwZS5maWVsZENvdW50KCksIG9wZXJhdGlvbiwgIiBmaWVsZCBpbW1lZGlhdGUgIiwg
ZmllbGRJbmRleCwgIiBpcyBvdXQgb2YgYm91bmRzIik7CisKKyAgICByZXN1bHQuZmllbGRJbmRl
eCA9IGZpZWxkSW5kZXg7CisgICAgcmVzdWx0LnN0cnVjdFR5cGVJbmRleCA9IHR5cGVJbmRleDsK
KyAgICByZXR1cm4geyB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgorYXV0byBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VTdHJ1Y3RGaWVsZE1hbmlwdWxhdGlvbihTdHJ1
Y3RGaWVsZE1hbmlwdWxhdGlvbiYgcmVzdWx0LCBjb25zdCBjaGFyKiBvcGVyYXRpb24pIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCB0eXBlSW5kZXg7CisgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJVSW50MzIodHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4
IGZvciIsIG9wZXJhdGlvbik7CisgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRih0eXBlSW5kZXgg
Pj0gbV9pbmZvLnR5cGVDb3VudCgpLCBvcGVyYXRpb24sICIgaW5kZXggIiwgdHlwZUluZGV4LCAi
IGlzIG91dCBvZiBib3VuZCIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1faW5mby50
eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5pczxTdHJ1Y3RUeXBlPigpLCBvcGVyYXRpb24sICI6
IGludmFsaWQgdHlwZSBpbmRleCIsIHR5cGVJbmRleCk7CisKKyAgICBUeXBlZEV4cHJlc3Npb24g
c3RydWN0UmVmOworICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8oc3RydWN0
UmVmLCAic3RydWN0IHJlZmVyZW5jZSIpOworICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlz
UmVmV2l0aFR5cGVJbmRleChzdHJ1Y3RSZWYudHlwZSgpKSwgb3BlcmF0aW9uLCAiIGludmFsaWQg
aW5kZXg6ICIsIHN0cnVjdFJlZi50eXBlKCkua2luZCk7CisgICAgY29uc3QgVHlwZUluZGV4IHN0
cnVjdFR5cGVJbmRleCA9IHN0cnVjdFJlZi50eXBlKCkuaW5kZXg7CisgICAgY29uc3QgVHlwZURl
ZmluaXRpb24mIHN0cnVjdFR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoc3Ry
dWN0VHlwZUluZGV4KTsKKyAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFzdHJ1Y3RUeXBlRGVm
aW5pdGlvbi5pczxTdHJ1Y3RUeXBlPigpLCBvcGVyYXRpb24sICIgdHlwZSBpbmRleCBwb2ludHMg
aW50byBhIG5vbiBzdHJ1Y3QgdHlwZSIpOworICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSAq
c3RydWN0VHlwZURlZmluaXRpb24uYXM8U3RydWN0VHlwZT4oKTsKKyAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKHN0cnVjdFJlZi50eXBlKCkuaW5kZXggIT0gbV9pbmZvLnR5cGVTaWduYXR1cmVz
W3R5cGVJbmRleF0tPmluZGV4KCksIG9wZXJhdGlvbiwgIjogcG9wcGVkIHN0cnVjdCBoYXMgYSBk
aWZmZXJlbnQgdHlwZSBpbmRleCB0aGFuIHNwZWNpZmllZCBpbiBpbW1lZGRpYXRlIik7CisKKyAg
ICB1aW50MzJfdCBmaWVsZEluZGV4OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKGZpZWxkSW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggZm9yICIsIG9wZXJhdGlv
bik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmaWVsZEluZGV4ID49IHN0cnVjdFR5cGUuZmll
bGRDb3VudCgpLCBvcGVyYXRpb24sICIgZmllbGQgaW1tZWRpYXRlICIsIGZpZWxkSW5kZXgsICIg
aXMgb3V0IG9mIGJvdW5kcyIpOworCisgICAgcmVzdWx0LnN0cnVjdFJlZmVyZW5jZSA9IHN0cnVj
dFJlZjsKKyAgICByZXN1bHQuaW5kaWNlcy5maWVsZEluZGV4ID0gZmllbGRJbmRleDsKKyAgICBy
ZXN1bHQuaW5kaWNlcy5zdHJ1Y3RUeXBlSW5kZXggPSB0eXBlSW5kZXg7CisgICAgcmVzdWx0LmZp
ZWxkID0gc3RydWN0VHlwZS5maWVsZChmaWVsZEluZGV4KTsKKyAgICByZXR1cm4geyB9OworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgogYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6Y2hlY2tCcmFuY2hUYXJnZXQoY29uc3QgQ29udHJvbFR5cGUmIHRhcmdldCkgLT4gUGFydGlh
bFJlc3VsdAogewpAQCAtMTA5Niw2ICsxMTU1LDYwIEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3Ry
dWN0QW5kQXBwZW5kKFR5cGVzOjpJMzIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CisgICAgICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdE5ldzogeworICAgICAg
ICAgICAgdWludDMyX3QgdHlwZUluZGV4OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIodHlwZUluZGV4KSwgImNhbid0IGdldCB0eXBlIGluZGV4IGZvciBz
dHJ1Y3QubmV3Iik7CisgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKHR5cGVJbmRl
eCA+PSBtX2luZm8udHlwZUNvdW50KCksICJzdHJ1Y3QubmV3IHR5cGUgaW5kZXggIiwgdHlwZUlu
ZGV4LCAiIGlzIG91dCBvZiBib3VuZCIpOworICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRighbV9pbmZvLnR5cGVTaWduYXR1cmVzW3R5cGVJbmRleF0tPmlzPFN0cnVjdFR5cGU+KCks
ICJzdHJ1Y3QubmV3OiB0eXBlIGluZGV4IHBvaW50cyBpbnRvIGEgbm9uIHN0cnVjdCB0eXBlIiwg
dHlwZUluZGV4KTsKKworICAgICAgICAgICAgY29uc3QgYXV0byogc3RydWN0VHlwZSA9IG1faW5m
by50eXBlU2lnbmF0dXJlc1t0eXBlSW5kZXhdLT5hczxTdHJ1Y3RUeXBlPigpOworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCkgPiBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICJzdHJ1Y3QubmV3ICIsIHR5cGVJbmRleCwgIiByZXF1aXJlcyAi
LCBzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCksICIgdmFsdWVzLCBidXQgdGhlIGV4cHJlc3Npb24g
c3RhY2sgY3VycmVudGx5IGhvbGRzICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1
ZXMiKTsKKworICAgICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiBhcmdzOworICAgICAg
ICAgICAgc2l6ZV90IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSAtIHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIWFyZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKSks
ICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBzdHJ1Y3QubmV3ICIsIHN0cnVjdFR5
cGUtPmZpZWxkQ291bnQoKSwgIiB2YWx1ZXMiKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0
YWNrLmF0KGkpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZpZWxkVHlwZSA9IHN0cnVj
dFR5cGUtPmZpZWxkKFN0cnVjdEZpZWxkQ291bnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkpLnR5
cGU7CisgICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKGFy
Zy50eXBlKCksIGZpZWxkVHlwZSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIHN0cnVjdC5u
ZXcsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVkICIsIGZpZWxkVHlwZS5raW5k
KTsKKyAgICAgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCkgPT0g
YXJncy5zaXplKCkpOworCisgICAgICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAg
ICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRTdHJ1Y3ROZXcodHlwZUluZGV4LCBh
cmdzLCByZXN1bHQpKTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8udHlwZVNp
Z25hdHVyZXNbdHlwZUluZGV4XS0+aW5kZXgoKSB9LCByZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdEdldDog
eworICAgICAgICAgICAgU3RydWN0RmllbGRNYW5pcHVsYXRpb24gc3RydWN0R2V0SW5wdXQ7Cisg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVN0cnVjdEZpZWxkTWFuaXB1bGF0
aW9uKHN0cnVjdEdldElucHV0LCAic3RydWN0LmdldCIpKTsKKworICAgICAgICAgICAgRXhwcmVz
c2lvblR5cGUgcmVzdWx0OworICAgICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRk
U3RydWN0R2V0KHN0cnVjdEdldElucHV0LnN0cnVjdFJlZmVyZW5jZSwgc3RydWN0R2V0SW5wdXQu
aW5kaWNlcy5zdHJ1Y3RUeXBlSW5kZXgsIHN0cnVjdEdldElucHV0LmluZGljZXMuZmllbGRJbmRl
eCwgcmVzdWx0KSk7CisKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChzdHJ1Y3RHZXRJbnB1dC5maWVsZC50eXBlLCByZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR0NPcFR5cGU6OlN0cnVjdFNl
dDogeworICAgICAgICAgICAgVHlwZWRFeHByZXNzaW9uIHZhbHVlOworICAgICAgICAgICAgV0FT
TV9UUllfUE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyh2YWx1ZSwgInN0cnVjdC5zZXQgdmFsdWUi
KTsKKworICAgICAgICAgICAgU3RydWN0RmllbGRNYW5pcHVsYXRpb24gc3RydWN0U2V0SW5wdXQ7
CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVN0cnVjdEZpZWxkTWFuaXB1
bGF0aW9uKHN0cnVjdFNldElucHV0LCAic3RydWN0LnNldCIpKTsKKworICAgICAgICAgICAgY29u
c3QgYXV0byYgZmllbGQgPSBzdHJ1Y3RTZXRJbnB1dC5maWVsZDsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZmllbGQubXV0YWJpbGl0eSAhPSBNdXRhYmlsaXR5OjpNdXRhYmxlLCAi
dGhlIGZpZWxkICIsIHN0cnVjdFNldElucHV0LmluZGljZXMuZmllbGRJbmRleCwgIiBjYW4ndCBi
ZSBzZXQgYmVjYXVzZSBpdCBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIGZpZWxkLnR5cGUpLCAidHlwZSBtaXNt
YXRjaCBpbiBzdHJ1Y3Quc2V0Iik7CisKKyAgICAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZFN0cnVjdFNldChzdHJ1Y3RTZXRJbnB1dC5zdHJ1Y3RSZWZlcmVuY2UsIHN0cnVjdFNl
dElucHV0LmluZGljZXMuc3RydWN0VHlwZUluZGV4LCBzdHJ1Y3RTZXRJbnB1dC5pbmRpY2VzLmZp
ZWxkSW5kZXgsIHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CiAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwg
ImludmFsaWQgZXh0ZW5kZWQgR0Mgb3AgIiwgZXh0T3ApOwpAQCAtMjAwNyw2ICsyMTIwLDIyIEBA
IGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9u
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNlIEdDT3BUeXBlOjpJMzFHZXRTOgogICAg
ICAgICBjYXNlIEdDT3BUeXBlOjpJMzFHZXRVOgogICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgY2FzZSBHQ09wVHlwZTo6U3RydWN0TmV3OiB7CisgICAgICAgICAgICB1aW50MzJfdCB0
eXBlSW5kZXg7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih0eXBlSW5kZXgpLCAiY2FuJ3QgZ2V0IHR5cGUgaW5kZXggaW1tZWRpYXRlIGZvciBzdHJ1Y3Qu
bmV3IGluIHVucmVhY2hhYmxlIGNvbnRleHQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYodHlwZUluZGV4ID49IG1faW5mby50eXBlQ291bnQoKSwgInN0cnVjdC5uZXcgdHlwZSBp
bmRleCAiLCB0eXBlSW5kZXgsICIgaXMgb3V0IG9mIGJvdW5kIGluIHVucmVhY2hhYmxlIGNvbnRl
eHQiKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
Q09wVHlwZTo6U3RydWN0R2V0OiB7CisgICAgICAgICAgICBTdHJ1Y3RUeXBlSW5kZXhBbmRGaWVs
ZEluZGV4IHVudXNlZDsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlU3Ry
dWN0VHlwZUluZGV4QW5kRmllbGRJbmRleCh1bnVzZWQsICJzdHJ1Y3QuZ2V0IikpOworICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdDT3BUeXBlOjpTdHJ1
Y3RTZXQ6IHsKKyAgICAgICAgICAgIFN0cnVjdFR5cGVJbmRleEFuZEZpZWxkSW5kZXggdW51c2Vk
OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VTdHJ1Y3RUeXBlSW5kZXhB
bmRGaWVsZEluZGV4KHVudXNlZCwgInN0cnVjdC5zZXQiKSk7CisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKHRydWUsICJpbnZhbGlkIGV4dGVuZGVkIEdDIG9wICIsIGV4dE9wKTsKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUlSR2VuZXJhdG9ySGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUlS
R2VuZXJhdG9ySGVscGVycy5oCmluZGV4IDIxZDVlZGE2ZWQ0ZTU3OWI4YzdhZTIyY2M4NmIyYjE3
MTBiNzRiYTcuLjE2M2VkMDA2NTcyODEzMGM4MTYwY2JjZDhkODNhM2FkNDkzMzkyMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JUkdlbmVyYXRvckhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSVJHZW5lcmF0b3JIZWxwZXJz
LmgKQEAgLTE2Myw2ICsxNjMsMzUgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRUaHJvd0ltcGwo
Q0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4KQogICAgIH0pOwogfQog
CitzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFN0cnVjdE5ld0ltcGwoQ0NhbGxIZWxwZXJzJiBqaXQs
IHVuc2lnbmVkIHR5cGVJbmRleCkKK3sKKyAgICAvLyBJbnN0YW5jZSBpbiBhcmd1bWVudEdQUjAK
KyAgICAvLyBmcmFtZSBwb2ludGVyIGluIGFyZ3VtZW50R1BSMQorICAgIC8vIGFyZ3VtZW50cyB0
byB0aGUgc3RydWN0X25ldyBvZmYgb2Ygc3RhY2sgcG9pbnRlcgorCisgICAgR1BSUmVnIHNjcmF0
Y2ggPSBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjA7CisgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSW5zdGFuY2U6
Om9mZnNldE9mT3duZXIoKSksIHNjcmF0Y2gpOworICAgIHsKKyAgICAgICAgYXV0byBwcmVjaXNl
QWxsb2NhdGlvbkNhc2UgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8s
IHNjcmF0Y2gsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFByZWNpc2VBbGxvY2F0aW9uOjpo
YWxmQWxpZ25tZW50KSk7CisgICAgICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3JhdGNoKTsKKyAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gsIE1hcmtlZEJsb2NrOjpvZmZzZXRP
ZkZvb3RlciArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om9mZnNldE9mVk0oKSksIHNjcmF0Y2gpOwor
ICAgICAgICBhdXRvIGxvYWRlZENhc2UgPSBqaXQuanVtcCgpOworCisgICAgICAgIHByZWNpc2VB
bGxvY2F0aW9uQ2FzZS5saW5rKCZqaXQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc2NyYXRjaCwgUHJlY2lzZUFsbG9jYXRpb246Om9mZnNldE9mV2Vha1NldCgp
ICsgV2Vha1NldDo6b2Zmc2V0T2ZWTSgpIC0gUHJlY2lzZUFsbG9jYXRpb246OmhlYWRlclNpemUo
KSksIHNjcmF0Y2gpOworCisgICAgICAgIGxvYWRlZENhc2UubGluaygmaml0KTsKKyAgICB9Cisg
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoc2Ny
YXRjaCk7CisKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHR5cGVJ
bmRleCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIEND
YWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBq
aXQuYWRkTGlua1Rhc2soW2NhbGxdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAg
IGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbldhc21TdHJ1Y3ROZXcpKTsKKyAgICB9KTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGJ1
aWxkRW50cnlCdWZmZXJGb3JDYXRjaChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IGNvbnRleHQuZnA8Q2FsbEZyYW1lKj4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IGFl
NzA5MGI1MzhkZTE3YTc3YzNiNjEwNjNlOWYxYjBiMzJjNTBjYmQuLjUyMjFlY2YzMWI4NmUwZTVi
Mzg5NGE5MzUwMzQzM2JmZGM0NGVjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMzA3LDYgKzMwNyw5IEBAIHB1YmxpYzoK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRJMzFOZXcoRXhwcmVzc2lv
blR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZEkzMUdldFMoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRJMzFHZXRVKEV4cHJlc3Npb25UeXBlIHJlZiwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Cisg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkU3RydWN0TmV3KHVpbnQzMl90
IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRTdHJ1Y3RHZXQo
RXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgsIHVpbnQz
Ml90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFN0cnVjdFNldChFeHByZXNzaW9uVHlwZSBzdHJ1Y3RS
ZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMyX3QgZmllbGRJbmRleCwgRXhwcmVz
c2lvblR5cGUgdmFsdWUpOwogCiAgICAgLy8gQmFzaWMgb3BlcmF0b3JzCiAgICAgdGVtcGxhdGU8
T3BUeXBlPgpAQCAtMTg4Niw2ICsxODg5LDM5IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEkz
MUdldFUoRXhwcmVzc2lvblR5cGUgcmVmLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkU3RydWN0TmV3KHVp
bnQzMl90IGluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gV2UgaGF2ZSB0byBtYXRlcmlh
bGl6ZSB0aGUgYXJndW1lbnRzIGhlcmUgc2luY2UgaXQgbWlnaHQgaW5jbHVkZSBjb25zdGFudHMg
b3IKKyAgICAvLyBkZWxheWVkIG1vdmVzLCBidXQgdGhlIHdhc21fc3RydWN0X25ldyBvcGNvZGUg
ZXhwZWN0cyBhbGwgdGhlIGFyZ3VtZW50cyB0byBiZSBjb250aWd1b3VzCisgICAgLy8gaW4gdGhl
IHN0YWNrLiBUaGUgcmVhc29uIHdlIGRvbid0IGNhbGwgbWF0ZXJpYWxpemVDb25zdGFudHNBbmRM
b2NhbHMgaGVyZSBpcyB0aGF0CisgICAgLy8gaXQgZXhwZWN0cyBhIHN0YWNrLCBub3QgYSB2ZWN0
b3Igb2YgRXhwcmVzc2lvblR5cGUgYXJndW1lbnRzLgorICAgIHdhbGtFeHByZXNzaW9uU3RhY2so
YXJncywgWyZdKFZpcnR1YWxSZWdpc3RlciYgYXJnLCBWaXJ0dWFsUmVnaXN0ZXIgc2xvdCkgewor
ICAgICAgICBpZiAoYXJnID09IHNsb3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFdh
c21Nb3Y6OmVtaXQodGhpcywgc2xvdCwgYXJnKTsKKyAgICAgICAgYXJnID0gc2xvdDsKKyAgICB9
KTsKKworICAgIHJlc3VsdCA9IHB1c2goKTsKKyAgICBXYXNtU3RydWN0TmV3OjplbWl0KHRoaXMs
IHJlc3VsdCwgaW5kZXgsIGFyZ3MuaXNFbXB0eSgpID8gVmlydHVhbFJlZ2lzdGVyKCkgOiBhcmdz
WzBdKTsKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRTdHJ1
Y3RHZXQoRXhwcmVzc2lvblR5cGUgc3RydWN0UmVmZXJlbmNlLCB1aW50MzJfdCB0eXBlSW5kZXgs
IHVpbnQzMl90IGZpZWxkSW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxS
ZXN1bHQKK3sKKyAgICByZXN1bHQgPSBwdXNoKCk7CisgICAgV2FzbVN0cnVjdEdldDo6ZW1pdCh0
aGlzLCByZXN1bHQsIHN0cnVjdFJlZmVyZW5jZSwgdHlwZUluZGV4LCBmaWVsZEluZGV4KTsKKwor
ICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFN0cnVjdFNldChF
eHByZXNzaW9uVHlwZSBzdHJ1Y3RSZWZlcmVuY2UsIHVpbnQzMl90IHR5cGVJbmRleCwgdWludDMy
X3QgZmllbGRJbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBXYXNtU3RydWN0U2V0OjplbWl0KHRoaXMsIHN0cnVjdFJlZmVyZW5jZSwgdHlwZUluZGV4
LCBmaWVsZEluZGV4LCB2YWx1ZSk7CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIExMSW50
R2VuZXJhdG9yOjpsaW5rU3dpdGNoVGFyZ2V0cyhMYWJlbCYgbGFiZWwsIHVuc2lnbmVkIGxvY2F0
aW9uKQogewogICAgIGF1dG8gaXQgPSBtX3N3aXRjaGVzLmZpbmQoJmxhYmVsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA2ZmRmMjAxMWQ4
ZjZlMTEzNDdjYTI1Mjk4N2E2ZjJlOWIzZmZkM2YzLi5lNjM2YTU1ZjYxMTQ4MWJlNTg3YjAxMjY2
ZWQ3MTE0YThlY2MwZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9w
ZXJhdGlvbnMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVN0cnVj
dC5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbGVhc2VIZWFwQWNj
ZXNzU2NvcGUuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtODI5LDYg
KzgzMCw0MiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVJlZkZ1bmMs
IEVuY29kZWRKU1ZhbHVlLCAoSW5zdGFuY2UqIGluc3RhbgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2Fz
bVN0cnVjdE5ldywgRW5jb2RlZEpTVmFsdWUsIChJbnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90
IHR5cGVJbmRleCwgdWludDY0X3QqIGFyZ3VtZW50cykpCit7CisgICAgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBqc0luc3RhbmNlID0gaW5zdGFuY2UtPm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZT4oKTsKKyAgICBSZWY8VHlwZURlZmluaXRpb24+IHN0cnVjdFR5cGVEZWZpbml0aW9uID0ganNJ
bnN0YW5jZS0+aW5zdGFuY2UoKS5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnR5cGVTaWdu
YXR1cmVzW3R5cGVJbmRleF07CisgICAgY29uc3QgU3RydWN0VHlwZSYgc3RydWN0VHlwZSA9ICpz
dHJ1Y3RUeXBlRGVmaW5pdGlvbi0+YXM8U3RydWN0VHlwZT4oKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNJbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgRml4ZWRWZWN0b3I8dWludDY0X3Q+IHZhbHVl
cyhzdHJ1Y3RUeXBlLmZpZWxkQ291bnQoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0cnVjdFR5cGUuZmllbGRDb3VudCgpOyArK2kpCisgICAgICAgIHZhbHVlc1tpXSA9IGFyZ3Vt
ZW50c1tpXTsKKworICAgIEpTVmFsdWUgc3RydWN0VmFsdWUgPSBKU1dlYkFzc2VtYmx5U3RydWN0
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVN0cnVj
dFN0cnVjdHVyZSgpLCBXYXNtOjpXYXNtU3RydWN0OjpjcmVhdGUoV1RGTW92ZShzdHJ1Y3RUeXBl
RGVmaW5pdGlvbiksIFdURk1vdmUodmFsdWVzKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc3RydWN0VmFsdWUpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
V2FzbVN0cnVjdEdldCwgRW5jb2RlZEpTVmFsdWUsIChFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Ry
dWN0UmVmZXJlbmNlLCB1aW50MzJfdCBmaWVsZEluZGV4KSkKK3sKKyAgICBhdXRvIHN0cnVjdFJl
ZmVyZW5jZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3RydWN0UmVmZXJlbmNlKTsKKyAgICBB
U1NFUlQoc3RydWN0UmVmZXJlbmNlLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBzdHJ1Y3R1
cmVBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHN0cnVjdFJlZmVyZW5jZSk7CisgICAgQVNT
RVJUKHN0cnVjdHVyZUFzT2JqZWN0LT5pbmhlcml0czxKU1dlYkFzc2VtYmx5U3RydWN0PigpKTsK
KyAgICBKU1dlYkFzc2VtYmx5U3RydWN0KiBzdHJ1Y3RQb2ludGVyID0ganNDYXN0PEpTV2ViQXNz
ZW1ibHlTdHJ1Y3QqPihzdHJ1Y3R1cmVBc09iamVjdCk7CisgICAgcmV0dXJuIHN0cnVjdFBvaW50
ZXItPm5hdGl2ZVN0cnVjdCgpLT5nZXQoZmllbGRJbmRleCk7Cit9CisKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25XYXNtU3RydWN0U2V0LCB2b2lkLCAoRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN0cnVjdFJlZmVyZW5jZSwgdWludDMyX3QgZmllbGRJbmRleCwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpKQoreworICAgIGF1dG8gc3RydWN0UmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdHJ1Y3RSZWZlcmVuY2UpOworICAgIEFTU0VSVChzdHJ1Y3RSZWZlcmVuY2UuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIHN0cnVjdHVyZUFzT2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oc3RydWN0UmVmZXJlbmNlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlQXNPYmplY3QtPmlu
aGVyaXRzPEpTV2ViQXNzZW1ibHlTdHJ1Y3Q+KCkpOworICAgIEpTV2ViQXNzZW1ibHlTdHJ1Y3Qq
IHN0cnVjdFBvaW50ZXIgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseVN0cnVjdCo+KHN0cnVjdHVyZUFz
T2JqZWN0KTsKKyAgICByZXR1cm4gc3RydWN0UG9pbnRlci0+bmF0aXZlU3RydWN0KCktPnNldChm
aWVsZEluZGV4LCB2YWx1ZSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25HZXRXYXNtVGFibGVTaXplLCBpbnQzMl90LCAoSW5zdGFuY2UqIGluc3RhbmNlLCB1bnNpZ25l
ZCB0YWJsZUluZGV4KSkKIHsKICAgICByZXR1cm4gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgp
LT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5o
CmluZGV4IDVjYzAzMTQ4ZWFlZWI5NTUwZmRkN2Q1MTMzOWM4MmY2NjMzMTU3YzYuLjZjMTE5ODZm
Y2YwNDVlZDc2N2EwNmM0ZGVkNzI2ODBjY2E0Yzg0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaApAQCAtODksNiArODksMTAgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NZW1vcnlBdG9taWNOb3RpZnksIGludDMyX3QsIChJbnN0
YW5jZSosIHVuc2kKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbU1lbW9y
eUluaXQsIHNpemVfdCwgKEluc3RhbmNlKiwgdW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCwgdWlu
dDMyX3QgZHN0QWRkcmVzcywgdWludDMyX3Qgc3JjQWRkcmVzcywgdWludDMyX3QgbGVuZ3RoKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21EYXRhRHJvcCwgdm9pZCwg
KEluc3RhbmNlKiwgdW5zaWduZWQgZGF0YVNlZ21lbnRJbmRleCkpOwogCitKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21TdHJ1Y3ROZXcsIEVuY29kZWRKU1ZhbHVlLCAoSW5z
dGFuY2UqLCB1aW50MzJfdCwgdWludDY0X3QqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbldhc21TdHJ1Y3RHZXQsIEVuY29kZWRKU1ZhbHVlLCAoRW5jb2RlZEpTVmFsdWUs
IHVpbnQzMl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21TdHJ1
Y3RTZXQsIHZvaWQsIChFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIEVuY29kZWRKU1ZhbHVlKSk7
CisKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVRocm93LCB2b2lkKiwg
KEluc3RhbmNlKiwgQ2FsbEZyYW1lKiwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIHVpbnQ2NF90
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtUmV0aHJvdywgdm9p
ZCosIChJbnN0YW5jZSosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIHRocm93blZhbHVlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXgg
MWU1NDg4ZTYyNGY0ZmU4MzhlYjFlMDQyMmExMTA0ZmI0NWQ5ZDQ5OC4uZGExMzVmYWEyYTUxNGYy
NDhiZTViN2VhMGQzNDVmNDE3ZmMzYTY5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTMyMiw2ICszMjIsMzggQEAgV0FTTV9TTE9XX1BBVEhf
REVDTChyZWZfZnVuYykKICAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25XYXNtUmVmRnVu
YyhpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvbkluZGV4KSk7CiB9CiAKK1dBU01fU0xP
V19QQVRIX0RFQ0woc3RydWN0X25ldykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21TdHJ1Y3ROZXc+KCk7CisgICAgY29uc3QgYXV0byYgbW9kdWxlSW5mb3JtYXRpb24gPSBp
bnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKTsKKyAgICBBU1NFUlQoaW5zdHJ1
Y3Rpb24ubV90eXBlSW5kZXggPCBtb2R1bGVJbmZvcm1hdGlvbi50eXBlQ291bnQoKSk7CisgICAg
Y29uc3QgYXV0byYgc3RydWN0VHlwZSA9ICptb2R1bGVJbmZvcm1hdGlvbi50eXBlU2lnbmF0dXJl
c1tpbnN0cnVjdGlvbi5tX3R5cGVJbmRleF0tPmFzPFdhc206OlN0cnVjdFR5cGU+KCk7CisKKyAg
ICBGaXhlZFZlY3Rvcjx1aW50NjRfdD4gdmFsdWVzKHN0cnVjdFR5cGUuZmllbGRDb3VudCgpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RydWN0VHlwZS5maWVsZENvdW50KCk7ICsr
aSkKKyAgICAgICAgdmFsdWVzW2ldID0gUkVBRCgoaW5zdHJ1Y3Rpb24ubV9maXJzdFZhbHVlIC0g
aSkpLmVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICBXQVNNX1JFVFVSTihXYXNtOjpvcGVyYXRpb25X
YXNtU3RydWN0TmV3KGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCwgdmFsdWVzLmRh
dGEoKSkpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKHN0cnVjdF9nZXQpCit7CisgICAgVU5V
U0VEX1BBUkFNKGluc3RhbmNlKTsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21T
dHJ1Y3RHZXQ+KCk7CisgICAgYXV0byBzdHJ1Y3RSZWZlcmVuY2UgPSBSRUFEKGluc3RydWN0aW9u
Lm1fc3RydWN0UmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpOworICAgIFdBU01fUkVUVVJOKFdh
c206Om9wZXJhdGlvbldhc21TdHJ1Y3RHZXQoc3RydWN0UmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5t
X2ZpZWxkSW5kZXgpKTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChzdHJ1Y3Rfc2V0KQorewor
ICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5h
czxXYXNtU3RydWN0U2V0PigpOworICAgIGF1dG8gc3RydWN0UmVmZXJlbmNlID0gUkVBRChpbnN0
cnVjdGlvbi5tX3N0cnVjdFJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKTsKKyAgICBhdXRvIHZh
bHVlID0gUkVBRChpbnN0cnVjdGlvbi5tX3ZhbHVlKS5lbmNvZGVkSlNWYWx1ZSgpOworICAgIFdh
c206Om9wZXJhdGlvbldhc21TdHJ1Y3RTZXQoc3RydWN0UmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5t
X2ZpZWxkSW5kZXgsIHZhbHVlKTsKKyAgICBXQVNNX0VORCgpOworfQorCiBXQVNNX1NMT1dfUEFU
SF9ERUNMKHRhYmxlX2dldCkKIHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21U
YWJsZUdldD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApp
bmRleCA4OWY2ZTM5NGQ4NmMyNjc3OWM4MWFhMmUzOGMwMzEwMWE0OGFkNTQwLi5jMjUyZDE4MzNk
NzM5ZjY3OGJmNDg5MzE3YmMwMGYzMDgyMjNhMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC04OSw2ICs4OSw5IEBAIFdBU01fU0xPV19QQVRIX0hJ
RERFTl9ERUNMKG1lbW9yeV9hdG9taWNfbm90aWZ5KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKHRocm93KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHJldGhyb3cpOwogV0FTTV9T
TE9XX1BBVEhfSElEREVOX0RFQ0wocmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbik7CitXQVNN
X1NMT1dfUEFUSF9ISURERU5fREVDTChzdHJ1Y3RfbmV3KTsKK1dBU01fU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHN0cnVjdF9nZXQpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woc3RydWN0X3Nl
dCk7CiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Rocm93
X2V4Y2VwdGlvbihDYWxsRnJhbWUqLCBjb25zdCBXYXNtSW5zdHJ1Y3Rpb24qLCBXYXNtOjpJbnN0
YW5jZSogaW5zdGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpIFJFRkVSRU5DRURfRlJPTV9BU00g
V1RGX0lOVEVSTkFMOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoX3dh
c21fcG9wY291bnQoY29uc3QgV2FzbUluc3RydWN0aW9uKiBwYywgdWludDMyX3QpIFJFRkVSRU5D
RURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVN0cnVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U3RydWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmNkMDhiZjlmZTQ2MDY1MDNjOWE0OWQ5Njk1MDliMDBm
MTM0MjM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVN0cnVjdC5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
YXNtU3RydWN0LmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25hbWVzcGFjZSBKU0M6
Oldhc20geworCitjb25zdGV4cHIgc2l6ZV90IHR5cGVLaW5kU2l6ZShUeXBlS2luZCBraW5kKQor
eworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICBjYXNl
IFR5cGVLaW5kOjpGMzI6IHsKKyAgICAgICAgcmV0dXJuIDMyOworICAgIH0KKyAgICBjYXNlIFR5
cGVLaW5kOjpJNjQ6CisgICAgY2FzZSBUeXBlS2luZDo6RjY0OgorICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOiB7CisgICAgICAgIHJldHVybiA2
NDsKKyAgICB9CisgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICBjYXNlIFR5cGVLaW5kOjpT
dHJ1Y3Q6CisgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKKyAgICBjYXNlIFR5cGVLaW5kOjpJMzFy
ZWY6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworfQorCitzaXplX3QgV2FzbVN0cnVjdDo6c3RydWN0RGF0
YUFsbG9jYXRpb25TaXplKGNvbnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUpCit7CisgICAgc2l6
ZV90IHRvdGFsU2l6ZSA9IDB1OworICAgIGZvciAoU3RydWN0RmllbGRDb3VudCBpID0gMDsgaSA8
IHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKTsgKytpKQorICAgICAgICB0b3RhbFNpemUgKz0gdHlw
ZUtpbmRTaXplKHN0cnVjdFR5cGUtPmZpZWxkKGkpLnR5cGUua2luZCk7CisgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKK30KKworV2FzbVN0cnVjdDo6V2FzbVN0cnVjdChSZWY8VHlwZURlZmluaXRpb24+
JiYgdHlwZSwgRml4ZWRWZWN0b3I8dWludDY0X3Q+JiYgYXJndW1lbnRzKQorICAgIDogbV90eXBl
KFdURk1vdmUodHlwZSkpCit7CisgICAgZm9yICh1bnNpZ25lZCBmaWVsZEluZGV4ID0gMDsgZmll
bGRJbmRleCA8IHN0cnVjdFR5cGUoKS5maWVsZENvdW50KCk7ICsrZmllbGRJbmRleCkKKyAgICAg
ICAgc2V0KGZpZWxkSW5kZXgsIGFyZ3VtZW50c1tmaWVsZEluZGV4XSk7Cit9CisKK3VpbnQ2NF90
IFdhc21TdHJ1Y3Q6OmdldCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdAoreworICAgIEFTU0VS
VChmaWVsZEluZGV4IDwgc3RydWN0VHlwZSgpLmZpZWxkQ291bnQoKSk7CisgICAgY29uc3QgdWlu
dDhfdCogdGFyZ2V0UG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRo
aXMpICsgb2Zmc2V0T2ZUYWlsKCkgKyBnZXRGaWVsZE9mZnNldChmaWVsZEluZGV4KTsKKyAgICB1
aW50NjRfdCBwYXlsb2FkID0gMDsKKyAgICBpZiAodHlwZUtpbmRTaXplKGZpZWxkS2luZChmaWVs
ZEluZGV4KSkgPT0gNjQpCisgICAgICAgIHBheWxvYWQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50NjRfdCo+KHRhcmdldFBvaW50ZXIpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQo
dHlwZUtpbmRTaXplKGZpZWxkS2luZChmaWVsZEluZGV4KSkgPT0gMzIpOworICAgICAgICBwYXls
b2FkID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih0YXJnZXRQb2ludGVyKTsK
KyAgICB9CisgICAgcmV0dXJuIHBheWxvYWQ7Cit9CisKK3NpemVfdCBXYXNtU3RydWN0OjpnZXRG
aWVsZE9mZnNldCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChmaWVs
ZEluZGV4IDwgc3RydWN0VHlwZSgpLmZpZWxkQ291bnQoKSk7CisKKyAgICBzaXplX3QgZmllbGRP
ZmZzZXQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWVsZEluZGV4OyArK2kp
CisgICAgICAgIGZpZWxkT2Zmc2V0ICs9IHR5cGVLaW5kU2l6ZShmaWVsZEtpbmQoaSkpOworICAg
IHJldHVybiBmaWVsZE9mZnNldDsKK30KKwordm9pZCBXYXNtU3RydWN0OjpzZXQodWludDMyX3Qg
ZmllbGRJbmRleCwgdWludDY0X3QgdmFsdWUpCit7CisgICAgdWludDhfdCogdGFyZ2V0UG9pbnRl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgb2Zmc2V0T2ZUYWlsKCkgKyBn
ZXRGaWVsZE9mZnNldChmaWVsZEluZGV4KTsKKyAgICBpZiAodHlwZUtpbmRTaXplKGZpZWxkS2lu
ZChmaWVsZEluZGV4KSkgPT0gMzIpIHsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPih0YXJnZXRQb2ludGVyKSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKHR5cGVLaW5kU2l6ZShmaWVsZEtpbmQoZmll
bGRJbmRleCkpID09IDY0KTsKKyAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KHRhcmdl
dFBvaW50ZXIpID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RydWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiZWFlYTgxNWZlMjQy
NzI0NzkyYTI4NDNlZjNiZGVkYTVhYWUxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJ1Y3QuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIlNsb3RWaXNpdG9yTWFjcm9zLmgi
CisjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgorI2luY2x1ZGUgIldhc21UeXBlRGVmaW5pdGlvbi5o
IgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBXYXNtIHsKKworY2xhc3MgSW5zdGFuY2U7CisKK2NsYXNzIFdhc21TdHJ1Y3QgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2FzbVN0cnVjdD4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdhc21TdHJ1Y3QpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFdh
c21TdHJ1Y3QpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2FzbVN0cnVjdD4gY3JlYXRlKFJl
ZjxUeXBlRGVmaW5pdGlvbj4mJiB0eXBlLCBGaXhlZFZlY3Rvcjx1aW50NjRfdD4mJiBhcmd1bWVu
dHMpCisgICAgeworICAgICAgICBjb25zdCBzaXplX3QgdG90YWxTaXplID0gdG90YWxBbGxvY2F0
aW9uU2l6ZSh0eXBlLT5hczxTdHJ1Y3RUeXBlPigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2ModG90YWxTaXplKSkgV2FzbVN0cnVjdChXVEZNb3Zl
KHR5cGUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90
IHRvdGFsQWxsb2NhdGlvblNpemUoY29uc3QgU3RydWN0VHlwZSogc3RydWN0VHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBvZmZzZXRPZlRhaWwoKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2YodWludDY0X3QpPihzdHJ1Y3REYXRhQWxsb2NhdGlvblNpemUoc3RydWN0VHlwZSkp
OworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZUYWlsKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6
ZW9mKFdhc21TdHJ1Y3QpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IHN0cnVjdERhdGFB
bGxvY2F0aW9uU2l6ZShjb25zdCBTdHJ1Y3RUeXBlKik7CisKKyAgICB1aW50NjRfdCBnZXQodWlu
dDMyX3QpIGNvbnN0OworCisgICAgdm9pZCBzZXQodWludDMyX3QgZmllbGRJbmRleCwgdWludDY0
X3QgdmFsdWUpOworCisgICAgY29uc3QgU3RydWN0VHlwZSYgc3RydWN0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuICptX3R5cGUtPmFzPFN0cnVjdFR5cGU+KCk7IH0KK3ByaXZhdGU6CisgICAgV2FzbVN0
cnVjdChSZWY8VHlwZURlZmluaXRpb24+JiYsIEZpeGVkVmVjdG9yPHVpbnQ2NF90PiYmKTsKKwor
ICAgIFN0cnVjdEZpZWxkIGZpZWxkKHVpbnQzMl90IGZpZWxkSW5kZXgpIGNvbnN0IHsgcmV0dXJu
IHN0cnVjdFR5cGUoKS5maWVsZChmaWVsZEluZGV4KTsgfQorICAgIFR5cGVLaW5kIGZpZWxkS2lu
ZCh1aW50MzJfdCBmaWVsZEluZGV4KSBjb25zdCB7IHJldHVybiBmaWVsZChmaWVsZEluZGV4KS50
eXBlLmtpbmQ7IH0KKworICAgIHNpemVfdCBnZXRGaWVsZE9mZnNldCh1aW50MzJfdCBmaWVsZElu
ZGV4KSBjb25zdDsKKworICAgIFJlZjxUeXBlRGVmaW5pdGlvbj4gbV90eXBlOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5k
ZXggYTBjNzAyYTI0OTBlYTlkMTk1YTVmODdhMjZkNGQ1MjI5NWQ0YzFjOC4uYmQ2MzBmOTI5YTJk
NjkyY2M5MTc2OWNiYTNmYmQxNDU4YWY0MTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIEpTV2ViQXNzZW1ibHk6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Il9zLCAmQmFzZTo6
c19pbmZvLCAmd2ViQXMKICAgTWVtb3J5ICAgICAgICAgIGNyZWF0ZVdlYkFzc2VtYmx5TWVtb3J5
ICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIE1vZHVsZSAgICAgICAgICBjcmVh
dGVXZWJBc3NlbWJseU1vZHVsZSAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBS
dW50aW1lRXJyb3IgICAgY3JlYXRlV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IgIERvbnRFbnVtfFBy
b3BlcnR5Q2FsbGJhY2sKKyAgU3RydWN0ICAgICAgICAgIGNyZWF0ZVdlYkFzc2VtYmx5U3RydWN0
ICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFRhYmxlICAgICAgICAgICBjcmVh
dGVXZWJBc3NlbWJseVRhYmxlICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBU
YWcgICAgICAgICAgICAgY3JlYXRlV2ViQXNzZW1ibHlUYWcgICAgICAgICAgIERvbnRFbnVtfFBy
b3BlcnR5Q2FsbGJhY2sKICAgY29tcGlsZSAgICAgICAgIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMg
ICAgICAgICBGdW5jdGlvbiAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaAppbmRleCA1OGExMThmMTRmOTEyMGVkMDg2MGMxZGI3
NjI3OTZhMjc5YTNjN2ViLi5jMGYxNjNkMjNlN2Y1NjczOTM2MzI5OGU5OWNlMjgzMWU5MGZkNmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTE2NSw2ICsxNjUsOCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgdG9K
U1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdhc206OlR5cGUgdAog
ICAgICAgICByZXR1cm4ganNOdW1iZXIocHVyaWZ5TmFOKGJpdHdpc2VfY2FzdDxkb3VibGU+KGJp
dHMpKSk7CiAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STY0OgogICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihiaXRz
KSk7CisgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6UmVmOgorICAgIGNhc2UgV2FzbTo6VHlwZUtp
bmQ6OlJlZk51bGw6CiAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNh
c2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
SlNWYWx1ZT4oYml0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5U3RydWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlTdHJ1Y3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3Y2YwNjBmY2NlY2M4OTBmNjNi
NmFkZTZlNTA3MzZmMGNjNWRiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5U3RydWN0LmNwcApAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVN0cnVjdC5oIgorCisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIldh
c21Gb3JtYXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYkFz
c2VtYmx5U3RydWN0OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5TdHJ1Y3QiX3MsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXZWJBc3NlbWJs
eVN0cnVjdCkgfTsKKworSlNXZWJBc3NlbWJseVN0cnVjdDo6SlNXZWJBc3NlbWJseVN0cnVjdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJiBuYXRp
dmVTdHJ1Y3QpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3N0cnVjdChXVEZN
b3ZlKG5hdGl2ZVN0cnVjdCkpCit7Cit9CisKK0pTV2ViQXNzZW1ibHlTdHJ1Y3QqIEpTV2ViQXNz
ZW1ibHlTdHJ1Y3Q6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJiBuYXRpdmVTdHJ1
Y3QpCit7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBpZiAoIWdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlFbmFibGVkKCkpIHsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVFdmFsRXJyb3Io
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1lc3Nh
Z2UoKSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvKiBzdHJ1
Y3RWYWx1ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlTdHJ1Y3Q+
KHZtKSkgSlNXZWJBc3NlbWJseVN0cnVjdCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5hdGl2ZVN0
cnVjdCkpOworICAgIHN0cnVjdFZhbHVlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IHN0cnVjdFZhbHVlOworfQorCit2b2lkIEpTV2ViQXNzZW1ibHlTdHJ1Y3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9p
ZCBKU1dlYkFzc2VtYmx5U3RydWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9y
KTsKKworICAgIGF1dG8qIHdhc21TdHJ1Y3QgPSBqc0Nhc3Q8SlNXZWJBc3NlbWJseVN0cnVjdCo+
KGNlbGwpOworICAgIGNvbnN0IGF1dG8mIHN0cnVjdFR5cGUgPSB3YXNtU3RydWN0LT5uYXRpdmVT
dHJ1Y3QoKS0+c3RydWN0VHlwZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHJ1
Y3RUeXBlLmZpZWxkQ291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChpc1JlZlR5cGUoc3RydWN0
VHlwZS5maWVsZChpKS50eXBlKSkKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGJpdHdpc2Vf
Y2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4+KHdhc21TdHJ1Y3QtPm5hdGl2ZVN0cnVjdCgpLT5n
ZXQoaSkpKTsKKyAgICB9Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihKU1dlYkFzc2VtYmx5
U3RydWN0KTsKKwordm9pZCBKU1dlYkFzc2VtYmx5U3RydWN0OjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5U3RydWN0Kj4oY2VsbCktPkpTV2Vi
QXNzZW1ibHlTdHJ1Y3Q6On5KU1dlYkFzc2VtYmx5U3RydWN0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVN0cnVjdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyOGViZGMxNzc4Y2VmMjBmYTI2YTQzMzE5ZGE2ZjM0MmNhODlkY2UKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5U3RydWN0LmgK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIldhc21TdHJ1Y3QuaCIKKyNpbmNsdWRlIDx3
dGYvTWFsbG9jUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSlNXZWJBc3NlbWJseVN0cnVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIEdDQ2xpZW50OjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLndlYkFzc2Vt
Ymx5U3RydWN0U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhGaW5hbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseVN0cnVjdCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgVk0mLCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJik7CisKKyAgICBERUNM
QVJFX1ZJU0lUX0NISUxEUkVOOworCisgICAgV2FzbTo6V2FzbVN0cnVjdCogbmF0aXZlU3RydWN0
KCkgeyByZXR1cm4gbV9zdHJ1Y3QucHRyKCk7IH0KKworcHJvdGVjdGVkOgorICAgIEpTV2ViQXNz
ZW1ibHlTdHJ1Y3QoVk0mLCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6V2FzbVN0cnVjdD4mJik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgUmVmPFdhc206Oldhc21TdHJ1Y3Q+
IG1fc3RydWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDBm
MGQ5ZjAwNDQyZjgzYjc5YTExNDFiNTU0YTRmNDBmYzgwMGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9y
LmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5U3Ry
dWN0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUg
Ikl0ZXJhdG9yT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlTdHJ1Y3Qu
aCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiJfcywgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eVN0cnVjdCwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVN0cnVjdENv
bnN0cnVjdG9yKSB9OworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5U3RydWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGNhbGxKU1dlYkFzc2VtYmx5U3RydWN0KTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVN0
cnVjdENvbnN0cnVjdG9yLmx1dC5oCisgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eVN0cnVjdAorIEBlbmQKKyAqLworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0
SlNXZWJBc3NlbWJseVN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2ViQXNzZW1ibHkuU3RydWN0IGlzIG5vdCBhY2Nlc3Np
YmxlIGZyb20gSlMiX3MpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dl
YkFzc2VtYmx5U3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseS5TdHJ1Y3QgaXMg
bm90IGFjY2Vzc2libGUgZnJvbSBKUyJfcykpOworfQorCitXZWJBc3NlbWJseVN0cnVjdENvbnN0
cnVjdG9yKiBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUqIHRoaXNQcm90b3R5
cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yPih2bSkpIFdlYkFzc2VtYmx5U3RydWN0Q29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCB0aGlzUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVj
dHVyZSogV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
K30KKwordm9pZCBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJTdHJ1Y3QiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKK1dlYkFzc2VtYmx5U3RydWN0Q29uc3Ry
dWN0b3I6OldlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEpTV2ViQXNzZW1ibHlTdHJ1
Y3QsIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlTdHJ1Y3QpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0ZGRlMGYyNzllOTA3MWY0NTU3MzljNTUxOWU0M2E5YjhjYTg4YTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVN0cnVjdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseVN0cnVj
dFByb3RvdHlwZTsKKworY2xhc3MgV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFdlYkFzc2VtYmx5U3RydWN0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseVN0cnVjdENvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFdlYkFz
c2VtYmx5U3RydWN0UHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoV2ViQXNzZW1ibHlTdHJ1Y3RDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1
Y3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlTdHJ1Y3RQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwN2U4OTU2ODc1ZDVjMWJkOTEyYmRl
YWNkZTZmNmExOWExMDJiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZS5oIgorCisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVN0
cnVjdC5oIgorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlTdHJ1Y3RQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LlN0cnVjdCJfcywgJkJhc2U6OnNfaW5mbywg
JnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlTdHJ1Y3QsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgV2Vi
QXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUubHV0LmgKKyBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJB
c3NlbWJseVN0cnVjdAorIEBlbmQKKyAqLworCitXZWJBc3NlbWJseVN0cnVjdFByb3RvdHlwZSog
V2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGU+KHZtKSkgV2ViQXNz
ZW1ibHlTdHJ1Y3RQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBXZWJBc3Nl
bWJseVN0cnVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5U3Ry
dWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworV2ViQXNzZW1ibHlTdHJ1Y3RQ
cm90b3R5cGU6OldlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYThiMmVmMjJlMDdiZjNkZTc5NjEwY2FlNjFmMDJiNTFiOWViYWI2Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5U3RydWN0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJs
eVN0cnVjdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBHQ0NsaWVudDo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5U3RydWN0UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CisgICAgfQorCisgICAgc3RhdGljIFdlYkFzc2VtYmx5
U3RydWN0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgV2Vi
QXNzZW1ibHlTdHJ1Y3RQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCBk
ZTJmNTNhZDhlNTg5N2Q3ZGEzNmIxZTdlZDg3ZGU4MWQ5NTA1YTliLi5kNmViMWE2N2ViY2UzYzIz
NmZkNjE5MTRlYmNjNTUzMjkxYjk0MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5q
c29uCkBAIC03OCw2ICs3OCw5IEBACiAgICAgICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiZXh0ZXJu
cmVmIiwgImZ1bmNyZWYiXSwgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJyZWZ0eXBlIiwgICAgICAgICJ0
eXBlIjogInJlZl90eXBlIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKICAg
ICAgICAgInJlZi5pc19udWxsIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImV4dGVybnJlZiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJk
ZXRlcm1pbmUgaWYgYSByZWZlcmVuY2UgaXMgbnVsbCIgfSwKICAgICAgICAgInJlZi5mdW5jIjog
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0
dXJuIjogWyJmdW5jcmVmIl0sICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0
aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZXR1cm4gYSByZWZlcmVuY2Ug
dG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBpbmRleCIgfSwKKyAgICAgICAgInN0cnVjdC5u
ZXciOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAgICAgICAgInZhbHVlIjogMjUxLCAi
cmV0dXJuIjogWyJyZWZfdHlwZSJdLCAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5
cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhbGxvY2F0ZXMgYSBuZXcg
c3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA3IH0sCisgICAgICAgICJzdHJ1Y3QuZ2V0IjogICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAiZ2MiLCAgICAgICAgICJ2YWx1ZSI6IDI1MSwgInJldHVybiI6
IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4
IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAiZmllbGRfaW5kZXgiLCJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAicmVhZHMgdGhlIGZpZWxkIGZyb20gYSBz
dHJ1Y3R1cmUiLCAiZXh0ZW5kZWRPcCI6IDMgfSwKKyAgICAgICAgInN0cnVjdC5zZXQiOiAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAgICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjog
WyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbInJlZl90eXBl
Il0sICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgi
LCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJmaWVsZF9pbmRleCIsInR5cGUi
OiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJzZXRzIHRoZSBmaWVsZCBmcm9tIGEgc3Ry
dWN0dXJlIiwgImV4dGVuZGVkT3AiOiA2IH0sCiAgICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsi
YW55Il0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIs
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBh
cmFtZXRlciIgfSwKICAgICAgICAgInNldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMzLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAg
ICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3
cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZh
bHVlIiB9LApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2djL3N0cnVjdHMuanMgYi9KU1Rlc3Rz
L3dhc20vZ2Mvc3RydWN0cy5qcwppbmRleCA1OGVhMGM4MjJmOGM1MzRiM2VlZTE5ZGJhOTQ2Y2Y3
NmIyZjc2MTE0Li5kOTNkOTI2ZDE5NjEwNDFiZWIzZDY2MmZhOGIxYTBlN2Y3MTAwNzE2IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vZ2Mvc3RydWN0cy5qcworKysgYi9KU1Rlc3RzL3dhc20vZ2Mv
c3RydWN0cy5qcwpAQCAtODAsNCArODAsNjE1IEBAIGZ1bmN0aW9uIHRlc3RTdHJ1Y3REZWNsYXJh
dGlvbigpIHsKICAgKTsKIH0KIAorZnVuY3Rpb24gdGVzdFN0cnVjdE5ldygpIHsKKyAgeworICAg
IC8qCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJEVtcHR5IChzdHJ1Y3QpKQorICAg
ICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpCisgICAgICogICAgIChkcm9wCisgICAgICogICAg
ICAgKHN0cnVjdC5uZXcgJEVtcHR5KQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICog
KQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1v
ZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNlx4MDJceDYwXHgw
MFx4MDBceDVmXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5
XHg2ZVx4MDBceDAwXHgwYVx4MDhceDAxXHgwNlx4MDBceGZiXHgwN1x4MDFceDFhXHgwYiIpKTsK
KyAgICBpbnN0YW5jZS5leHBvcnRzLm1haW4oKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAq
IChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChm
aWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChmdW5jIChleHBvcnQgIm1haW4iKQorICAgICAqICAg
ICAoZHJvcAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5KSAo
aTMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAq
LworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAwXHg1
Zlx4MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA4XHgwMVx4MDRceDZk
XHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgwMFx4NDFceDEzXHg0MVx4MjVc
eGZiXHgwN1x4MDFceDFhXHgwYiIpKTsKKyAgICBpbnN0YW5jZS5leHBvcnRzLm1haW4oKTsKKwor
ICAgIC8qCisgICAgICogaW52YWxpZCB0eXBlIGluZGV4IGZvciBzdHJ1Y3QubmV3CisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGkzMikgKGZp
ZWxkICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpCisgICAgICogICAg
IChkcm9wCisgICAgICogICAgICAgKHN0cnVjdC5uZXcgKGkzMi5jb25zdCAxOSkgKGkzMi5jb25z
dCAzNykpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBh
c3NlcnQudGhyb3dzKAorICAgICAgKCkgPT4KKyAgICAgICAgbW9kdWxlKAorICAgICAgICAgICJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAwXHgwMFx4
NWZceDAyXHg3Zlx4MDBceDdmXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3XHgwOFx4MDFceDA0XHg2
ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4MGNceDAxXHgwYVx4MDBceDQxXHgxM1x4NDFceDI1
XHhmYlx4MDdceDAzXHgxYVx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21w
aWxlRXJyb3IsCisgICAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6IHN0
cnVjdC5uZXcgdHlwZSBpbmRleCAzIGlzIG91dCBvZiBib3VuZCwgaW4gZnVuY3Rpb24gYXQgaW5k
ZXggMCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiCisgICAg
KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQ
b2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChm
dW5jIChleHBvcnQgIm1haW4iKQorICAgICAqICAgICB1bnJlYWNoYWJsZQorICAgICAqICAgICBz
dHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5KSAoaTMyLmNvbnN0IDM3KQorICAgICAqICAg
KQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFc
eDAyXHg2MFx4MDBceDAwXHg1Zlx4MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4
MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgw
MFx4MDBceDQxXHgxM1x4NDFceDI1XHhmYlx4MDdceDAxXHgwYiIpKTsKKworICAgIC8qCisgICAg
ICogaW52YWxpZCB0eXBlIGluZGV4IGZvciBzdHJ1Y3QubmV3IGluIHVucmVhY2hhYmxlIGNvbnRl
eHQKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQg
JHggaTMyKSAoZmllbGQgJHkgaTMyKSkpCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikK
KyAgICAgKiAgICAgdW5yZWFjaGFibGUKKyAgICAgKiAgICAgc3RydWN0Lm5ldyAoaTMyLmNvbnN0
IDE5KSAoaTMyLmNvbnN0IDM3KQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGFz
c2VydC50aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisgICAgICAgICAgIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAwXHg1
Zlx4MDJceDdmXHgwMFx4N2ZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA4XHgwMVx4MDRceDZk
XHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwY1x4MDFceDBhXHgwMFx4MDBceDQxXHgxM1x4NDFc
eDI1XHhmYlx4MDdceDAyXHgwYiIKKyAgICAgICAgKSwKKyAgICAgIFdlYkFzc2VtYmx5LkNvbXBp
bGVFcnJvciwKKyAgICAgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRl
IDk6IHN0cnVjdC5uZXcgdHlwZSBpbmRleCAyIGlzIG91dCBvZiBib3VuZCBpbiB1bnJlYWNoYWJs
ZSBjb250ZXh0LCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgICApOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RT
dHJ1Y3RHZXQoKSB7CisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMikKKyAgICAgKgorICAg
ICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIp
KSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICog
ICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBv
aW50IChpMzIuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiAp
CisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5XHgwMlx4NWZceDAx
XHg3Zlx4MDBceDYwXHgwMFx4MDFceDdmXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRc
eDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgwZFx4MDFceDBiXHgwMFx4NDFceDI1XHhmYlx4
MDdceDAwXHhmYlx4MDNceDAwXHgwMFx4MGIiKSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMubWFpbigpLCAzNyk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiBQb2ludChmMzIp
CisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlwZSAkUG9pbnQgKHN0cnVjdCAo
ZmllbGQgJHggZjMyKSkpCisgICAgICogICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQg
ZjMyKQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgIChz
dHJ1Y3QubmV3ICRQb2ludCAoZjMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgICkKKyAgICAgKiAg
ICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgw
OVx4MDJceDVmXHgwMVx4N2RceDAwXHg2MFx4MDBceDAxXHg3ZFx4MDNceDAyXHgwMVx4MDFceDA3
XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4MTBceDAxXHgwZVx4MDBc
eDQzXHgwMFx4MDBceDE0XHg0Mlx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOwor
ICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMzcpOworICB9CisKKyAgewor
ICAgIC8qCisgICAgICogUG9pbnQoaTY0KQorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAq
ICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGk2NCkpKQorICAgICAqICAgKGZ1bmMg
KGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAqICAgICAoaTY0LmVxCisgICAgICog
ICAgICAgKGk2NC5jb25zdCAzNykKKyAgICAgKiAgICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgK
KyAgICAgKiAgICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTY0LmNvbnN0IDM3KSkKKyAgICAg
KiAgICAgICApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAg
ICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5XHgwMlx4NWZceDAxXHg3ZVx4MDBceDYw
XHgwMFx4MDFceDdmXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4Njlc
eDZlXHgwMFx4MDBceDBhXHgxMFx4MDFceDBlXHgwMFx4NDJceDI1XHg0Mlx4MjVceGZiXHgwN1x4
MDBceGZiXHgwM1x4MDBceDAwXHg1MVx4MGIiKSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMubWFpbigpLCAxKTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGY2NCkK
KyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChm
aWVsZCAkeCBmNjQpKSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBm
NjQpCisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0
cnVjdC5uZXcgJFBvaW50IChmNjQuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAg
ICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA5
XHgwMlx4NWZceDAxXHg3Y1x4MDBceDYwXHgwMFx4MDFceDdjXHgwM1x4MDJceDAxXHgwMVx4MDdc
eDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgxNFx4MDFceDEyXHgwMFx4
NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDQyXHg0MFx4ZmJceDA3XHgwMFx4ZmJceDAzXHgw
MFx4MDBceDBiIikpOworICAgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMzcp
OworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoZXh0ZXJucmVmKQorICAgICAqCisg
ICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGV4
dGVybnJlZikpKQorICAgICAqICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocGFyYW0gJG9iaiBl
eHRlcm5yZWYpIChyZXN1bHQgZXh0ZXJucmVmKQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBv
aW50ICR4CisgICAgICogICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAobG9jYWwuZ2V0ICRvYmop
KQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQg
aW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NWZceDAxXHg2Zlx4MDBceDYwXHgwMVx4
NmZceDAxXHg2Zlx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2
ZVx4MDBceDAwXHgwYVx4MGRceDAxXHgwYlx4MDBceDIwXHgwMFx4ZmJceDA3XHgwMFx4ZmJceDAz
XHgwMFx4MDBceDBiIikpOworICAgIGxldCBvYmogPSB7fTsKKyAgICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy5tYWluKG9iaiksIG9iaik7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiAo
bW9kdWxlCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBm
NjQpIChsb2NhbC5nZXQgMCkpCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlMSA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4MDZceDAxXHg2MFx4MDFceDdjXHgwMVx4N2NceDAzXHgwMlx4MDFceDAw
XHgwN1x4MDVceDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA2XHgwMVx4MDRceDAwXHgyMFx4MDBc
eDBiIikpOworCisgICAgLyoKKyAgICAgKiBQb2ludChmdW5jcmVmKQorICAgICAqCisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IGZ1bmNyZWYp
KSkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHBhcmFtICRwIGZ1bmNyZWYpIChy
ZXN1bHQgZnVuY3JlZikKKyAgICAgKiAgICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAq
ICAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGxvY2FsLmdldCAkcCkpCisgICAgICogICAgICAp
CisgICAgICogICAgKQorICAgICAqICkKKyAgICAqLworICAgIGxldCBpbnN0YW5jZTIgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDBhXHgwMlx4NWZceDAxXHg3MFx4MDBceDYwXHgwMVx4NzBceDAxXHg3MFx4MDNc
eDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAwXHgwYVx4
MGRceDAxXHgwYlx4MDBceDIwXHgwMFx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikp
OworICAgIGxldCBmb28gPSBpbnN0YW5jZTEuZXhwb3J0cy5mOworICAgIGFzc2VydC5lcShpbnN0
YW5jZTIuZXhwb3J0cy5tYWluKGZvbyksIGZvbyk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAg
KiBQb2ludChpMzIsIGkzMikKKyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBl
ICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAg
ICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICogICAgICAoc3RydWN0
LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29u
c3QgMTkpIChpMzIuY29uc3QgMzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAg
KiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NWZc
eDAyXHg3Zlx4MDBceDdmXHgwMFx4NjBceDAwXHgwMVx4N2ZceDAzXHgwMlx4MDFceDAxXHgwN1x4
MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDBmXHgwMVx4MGRceDAwXHg0
MVx4MTNceDQxXHgyNVx4ZmJceDA3XHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOworICAgIGFz
c2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMTkpOworICB9CisKKyAgeworICAgIC8q
CisgICAgICogUG9pbnQoZjMyLCBmMzIpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICog
ICAodHlwZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggZjMyKSAoZmllbGQgJHkgZjMyKSkpCisg
ICAgICogICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgZjMyKQorICAgICAqICAgICAg
KHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAo
ZjMyLmNvbnN0IDE5KSAoZjMyLmNvbnN0IDM3KSkKKyAgICAgKiAgICAgICkKKyAgICAgKiAgICAp
CisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4
MDJceDVmXHgwMlx4N2RceDAwXHg3ZFx4MDBceDYwXHgwMFx4MDFceDdkXHgwM1x4MDJceDAxXHgw
MVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBceDBhXHgxNVx4MDFceDEz
XHgwMFx4NDNceDAwXHgwMFx4OThceDQxXHg0M1x4MDBceDAwXHgxNFx4NDJceGZiXHgwN1x4MDBc
eGZiXHgwM1x4MDBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDE5KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMiwgZjY0KQor
ICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZp
ZWxkICR4IGkzMikgKGZpZWxkICR5IGY2NCkpKQorICAgICAqICAgIChmdW5jIChleHBvcnQgImdl
dF94IikgKHJlc3VsdCBpMzIpCisgICAgICogICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAg
ICAgKiAgICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChpMzIuY29uc3QgMTkpIChmNjQuY29uc3Qg
MzcpKQorICAgICAqICAgICAgKQorICAgICAqICAgICkKKyAgICAgKiAgICAoZnVuYyAoZXhwb3J0
ICJnZXRfeSIpIChyZXN1bHQgZjY0KQorICAgICAqICAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR5
CisgICAgICogICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDE5KSAoZjY0LmNv
bnN0IDM3KSkKKyAgICAgKiAgICAgICkKKyAgICAgKiAgICApCisgICAgICogKQorICAgICovCisg
ICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDNceDVmXHgwMlx4N2ZceDAwXHg3
Y1x4MDBceDYwXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Y1x4MDNceDAzXHgwMlx4MDFceDAy
XHgwN1x4MTFceDAyXHgwNVx4NjdceDY1XHg3NFx4NWZceDc4XHgwMFx4MDBceDA1XHg2N1x4NjVc
eDc0XHg1Zlx4NzlceDAwXHgwMVx4MGFceDJiXHgwMlx4MTRceDAwXHg0MVx4MTNceDQ0XHgwMFx4
MDBceDAwXHgwMFx4MDBceDgwXHg0Mlx4NDBceGZiXHgwN1x4MDBceGZiXHgwM1x4MDBceDAwXHgw
Ylx4MTRceDAwXHg0MVx4MTNceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDgwXHg0Mlx4NDBceGZi
XHgwN1x4MDBceGZiXHgwM1x4MDBceDAxXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2Uu
ZXhwb3J0cy5nZXRfeCgpLCAxOSk7CisgICAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0
X3koKSwgMzcpOworICB9CisKKyAgeworICAgIC8vIHVucmVhY2hhYmxlIGNvbnRleHQKKworICAg
IC8qCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxk
ICR4IGkzMikgKGZpZWxkICR5IGkzMikpKQorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIp
IChyZXN1bHQgaTMyKQorICAgICAqICAgICB1bnJlYWNoYWJsZQorICAgICAqICAgICAoc3RydWN0
LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGkzMi5jb25z
dCAxOSkgKGkzMi5jb25zdCAzNykpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiAp
CisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NWZceDAy
XHg3Zlx4MDBceDdmXHgwMFx4NjBceDAwXHgwMVx4N2ZceDAzXHgwMlx4MDFceDAxXHgwN1x4MDhc
eDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMFx4MGFceDEwXHgwMVx4MGVceDAwXHgwMFx4
NDFceDEzXHg0MVx4MjVceGZiXHgwN1x4MDBceGZiXHgwM1x4MDBceDAwXHgwYiIpKTsKKworICAg
IC8qCisgICAgICogaW52YWxpZCB0eXBlIGluZGV4IGZvciBzdHJ1Y3QuZ2V0IGluIHVucmVhY2hh
YmxlIGNvbnRleHQKKyAgICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2lu
dCAoc3RydWN0IChmaWVsZCAkeCBpMzIpIChmaWVsZCAkeSBpMzIpKSkKKyAgICAgKiAgIChmdW5j
IChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgdW5yZWFjaGFibGUKKyAg
ICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKHN0cnVjdC5uZXcg
JFBvaW50IChpMzIuY29uc3QgMTkpIChpMzIuY29uc3QgMzcpKQorICAgICAqICAgICApCisgICAg
ICogICApCisgICAgICogKQorICAgICovCisgICAgYXNzZXJ0LnRocm93cygKKyAgICAgICgpID0+
CisgICAgICAgIG1vZHVsZSgKKyAgICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHgwYlx4MDJceDVmXHgwMlx4N2ZceDAwXHg3Zlx4MDBceDYwXHgwMFx4MDFceDdm
XHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDBc
eDBhXHgxMFx4MDFceDBlXHgwMFx4MDBceDQxXHgxM1x4NDFceDI1XHhmYlx4MDdceDAwXHhmYlx4
MDNceDAzXHgwMFx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJy
b3IsCisgICAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxMjog
LCBpbiBmdW5jdGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKGJ1ZmZlciknKSIKKyAgICApOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHJ1Y3RTZXQo
KSB7CisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMikKKyAgICAgKgorICAgICAqIChtb2R1
bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCAobXV0IGkzMikpKSkK
KyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHJlc3VsdCBp
MzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2Nh
bC5nZXQgJHApCisgICAgICogICAgICAgKGkzMi5jb25zdCAzNykKKyAgICAgKiAgICAgKQorICAg
ICAqICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRw
KQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAgKiAgIChmdW5jIChleHBv
cnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKGNhbGwgJGRvVGVzdAorICAgICAq
ICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTMyLmNvbnN0IDApKQorICAgICAqICAgICApCisg
ICAgICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHgwZlx4MDNceDVmXHgwMVx4N2ZceDAxXHg2MFx4MDFceDZiXHgwMFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3Zlx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2
OVx4NmVceDAwXHgwMVx4MGFceDFjXHgwMlx4MTBceDAwXHgyMFx4MDBceDQxXHgyNVx4ZmJceDA2
XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgwOVx4MDBceDQxXHgwMFx4ZmJc
eDA3XHgwMFx4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDM3KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGYzMikKKyAgICAg
KgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAk
eCAobXV0IGYzMikpKSkKKyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYgJFBv
aW50KSkgKHJlc3VsdCBmMzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAg
ICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGYzMi5jb25zdCAzNykKKyAg
ICAgKiAgICAgKQorICAgICAqICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAg
ICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAg
KiAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGYzMikKKyAgICAgKiAgICAgKGNhbGwg
JGRvVGVzdAorICAgICAqICAgICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoZjMyLmNvbnN0IDApKQor
ICAgICAqICAgICApCisgICAgICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3Rh
bmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwZlx4MDNceDVmXHgwMVx4N2RceDAxXHg2MFx4MDFceDZiXHgw
MFx4MDFceDdkXHg2MFx4MDBceDAxXHg3ZFx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAx
XHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDIyXHgwMlx4MTNceDAwXHgyMFx4MDBc
eDQzXHgwMFx4MDBceDE0XHg0Mlx4ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4
MDBceDBiXHgwY1x4MDBceDQzXHgwMFx4MDBceDAwXHgwMFx4ZmJceDA3XHgwMFx4MTBceDAwXHgw
YiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDM3KTsKKyAgfQor
CisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGk2NCkKKyAgICAgKgorICAgICAqIChtb2R1bGUK
KyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVsZCAkeCAobXV0IGk2NCkpKSkKKyAg
ICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHJlc3VsdCBpNjQp
CisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5n
ZXQgJHApCisgICAgICogICAgICAgKGk2NC5jb25zdCAzNykKKyAgICAgKiAgICAgKQorICAgICAq
ICAgICAoc3RydWN0LmdldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQor
ICAgICAqICAgICApCisgICAgICogICApCisgICAgICoKKyAgICAgKiAgIChmdW5jIChleHBvcnQg
Im1haW4iKSAocmVzdWx0IGk2NCkKKyAgICAgKiAgICAgKGNhbGwgJGRvVGVzdAorICAgICAqICAg
ICAgIChzdHJ1Y3QubmV3ICRQb2ludCAoaTY0LmNvbnN0IDApKQorICAgICAqICAgICApCisgICAg
ICogICApCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHgwZlx4MDNceDVmXHgwMVx4N2VceDAxXHg2MFx4MDFceDZiXHgwMFx4MDFceDdlXHg2MFx4MDBc
eDAxXHg3ZVx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4
NmVceDAwXHgwMVx4MGFceDFjXHgwMlx4MTBceDAwXHgyMFx4MDBceDQyXHgyNVx4ZmJceDA2XHgw
MFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgwOVx4MDBceDQyXHgwMFx4ZmJceDA3
XHgwMFx4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWlu
KCkgPT0gMzcsIHRydWUpOworICB9CisKKyAgeworICAgIC8qCisgICAgICogUG9pbnQoZjY0KQor
ICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZp
ZWxkICR4IChtdXQgZjY0KSkpKQorICAgICAqICAgKGZ1bmMgJGRvVGVzdCAocGFyYW0gJHAgKHJl
ZiAkUG9pbnQpKSAocmVzdWx0IGY2NCkKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4
CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAoZjY0LmNvbnN0IDM3
KQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAorICAgICAq
ICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKgor
ICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgZjY0KQorICAgICAqICAgICAo
Y2FsbCAkZG9UZXN0CisgICAgICogICAgICAgKHN0cnVjdC5uZXcgJFBvaW50IChmNjQuY29uc3Qg
MCkpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQg
aW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBmXHgwM1x4NWZceDAxXHg3Y1x4MDFceDYwXHgwMVx4
NmJceDAwXHgwMVx4N2NceDYwXHgwMFx4MDFceDdjXHgwM1x4MDNceDAyXHgwMVx4MDJceDA3XHgw
OFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MmFceDAyXHgxN1x4MDBceDIw
XHgwMFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDQyXHg0MFx4ZmJceDA2XHgwMFx4MDBc
eDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiXHgxMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceGZiXHgwN1x4MDBceDEwXHgwMFx4MGIiKSk7CisgICAgYXNzZXJ0LmVx
KGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAzNyk7CisgIH0KKworICB7CisgICAgLyoKKyAgICAg
KiBQb2ludChleHRlcm5yZWYpCisgICAgICoKKyAgICAgKiAobW9kdWxlCisgICAgICogICAodHlw
ZSAkUG9pbnQgKHN0cnVjdCAoZmllbGQgJHggKG11dCBleHRlcm5yZWYpKSkpCisgICAgICogICAo
ZnVuYyAkZG9TZXQgKHBhcmFtICRwIChyZWYgJFBvaW50KSkgKHBhcmFtICRvYmogZXh0ZXJucmVm
KSAocmVzdWx0IGV4dGVybnJlZikKKyAgICAgKiAgICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4Cisg
ICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRvYmop
CisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICog
ICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqCisg
ICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHBhcmFtICRvYmogZXh0ZXJucmVmKSAocmVz
dWx0IGV4dGVybnJlZikKKyAgICAgKiAgICAgKGNhbGwgJGRvU2V0CisgICAgICogICAgICAgKHN0
cnVjdC5uZXcgJFBvaW50IChyZWYubnVsbCBleHRlcm4pKQorICAgICAqICAgICAgIChsb2NhbC5n
ZXQgJG9iaikKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAg
IGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MTFceDAzXHg1Zlx4MDFceDZmXHgwMVx4NjBc
eDAyXHg2Ylx4MDBceDZmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg2Zlx4MDNceDAzXHgwMlx4
MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDFlXHgw
Mlx4MTBceDAwXHgyMFx4MDBceDIwXHgwMVx4ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAz
XHgwMFx4MDBceDBiXHgwYlx4MDBceGQwXHg2Zlx4ZmJceDA3XHgwMFx4MjBceDAwXHgxMFx4MDBc
eDBiIikpOworICAgIGxldCBvYmogPSB7fTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0
cy5tYWluKG9iaiksIG9iaik7CisgIH0KKworICB7CisgICAgLyoKKyAgICAgKiAobW9kdWxlCisg
ICAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpIChsb2Nh
bC5nZXQgMCkpCisgICAgICogKQorICAgICovCisgICAgbGV0IGluc3RhbmNlMSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4MDZceDAxXHg2MFx4MDFceDdjXHgwMVx4N2NceDAzXHgwMlx4MDFceDAwXHgwN1x4MDVc
eDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA2XHgwMVx4MDRceDAwXHgyMFx4MDBceDBiIikpOwor
CisgICAgLyoKKyAgICAgKiBQb2ludChmdW5jcmVmKQorICAgICAqCisgICAgICogKG1vZHVsZQor
ICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgZnVuY3JlZikpKSkK
KyAgICAgKiAgIChmdW5jICRkb1NldCAocGFyYW0gJHAgKHJlZiAkUG9pbnQpKSAocGFyYW0gJG9i
aiBmdW5jcmVmKSAocmVzdWx0IGZ1bmNyZWYpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQb2lu
dCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGxvY2FsLmdl
dCAkb2JqKQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAkeAor
ICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAg
ICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChwYXJhbSAkb2JqIGZ1bmNyZWYp
IChyZXN1bHQgZnVuY3JlZikKKyAgICAgKiAgICAgKGNhbGwgJGRvU2V0CisgICAgICogICAgICAg
KHN0cnVjdC5uZXcgJFBvaW50IChyZWYubnVsbCBmdW5jKSkKKyAgICAgKiAgICAgICAobG9jYWwu
Z2V0ICRvYmopCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAg
ICBsZXQgaW5zdGFuY2UyID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgxMVx4MDNceDVmXHgwMVx4NzBceDAxXHg2
MFx4MDJceDZiXHgwMFx4NzBceDAxXHg3MFx4NjBceDAxXHg3MFx4MDFceDcwXHgwM1x4MDNceDAy
XHgwMVx4MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MWVc
eDAyXHgxMFx4MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4
MDNceDAwXHgwMFx4MGJceDBiXHgwMFx4ZDBceDcwXHhmYlx4MDdceDAwXHgyMFx4MDBceDEwXHgw
MFx4MGIiKSk7CisgICAgbGV0IGZvbyA9IGluc3RhbmNlMS5leHBvcnRzLmY7CisgICAgYXNzZXJ0
LmVxKGluc3RhbmNlMi5leHBvcnRzLm1haW4oZm9vKSwgZm9vKTsKKyAgfQorCisgIHsKKyAgICAv
KgorICAgICAqIFBvaW50KGkzMiwgaTMyKQorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAq
ICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMyKSkgKGZpZWxkICR5ICht
dXQgaTMyKSkpKQorICAgICAqICAgKGZ1bmMgJGRvU2V0IChwYXJhbSAkcCAocmVmICRQb2ludCkp
IChwYXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICogICAgIChzdHJ1Y3Quc2V0ICRQ
b2ludCAkeQorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICAgKGxvY2Fs
LmdldCAkdmFsKQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1Y3QuZ2V0ICRQb2ludCAk
eQorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAgICkKKyAgICAgKiAgICkK
KyAgICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAg
ICAqICAgICAoY2FsbCAkZG9TZXQKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9pbnQgKGkz
Mi5jb25zdCAwKSAoaTMyLmNvbnN0IDApKQorICAgICAqICAgICAgIChpMzIuY29uc3QgMTkpCisg
ICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFu
Y2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceDEyXHgwM1x4NWZceDAyXHg3Zlx4MDFceDdmXHgwMVx4NjBceDAy
XHg2Ylx4MDBceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwM1x4MDNceDAyXHgwMVx4MDJc
eDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwYVx4MjBceDAyXHgxMFx4
MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMVx4MjBceDAwXHhmYlx4MDNceDAwXHgw
MVx4MGJceDBkXHgwMFx4NDFceDAwXHg0MVx4MDBceGZiXHgwN1x4MDBceDQxXHgxM1x4MTBceDAw
XHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDE5KTsKKyAg
fQorCisgIHsKKyAgICAvKgorICAgICAqIFBvaW50KGkzMiwgaTY0KQorICAgICAqCisgICAgICog
KG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMy
KSkgKGZpZWxkICR5IChtdXQgaTY0KSkpKQorICAgICAqICAgKGZ1bmMgJGRvU2V0IChwYXJhbSAk
cCAocmVmICRQb2ludCkpIChwYXJhbSAkdmFsIGkzMikgKHJlc3VsdCBpMzIpCisgICAgICogICAg
IChzdHJ1Y3Quc2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAg
ICogICAgICAgKGxvY2FsLmdldCAkdmFsKQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1
Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAg
ICkKKyAgICAgKiAgICkKKyAgICAgKgorICAgICAqICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChy
ZXN1bHQgaTMyKQorICAgICAqICAgICAoY2FsbCAkZG9TZXQKKyAgICAgKiAgICAgICAoc3RydWN0
Lm5ldyAkUG9pbnQgKGkzMi5jb25zdCAwKSAoaTY0LmNvbnN0IDApKQorICAgICAqICAgICAgIChp
MzIuY29uc3QgMTkpCisgICAgICogICAgICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8K
KyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDEyXHgwM1x4NWZceDAyXHg3Zlx4MDFc
eDdlXHgwMVx4NjBceDAyXHg2Ylx4MDBceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwM1x4
MDNceDAyXHgwMVx4MDJceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgw
YVx4MjBceDAyXHgxMFx4MDBceDIwXHgwMFx4MjBceDAxXHhmYlx4MDZceDAwXHgwMFx4MjBceDAw
XHhmYlx4MDNceDAwXHgwMFx4MGJceDBkXHgwMFx4NDFceDAwXHg0Mlx4MDBceGZiXHgwN1x4MDBc
eDQxXHgxM1x4MTBceDAwXHgwYiIpKTsKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDE5KTsKKyAgfQorCisgIHsKKyAgICAvKgorICAgICAqIHRyeWluZyB0byBzZXQgYSBu
b24tbXV0YWJsZSBmaWVsZAorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUg
JFBvaW50IChzdHJ1Y3QgKGZpZWxkICR4IChpMzIpKSkpCisgICAgICogICAoZnVuYyAkZG9UZXN0
IChwYXJhbSAkcCAocmVmICRQb2ludCkpIChyZXN1bHQgaTMyKQorICAgICAqICAgICAoc3RydWN0
LnNldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwuZ2V0ICRwKQorICAgICAqICAgICAg
IChpMzIuY29uc3QgMzcpCisgICAgICogICAgICkKKyAgICAgKiAgICAgKHN0cnVjdC5nZXQgJFBv
aW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAgICAgKiAgICAgKQorICAgICAq
ICAgKQorICAgICAqCisgICAgICogICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIp
CisgICAgICogICAgIChjYWxsICRkb1Rlc3QKKyAgICAgKiAgICAgICAoc3RydWN0Lm5ldyAkUG9p
bnQgKGkzMi5jb25zdCAwKSkKKyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAg
ICAqLworICAgIGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisg
ICAgICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGZceDAzXHg1
Zlx4MDFceDdmXHgwMFx4NjBceDAxXHg2Ylx4MDBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2ZceDAz
XHgwM1x4MDJceDAxXHgwMlx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFc
eDBhXHgxY1x4MDJceDEwXHgwMFx4MjBceDAwXHg0MVx4MjVceGZiXHgwNlx4MDBceDAwXHgyMFx4
MDBceGZiXHgwM1x4MDBceDAwXHgwYlx4MDlceDAwXHg0MVx4MDBceGZiXHgwN1x4MDBceDEwXHgw
MFx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAg
ICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA5OiB0aGUgZmllbGQg
MCBjYW4ndCBiZSBzZXQgYmVjYXVzZSBpdCBpcyBpbW11dGFibGUsIGluIGZ1bmN0aW9uIGF0IGlu
ZGV4IDAgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICAg
ICk7CisgIH0KKworICB7CisgICAgLy8gdW5yZWFjaGFibGUgY29udGV4dAorCisgICAgLyoKKyAg
ICAgKgorICAgICAqIChtb2R1bGUKKyAgICAgKiAgICh0eXBlICRQb2ludCAoc3RydWN0IChmaWVs
ZCAkeCAobXV0IGkzMikpKSkKKyAgICAgKiAgIChmdW5jICRkb1Rlc3QgKHBhcmFtICRwIChyZWYg
JFBvaW50KSkgKHJlc3VsdCBpMzIpCisgICAgICogICAgICh1bnJlYWNoYWJsZSkKKyAgICAgKiAg
ICAgKHN0cnVjdC5zZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkKKyAg
ICAgKiAgICAgICAoaTMyLmNvbnN0IDM3KQorICAgICAqICAgICApCisgICAgICogICAgIChzdHJ1
Y3QuZ2V0ICRQb2ludCAkeAorICAgICAqICAgICAgIChsb2NhbC5nZXQgJHApCisgICAgICogICAg
ICkKKyAgICAgKiAgICkKKyAgICAgKiApCisgICAgKi8KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDBiXHgwMlx4NWZceDAxXHg3Zlx4MDFceDYwXHgwMVx4NmJceDAwXHgwMVx4N2Zc
eDAzXHgwMlx4MDFceDAxXHgwYVx4MTNceDAxXHgxMVx4MDBceDAwXHgyMFx4MDBceDQxXHgyNVx4
ZmJceDA2XHgwMFx4MDBceDIwXHgwMFx4ZmJceDAzXHgwMFx4MDBceDBiIikpOworCisgICAgLyoK
KyAgICAgKiBpbnZhbGlkIHR5cGUgaW5kZXggZm9yIHN0cnVjdC5zZXQgaW4gdW5yZWFjaGFibGUg
Y29udGV4dAorICAgICAqCisgICAgICogKG1vZHVsZQorICAgICAqICAgKHR5cGUgJFBvaW50IChz
dHJ1Y3QgKGZpZWxkICR4IChtdXQgaTMyKSkpKQorICAgICAqICAgKGZ1bmMgJGRvVGVzdCAocGFy
YW0gJHAgKHJlZiAkUG9pbnQpKSAocmVzdWx0IGkzMikKKyAgICAgKiAgICAgKHVucmVhY2hhYmxl
KQorICAgICAqICAgICAoc3RydWN0LnNldCAkUG9pbnQgJHgKKyAgICAgKiAgICAgICAobG9jYWwu
Z2V0ICRwKQorICAgICAqICAgICAgIChpMzIuY29uc3QgMzcpCisgICAgICogICAgICkKKyAgICAg
KiAgICAgKHN0cnVjdC5nZXQgJFBvaW50ICR4CisgICAgICogICAgICAgKGxvY2FsLmdldCAkcCkK
KyAgICAgKiAgICAgKQorICAgICAqICAgKQorICAgICAqICkKKyAgICAqLworICAgIGFzc2VydC50
aHJvd3MoCisgICAgICAoKSA9PgorICAgICAgICBtb2R1bGUoCisgICAgICAgICAgIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg1Zlx4MDFceDdmXHgwMVx4NjBc
eDAxXHg2Ylx4MDBceDAxXHg3Zlx4MDNceDAyXHgwMVx4MDFceDBhXHgxM1x4MDFceDExXHgwMFx4
MDBceDIwXHgwMFx4NDFceDI1XHhmYlx4MDZceDAwXHgwMFx4MjBceDAwXHhmYlx4MDNceDA1XHgw
MFx4MGIiCisgICAgICAgICksCisgICAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAg
ICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNTogLCBpbiBmdW5j
dGlvbiBhdCBpbmRleCAwIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZl
ciknKSIKKyAgICApOworICB9Cit9CisKIHRlc3RTdHJ1Y3REZWNsYXJhdGlvbigpOwordGVzdFN0
cnVjdE5ldygpOwordGVzdFN0cnVjdEdldCgpOwordGVzdFN0cnVjdFNldCgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXgg
ZGUyZjUzYWQ4ZTU4OTdkN2RhMzZiMWU3ZWQ4N2RlODFkOTUwNWE5Yi4uZDZlYjFhNjdlYmNlM2My
MzZmZDYxOTE0ZWJjYzU1MzI5MWI5NDIwOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20u
anNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC03OCw2ICs3OCw5IEBACiAgICAg
ICAgICJyZWYubnVsbCI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2
YWx1ZSI6IDIwOCwgInJldHVybiI6IFsiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwgICAgICAgICAi
cGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJyZWZ0eXBlIiwgICAgICAgICJ0eXBlIjogInJlZl90eXBlIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBj
b25zdGFudCBudWxsIHJlZmVyZW5jZSIgfSwKICAgICAgICAgInJlZi5pc19udWxsIjogICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogMjA5LCAicmV0dXJuIjogWyJp
MzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImV4dGVybnJlZiJd
LCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXRlcm1pbmUgaWYgYSByZWZlcmVuY2UgaXMg
bnVsbCIgfSwKICAgICAgICAgInJlZi5mdW5jIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJz
cGVjaWFsIiwgICAgInZhbHVlIjogMjEwLCAicmV0dXJuIjogWyJmdW5jcmVmIl0sICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJyZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGF0IHRoZSBnaXZl
biBpbmRleCIgfSwKKyAgICAgICAgInN0cnVjdC5uZXciOiAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJnYyIsICAgICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjogWyJyZWZfdHlwZSJdLCAgICAg
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJhbGxvY2F0ZXMgYSBuZXcgc3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA3
IH0sCisgICAgICAgICJzdHJ1Y3QuZ2V0IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZ2MiLCAg
ICAgICAgICJ2YWx1ZSI6IDI1MSwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAiZmllbGRfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRp
b24iOiAicmVhZHMgdGhlIGZpZWxkIGZyb20gYSBzdHJ1Y3R1cmUiLCAiZXh0ZW5kZWRPcCI6IDMg
fSwKKyAgICAgICAgInN0cnVjdC5zZXQiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJnYyIsICAg
ICAgICAgInZhbHVlIjogMjUxLCAicmV0dXJuIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbInJlZl90eXBlIl0sICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJmaWVsZF9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlv
biI6ICJzZXRzIHRoZSBmaWVsZCBmcm9tIGEgc3RydWN0dXJlIiwgImV4dGVuZGVkT3AiOiA2IH0s
CiAgICAgICAgICJnZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzMiwgInJldHVybiI6IFsiYW55Il0sICAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJsb2NhbF9pbmRleCIsICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAicmVhZCBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInNldF9s
b2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDMz
LCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIi
OiBbImFueSJdLCAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
ImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2Fs
IHZhcmlhYmxlIG9yIHBhcmFtZXRlciIgfSwKICAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJh
bnkiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFueSJdLCAgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4Iiwg
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBh
cmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LAo=
</data>
<flag name="review"
          id="490178"
          type_id="1"
          status="?"
          setter="dbezhetskov"
    />
    <flag name="commit-queue"
          id="490180"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>