<?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>195082</bug_id>
          
          <creation_ts>2019-02-26 17:41:19 -0800</creation_ts>
          <short_desc>Remove poisons in JSCPoison and uses of them.</short_desc>
          <delta_ts>2019-02-26 21:46:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1510298</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-26 17:41:19 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510316</commentid>
    <comment_count>1</comment_count>
      <attachid>363054</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-26 18:49:44 -0800</bug_when>
    <thetext>Created attachment 363054
proposed patch.

Let&apos;s try this on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510354</commentid>
    <comment_count>2</comment_count>
      <attachid>363054</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-26 21:15:17 -0800</bug_when>
    <thetext>Comment on attachment 363054
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510362</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-26 21:44:26 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r242123: &lt;http://trac.webkit.org/r242123&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510363</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-26 21:46:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/48427453&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363054</attachid>
            <date>2019-02-26 18:49:44 -0800</date>
            <delta_ts>2019-02-26 21:15:17 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195082.patch</filename>
            <type>text/plain</type>
            <size>97694</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOSBA
QAorMjAxOS0wMi0yNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHBvaXNvbnMgaW4gSlNDUG9pc29uIGFuZCB1c2VzIG9mIHRoZW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUwODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHJlbW92ZWQgdW51c2Vk
IHBvaXNvbmluZyBjb2RlIGluIFdyaXRlQmFycmllciwgQXNzZW1ibHlIZWxwZXJzLAorICAgICAg
ICBERkc6OlNwZWN1bGF0aXZlSklULCBGVExMb3dlckRGR1RvQjMsIGFuZCBGVEw6Ok91dHB1dC4K
KworICAgICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNB
UElXcmFwcGVyT2JqZWN0Ojp3cmFwcGVkT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAg
KiBBUEkvZ2xpYi9KU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21tb24p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0RXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlz
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaXNvbmVkUG9pbnRlcik6IERl
bGV0ZWQuCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRFeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6d2Vha1BvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkeW5hbWljUG9pc29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZHluYW1pY1BvaXNvbk9u
TG9hZGVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmR5bmFtaWNQb2lzb25PblR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjp3ZWFrUG9pc29uZWRQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp3ZWFrUG9pc29u
ZWRQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RHluYW1pY1BvaXNvbik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdER5bmFtaWNQb2lzb25Pbkxv
YWRlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRE
eW5hbWljUG9pc29uT25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNjb3BlZEFyZ3VtZW50c0dldEJ5VmFsKToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0Nh
bGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2
aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAqIHBhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaDoKKyAg
ICAgICAgKEpTQzo6Q3VzdG9tR2V0dGVyU2V0dGVyOjpnZXR0ZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpDdXN0b21HZXR0ZXJTZXR0ZXI6OnNldHRlciBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpJbnRl
cm5hbEZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6bmF0aXZlRnVu
Y3Rpb25Gb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NQb2lzb24u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDUG9pc29uLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpoYXNoRm9yIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpz
ZXRTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Om1hcCBj
b25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6d2Vha0ltcGwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldE1hcCk6
CisgICAgICAgICogcnVudGltZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKiB3YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAg
ICAqIHdhc20vanMvSlNUb1dhc20uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1Rv
V2FzbVdyYXBwZXIpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5o
OgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9k
dWxlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5VGFibGU6OkpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlUYWJsZTo6Z3Jvdyk6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlUYWJsZTo6Y2xlYXJGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5VGFibGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6bWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpo
YW5kbGVCYWRJNjRVc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OjpldmFsdWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5o
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmg6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOgorCiAyMDE5LTAyLTI2ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXNtVG9KUygpIHNob3VsZCBw
dXJpZnkgaW5jb21pbmcgTmFOcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtODMwLDcgKzgzMCw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBydW50aW1lL0pTQ0lubGluZXMuaAogICAgIHJ1
bnRpbWUvSlNDSlNWYWx1ZS5oCiAgICAgcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCi0gICAg
cnVudGltZS9KU0NQb2lzb24uaAogICAgIHJ1bnRpbWUvSlNDUHRyVGFnLmgKICAgICBydW50aW1l
L0pTQ2FsbGVlLmgKICAgICBydW50aW1lL0pTQ2FzdC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgwMiw3ICs4MDIsNiBAQCBydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNCaWdJbnQuY3BwCiBydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKLXJ1bnRpbWUvSlNDUG9p
c29uLmNwcAogcnVudGltZS9KU0NhbGxlZS5jcHAKIHJ1bnRpbWUvSlNDZWxsLmNwcAogcnVudGlt
ZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiAyNDIxMTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsOSArMjcsNyBAQAogI2RlZmluZSBKU0FQSVdyYXBwZXJPYmplY3RfaAog
CiAjaW5jbHVkZSAiSlNCYXNlLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAjaW5jbHVkZSAi
SlNEZXN0cnVjdGlibGVPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KIAogI2lm
IEpTQ19PQkpDX0FQSV9FTkFCTEVEIHx8IGRlZmluZWQoSlNDX0dMSUJfQVBJX0VOQUJMRUQpCiAK
QEAgLTQyLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRv
ciYpOwogICAgIAotICAgIHZvaWQqIHdyYXBwZWRPYmplY3QoKSB7IHJldHVybiBtX3dyYXBwZWRP
YmplY3QudW5wb2lzb25lZCgpOyB9CisgICAgdm9pZCogd3JhcHBlZE9iamVjdCgpIHsgcmV0dXJu
IG1fd3JhcHBlZE9iamVjdDsgfQogICAgIHZvaWQgc2V0V3JhcHBlZE9iamVjdCh2b2lkKik7CiAK
IHByb3RlY3RlZDoKICAgICBKU0FQSVdyYXBwZXJPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKIAog
cHJpdmF0ZToKLSAgICBQb2lzb25lZDxKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24sIHZvaWQqPiBt
X3dyYXBwZWRPYmplY3Q7CisgICAgdm9pZCogbV93cmFwcGVkT2JqZWN0IHsgbnVsbHB0ciB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEpTQ2FsbGJhY2tGdW5jdGlvbl9oCiAKICNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3RSZWYuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01OCw5ICs1Nyw5IEBAIHByaXZh
dGU6CiAgICAgSlNDYWxsYmFja0Z1bmN0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3RDYWxs
QXNGdW5jdGlvbkNhbGxiYWNrKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAotICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBmdW5j
dGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gbV9jYWxsYmFjay51bnBvaXNvbmVkKCk7IH0KKyAgICBK
U09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0dXJu
IG1fY2FsbGJhY2s7IH0KIAotICAgIFBvaXNvbmVkPE5hdGl2ZUNvZGVQb2lzb24sIEpTT2JqZWN0
Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBKU09iamVjdENhbGxBc0Z1
bmN0aW9uQ2FsbGJhY2sgbV9jYWxsYmFjayB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsOSBAQAogI2lmbmRl
ZiBKU0NhbGxiYWNrT2JqZWN0X2gKICNkZWZpbmUgSlNDYWxsYmFja09iamVjdF9oCiAKLSNpbmNs
dWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpT
VmFsdWVSZWYuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZFVuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjI3LDcgKzIyNSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKIAotICAgIFdURjo6UG9pc29uZWRVbmlxdWVQdHI8SlNDYWxsYmFja09iamVj
dFBvaXNvbiwgSlNDYWxsYmFja09iamVjdERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVjdERh
dGE7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbyB7IG51bGxwdHIgfTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0FQSVdyYXBwZXJHbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNB
UElXcmFwcGVyR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiSlNCYXNlLmgiCiAjaW5jbHVkZSAi
SlNDR0xpYldyYXBwZXJPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTgxMCw3ICsxODEwLDYgQEAKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4
Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQz
MCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMkE4NzYwMUYwMjM4
MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8q
IE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi87IH07Ci0JCUZFMkIwQjczMUZEOUVGNzAwMDc1
REE1RiAvKiBKU0NQb2lzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMkIwQjcwMUZEOEM0NjMwMDc1REE1RiAvKiBKU0NQb2lzb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3
M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNp
Z2lsbENyYXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0
Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJG
MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZD
QzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKQEAgLTQ4MTks
OCArNDgxOCw2IEBACiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBw
YXRoID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3Au
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIy
IC8qIE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNl
cnZlZFpvbmVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY4MUZE
MEQyOTcwMDc1REE1RiAvKiBKU0NQb2lzb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDUG9pc29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkUyQjBCNzAxRkQ4QzQ2MzAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NQb2lzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMzAyMkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFu
YWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ2lsbENy
YXNoQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMwMjJEMTFF
M0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02ODcxLDggKzY4NjgsNiBAQAogCQkJCUY2OTJBODg3MDI1NTU5N0QwMUZG
NjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLywKIAkJCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYg
LyogSlNDSlNWYWx1ZS5oICovLAogCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NK
U1ZhbHVlSW5saW5lcy5oICovLAotCQkJCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NQ
b2lzb24uY3BwICovLAotCQkJCUZFMkIwQjcwMUZEOEM0NjMwMDc1REE1RiAvKiBKU0NQb2lzb24u
aCAqLywKIAkJCQlGRTc0OTdFNTIwOTAwMUIwMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggKi8sCiAJ
CQkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uY3BwICovLAogCQkJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uLmggKi8sCkBAIC05MjgyLDcgKzkyNzcsNiBAQAogCQkJCUE1RUE3MEVF
MTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBK
U0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTJCMEI3MzFGRDlFRjcw
MDA3NURBNUYgLyogSlNDUG9pc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTc0OTdFNjIwOTAw
MUIxMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCODE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MTEsNyAr
NTExLDYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgaml0
LmxvYWRQdHIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgU2Nv
cGVkQXJndW1lbnRzOjpvZmZzZXRPZlN0b3JhZ2UoKSksCiAgICAgICAgICAgICBzY3JhdGNoR1BS
KTsKLSAgICAgICAgaml0LnhvclB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoU2NvcGVk
QXJndW1lbnRzUG9pc29uOjprZXkoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWxsVGhyb3Vn
aC5hcHBlbmQoCiAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpOb25aZXJvLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODY5LDggKzY4NjksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxP
blNjCiAgICAgCiAgICAgbV9qaXQubG9hZFB0cigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgU2NvcGVkQXJndW1lbnRzOjpvZmZzZXRPZlN0b3JhZ2UoKSksIHJlc3Vs
dFJlZ3MucGF5bG9hZEdQUigpKTsKLSAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbVB0cihTY29w
ZWRBcmd1bWVudHNQb2lzb246OmtleSgpKSwgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOwotICAg
IAogICAgIG1faml0LmxvYWQzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVz
dWx0UmVncy5wYXlsb2FkR1BSKCksIFNjb3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZUb3RhbExlbmd0
aEluU3RvcmFnZSgpKSwKICAgICAgICAgc2NyYXRjaFJlZyk7CkBAIC02ODgyLDcgKzY4ODAsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblNjCiAgICAgbV9qaXQuZW1p
dFByZXBhcmVQcmVjaXNlSW5kZXhNYXNrMzIocHJvcGVydHlSZWcsIHNjcmF0Y2hSZWcsIGluZGV4
TWFza1JlZyk7CiAgICAgCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mVGFibGUoKSksIHNjcmF0Y2hSZWcp
OwotICAgIG1faml0LnhvclB0cihUcnVzdGVkSW1tUHRyKFNjb3BlZEFyZ3VtZW50c1BvaXNvbjo6
a2V5KCkpLCBzY3JhdGNoUmVnKTsKICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpvZmZzZXRP
Zkxlbmd0aCgpKSwgc2NyYXRjaDJSZWcpOwogICAgIApAQCAtNjg5MCw3ICs2ODg3LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TYwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgc2NyYXRjaDJSZWcpOwogICAgIAogICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgU2NvcGVkQXJn
dW1lbnRzOjpvZmZzZXRPZlNjb3BlKCkpLCBzY3JhdGNoMlJlZyk7Ci0gICAgbV9qaXQueG9yUHRy
KFRydXN0ZWRJbW1QdHIoU2NvcGVkQXJndW1lbnRzUG9pc29uOjprZXkoKSksIHNjcmF0Y2gyUmVn
KTsKIAogICAgIG1faml0LmxvYWRQdHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hSZWcsIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpvZmZzZXRPZkFyZ3VtZW50cygpKSwK
QEAgLTcwNDAsOCArNzAzNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJh
eUxlbmcKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mU3Rv
cmFnZSgpKSwgcmVzdWx0UmVnKTsKLSAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW1QdHIo
U2NvcGVkQXJndW1lbnRzUG9pc29uOjprZXkoKSksIHJlc3VsdFJlZyk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBFeG90aWNPYmplY3RNb2RlLCBK
U1ZhbHVlU291cmNlKCksIDAsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTcw
OTEsNyArNzA4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkMK
ICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2Ny
YXRjaDJHUFIsIHNsb3dQYXRoLCBzaXplKTsKICAgICAKICAgICBtX2ppdC5zdG9yZVB0cihzY29w
ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4oKSkpOwotICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2lzb25lZFBvaW50ZXI8SlNGdW5jdGlvblBvaXNvbj4obV9qaXQuZ3JhcGgoKSwgZXhlY3V0YWJs
ZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkpKTsKKyAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSkpOwogICAgIG1faml0LnN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSk7CiAgICAgCiAgICAgbV9qaXQu
bXV0YXRvckZlbmNlKCptX2ppdC52bSgpKTsKQEAgLTEyMTE2LDkgKzEyMTExLDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEV4ZWN1dGFibAogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1
bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGUoKSksIHJlc3VsdEdQUik7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtX2pp
dC54b3JQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoSlNGdW5jdGlvblBvaXNvbjo6a2V5
KCkpLCByZXN1bHRHUFIpOwotI2VuZGlmCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogfQogCkBAIC0xMjQ5MCw3ICsxMjQ4Miw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVUaGlzKE4KICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RGdW5j
dGlvbihjYWxsZWVHUFIpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIp
OwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByYXJlRGF0YUdQUikpOwotICAgIG1faml0LnhvclB0cihKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihKU0Z1bmN0aW9uUG9pc29uOjprZXkoKSksIHJhcmVEYXRhR1BSKTsKICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CiAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOwogCkBAIC0xMjQ5
OCw3ICsxMjQ4OSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE4K
ICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIEpJVEFsbG9jYXRvcjo6dmFyaWFi
bGUoKSwgYWxsb2NhdG9yR1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRjaEdQUiwg
c2xvd1BhdGgpOwogCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxs
ZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhR1BSKTsKLSAg
ICBtX2ppdC54b3JQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoSlNGdW5jdGlvblBvaXNv
bjo6a2V5KCkpLCByYXJlRGF0YUdQUik7CiAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZJbmxpbmVD
YXBhY2l0eSgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0LmVtaXRJbml0aWFsaXpl
SW5saW5lU3RvcmFnZShyZXN1bHRHUFIsIGlubGluZUNhcGFjaXR5R1BSKTsKICAgICBtX2ppdC5t
dXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDksMTMgKzE0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDxzaXplX3Q+KGNlbGwpKTsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleT4KLSAgICAgICAgc3RhdGljIFRydXN0ZWRJbW1QdHIgd2Vha1BvaXNv
bmVkUG9pbnRlcihHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2VsbCkKLSAgICAgICAgeyAgICAgCi0g
ICAgICAgICAgICBncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMoKS5hZGRMYXppbHkoY2VsbCk7
Ci0gICAgICAgICAgICByZXR1cm4gVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90Pihj
ZWxsKSBeIEtleTo6a2V5KCkpOwotICAgICAgICB9Ci0KICAgICAgICAgb3BlcmF0b3IgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAg
ICAgIG9wZXJhdG9yIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNDEsMTAgKzMxNDEs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgp
LCBjZWxsKTsKLSAgICAgICAgc2V0SlNWYWx1ZSgKLSAgICAgICAgICAgIG1fb3V0LmJpdFhvcigK
LSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNGdW5jdGlvbl9l
eGVjdXRhYmxlKSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihKU0Z1bmN0aW9u
UG9pc29uOjprZXkoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGNlbGws
IG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
Y29tcGlsZUFycmF5aWZ5KCkKQEAgLTM4NDMsOSArMzg0MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6U2NvcGVkQXJndW1lbnRzOiB7CiAgICAgICAgICAg
ICBMVmFsdWUgYXJndW1lbnRzID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSBzdG9yYWdlID0gbV9vdXQuYml0WG9yKAotICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoYXJndW1lbnRzLCBtX2hlYXBzLlNjb3BlZEFyZ3VtZW50c19zdG9yYWdlKSwKLSAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihTY29wZWRBcmd1bWVudHNQb2lzb246Omtl
eSgpKSk7CisgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IG1fb3V0LmxvYWRQdHIoYXJndW1l
bnRzLCBtX2hlYXBzLlNjb3BlZEFyZ3VtZW50c19zdG9yYWdlKTsKICAgICAgICAgICAgIHNwZWN1
bGF0ZSgKICAgICAgICAgICAgICAgICBFeG90aWNPYmplY3RNb2RlLCBub1ZhbHVlKCksIG51bGxw
dHIsCiAgICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG1fb3V0LmxvYWQ4WmVyb0V4dDMy
KHN0b3JhZ2UsIG1faGVhcHMuU2NvcGVkQXJndW1lbnRzX1N0b3JhZ2Vfb3ZlcnJvZGVUaGluZ3Mp
KSk7CkBAIC00MDQ3LDggKzQwNDIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGlu
ZGV4ID0gbG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1f
aGVhcHMuU2NvcGVkQXJndW1lbnRzX3N0b3JhZ2UpOwotICAgICAgICAgICAgc3RvcmFnZSA9IG1f
b3V0LmJpdFhvcihzdG9yYWdlLCBtX291dC5jb25zdEludFB0cihTY29wZWRBcmd1bWVudHNQb2lz
b246OmtleSgpKSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSB0b3RhbExlbmd0
aCA9IG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKAogICAgICAgICAgICAgICAgIHN0b3JhZ2UsIG1f
aGVhcHMuU2NvcGVkQXJndW1lbnRzX1N0b3JhZ2VfdG90YWxMZW5ndGgpOwogICAgICAgICAgICAg
c3BlY3VsYXRlKApAQCAtNDA1Niw4ICs0MDQ5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIHRvdGFsTGVuZ3RoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIExWYWx1ZSB0YWJsZSA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFwcy5T
Y29wZWRBcmd1bWVudHNfdGFibGUpOwotICAgICAgICAgICAgdGFibGUgPSBtX291dC5iaXRYb3Io
dGFibGUsIG1fb3V0LmNvbnN0SW50UHRyKFNjb3BlZEFyZ3VtZW50c1BvaXNvbjo6a2V5KCkpKTsK
LSAgICAgICAgICAgIAogICAgICAgICAgICAgTFZhbHVlIG5hbWVkTGVuZ3RoID0gbV9vdXQubG9h
ZDMyKHRhYmxlLCBtX2hlYXBzLlNjb3BlZEFyZ3VtZW50c1RhYmxlX2xlbmd0aCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5hbWVkQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC00MDcwLDggKzQwNjEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhuYW1lZENhc2UsIG92ZXJmbG93Q2FzZSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBzY29wZSA9IG1fb3V0LmxvYWRQdHIoYmFz
ZSwgbV9oZWFwcy5TY29wZWRBcmd1bWVudHNfc2NvcGUpOwotICAgICAgICAgICAgc2NvcGUgPSBt
X291dC5iaXRYb3Ioc2NvcGUsIG1fb3V0LmNvbnN0SW50UHRyKFNjb3BlZEFyZ3VtZW50c1BvaXNv
bjo6a2V5KCkpKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50cyA9
IG1fb3V0LmxvYWRQdHIodGFibGUsIG1faGVhcHMuU2NvcGVkQXJndW1lbnRzVGFibGVfYXJndW1l
bnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVHlwZWRQb2ludGVyIGFkZHJlc3MgPSBt
X291dC5iYXNlSW5kZXgoCkBAIC01MzIzLDcgKzUzMTIsNyBAQCBwcml2YXRlOgogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIG1lbW9yeSBiYXJyaWVycyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRl
ZCB0aGUgZnVuY3Rpb24sIHNvIGl0CiAgICAgICAgIC8vIG11c3QgYmUgeW91bmcuCiAgICAgICAg
IG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fc2Nv
cGUpOwotICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pc29uZWRQb2ludGVyPEpTRnVuY3Rp
b25Qb2lzb24+KGV4ZWN1dGFibGUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhl
Y3V0YWJsZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHdlYWtQb2ludGVyKGV4ZWN1dGFibGUp
LCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSk7CiAgICAgICAgIG1f
b3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIGZhc3RPYmplY3QsIG1faGVhcHMuSlNGdW5j
dGlvbl9yYXJlRGF0YSk7CiAgICAgICAgIAogICAgICAgICBtdXRhdG9yRmVuY2UoKTsKQEAgLTE2
Mzg1LDMyICsxNjM3NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwcmVjaXNlSW5kZXhN
YXNrNjQodmFsdWUsIG1fb3V0Lnplcm9FeHQoaW5kZXgsIEludDY0KSwgbV9vdXQuemVyb0V4dChs
aW1pdCwgSW50NjQpKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGR5bmFtaWNQb2lzb24oTFZh
bHVlIHZhbHVlLCBMVmFsdWUgcG9pc29uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmFk
ZCgKLSAgICAgICAgICAgIHZhbHVlLAotICAgICAgICAgICAgbV9vdXQuc2hsKAotICAgICAgICAg
ICAgICAgIG1fb3V0Lnplcm9FeHQocG9pc29uLCBwb2ludGVyVHlwZSgpKSwKLSAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKDQwKSkpOwotICAgIH0KLSAgICAKLSAgICBMVmFsdWUgZHlu
YW1pY1BvaXNvbk9uTG9hZGVkVHlwZShMVmFsdWUgdmFsdWUsIExWYWx1ZSBhY3R1YWxUeXBlLCBK
U1R5cGUgZXhwZWN0ZWRUeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGR5bmFtaWNQb2lzb24o
Ci0gICAgICAgICAgICB2YWx1ZSwKLSAgICAgICAgICAgIG1fb3V0LmJpdFhvcigKLSAgICAgICAg
ICAgICAgICBtX291dC5vcGFxdWUoYWN0dWFsVHlwZSksCi0gICAgICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnQzMihleHBlY3RlZFR5cGUpKSk7Ci0gICAgfQotICAgIAotICAgIExWYWx1ZSBkeW5h
bWljUG9pc29uT25UeXBlKExWYWx1ZSB2YWx1ZSwgSlNUeXBlIGV4cGVjdGVkVHlwZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBkeW5hbWljUG9pc29uT25Mb2FkZWRUeXBlKAotICAgICAgICAgICAg
dmFsdWUsCi0gICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMih2YWx1ZSwgbV9oZWFwcy5K
U0NlbGxfdHlwZUluZm9UeXBlKSwKLSAgICAgICAgICAgIGV4cGVjdGVkVHlwZSk7Ci0gICAgfQot
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KICAgICBMVmFsdWUgdm1DYWxsKExUeXBl
IHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgQXJncyYmLi4uIGFyZ3MpCiAgICAgewpAQCAtMTY5NTcs
MTMgKzE2OTIwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShwb2ludGVy
KTsKICAgICAgICAgcmV0dXJuIG1fb3V0LndlYWtQb2ludGVyKG1fZ3JhcGgsIHBvaW50ZXIpOwog
ICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXk+Ci0gICAgTFZhbHVlIHdlYWtQ
b2lzb25lZFBvaW50ZXIoSlNDZWxsKiBwb2ludGVyKQotICAgIHsKLSAgICAgICAgYWRkV2Vha1Jl
ZmVyZW5jZShwb2ludGVyKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LndlYWtQb2lzb25lZFBvaW50
ZXI8S2V5PihtX2dyYXBoLCBwb2ludGVyKTsKLSAgICB9CiAKICAgICBMVmFsdWUgZnJvemVuUG9p
bnRlcihGcm96ZW5WYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDE0ICsxMTEsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBjb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KGNlbGwpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXk+Ci0gICAgTFZhbHVl
IHdlYWtQb2lzb25lZFBvaW50ZXIoREZHOjpHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2VsbCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMoKS5jb250YWlu
cyhjZWxsKSk7Ci0KLSAgICAgICAgcmV0dXJuIGNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRw
dHJfdD4oY2VsbCkgXiBLZXk6OmtleSgpKTsKLSAgICB9Ci0KICAgICBMVmFsdWUgd2Vha1BvaW50
ZXIoREZHOjpGcm96ZW5WYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VCh2YWx1ZS0+dmFsdWUoKS5pc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMDIsNDEgKzEwMDIsNiBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFByZXBhcmVQcmVj
aXNlCiAgICAgcnNoaWZ0UHRyKFRydXN0ZWRJbW0zMihwcmVjaXNlSW5kZXhNYXNrU2hpZnQ8dm9p
ZCo+KCkpLCByZXN1bHQpOwogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdER5bmFtaWNQ
b2lzb24oR1BSUmVnIGJhc2UsIEdQUlJlZyBwb2lzb25WYWx1ZSkKLXsKLSNpZiBDUFUoWDg2XzY0
KSB8fCAoQ1BVKEFSTTY0KSAmJiAhZGVmaW5lZChfX0lMUDMyX18pKQotICAgIGxzaGlmdFB0cihU
cnVzdGVkSW1tMzIoNDApLCBwb2lzb25WYWx1ZSk7Ci0gICAgYWRkUHRyKHBvaXNvblZhbHVlLCBi
YXNlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShw
b2lzb25WYWx1ZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXREeW5h
bWljUG9pc29uT25Mb2FkZWRUeXBlKEdQUlJlZyBiYXNlLCBHUFJSZWcgYWN0dWFsVHlwZSwgSlNU
eXBlIGV4cGVjdGVkVHlwZSkKLXsKLSNpZiBDUFUoWDg2XzY0KSB8fCAoQ1BVKEFSTTY0KSAmJiAh
ZGVmaW5lZChfX0lMUDMyX18pKQotICAgIHhvcjMyKFRydXN0ZWRJbW0zMihleHBlY3RlZFR5cGUp
LCBhY3R1YWxUeXBlKTsKLSAgICBlbWl0RHluYW1pY1BvaXNvbihiYXNlLCBhY3R1YWxUeXBlKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShhY3R1YWxU
eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZXhwZWN0ZWRUeXBlKTsKLSNlbmRpZgotfQotCi12b2lk
IEFzc2VtYmx5SGVscGVyczo6ZW1pdER5bmFtaWNQb2lzb25PblR5cGUoR1BSUmVnIGJhc2UsIEdQ
UlJlZyBzY3JhdGNoLCBKU1R5cGUgZXhwZWN0ZWRUeXBlKQotewotI2lmIENQVShYODZfNjQpIHx8
IChDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykpCi0gICAgbG9hZDgoQWRkcmVzcyhi
YXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7Ci0gICAgZW1pdER5
bmFtaWNQb2lzb25PbkxvYWRlZFR5cGUoYmFzZSwgc2NyYXRjaCwgZXhwZWN0ZWRUeXBlKTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsK
LSAgICBVTlVTRURfUEFSQU0oZXhwZWN0ZWRUeXBlKTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4MzEsMTAgKzE4MzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gemVyby1leHRlbmRlZC4gQWxzbyB0
aGlzIGRvZXMgbm90IGNsb2JiZXIgaW5kZXgsIHdoaWNoIGlzIHVzZWZ1bCBpbiB0aGUgYmFzZWxp
bmUgSklULiBUaGlzCiAgICAgLy8gcGVybWl0cyBsZW5ndGggYW5kIHJlc3VsdCB0byBiZSBpbiB0
aGUgc2FtZSByZWdpc3Rlci4KICAgICB2b2lkIGVtaXRQcmVwYXJlUHJlY2lzZUluZGV4TWFzazMy
KEdQUlJlZyBpbmRleCwgR1BSUmVnIGxlbmd0aCwgR1BSUmVnIHJlc3VsdCk7Ci0gICAgCi0gICAg
dm9pZCBlbWl0RHluYW1pY1BvaXNvbihHUFJSZWcgYmFzZSwgR1BSUmVnIHBvaXNvblZhbHVlKTsK
LSAgICB2b2lkIGVtaXREeW5hbWljUG9pc29uT25Mb2FkZWRUeXBlKEdQUlJlZyBiYXNlLCBHUFJS
ZWcgYWN0dWFsVHlwZSwgSlNUeXBlIGV4cGVjdGVkVHlwZSk7Ci0gICAgdm9pZCBlbWl0RHluYW1p
Y1BvaXNvbk9uVHlwZShHUFJSZWcgYmFzZSwgR1BSUmVnIHNjcmF0Y2gsIEpTVHlwZSBleHBlY3Rl
ZFR5cGUpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIHZvaWQgbG9hZFdhc21Db250
ZXh0SW5zdGFuY2UoR1BSUmVnIGRzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwOCw3ICs5MDgsNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2Fs
bGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwotICAgIHhv
clB0cihUcnVzdGVkSW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgcmFyZURhdGFSZWcp
OwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOwogICAgIGxvYWRQdHIoQWRkcmVz
cyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkp
LCBzdHJ1Y3R1cmVSZWcpOwogCkBAIC05MjIsNyArOTIxLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoY29uc3QgSW5zdAogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdFJl
ZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywg
YnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY2FsbGVlLCBzY3JhdGNoUmVnKTsKICAgICBsb2FkUHRyKEFkZHJlc3Moc2NyYXRjaFJl
ZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgeG9y
UHRyKFRydXN0ZWRJbW1QdHIoSlNGdW5jdGlvblBvaXNvbjo6a2V5KCkpLCBzY3JhdGNoUmVnKTsK
ICAgICBsb2FkMzIoQWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zm
c2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CiAgICAgZW1pdEluaXRpYWxpemVJ
bmxpbmVTdG9yYWdlKHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xv
d0Nhc2VzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwOSwxNSArMTYw
OSwxMiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdFNjb3BlZEFyZ3VtZW50c0dlCiAgICAgbG9h
ZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7
CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBzY3JhdGNoLCBUcnVz
dGVkSW1tMzIoU2NvcGVkQXJndW1lbnRzVHlwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mU3RvcmFnZSgpKSwgc2NyYXRjaDMpOwotICAgIHhv
clB0cihUcnVzdGVkSW1tUHRyKFNjb3BlZEFyZ3VtZW50c1BvaXNvbjo6a2V5KCkpLCBzY3JhdGNo
Myk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5
LCBBZGRyZXNzKHNjcmF0Y2gzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mVG90YWxMZW5ndGhJ
blN0b3JhZ2UoKSkpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgU2NvcGVkQXJn
dW1lbnRzOjpvZmZzZXRPZlRhYmxlKCkpLCBzY3JhdGNoKTsKLSAgICB4b3JQdHIoVHJ1c3RlZElt
bVB0cihTY29wZWRBcmd1bWVudHNQb2lzb246OmtleSgpKSwgc2NyYXRjaCk7CiAgICAgbG9hZDMy
KEFkZHJlc3Moc2NyYXRjaCwgU2NvcGVkQXJndW1lbnRzVGFibGU6Om9mZnNldE9mTGVuZ3RoKCkp
LCBzY3JhdGNoMik7CiAgICAgSnVtcCBvdmVyZmxvd0Nhc2UgPSBicmFuY2gzMihBYm92ZU9yRXF1
YWwsIHByb3BlcnR5LCBzY3JhdGNoMik7CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIFNjb3Bl
ZEFyZ3VtZW50czo6b2Zmc2V0T2ZTY29wZSgpKSwgc2NyYXRjaDIpOwotICAgIHhvclB0cihUcnVz
dGVkSW1tUHRyKFNjb3BlZEFyZ3VtZW50c1BvaXNvbjo6a2V5KCkpLCBzY3JhdGNoMik7CiAgICAg
bG9hZFB0cihBZGRyZXNzKHNjcmF0Y2gsIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpvZmZzZXRPZkFy
Z3VtZW50cygpKSwgc2NyYXRjaCk7CiAgICAgbG9hZDMyKEJhc2VJbmRleChzY3JhdGNoLCBwcm9w
ZXJ0eSwgVGltZXNGb3VyKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gz
MihFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNjb3BlT2Zmc2V0OjppbnZhbGlkT2Zmc2V0
KSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAy
NDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTA2NCw3ICsxMDY0LDYgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgICAgICBzdHViSml0LmxvYWRQdHIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCiAgICAgICAg
ICAgICBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3R1YkppdC54b3JQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIAogICAgICAgICBjb21wYXJpc29uVmFsdWVHUFIgPSBzY3JhdGNoR1BSOwogICAgIH0gZWxz
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDYgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVAogICAgIGppdC5sb2FkUHRyKAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZSgpKSwKICAgICAgICAgR1BSSW5mbzo6cmVnVDQpOwotICAgIGppdC54b3JQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwg
R1BSSW5mbzo6cmVnVDQpOwogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9m
ZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKApAQCAtMjgzLDcgKzI4Miw2IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICAgICBqaXQuZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6
cmVnVDEpOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6
SlNGdW5jdGlvbikgewogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyhKU0ludGVyZmFjZUpJVDo6cmVnVDEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgp
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKLSAgICAgICAgaml0LnhvclB0cihKU0ludGVyZmFj
ZUpJVDo6VHJ1c3RlZEltbVB0cihKU0Z1bmN0aW9uUG9pc29uOjprZXkoKSksIEpTSW50ZXJmYWNl
SklUOjpyZWdUMSk7CiAgICAgICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpT
SW50ZXJmYWNlSklUOjpyZWdUMSwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBKU0VudHJ5
UHRyVGFnKTsKICAgICB9IGVsc2UKICAgICAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFk
ZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QxLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5h
dGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNFbnRyeVB0clRhZyk7CkBAIC0yOTksMTIgKzI5Nyw5
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICAgICBqaXQuZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBYODZSZWdp
c3RlcnM6OmVzaSk7CiAgICAgaWYgKHRodW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25U
eXBlOjpKU0Z1bmN0aW9uKSB7CiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpB
ZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUo
KSksIFg4NlJlZ2lzdGVyczo6cjkpOwotICAgICAgICBqaXQueG9yUHRyKEpTSW50ZXJmYWNlSklU
OjpUcnVzdGVkSW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgWDg2UmVnaXN0ZXJzOjpy
OSk7CiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lz
dGVyczo6cjksIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwgWDg2UmVnaXN0ZXJzOjpyOSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KFg4NlJlZ2lzdGVyczo6ZXNpLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0
aW9uRm9yKGtpbmQpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7Ci0gICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW02NChOYXRpdmVDb2RlUG9pc29uOjprZXkoKSksIFg4NlJlZ2lzdGVy
czo6ZXNpKTsKLSAgICBqaXQueG9yNjQoWDg2UmVnaXN0ZXJzOjplc2ksIFg4NlJlZ2lzdGVyczo6
cjkpOwogICAgIGppdC5jYWxsKFg4NlJlZ2lzdGVyczo6cjksIEpTRW50cnlQdHJUYWcpOwogCiAj
ZWxzZQpAQCAtMzE5LDcgKzMxNCw2IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHIKICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlLCBYODZSZWdpc3RlcnM6OmVkeCk7CiAgICAgaWYgKHRodW5rRnVuY3Rpb25U
eXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1bmN0aW9uKSB7CiAgICAgICAgIGppdC5sb2Fk
UHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWR4LCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6cjkpOwotICAgICAgICBqaXQu
eG9yUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246Omtl
eSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7CiAgICAgICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklU
OjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSwg
SlNFbnRyeVB0clRhZyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGppdC5jYWxsKEpTSW50ZXJmYWNl
SklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWR4LCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRP
Zk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSlNFbnRyeVB0clRhZyk7CkBAIC0zMzgsMTIgKzMz
Miw5IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICAgICBqaXQu
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBBUk02
NFJlZ2lzdGVyczo6eDEpOwogICAgIGlmICh0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0
aW9uVHlwZTo6SlNGdW5jdGlvbikgewogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0
YWJsZSgpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKLSAgICAgICAgaml0LnhvclB0cihKU0ludGVy
ZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihKU0Z1bmN0aW9uUG9pc29uOjprZXkoKSksIEFSTTY0UmVn
aXN0ZXJzOjp4Mik7CiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KEFSTTY0UmVnaXN0ZXJzOjp4MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBBUk02NFJl
Z2lzdGVyczo6eDIpOwogICAgIH0gZWxzZQogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEludGVybmFsRnVuY3Rpb246Om9mZnNl
dE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBBUk02NFJlZ2lzdGVyczo6eDIpOwotICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoTmF0aXZlQ29kZVBvaXNvbjo6a2V5
KCkpLCBBUk02NFJlZ2lzdGVyczo6eDEpOwotICAgIGppdC54b3I2NChBUk02NFJlZ2lzdGVyczo6
eDEsIEFSTTY0UmVnaXN0ZXJzOjp4Mik7CiAgICAgaml0LmNhbGwoQVJNNjRSZWdpc3RlcnM6Ongy
LCBKU0VudHJ5UHRyVGFnKTsKIAogI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQpA
QCAtMzU5LDcgKzM1MCw2IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHIKICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxKTsKICAgICBpZiAodGh1bmtGdW5j
dGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVuY3Rpb24pIHsKICAgICAgICAgaml0
LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50
R1BSMSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBKU0ludGVyZmFjZUpJVDo6
cmVnVDIpOwotICAgICAgICBqaXQueG9yUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRy
KEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QyKTsKICAgICAg
ICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qy
LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEpTRW50cnlQdHJUYWcpOwogICAgIH0gZWxz
ZQogICAgICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJ
VDo6YXJndW1lbnRHUFIxLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9u
Rm9yKGtpbmQpKSwgSlNFbnRyeVB0clRhZyk7CkBAIC0xMjM3LDcgKzEyMjcsNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvCiAgICAgaml0LmxvYWRQdHIoCiAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0Lnhv
clB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoSlNGdW5jdGlvblBvaXNvbjo6a2V5KCkp
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcygKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6
b2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoQ29kZUZvckNhbGwpKSwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaAko
cmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Vbmxpbmtl
ZFNvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTA3LDkgKzEwNiw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZz
ZXQgLSBtX3N0YXJ0T2Zmc2V0OyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIC8vIEZJWE1F
OiBNYWtlIGl0IFBvaXNvbmVkUmVmPFNvdXJjZVByb3ZpZGllcj4uCisgICAgICAgIC8vIEZJWE1F
OiBNYWtlIGl0IFJlZjxTb3VyY2VQcm92aWRpZXI+LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MzI1Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFVubGlua2VkU291cmNlQ29kZVBvaXNvbiwgU291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7Cisg
ICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAgICAgaW50IG1f
c3RhcnRPZmZzZXQ7CiAgICAgICAgIGludCBtX2VuZE9mZnNldDsKICAgICB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lv
biAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAo
QykgMjAwNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIKLSNpbmNsdWRlIDx3dGYvUG9pc29u
ZWRVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYyLDggKzYwLDggQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICAvLyBUaGlzIGJpdCBpcyBzZXQgaWYgYW55IHVzZXIgbW9k
aWZpZXMgdGhlIGNvbnN0cnVjdG9yIHByb3BlcnR5IEFycmF5LnByb3RvdHlwZS4gVGhpcyBpcyB1
c2VkIHRvIG9wdGltaXplIHNwZWNpZXMgY3JlYXRpb24gZm9yIEpTQXJyYXlzLgogICAgIGZyaWVu
ZCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ7Ci0gICAg
UG9pc29uZWRVbmlxdWVQdHI8QXJyYXlQcm90b3R5cGVQb2lzb24sIEFycmF5UHJvdG90eXBlQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4gbV9jb25zdHJ1Y3RvcldhdGNocG9pbnQ7
Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8QXJyYXlQcm90b3R5cGVQb2lzb24sIEFycmF5UHJvdG90
eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4gbV9jb25zdHJ1Y3RvclNwZWNp
ZXNXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheVByb3RvdHlwZUFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+IG1fY29uc3RydWN0b3JXYXRjaHBvaW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdh
dGNocG9pbnQ+IG1fY29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludDsKIH07CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDcgKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJK
U0Nhc3QuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0
eVNsb3QuaCIKQEAgLTQ4LDggKzQ3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY3VzdG9t
R2V0dGVyU2V0dGVyOwogICAgIH0KIAotICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tR2V0
dGVyIGdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyLnVucG9pc29uZWQoKTsgfQotICAg
IEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0dGVyLnVucG9pc29uZWQoKTsgfQorICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9t
R2V0dGVyIGdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyOyB9CisgICAgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIgc2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXI7
IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTY3
LDExICs2Niw4IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICB1c2luZyBQb2lzb25lZEFjY2Vzc29yID0gUG9pc29uZWQ8TmF0aXZl
Q29kZVBvaXNvbiwgVD47Ci0KLSAgICBQb2lzb25lZEFjY2Vzc29yPEN1c3RvbUdldHRlcj4gbV9n
ZXR0ZXI7Ci0gICAgUG9pc29uZWRBY2Nlc3NvcjxDdXN0b21TZXR0ZXI+IG1fc2V0dGVyOworICAg
IEN1c3RvbUdldHRlciBtX2dldHRlcjsKKyAgICBDdXN0b21TZXR0ZXIgbV9zZXR0ZXI7CiB9Owog
CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgQ3Vz
dG9tR2V0dGVyU2V0dGVyOjpDdXN0b21TZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNWYWx1ZSB0
aGlzVmFsdWUsIEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI0MjExOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjAsNyArNjAsNiBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KQogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVUaHJlYWRpbmdPbmNlRmxhZywgW117CiAg
ICAgICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgICAgICBPcHRpb25zOjppbml0
aWFsaXplKCk7Ci0gICAgICAgIGluaXRpYWxpemVQb2lzb24oKTsKIAogI2lmIEVOQUJMRShXUklU
RV9CQVJSSUVSX1BST0ZJTElORykKICAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRp
YWxpemUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtODgsNyArODgsNyBAQCBDYWxsVHlwZSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YShK
CiB7CiAgICAgYXV0byogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNlbGwp
OwogICAgIEFTU0VSVChmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNhbGwpOwotICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGZ1bmN0aW9uLT5tX2Z1bmN0aW9uRm9yQ2FsbC51bnBvaXNvbmVk
KCk7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gZnVuY3Rpb24tPm1fZnVuY3Rpb25G
b3JDYWxsOwogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIApAQCAtOTcsNyArOTcsNyBA
QCBDb25zdHJ1Y3RUeXBlIEludGVybmFsRnVuY3Rpb246OmdldENvbnN0CiAgICAgYXV0byogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNlbGwpOwogICAgIGlmIChmdW5jdGlv
bi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdCA9PSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cikKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5jdGlvbi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdC51bnBv
aXNvbmVkKCk7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBmdW5jdGlvbi0+
bV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6
d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmlj
aAogICoKQEAgLTI0LDcgKzI0LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oIgotI2luY2x1ZGUgIkpTQ1BvaXNvbi5oIgogI2luY2x1ZGUgIkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjMsOSArNjIsOSBA
QCBwdWJsaWM6CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb25Gb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgIHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpCi0gICAgICAgICAgICByZXR1cm4gbV9mdW5jdGlvbkZvckNhbGwudW5wb2lzb25l
ZCgpOworICAgICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25Gb3JDYWxsOwogICAgICAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKLSAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25G
b3JDb25zdHJ1Y3QudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gbV9mdW5jdGlvbkZvckNv
bnN0cnVjdDsKICAgICB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTmF0aXZlRnVu
Y3Rpb25Gb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtNzcsOCArNzYsNiBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdXNpbmcgUG9pc29uZWRUYWdnZWROYXRp
dmVGdW5jdGlvbiA9IFBvaXNvbmVkPE5hdGl2ZUNvZGVQb2lzb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0
aW9uPjsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24oVk0mLCBTdHJ1
Y3R1cmUqLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbkZvckNhbGwsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uRm9yQ29uc3RydWN0KTsKIAogICAgIGVudW0gY2xhc3MgTmFtZVZpc2liaWxpdHkgeyBW
aXNpYmxlLCBBbm9ueW1vdXMgfTsKQEAgLTg5LDggKzg2LDggQEAgcHJvdGVjdGVkOgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgUG9pc29uZWRUYWdn
ZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uRm9yQ2FsbDsKLSAgICBQb2lzb25lZFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3Q7CisgICAgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7CisgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5j
dGlvbkZvckNvbnN0cnVjdDsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb3JpZ2luYWxO
YW1lOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXIuaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQ1Bv
aXNvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHdpbGwgcmVnaXN0ZXIgdGhlIG5ldyB3cmFwcGVyIHdpdGggdGhlIHZtJ3Mg
VHlwZWRBcnJheUNvbnRyb2xsZXIuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQXJy
YXlCdWZmZXIqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7
CiAKLSAgICBBcnJheUJ1ZmZlciogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC51bnBvaXNv
bmVkKCk7IH0KKyAgICBBcnJheUJ1ZmZlciogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsg
fQogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogCkBAIC02MSw3ICs1OSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsKIAog
cHJpdmF0ZToKLSAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZlcio+
IG1faW1wbDsKKyAgICBBcnJheUJ1ZmZlciogbV9pbXBsOwogfTsKIAogaW5saW5lIEFycmF5QnVm
ZmVyKiB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3Niw2IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBp
bnQgbGVuZ3RoKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBwb2lzb25pbmcgdGhlc2UgcG9p
bnRlcnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MjcxMwogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV90YXJnZXRGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7CiAgICAgV3JpdGVCYXJyaWVyPEpTQXJy
YXk+IG1fYm91bmRBcmdzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
UG9pc29uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NQb2lzb24uY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTQ1BvaXNvbi5oIgotCi0jaW5jbHVkZSAiT3B0aW9ucy5o
IgotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi0jZGVmaW5lIERFRklORV9QT0lTT04ocG9pc29uSUQpIFwKLSAgICB1aW50cHRy
X3QgUE9JU09OX0tFWV9OQU1FKHBvaXNvbklEKTsKLUZPUl9FQUNIX0pTQ19QT0lTT04oREVGSU5F
X1BPSVNPTikKLQotdm9pZCBpbml0aWFsaXplUG9pc29uKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVPbmNlRmxhZywgW10gewotICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVBvaXNvbmluZygpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0jZGVmaW5lIElOSVRJQUxJWkVfUE9JU09OKHBvaXNvbklE
KSBcCi0gICAgUE9JU09OX0tFWV9OQU1FKHBvaXNvbklEKSA9IG1ha2VQb2lzb24oKTsKLQotICAg
ICAgICBGT1JfRUFDSF9KU0NfUE9JU09OKElOSVRJQUxJWkVfUE9JU09OKQotICAgIH0pOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUG9pc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUG9pc29uLmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShub25leGlzdGVudCkKQEAgLTEsNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLS8v
IExldCdzIGtlZXAgdGhlIGZvbGxvd2luZyBsaXN0IG9mIHBvaXNvbnMgaW4gYWxwaGFiZXRpY2Fs
IG9yZGVyIGp1c3Qgc28gaXQncyBlYXNpZXIgdG8gcmVhZC4KLSNkZWZpbmUgRk9SX0VBQ0hfSlND
X1BPSVNPTih2KSBcCi0gICAgdihBcnJheVByb3RvdHlwZSkgXAotICAgIHYoSlNBUElXcmFwcGVy
T2JqZWN0KSBcCi0gICAgdihKU0FycmF5QnVmZmVyKSBcCi0gICAgdihKU0NhbGxiYWNrT2JqZWN0
KSBcCi0gICAgdihKU0Z1bmN0aW9uKSBcCi0gICAgdihKU0dsb2JhbE9iamVjdCkgXAotICAgIHYo
SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpIFwKLSAgICB2KEpTU2NyaXB0RmV0Y2hlcikgXAotICAg
IHYoSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgXAotICAgIHYoSlNXZWJBc3NlbWJseUluc3RhbmNl
KSBcCi0gICAgdihKU1dlYkFzc2VtYmx5TWVtb3J5KSBcCi0gICAgdihKU1dlYkFzc2VtYmx5TW9k
dWxlKSBcCi0gICAgdihKU1dlYkFzc2VtYmx5VGFibGUpIFwKLSAgICB2KE5hdGl2ZUNvZGUpIFwK
LSAgICB2KFNjb3BlZEFyZ3VtZW50cykgXAotICAgIHYoU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
KSBcCi0gICAgdihVbmxpbmtlZFNvdXJjZUNvZGUpIFwKLSAgICB2KFdlYkFzc2VtYmx5RnVuY3Rp
b25CYXNlKSBcCi0gICAgdihXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkgXAotICAgIHYoV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKSBcCi0gICAgdihXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgXAot
Ci0jZGVmaW5lIFBPSVNPTl9LRVlfTkFNRShfcG9pc29uSURfKSBnXyMjX3BvaXNvbklEXyMjUG9p
c29uCi0KLSNkZWZpbmUgREVDTEFSRV9QT0lTT04oX3BvaXNvbklEXykgXAotICAgIGV4dGVybiAi
QyIgSlNfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IFBPSVNPTl9LRVlfTkFNRShfcG9pc29uSURf
KTsgXAotICAgIHVzaW5nIF9wb2lzb25JRF8gIyMgUG9pc29uID0gUG9pc29uPFBPSVNPTl9LRVlf
TkFNRShfcG9pc29uSURfKT47Ci0KLUZPUl9FQUNIX0pTQ19QT0lTT04oREVDTEFSRV9QT0lTT04p
Ci0jdW5kZWYgREVDTEFSRV9QT0lTT04KLQotdm9pZCBpbml0aWFsaXplUG9pc29uKCk7Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNo
QHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICoK
QEAgLTIyMCwxMSArMjIwLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB1
c2luZyBQb2lzb25lZEJhcnJpZXIgPSBQb2lzb25lZFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uUG9p
c29uLCBUPjsKLSAgICAKLSAgICBQb2lzb25lZEJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhl
Y3V0YWJsZTsKLSAgICBQb2lzb25lZEJhcnJpZXI8RnVuY3Rpb25SYXJlRGF0YT4gbV9yYXJlRGF0
YTsKKyAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKKyAgICBX
cml0ZUJhcnJpZXI8RnVuY3Rpb25SYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRl
ICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgpAQCAtNDksNyArNDgsNiBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBzdHJ1Y3QgT3BhcXVlSlNDbGFzczsKQEAgLTQzMCwx
MSArNDI4LDkgQEAgcHVibGljOgogCiAgICAgVk0mIG1fdm07CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB1c2luZyBQb2lzb25lZFVuaXF1ZVB0ciA9IFdURjo6UG9pc29uZWRVbmlxdWVQdHI8
SlNHbG9iYWxPYmplY3RQb2lzb24sIFQ+OwotCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICBQb2lzb25lZFVuaXF1ZVB0
cjxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRlYnVnZ2FibGU7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShJTlRMKQpAQCAtNDc3LDE3ICs0NzMsMTcgQEAgcHVibGljOgogICAgIElubGluZVdhdGNo
cG9pbnRTZXQgbV9zZXRBZGRXYXRjaHBvaW50OwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50OwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9udW1iZXJU
b1N0cmluZ1dhdGNocG9pbnQ7Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQ7Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
IG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQ7Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
IG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50OwotICAgIFBvaXNvbmVkVW5p
cXVlUHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+PiBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQ7Ci0gICAgUG9p
c29uZWRVbmlxdWVQdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
OwotICAgIFBvaXNvbmVkVW5pcXVlUHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdh
dGNocG9pbnQ7Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc3RyaW5nUHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50OwotICAgIFBvaXNvbmVkVW5pcXVlUHRyPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3N0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQ7Ci0gICAgUG9pc29uZWRVbmlxdWVQdHI8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+IG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludDsKLSAgICBQb2lzb25lZFVuaXF1ZVB0cjxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4gbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50OwotICAgIFBvaXNvbmVkVW5pcXVlUHRyPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
PiBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+IG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+PiBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4gbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9p
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc3RyaW5nUHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9z
dHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4gbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4gbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4g
bV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQ7CiAKICAgICBib29sIGlzQXJyYXlQ
cm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAgICBib29s
IGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCkBAIC03NCw3ICs3Myw3IEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIFBvaXNvbmVkUmVmPEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJz
UG9pc29uLCBTY3JpcHRGZXRjaFBhcmFtZXRlcnM+IG1fcGFyYW1ldGVyczsKKyAgICBSZWY8U2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0
Y2hlci5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NjcmlwdEZldGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTQ1BvaXNvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRGZXRjaGVy
LmgiCkBAIC03NCw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBvaXNv
bmVkUmVmUHRyPEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwgU2NyaXB0RmV0Y2hlcj4gbV9mZXRjaGVy
OworICAgIFJlZlB0cjxTY3JpcHRGZXRjaGVyPiBtX2ZldGNoZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
cmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDggKzIyMiw2IEBAIHByaXZhdGU6CiAgICAgLy8g
QSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgZWl0aGVyIGJ5IGEgU3RyaW5nIG9yIGEgcm9wZSBvZiBm
aWJlcnMuCiAgICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07CiAgICAgbXV0YWJsZSB1aW50MTZf
dCBtX2ZsYWdzIHsgMCB9OwotICAgIC8vIFRoZSBwb2lzb24gaXMgc3RyYXRlZ2ljYWxseSBwbGFj
ZWQgYW5kIGhvbGRzIGEgdmFsdWUgc3VjaCB0aGF0IHRoZSBmaXJzdAotICAgIC8vIDY0IGJpdHMg
b2YgSlNTdHJpbmcgbG9vayBsaWtlIGEgZG91YmxlIEpTVmFsdWUuCiAgICAgbXV0YWJsZSBTdHJp
bmcgbV92YWx1ZTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NCwxMCArOTQsMTAg
QEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogQ29kZUJsb2NrSGFz
aCBOYXRpdmVFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkg
Y29uc3QKIHsKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKLSAgICAgICAgcmV0dXJuIENv
ZGVCbG9ja0hhc2gobV9mdW5jdGlvbi5iaXRzKCkpOworICAgICAgICByZXR1cm4gQ29kZUJsb2Nr
SGFzaChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX2Z1bmN0aW9uKSk7CiAKICAgICBSRUxFQVNF
X0FTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIHJldHVybiBDb2RlQmxvY2tI
YXNoKG1fY29uc3RydWN0b3IuYml0cygpKTsKKyAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihtX2NvbnN0cnVjdG9yKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQmFzZS5oIgotI2luY2x1ZGUg
IkpTQ1BvaXNvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDksOCArNDgsOCBAQCBwdWJs
aWM6CiAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkg
Y29uc3Q7CiAKLSAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIHsgcmV0dXJuIG1f
ZnVuY3Rpb24udW5wb2lzb25lZCgpOyB9Ci0gICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yLnVucG9pc29uZWQoKTsgfQorICAgIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgIFRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvcjsg
fQogICAgICAgICAKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbkZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewpAQCAtODEsMTMgKzgwLDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVmPEpJVENvZGU+JiYgY2Fs
bFRodW5rLCBSZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7Ci0gICAgdXNp
bmcgUG9pc29uZWRUYWdnZWROYXRpdmVGdW5jdGlvbiA9IFBvaXNvbmVkPE5hdGl2ZUNvZGVQb2lz
b24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uPjsKLQogICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBU
YWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpOwog
Ci0gICAgUG9pc29uZWRUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOwotICAgIFBvaXNv
bmVkVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBUYWdnZWROYXRpdmVG
dW5jdGlvbiBtX2Z1bmN0aW9uOworICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fY29uc3RydWN0
b3I7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDcgKzQ3NSw2IEBA
IGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICBcCiAgICAgdihi
b29sLCBlbmFibGVTcGVjdHJlTWl0aWdhdGlvbnMsIHRydWUsIFJlc3RyaWN0ZWQsICJFbmFibGUg
U3BlY3RyZSBtaXRpZ2F0aW9ucy4iKSBcCiAgICAgdihib29sLCBlbmFibGVTcGVjdHJlR2FkZ2V0
cywgZmFsc2UsIFJlc3RyaWN0ZWQsICJlbmFibGUgZ2FkZ2V0cyB0byB0ZXN0IFNwZWN0cmUgbWl0
aWdhdGlvbnMuIikgXAotICAgIHYoYm9vbCwgdXNlUG9pc29uaW5nLCB0cnVlLCBOb3JtYWwsICJQ
b2lzb24gaXMgcmFuZG9taXplZCBhdCBsb2FkIHRpbWUgd2hlbiB0cnVlLCBhbmQgaW5pdGlhbGl6
ZWQgdG8gMCBpZiBmYWxzZSB3aGljaCBkZWZlYXRzIHNvbWUgU3BlY3RyZSBhbmQgdHlwZSBjb25m
dXNpb24gbWl0aWdhdGlvbnMsIGJ1dCBhbGxvd3MgdG9vbHMgc3VjaCBhcyBsZWFrIGRldGVjdG9y
cyB0byBmdW5jdGlvbiBiZXR0ZXIuIikgXAogICAgIHYoYm9vbCwgemVyb1N0YWNrRnJhbWUsIGZh
bHNlLCBOb3JtYWwsICJaZXJvIHN0YWNrIGZyYW1lIG9uIGVudHJ5IHRvIGEgZnVuY3Rpb24uIikg
XAogICAgIFwKICAgICB2KGJvb2wsIGZhaWxUb0NvbXBpbGVXZWJBc3NlbWJseUNvZGUsIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCBubyBXYXNtOjpQbGFuIHdpbGwgc3VjZXNzZnVsbHkgY29tcGls
ZSBhIGZ1bmN0aW9uLiIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlZEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlZEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4
MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
b3ZlcmZsb3dTdG9yYWdlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0b3JhZ2Uu
Z2V0KCkudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gbV9zdG9yYWdlLmdldCgpOwogICAg
IH0KICAgICAKICAgICBzdGF0aWMgU3RvcmFnZUhlYWRlciYgc3RvcmFnZUhlYWRlcihXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UpCkBAIC0xOTQsMTQgKzE5NCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gc3RvcmFnZUhlYWRlcihvdmVyZmxvd1N0b3JhZ2UoKSk7CiAgICAgfQog
ICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdXNpbmcgUG9pc29uZWRCYXJyaWVy
ID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8U2NvcGVkQXJndW1lbnRzUG9pc29uLCBUPjsKKyAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPFNjb3Bl
ZEFyZ3VtZW50c1RhYmxlPiBtX3RhYmxlOworICAgIFdyaXRlQmFycmllcjxKU0xleGljYWxFbnZp
cm9ubWVudD4gbV9zY29wZTsKICAgICAKLSAgICBQb2lzb25lZEJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9jYWxsZWU7Ci0gICAgUG9pc29uZWRCYXJyaWVyPFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX3Rh
YmxlOwotICAgIFBvaXNvbmVkQmFycmllcjxKU0xleGljYWxFbnZpcm9ubWVudD4gbV9zY29wZTsK
LSAgICAKLSAgICBBdXhpbGlhcnlCYXJyaWVyPFBvaXNvbmVkPFNjb3BlZEFyZ3VtZW50c1BvaXNv
biwgV3JpdGVCYXJyaWVyPFVua25vd24+Kj4+IG1fc3RvcmFnZTsKKyAgICBBdXhpbGlhcnlCYXJy
aWVyPFdyaXRlQmFycmllcjxVbmtub3duPio+IG1fc3RvcmFnZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIGlubGluZSB2b2lk
IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6c2UKICAgICBpZiAoV2Vha0ltcGwqIGltcGwgPSB0
aGlzLT53ZWFrSW1wbCgpKQogICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKGltcGwpOwogICAg
IFdlYWtJbXBsKiBpbXBsID0gV2Vha1NldDo6YWxsb2NhdGUoc3RydWN0dXJlLCAmc2luZ2xlU2xv
dFRyYW5zaXRpb25XZWFrT3duZXIoKSwgdGhpcyk7Ci0gICAgbV9kYXRhID0gUG9pc29uZWRXZWFr
SW1wbFB0cihpbXBsKS5iaXRzKCkgfCBVc2luZ1NpbmdsZVNsb3RGbGFnOworICAgIG1fZGF0YSA9
IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oaW1wbCkgfCBVc2luZ1NpbmdsZVNsb3RGbGFnOwogfQog
CiBib29sIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Y29udGFpbnMoVW5pcXVlZFN0cmluZ0lt
cGwqIHJlcCwgdW5zaWduZWQgYXR0cmlidXRlcykgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5o
CShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDYgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCi0jaW5jbHVkZSAiSlND
UG9pc29uLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5j
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgpAQCAtMTg3
LDggKzE4Niw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xl
U2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFw
UHRyID0gUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uLCBUcmFuc2l0aW9u
TWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKQEAgLTE5OCwxMyArMTk1LDEzIEBAIHByaXZhdGU6CiAg
ICAgVHJhbnNpdGlvbk1hcCogbWFwKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNV
c2luZ1NpbmdsZVNsb3QoKSk7Ci0gICAgICAgIHJldHVybiBQb2lzb25lZFRyYW5zaXRpb25NYXBQ
dHIoQWxyZWFkeVBvaXNvbmVkLCBtX2RhdGEpLnVucG9pc29uZWQoKTsKKyAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxUcmFuc2l0aW9uTWFwKj4obV9kYXRhKTsKICAgICB9CiAKICAgICBXZWFr
SW1wbCogd2Vha0ltcGwoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5n
bGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRXZWFrSW1wbFB0cihBbHJlYWR5UG9p
c29uZWQsIG1fZGF0YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKS51bnBvaXNvbmVkKCk7CisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V2Vha0ltcGwqPihtX2RhdGEgJiB+VXNpbmdTaW5nbGVT
bG90RmxhZyk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFwKQpA
QCAtMjE1LDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9j
YXRlKGltcGwpOwogCiAgICAgICAgIC8vIFRoaXMgaW1wbGljaXRseSBjbGVhcnMgdGhlIGZsYWcg
dGhhdCBpbmRpY2F0ZXMgd2UncmUgdXNpbmcgYSBzaW5nbGUgdHJhbnNpdGlvbgotICAgICAgICBt
X2RhdGEgPSBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIobWFwKS5iaXRzKCk7CisgICAgICAgIG1f
ZGF0YSA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4obWFwKTsKIAogICAgICAgICBBU1NFUlQoIWlz
VXNpbmdTaW5nbGVTbG90KCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dyaXRlQmFycmllci5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTEgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkdDQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkhhbmRs
ZVR5cGVzLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CiAjaW5jbHVkZSA8d3RmL0R1bWJQdHJUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvRHVtYlZhbHVl
VHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0yNTAsMTIgKzI0OCw0IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV3JpdGVC
YXJyaWUKICAgICByZXR1cm4gbGhzLmdldCgpID09IHJocy5nZXQoKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgUG9pc29uLCBjbGFzcyBUPgotdXNpbmcgUG9pc29uZWRXcml0ZUJhcnJpZXJUcmFp
dHNTZWxlY3QgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtu
b3duPjo6dmFsdWUsCi0gICAgV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzPFBvaXNvbiwgVD4sIFdU
Rjo6UG9pc29uZWRQdHJUcmFpdHM8UG9pc29uLCBUPgotPjo6dHlwZTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFBvaXNvbiwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkV3JpdGVCYXJyaWVyID0g
V3JpdGVCYXJyaWVyPFQsIFBvaXNvbmVkV3JpdGVCYXJyaWVyVHJhaXRzU2VsZWN0PFBvaXNvbiwg
VD4+OwotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI0MjExOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSB7IG51bGxwdHIgfTsKICAgICAg
ICAgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6TG9hZExvY2F0aW9uIHdhc21FbnRyeXBv
aW50TG9hZExvY2F0aW9uIHsgbnVsbHB0ciB9OwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8V2FzbUVudHJ5UHRyVGFnPiB3YXNtVG9FbWJlZGRlclN0dWI7Ci0gICAgICAgIHZvaWQqIGlt
cG9ydEZ1bmN0aW9uIHsgbnVsbHB0ciB9OyAvLyBJbiBhIEpTIGVtYmVkZGluZywgdGhpcyBpcyBh
IFBvaXNvbmVkQmFycmllcjxKU09iamVjdD4uCisgICAgICAgIHZvaWQqIGltcG9ydEZ1bmN0aW9u
IHsgbnVsbHB0ciB9OyAvLyBJbiBhIEpTIGVtYmVkZGluZywgdGhpcyBpcyBhIFdyaXRlQmFycmll
cjxKU09iamVjdD4uCiAgICAgfTsKICAgICB1bnNpZ25lZCBudW1JbXBvcnRGdW5jdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX251bUltcG9ydEZ1bmN0aW9uczsgfQogICAgIEltcG9ydEZ1bmN0aW9u
SW5mbyogaW1wb3J0RnVuY3Rpb25JbmZvKHNpemVfdCBpbXBvcnRGdW5jdGlvbk51bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAJKHJldmlzaW9uIDI0
MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTExNiw5ICsxMTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxG
dW5jdGlvbj4gY3JlYXRlCiAgICAgICAgICAgICAvLyBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgSlMg
YXJndW1lbnQgd2hlbiB3ZSdyZSBub3QgdXNpbmcgZmFzdCBUTFMgdG8gaG9sZCB0aGUKICAgICAg
ICAgICAgIC8vIFdhc206OkNvbnRleHQqJ3MgaW5zdGFuY2UuCiAgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1dlYkFzc2VtYmx5
SW5zdGFuY2VQb2lzb246OmtleSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
ICAgIGppdC54b3I2NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6YXJndW1lbnRHUFIyLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mSW5zdGFuY2Uo
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIH0KIAogICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZyYW1lKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwpAQCAtMTU1LDkgKzE1Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiBjcmVhdGUKICAgICAgICAgLy8gV2FzbTo6Q29udGV4dConcyBpbnN0YW5jZS4KICAgICAgICAg
aWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpIHsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwganNPZmZzZXQp
LCB3YXNtQ29udGV4dEluc3RhbmNlR1BSKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dEluc3RhbmNlR1BSLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6Om9mZnNldE9mUG9pc29uZWRJbnN0YW5jZSgpKSwgd2FzbUNvbnRleHRJbnN0YW5jZUdQ
Uik7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1dl
YkFzc2VtYmx5SW5zdGFuY2VQb2lzb246OmtleSgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgICAgICAg
ICBqaXQueG9yNjQoc2NyYXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5j
ZUdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkluc3RhbmNlKCkpLCB3YXNtQ29u
dGV4dEluc3RhbmNlR1BSKTsKICAgICAgICAgICAgIGpzT2Zmc2V0ICs9IHNpemVvZihFbmNvZGVk
SlNWYWx1ZSk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAkocmV2aXNpb24gMjQyMTE5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKIAogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgotI2luY2x1ZGUgIkpTQ1BvaXNvbi5o
IgogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVyLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCkBAIC0zNiw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2Fz
bUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21Nb2R1bGUuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+
Ci0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtOTAsNyArODgsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgUG9pc29uZWRSZWY8SlNXZWJB
c3NlbWJseUNvZGVCbG9ja1BvaXNvbiwgV2FzbTo6Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAg
ICBSZWY8V2FzbTo6Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBWZWN0b3I8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4+IG1fd2FzbVRvSlNFeGl0U3R1YnM7CiAgICAg
QmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIFN0cmluZyBtX2Vycm9yTWVz
c2FnZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpKU1dlYkFzc2Vt
Ymx5SW5zdAogICAgICwgbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpcy0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMo
KTsgKytpKQotICAgICAgICBuZXcgKHRoaXMtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248UG9p
c29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oaSkpIFBvaXNvbmVkQmFycmllcjxKU09iamVjdD4oKTsK
KyAgICAgICAgbmV3ICh0aGlzLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmll
cjxKU09iamVjdD4+KGkpKSBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+KCk7CiB9CiAKIHZvaWQgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIG1vZHVsZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9i
amVjdCkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0
Q2hpbGRyZQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2
aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlLT5l
eHRyYU1lbW9yeUFsbG9jYXRlZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhp
c09iamVjdC0+aW5zdGFuY2UoKS5udW1JbXBvcnRGdW5jdGlvbnMoKTsgKytpKQotICAgICAgICB2
aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxQb2lz
b25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRoaXMgYWxzbyBrZWVwcyB0aGUgZnVuY3Rp
b25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUuCisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCp0aGlzT2JqZWN0LT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09i
amVjdD4+KGkpKTsgLy8gVGhpcyBhbHNvIGtlZXBzIHRoZSBmdW5jdGlvbnMnIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSBhbGl2ZS4KIH0KIAogdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmFs
aXplQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZjxXYXNtOjpDb2RlQmxvY2s+
JiYgd2FzbUNvZGVCbG9jaywgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25N
b2RlIGNyZWF0aW9uTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
IAotI2luY2x1ZGUgIkpTQ1BvaXNvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrLmgiCkBAIC04MSwxMSArODAsOCBAQCBwdWJsaWM6CiAKICAgICBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQogCi0gICAgc3Rh
dGljIHNpemVfdCBvZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2luc3RhbmNlKTsgfQotICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZQb2lzb25lZENhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fY2FsbGVlKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICB1c2luZyBQb2lzb25lZEJhcnJpZXIgPSBQb2lzb25lZFdyaXRlQmFycmllcjxK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24sIFQ+OworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZJbnN0YW5jZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UsIG1faW5zdGFuY2UpOyB9CisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkNhbGxlZSgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fY2FsbGVlKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKFZNJiwgU3RydWN0dXJl
KiwgUmVmPFdhc206Okluc3RhbmNlPiYmKTsKQEAgLTk0LDE0ICs5MCwxNCBAQCBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiBwcml2YXRlOgotICAgIFBvaXNvbmVkUmVmPEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwg
V2FzbTo6SW5zdGFuY2U+IG1faW5zdGFuY2U7CisgICAgUmVmPFdhc206Okluc3RhbmNlPiBtX2lu
c3RhbmNlOwogCi0gICAgUG9pc29uZWRCYXJyaWVyPEpTV2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9k
dWxlOwotICAgIFBvaXNvbmVkQmFycmllcjxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVC
bG9jazsKLSAgICBQb2lzb25lZEJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9k
dWxlTmFtZXNwYWNlT2JqZWN0OwotICAgIFBvaXNvbmVkQmFycmllcjxKU1dlYkFzc2VtYmx5TWVt
b3J5PiBtX21lbW9yeTsKLSAgICBQb2lzb25lZEJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPiBt
X3RhYmxlOwotICAgIFBvaXNvbmVkQmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxsZWU+IG1fY2Fs
bGVlOworICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TW9kdWxlPiBtX21vZHVsZTsKKyAg
ICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAg
V3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9i
amVjdDsKKyAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7Cisg
ICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlUYWJsZT4gbV90YWJsZTsKKyAgICBXcml0ZUJh
cnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1lbW9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNZW1vcnkuaAkocmV2aXNpb24gMjQyMTE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5jbHVkZSAiSlND
UG9pc29uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKQEAgLTY3LDkgKzY2LDkgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIFBvaXNvbmVkUmVm
PEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24sIFdhc206Ok1lbW9yeT4gbV9tZW1vcnk7Ci0gICAg
UG9pc29uZWRXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1lbW9yeVBvaXNvbiwgSlNBcnJheUJ1
ZmZlcj4gbV9idWZmZXJXcmFwcGVyOwotICAgIFBvaXNvbmVkUmVmUHRyPEpTV2ViQXNzZW1ibHlN
ZW1vcnlQb2lzb24sIEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWY8V2FzbTo6TWVtb3J5
PiBtX21lbW9yeTsKKyAgICBXcml0ZUJhcnJpZXI8SlNBcnJheUJ1ZmZlcj4gbV9idWZmZXJXcmFw
cGVyOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmgJKHJldmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2luY2x1ZGUgIkpT
Q1BvaXNvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5TW9kZS5oIgpAQCAtNzgsMTQgKzc3LDEw
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBQb2lz
b25lZFJlZjxKU1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uLCBXYXNtOjpNb2R1bGU+IG1fbW9kdWxl
OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB1c2luZyBQb2lzb25lZEJhcnJpZXIg
PSBQb2lzb25lZFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uLCBUPjsKLQot
ICAgIFBvaXNvbmVkQmFycmllcjxTeW1ib2xUYWJsZT4gbV9leHBvcnRTeW1ib2xUYWJsZTsKLSAg
ICBQb2lzb25lZEJhcnJpZXI8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2tzW1dh
c206Ok51bWJlck9mTWVtb3J5TW9kZXNdOwotICAgIFBvaXNvbmVkQmFycmllcjxXZWJBc3NlbWJs
eVRvSlNDYWxsZWU+IG1fY2FsbGVlOworICAgIFJlZjxXYXNtOjpNb2R1bGU+IG1fbW9kdWxlOwor
ICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9leHBvcnRTeW1ib2xUYWJsZTsKKyAgICBX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4gbV9jb2RlQmxvY2tzW1dhc206Ok51
bWJlck9mTWVtb3J5TW9kZXNdOworICAgIFdyaXRlQmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxs
ZWU+IG1fY2FsbGVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAJKHJl
dmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw5ICs2Myw5IEBAIEpTV2ViQXNz
ZW1ibHlUYWJsZTo6SlNXZWJBc3NlbWJseVRhYmxlKFYKICAgICAvLyBGSVhNRTogSXQgbWlnaHQg
YmUgd29ydGggdHJ5aW5nIHRvIHByZS1hbGxvY2F0ZSBtYXhpbXVtIGhlcmUuIFRoZSBzcGVjIHJl
Y29tbWVuZHMgZG9pbmcgc28uCiAgICAgLy8gQnV0IGZvciBub3csIHdlJ3JlIG5vdCBkb2luZyB0
aGF0LgogICAgIC8vIEZJWE1FIHRoaXMgb3Zlci1hbGxvY2F0ZXMgYW5kIGNvdWxkIGJlIHNtYXJ0
ZXIgYWJvdXQgbm90IGNvbW1pdHRpbmcgYWxsIG9mIHRoYXQgbWVtb3J5IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE0MjUKLSAgICBtX2pzRnVuY3Rpb25zID0gTWFs
bG9jUHRyPFBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+OjptYWxsb2MoKHNpemVvZihQb2lzb25l
ZEJhcnJpZXI8SlNPYmplY3Q+KSAqIENoZWNrZWQ8c2l6ZV90PihhbGxvY2F0ZWRMZW5ndGgoKSkp
LnVuc2FmZUdldCgpKTsKKyAgICBtX2pzRnVuY3Rpb25zID0gTWFsbG9jUHRyPFdyaXRlQmFycmll
cjxKU09iamVjdD4+OjptYWxsb2MoKHNpemVvZihXcml0ZUJhcnJpZXI8SlNPYmplY3Q+KSAqIENo
ZWNrZWQ8c2l6ZV90PihhbGxvY2F0ZWRMZW5ndGgoKSkpLnVuc2FmZUdldCgpKTsKICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgYWxsb2NhdGVkTGVuZ3RoKCk7ICsraSkKLSAgICAgICAgbmV3
KCZtX2pzRnVuY3Rpb25zLmdldCgpW2ldKSBQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+KCk7Cisg
ICAgICAgIG5ldygmbV9qc0Z1bmN0aW9ucy5nZXQoKVtpXSkgV3JpdGVCYXJyaWVyPEpTT2JqZWN0
PigpOwogfQogCiB2b2lkIEpTV2ViQXNzZW1ibHlUYWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQpAQCAtMTA0LDEwICsxMDQsMTAgQEAgYm9vbCBKU1dlYkFzc2VtYmx5VGFibGU6Omdyb3codWlu
dDMyX3QgZAogICAgIHNpemVfdCBuZXdMZW5ndGggPSBncmV3LnZhbHVlKCk7CiAgICAgaWYgKG5l
d0xlbmd0aCA+IG1fdGFibGUtPmFsbG9jYXRlZExlbmd0aChvbGRMZW5ndGgpKQogICAgICAgICAv
LyBGSVhNRSB0aGlzIG92ZXItYWxsb2NhdGVzIGFuZCBjb3VsZCBiZSBzbWFydGVyIGFib3V0IG5v
dCBjb21taXR0aW5nIGFsbCBvZiB0aGF0IG1lbW9yeSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxNDI1Ci0gICAgICAgIG1fanNGdW5jdGlvbnMucmVhbGxvYygoc2l6
ZW9mKFBvaXNvbmVkQmFycmllcjxKU09iamVjdD4pICogQ2hlY2tlZDxzaXplX3Q+KG1fdGFibGUt
PmFsbG9jYXRlZExlbmd0aChuZXdMZW5ndGgpKSkudW5zYWZlR2V0KCkpOworICAgICAgICBtX2pz
RnVuY3Rpb25zLnJlYWxsb2MoKHNpemVvZihXcml0ZUJhcnJpZXI8SlNPYmplY3Q+KSAqIENoZWNr
ZWQ8c2l6ZV90PihtX3RhYmxlLT5hbGxvY2F0ZWRMZW5ndGgobmV3TGVuZ3RoKSkpLnVuc2FmZUdl
dCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSBvbGRMZW5ndGg7IGkgPCBtX3RhYmxlLT5hbGxv
Y2F0ZWRMZW5ndGgobmV3TGVuZ3RoKTsgKytpKQotICAgICAgICBuZXcgKCZtX2pzRnVuY3Rpb25z
LmdldCgpW2ldKSBQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+KCk7CisgICAgICAgIG5ldyAoJm1f
anNGdW5jdGlvbnMuZ2V0KClbaV0pIFdyaXRlQmFycmllcjxKU09iamVjdD4oKTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTT2JqZWN0KiBKU1dlYkFzc2VtYmx5
VGFibGU6OmdldEZ1bmN0aW8KIHZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjpjbGVhckZ1bmN0aW9u
KHVpbnQzMl90IGluZGV4KQogewogICAgIG1fdGFibGUtPmNsZWFyRnVuY3Rpb24oaW5kZXgpOwot
ICAgIG1fanNGdW5jdGlvbnMuZ2V0KClbaW5kZXggJiBtX3RhYmxlLT5tYXNrKCldID0gUG9pc29u
ZWRCYXJyaWVyPEpTT2JqZWN0PigpOworICAgIG1fanNGdW5jdGlvbnMuZ2V0KClbaW5kZXggJiBt
X3RhYmxlLT5tYXNrKCldID0gV3JpdGVCYXJyaWVyPEpTT2JqZWN0PigpOwogfQogCiB2b2lkIEpT
V2ViQXNzZW1ibHlUYWJsZTo6c2V0RnVuY3Rpb24oVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAkocmV2aXNpb24gMjQyMTE5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAKLSNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2FzbUxpbWl0cy5oIgpAQCAt
NjYsMTIgKzY1LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IAotICAgIFBvaXNvbmVkUmVmPEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwgV2FzbTo6VGFibGU+
IG1fdGFibGU7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHVzaW5nIFBvaXNvbmVk
QmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwg
VD47Ci0KLSAgICBNYWxsb2NQdHI8UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4gbV9qc0Z1bmN0
aW9uczsKKyAgICBSZWY8V2FzbTo6VGFibGU+IG1fdGFibGU7CisgICAgTWFsbG9jUHRyPFdyaXRl
QmFycmllcjxKU09iamVjdD4+IG1fanNGdW5jdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJl
dmlzaW9uIDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKIHVzaW5nIEpJVCA9IENDYWxsSGVscGVyczsKIAotc3RhdGljIHZv
aWQgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoSklUJiBqaXQsIHVuc2lnbmVkIGltcG9ydEluZGV4
LCBHUFJSZWcgcG9pc29uLCBHUFJSZWcgcmVzdWx0KQorc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJ
bXBvcnRKU0NlbGwoSklUJiBqaXQsIHVuc2lnbmVkIGltcG9ydEluZGV4LCBHUFJSZWcgcmVzdWx0
KQogewogICAgIC8vIFdlJ3JlIGNhbGxpbmcgb3V0IG9mIHRoZSBjdXJyZW50IFdlYkFzc2VtYmx5
Lkluc3RhbmNlLiBUaGF0IEluc3RhbmNlIGhhcyBhIGxpc3Qgb2YgYWxsIGl0cyBpbXBvcnQgZnVu
Y3Rpb25zLgogICAgIGppdC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShyZXN1bHQpOwogICAgIGpp
dC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhyZXN1bHQsIEluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1
bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7Ci0gICAgaml0LnhvcjY0KHBvaXNvbiwgcmVz
dWx0KTsKIH0KIAogc3RhdGljIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50
cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gaGFuZGxlQmFkSTY0VXNlKFZNKiB2bSwgSklUJiBq
aXQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCB1bnNpZ25lZCBpbXBvcnRJbmRleCkKQEAg
LTg2LDE0ICs4NSw5IEBAIHN0YXRpYyBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2EK
IAogICAgICAgICAvLyBTdG9yZSBDYWxsZWUuCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjEsIEluc3RhbmNlOjpvZmZzZXRPZk93
bmVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6Om9mZnNldE9mUG9pc29uZWRDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1i
bHlJbnN0YW5jZVBvaXNvbjo6a2V5KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAg
ICBqaXQueG9yNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVlKCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1l
bnRHUFIyLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAot
ICAgICAgICAvLyBMZXQncyBiZSBwYXJhbm9pZCBvbiB0aGUgZXhjZXB0aW9uIHBhdGggYW5kIHpl
cm8gb3V0IHRoZSBwb2lzb24gaW5zdGVhZCBvZiBsZWF2aW5nIGl0IGluIGFuIGFyZ3VtZW50IEdQ
Ui4KLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMyk7Ci0KICAgICAgICAgYXV0byBjYWxsID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKnZtKTsKIApA
QCAtMjkxLDE2ICsyODUsMTEgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeQogICAgICAgICAKICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEluc3RhbmNlOjpvZmZzZXRPZk93bmVyKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mUG9pc29uZWRDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjo6a2V5KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBqaXQueG9y
NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwogICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBK
SVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICAgICAgCi0g
ICAgICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKGppdCwgaW1wb3J0SW5kZXgsIEdQUkluZm86
OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbWF0ZXJpYWxp
emVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
ICAgICAgICAgCi0gICAgICAgIC8vIExldCdzIGJlIHBhcmFub2lkIGJlZm9yZSB0aGUgY2FsbCBh
bmQgemVybyBvdXQgdGhlIHBvaXNvbiBpbnN0ZWFkIG9mIGxlYXZpbmcgaXQgaW4gYW4gYXJndW1l
bnQgR1BSLgotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLQogICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPj0gNCwgIldlIHJlbHkgb24gdGhpcyB3aXRoIHRo
ZSBjYWxsIGJlbG93LiIpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYXR1cmVJ
bmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkZvbGxvd2luZyBjb2RlIGFzc3VtZXMgU2lnbmF0
dXJlSW5kZXggaXMgNjRiaXQuIik7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShjYWxsRnVuYyk+KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoc2lnbmF0dXJlSW5kZXgpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVy
KSk7CkBAIC00NzksMjQgKzQ2OCwxNSBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHUFJSZWcgcG9pc29uID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxOwotICAgIEFTU0VSVChwb2lzb24gIT0gR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsgLy8gQm90aCBhcmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lIGJlbG93LgotCiAgICAgaml0
LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSW5z
dGFuY2U6Om9mZnNldE9mT3duZXIoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZlBvaXNvbmVkQ2FsbGVlKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpT
V2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbjo6a2V5KCkpLCBwb2lzb24pOwotICAgIGppdC54b3I2
NChwb2lzb24sIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQu
c3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIEdQUlJlZyBpbXBvcnRKU0NlbGxHUFJSZWcgPSBH
UFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwIGZvciBzbG93IHBh
dGggYmVsb3cuCi0gICAgQVNTRVJUKHBvaXNvbiAhPSBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAg
ICAgQVNTRVJUKCF3YXNtQ0MubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldChpbXBvcnRKU0NlbGxH
UFJSZWcpKTsKLSAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBw
b2lzb24sIGltcG9ydEpTQ2VsbEdQUlJlZyk7Ci0KLSAgICAvLyBMZXQncyBiZSBwYXJhbm9pZCB6
ZXJvIG91dCB0aGUgcG9pc29uIGluc3RlYWQgb2YgbGVhdmluZyBpdCBpbiBhbiBhcmd1bWVudCBH
UFIuCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIHBvaXNvbik7
CisgICAgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoaml0LCBpbXBvcnRJbmRleCwgaW1wb3J0SlND
ZWxsR1BSUmVnKTsKIAogICAgIGppdC5zdG9yZTY0KGltcG9ydEpTQ2VsbEdQUlJlZywgY2FsbGVl
RnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LnN0b3JlMzIoSklUOjpUcnVzdGVkSW1tMzIo
bnVtYmVyT2ZQYXJhbWV0ZXJzKSwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBh
eWxvYWRPZmZzZXQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb25CYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaAkocmV2aXNpb24gMjQyMTE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgV2ViQXNzZW1ibHlG
dW5jdGlvbkJhc2UoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgUG9p
c29uZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlGdW5jdGlvbkJhc2VQb2lzb24sIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJs
eUluc3RhbmNlPiBtX2luc3RhbmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVj
UwogICAgICAgICAgICAgYXV0byogaW5mbyA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0
RnVuY3Rpb25JbmZvKGltcG9ydC5raW5kSW5kZXgpOwogICAgICAgICAgICAgaW5mby0+dGFyZ2V0
SW5zdGFuY2UgPSBjYWxsZWVJbnN0YW5jZTsKICAgICAgICAgICAgIGluZm8tPndhc21FbnRyeXBv
aW50TG9hZExvY2F0aW9uID0gZW50cnlwb2ludExvYWRMb2NhdGlvbjsKLSAgICAgICAgICAgIG1f
aW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248SlNXZWJBc3NlbWJseUluc3RhbmNl
OjpQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpbXBvcnQua2luZEluZGV4KS0+c2V0KHZtLCBt
X2luc3RhbmNlLmdldCgpLCBmdW5jdGlvbik7CisgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0
YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGltcG9ydC5raW5k
SW5kZXgpLT5zZXQodm0sIG1faW5zdGFuY2UuZ2V0KCksIGZ1bmN0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTCiAgICAgICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQg
bW9zdCBvbmUgd3JhcHBlciBpcyBjcmVhdGVkIGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1
bmlxdWUsIGV2ZW4gaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0
LiBNb3Jlb3ZlciwgaWYgdGhlIGl0ZW0gd2FzIGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4g
RXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rp
b24gb2JqZWN0IHdpbGwgYmUgZm91bmQuIEZvciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMg
ZnVuY3Rpb25zLCBhIG5ldyB3cmFwcGVyIHdpbGwgYmUgY3JlYXRlZC4pCiAgICAgICAgICAgICBp
ZiAoZXhwLmtpbmRJbmRleCA8IGZ1bmN0aW9uSW1wb3J0Q291bnQpIHsKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gZXhwLmtpbmRJbmRleDsKLSAgICAgICAgICAgICAg
ICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9y
dEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0
Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOworICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5j
dGlvbkltcG9ydCA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248V3JpdGVC
YXJyaWVyPEpTT2JqZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwogICAgICAgICAgICAgICAg
IGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9ydCkpCiAgICAg
ICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbkltcG9ydDsKICAgICAgICAg
ICAgICAgICBlbHNlIHsKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTCiAgICAgICAgIEFTU0VSVCghc2lnbmF0dXJlLmFyZ3VtZW50Q291
bnQoKSk7CiAgICAgICAgIEFTU0VSVChzaWduYXR1cmUucmV0dXJuVHlwZSgpID09IFdhc206OlZv
aWQpOwogICAgICAgICBpZiAoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPCBjb2RlQmxvY2stPmZ1
bmN0aW9uSW1wb3J0Q291bnQoKSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHN0YXJ0RnVuY3Rp
b24gPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oc3RhcnRGdW5jdGlvbkluZGV4U3Bh
Y2UpLT5nZXQoKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFydEZ1bmN0aW9uID0gbV9pbnN0
YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+Pihz
dGFydEZ1bmN0aW9uSW5kZXhTcGFjZSktPmdldCgpOwogICAgICAgICAgICAgbV9zdGFydEZ1bmN0
aW9uLnNldCh2bSwgdGhpcywgc3RhcnRGdW5jdGlvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSA9IGNvZGVCbG9j
ay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1
bmN0aW9uSW5kZXhTcGFjZSk7CkBAIC01MjAsNyArNTIwLDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdAogICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRl
eCA9IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzW2ldOwogICAgICAgICAgICAgV2FzbTo6U2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUuc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rp
b25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSW5k
ZXggPCBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKSkgewotICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBmdW5jdGlvbkltcG9ydCA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0
RnVuY3Rpb248SlNXZWJBc3NlbWJseUluc3RhbmNlOjpQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+
PihmdW5jdGlvbkluZGV4KS0+Z2V0KCk7CisgICAgICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0
aW9uSW1wb3J0ID0gbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+PihmdW5jdGlvbkluZGV4KS0+Z2V0KCk7CiAgICAgICAgICAgICAgICAg
aWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGZ1bmN0aW9uSW1wb3J0KSkgewogICAg
ICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPih2bSwgZnVuY3Rpb25JbXBvcnQpOwogICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBldmVyIGltcG9ydCBhIFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLCB3ZSBzZXQgdGhlIGltcG9ydCBhcyB0aGUgdW53cmFwcGVkIHZhbHVlLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5oCShyZXZpc2lvbiAyNDIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjEsMTEgKzYxLDggQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
dXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmRQb2lzb24sIFQ+OwotCi0gICAgUG9pc29uZWRCYXJyaWVyPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKLSAgICBQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+IG1f
c3RhcnRGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPiBt
X2luc3RhbmNlOworICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9zdGFydEZ1bmN0aW9uOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAkocmV2aXNpb24gMjQyMTE5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTV2ViQXNzZW1ibHlNb2R1bGUqKTsKICAgICBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKIAotICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVy
PFdlYkFzc2VtYmx5VG9KU0NhbGxlZVBvaXNvbiwgSlNXZWJBc3NlbWJseU1vZHVsZT4gbV9tb2R1
bGU7CisgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgJKHJldmlzaW9u
IDI0MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24pOwogCi0g
ICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25Qb2lzb24s
IEpTT2JqZWN0PiBtX2Z1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9mdW5j
dGlvbjsKICAgICAvLyBJdCdzIHNhZmUgdG8ganVzdCBob2xkIHRoZSByYXcgV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgYSByZWZlcmVuY2UKICAgICAvLyB0byBv
dXIgSW5zdGFuY2UsIHdoaWNoIHBvaW50cyB0byB0aGUgQ29kZUJsb2NrLCB3aGljaCBwb2ludHMg
dG8gdGhlIE1vZHVsZQogICAgIC8vIHRoYXQgZXhwb3J0ZWQgdXMsIHdoaWNoIGVuc3VyZXMgdGhh
dCB0aGUgYWN0dWFsIFNpZ25hdHVyZS9jb2RlIGRvZXNuJ3QgZ2V0IGRlYWxsb2NhdGVkLgo=
</data>
<flag name="review"
          id="379670"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>