<?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>185730</bug_id>
          
          <creation_ts>2018-05-17 08:22:25 -0700</creation_ts>
          <short_desc>[JSC] Use AssemblyHelpers&apos; type checking functions as much as possible</short_desc>
          <delta_ts>2018-05-17 09:19:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1424724</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-17 08:22:25 -0700</bug_when>
    <thetext>[JSC] Use AssemblyHelpers&apos; type checking functions as much as possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424731</commentid>
    <comment_count>1</comment_count>
      <attachid>340584</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-17 08:26:42 -0700</bug_when>
    <thetext>Created attachment 340584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424742</commentid>
    <comment_count>2</comment_count>
      <attachid>340587</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-17 08:40:05 -0700</bug_when>
    <thetext>Created attachment 340587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424744</commentid>
    <comment_count>3</comment_count>
      <attachid>340588</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-17 08:41:10 -0700</bug_when>
    <thetext>Created attachment 340588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424746</commentid>
    <comment_count>4</comment_count>
      <attachid>340588</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-17 08:50:06 -0700</bug_when>
    <thetext>Comment on attachment 340588
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424760</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-17 09:18:30 -0700</bug_when>
    <thetext>Committed r231905: &lt;https://trac.webkit.org/changeset/231905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424761</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-17 09:19:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/40332977&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340584</attachid>
            <date>2018-05-17 08:26:42 -0700</date>
            <delta_ts>2018-05-17 08:40:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185730-20180518002641.patch</filename>
            <type>text/plain</type>
            <size>108287</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjY2YTM0Y2M5ZmY1YjQ2MzgwYjBlMDZlZWJkYzVlMmVlZjNiZmZkLi4wZDI5NjQxOGViYTJjNzJi
NGY0NWQzZmQxYzRhMDBhMDU4NTBmN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjMgQEAKKzIwMTgtMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIEFzc2VtYmx5SGVscGVycycgdHlwZSBjaGVja2lu
ZyBmdW5jdGlvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0J3MgdXNlIEFzc2VtYmx5SGVscGVycycgdHlwZSBj
aGVja2luZyBmdW5jdGlvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhpcyBoaWRlcyB0aGUgY29t
cGxleAorICAgICAgICBiaXQgYW5kIHJlZ2lzdGVyIG9wZXJhdGlvbnMgZm9yIHR5cGUgdGFnZ2lu
ZyBvZiBKU1ZhbHVlLiBJdCBpcyByZWFsbHkgdXNlZnVsIHdoZW4gd2Ugd291bGQgbGlrZQorICAg
ICAgICB0byB0d2VhayB0eXBlIHRhZ2dpbmcgcmVwcmVzZW50YXRpb24gc2luY2UgdGhlIGNvZGUg
aXMgY29sbGVjdGVkIGludG8gQXNzZW1ibHlIZWxwZXJzLiBBbmQKKyAgICAgICAgdGhlIG5hbWVk
IGZ1bmN0aW9uIGlzIG1vcmUgcmVhZGFibGUgdGhhbiBzb21lIGJyYW5jaGluZyBvcGVyYXRpb25z
LgorCisgICAgICAgIFdlIGFsc28gcmVtb3ZlIHVubmVjZXNzYXJ5IGJyYW5jaGluZyBmdW5jdGlv
bnMgaW4gSklUIC8gSlNJbnRlcmZhY2VKSVQuIFNvbWUgb2YgdGhlbSBhcmUgZHVwbGljYXRlCisg
ICAgICAgIHRvIEFzc2VtYmx5SGVscGVycycgb25lLgorCisgICAgICAgIFdlIGFkZCBzZXZlcmFs
IG5ldyB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuIE1vcmVvdmVy
LCB3ZSBhZGQgYnJhbmNoSWZYWFgoR1BSUmVnKQorICAgICAgICBmdW5jdGlvbnMgZXZlbiBmb3Ig
MzJiaXQgZW52aXJvbm1lbnQuIEluIDMyYml0IGVudmlyb25tZW50LCB0aGlzIGZ1bmN0aW9uIHRh
a2VzIHRhZyByZWdpc3Rlci4gVGhpcworICAgICAgICBzZW1hbnRpY3MgaXMgYWxpZ25lZCB0byB0
aGUgZXhpc3RpbmcgYnJhbmNoSWZDZWxsIC8gYnJhbmNoSWZOb3RDZWxsLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1pc2MpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBH
ZXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5k
ZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252ZXJ0QW55SW50KToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUFzc2VydE5vdEVtcHR5KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZJbnQzMik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RJbnQzMik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkJvb2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJy
YW5jaElmTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNo
SWZFbXB0eSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RFbXB0
eSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90VW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk51bGwpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90TnVsbCk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF91bnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QmluYXJ5
RG91YmxlT3ApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW9kKToKKyAgICAgICAgKiBq
aXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SnVtcElmQm90aEpTQ2VsbHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZk5v
dEludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEp1bXBJZkpTQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1
bXBJZkludCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfY2VsbF93
aXRoX3R5cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
dG9fbnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja190ZHopOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXROZXdGdW5jRXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9m
aWxlX3R5cGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRo
X3R5cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2puZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2plcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
SnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rv
X251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19zdHJpbmcpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZSk6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
dG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdl
dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29wZSk6CisgICAgICAgICogaml0L0pTSW50
ZXJmYWNlSklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEpTQ2Vs
bCk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKToKKyAgICAg
ICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6
SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdE51bWJlcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxs
KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmly
dHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3IpOgorCiAyMDE4
LTA1LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGRvZXNuJ3QgbmVlZCBhIHBhcmVudCBzb3VyY2Ugb3ZlcnJp
ZGUgZmllbGQgc2luY2UgaXQncyBvbmx5IHVzZWQgZm9yIGRlZmF1bHQgY2xhc3MgY29uc3RydWN0
b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggMmNiODM3NmY5Nzk3MTY5YmJkMmExNmIxM2Y5ZTZkZjVkODc1NmJlZS4uNDljOGExNjI0MTEz
YjM2ZTk5YzU1YjM1MGNiNjY1MGI1ODY0OTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMg
dGhlIHByb3BlcnR5LgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NH
UFIpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFu
Y2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NChWYWx1ZU51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBm
YWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVsbChiYXNlRm9yQWNjZXNzR1BSKSk7
CiAjZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBv
bHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgYmFzZUZvckFjY2Vzc0dQUik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIo
Q0NhbGxIZWxwZXJzOjpOb25aZXJvLCBiYXNlRm9yQWNjZXNzR1BSKSk7CkBAIC00NjMsNyArNDYz
LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7IC8vIFByaW1p
dGl2ZXMgbXVzdCBoYXZlIGEgc3RvcmVkIHByb3RvdHlwZS4gV2UgdXNlIHByb3RvdHlwZUZvckxv
b2t1cCBmb3IgdGhlbS4KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBv
ZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkpLCBiYXNlRm9yQWNjZXNz
R1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJh
bmNoNjQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgYmFzZUZvckFjY2Vzc0dQUiwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZmFs
bFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hJZk51bGwoYmFzZUZvckFjY2Vzc0dQUikpOwogI2Vs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJv
dG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgYmFzZUZvckFjY2Vzc0dQUikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBiOTAxMzE4NjYzZWRhY2IyYzY1
ZGU4ZjYxZjllZDBjY2U3ZjFhZjM4Li5hMmNhMzQ0YjVkYWJiNmFhMzQ3ZGJmZmRiNTE4MDdjM2I3
ZDA0NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcApAQCAtMjM3NSwxNiArMjM3NSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVUb0ludDMyKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgdGVt
cEZwcih0aGlzKTsKICAgICAgICAgICAgIEZQUlJlZyBmcHIgPSB0ZW1wRnByLmZwcigpOwogCi0g
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2pp
dC5icmFuY2hJZkludDMyKGdwcik7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
Y29udmVydGVkOwogCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2Rl
TnVtYmVyLAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCi0gICAgICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZO
b3ROdW1iZXIoZ3ByKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdW1iZXIgPSBtX2ppdC5icmFuY2hJZk51
bWJlcihncHIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIERGR19UWVBFX0NI
RUNLKAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEo
KSwgflNwZWNDZWxsQ2hlY2ssIG1faml0LmJyYW5jaElmQ2VsbChKU1ZhbHVlUmVncyhncHIpKSk7
CkBAIC0yNDI5LDcgKzI0MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVU
b0ludDMyKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IHRlbXBGcHIu
ZnByKCk7CiAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKLSAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0g
bV9qaXQuYnJhbmNoSWZJbnQzMih0YWdHUFIpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCkBAIC0yNDQ1LDcgKzI0NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVUb0ludDMyKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hJZkNlbGwob3AxLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3Mgbm90IGEgY2VsbDogc28gdHJ1ZSB0
dXJucyBpbnRvIDEgYW5kIGFsbCBlbHNlIHR1cm5zIGludG8gMC4KLSAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNCb29sZWFuID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGls
ZXI6OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQm9vbGVhbiA9IG1faml0LmJy
YW5jaElmQm9vbGVhbih0YWdHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R3ByKTsKICAgICAgICAgICAgICAg
ICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTI2MDIsMTcgKzI2MDEsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURv
dWJsZVJlcChOb2RlKiBub2RlKQogICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZw
cigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKIAotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQu
YnJhbmNoSWZJbnQzMihvcDFHUFIpOwogCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gTm90Q2VsbFVzZSkgewotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNO
dW1iZXIgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQ
UiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFs
LCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNOdW1iZXIgPSBtX2ppdC5icmFuY2hJZk51bWJlcihvcDFHUFIpOwor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hJ
ZlVuZGVmaW5lZChvcDFHUFIpOwogCiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHpl
cm8gPSAwOwogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJv
KSwgcmVzdWx0RlBSKTsKIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0g
bV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChW
YWx1ZU51bGwpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTnVsbCA9IG1faml0
LmJyYW5jaElmTnVsbChvcDFHUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaXNOdWxsKTsK
IAogICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIH5TcGVjQ2VsbENoZWNrLApAQCAtMjYzMyw3ICsyNjMxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChOb2RlKiBub2RlKQogICAgICAgICB9IGVsc2Ug
aWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIpKSB7
CiAgICAgICAgICAgICB0eXBlQ2hlY2soCiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ax
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlciwKLSAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
SWZOb3ROdW1iZXIob3AxR1BSKSk7CiAgICAgICAgIH0KIAogICAgICAgICB1bmJveERvdWJsZShv
cDFHUFIsIHRlbXBHUFIsIHJlc3VsdEZQUik7CkBAIC0yNjUxLDIwICsyNjQ5LDE5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm9kZSogbm9kZSkKICAgICAgICAgRlBS
UmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IGRvbmU7CiAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1f
aml0LmJyYW5jaDMyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2hJZkludDMyKG9wMVRhZ0dQUik7CiAKICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOb3RDZWxsVXNlKSB7CiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051bWJlciA9IG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpCZWxvdywgb3AxVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6Okxvd2VzdFRhZyArIDEpKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzVW5k
ZWZpbmVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoSWZVbmRlZmluZWQob3AxVGFnR1BS
KTsKIAogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmemVybyksIHJlc3VsdEZQUik7CiAK
LSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTnVsbCA9IG1faml0LmJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRh
ZykpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJhbmNo
SWZOdWxsKG9wMVRhZ0dQUik7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc051bGwpOwogCi0g
ICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgflNwZWNDZWxsLCBtX2ppdC5icmFuY2gzMihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5U
YWcpKSk7CisgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyhvcDFUYWdHUFIs
IG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgflNwZWNDZWxsLCBtX2ppdC5icmFuY2hJ
Zk5vdEJvb2xlYW4ob3AxVGFnR1BSLCBJbnZhbGlkR1BSUmVnKSk7CiAKICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzRmFsc2UgPSBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6
Olplcm8sIG9wMVBheWxvYWRHUFIsIFRydXN0ZWRJbW0zMigxKSk7CiAgICAgICAgICAgICBzdGF0
aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7CkBAIC0yNjc5LDYgKzI2NzYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGlz
TnVtYmVyLmxpbmsoJm1faml0KTsKICAgICAgICAgfSBlbHNlIGlmIChuZWVkc1R5cGVDaGVjayhu
b2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgeworICAgICAgICAgICAgLy8gVGhp
cyBjaGVjayBmYWlscyB3aXRoIEludDMyVGFnLCBidXQgaXQgaXMgT0sgc2luY2UgSW50MzIgY2Fz
ZSBpcyBhbHJlYWR5IGV4Y2x1ZGVkLgogICAgICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOwpAQCAtMzMzNCwxNCArMzMzMiwxNCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVn
LCBHUFJSZWcgcAogICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBzY3Jh
dGNoUmVnLCBzY3JhdGNoM1JlZywgc2NyYXRjaDJSZWcpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgc2NyYXRjaDNSZWcpOwotICAgIGF1dG8gaGFzTW9u
b1Byb3RvID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCBzY3JhdGNo
M1JlZyk7CisgICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHNj
cmF0Y2gzUmVnKTsKICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRj
aFJlZywgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgc2NyYXRj
aDNSZWcpOwogICAgIGhhc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShz
Y3JhdGNoM1JlZywgc2NyYXRjaFJlZyk7CiAjZWxzZQogICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQo
KSArIFRhZ09mZnNldCksIHNjcmF0Y2gyUmVnKTsKICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaDNSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkg
KyBQYXlsb2FkT2Zmc2V0KSwgc2NyYXRjaDNSZWcpOwotICAgIGF1dG8gaGFzTW9ub1Byb3RvID0g
bV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDJSZWcsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgYXV0byBoYXNNb25vUHJvdG8g
PSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHNjcmF0Y2gyUmVnKTsKICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25v
d25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHNjcmF0Y2gzUmVnKTsKICAgICBo
YXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmUoc2NyYXRjaDNSZWcsIHNj
cmF0Y2hSZWcpOwpAQCAtNzY2MCw3ICs3NjU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNwcmVhZChOb2RlKiBub2RlKQogICAgICAgICAgICAgYXV0byBsb29wU3RhcnQgPSBtX2pp
dC5sYWJlbCgpOwogICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBsZW5n
dGhHUFIpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc2NyYXRjaDFHUFIsIGxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBz
Y3JhdGNoMkdQUik7Ci0gICAgICAgICAgICBhdXRvIG5vdEVtcHR5ID0gbV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBzY3JhdGNoMkdQUik7CisgICAgICAgICAgICBh
dXRvIG5vdEVtcHR5ID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShzY3JhdGNoMkdQUik7CiAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCBzY3JhdGNoMkdQUik7CiAgICAgICAgICAgICBub3RFbXB0eS5saW5rKCZtX2ppdCk7
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHNjcmF0Y2gyR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHJlc3VsdEdQUiwgbGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdo
dCwgSlNGaXhlZEFycmF5OjpvZmZzZXRPZkRhdGEoKSkpOwpAQCAtOTY5OSwxMiArOTY5NywxMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogICAgIEdQ
UlJlZyBncHIgPSB2YWx1ZS5ncHIoKTsKICAgICB0eXBlQ2hlY2soCiAgICAgICAgIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsIFNwZWNCeXRlY29kZU51bWJlciwKLSAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcikpOworICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE51bWJlcihncHIpKTsKICNlbHNl
CisgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpJbnQzMlRhZyA+PSBKU1ZhbHVlOjpMb3dlc3RU
YWcsICJJbnQzMlRhZyBpcyBpbmNsdWRlZCBpbiA+PSBKU1ZhbHVlOjpMb3dlc3RUYWcgcmFuZ2Uu
Iik7CiAgICAgR1BSUmVnIHRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwogICAgIERGR19UWVBFX0NI
RUNLKAogICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0ludDMyT25seSwK
LSAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNoSWZJ
bnQzMih0YWdHUFIpKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgdmFsdWUuanNWYWx1
ZVJlZ3MoKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpMb3dlc3RUYWcpKSk7CkBAIC0xMDE5Myw5ICsxMDE5MiwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVNaXNjKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKICAgICAg
ICAgcmVncywgZWRnZSwgU3BlY01pc2MsCiAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZSwgcmVncy5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChU
YWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRCb29sIHwgVGFnQml0VW5kZWZpbmVkKSkpOwogI2Vsc2UK
KyAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkludDMyVGFnID49IEpTVmFsdWU6OlVuZGVmaW5l
ZFRhZywgIkludDMyVGFnIGlzIGluY2x1ZGVkIGluID49IEpTVmFsdWU6OlVuZGVmaW5lZFRhZyBy
YW5nZS4iKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgcmVncywgZWRnZSwgflNwZWNJ
bnQzMk9ubHksCi0gICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
cmVncy50YWdHUFIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzLnRhZ0dQUigpKSk7CiAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHJlZ3MsIGVkZ2UsIFNwZWNNaXNjLAogICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHJlZ3MudGFnR1BSKCksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSkpOwpAQCAt
MTE3MDUsNyArMTE3MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdFZh
bHVlRnJvbVdlYWtNYXBHZXQoTm9kZSogbm9kZSkKICAgICBtX2ppdC5tb3ZlVmFsdWUoanNVbmRl
ZmluZWQoKSwgcmVzdWx0UmVncyk7CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAjZWxzZQotICAg
IGF1dG8gaXNFbXB0eSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWVS
ZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAg
IGF1dG8gaXNFbXB0eSA9IG1faml0LmJyYW5jaElmRW1wdHkodmFsdWVSZWdzLnRhZ0dQUigpKTsK
ICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHZhbHVlUmVncywgcmVzdWx0UmVncyk7CiAgICAgYXV0
byBkb25lID0gbV9qaXQuanVtcCgpOwogCkBAIC0xMjYwNCwxNCArMTI2MDQsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAg
ICAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6
Tm9uWmVybywgdGVtcEdQUik7CisgICAgICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gbV9qaXQuYnJh
bmNoSWZOb3RFbXB0eSh0ZW1wR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjpBZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9P
ZmZzZXQpKSwgdGVtcEdQUik7CiAgICAgICAgIGhhc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CiAjZWxzZQogICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90
b3R5cGVPZmZzZXQoKSArIFRhZ09mZnNldCksIHRlbXAyR1BSKTsKICAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBl
T2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7Ci0gICAgICAgIGF1dG8gaGFzTW9u
b1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgdGVtcDJHUFIs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgIGF1dG8gaGFz
TW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eSh0ZW1wMkdQUik7CiAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFRhZ09mZnNldCksIHRlbXAyR1BSKTsKICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9iamVjdEdQUiwgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIHRl
bXBHUFIpOwogICAgICAgICBoYXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwpAQCAtMTI3OTYsMTAg
KzEyNzk2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJvcGVy
dHkoTm9kZSogbm9kZSkKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0LmxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNFaWdodCksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUikp
OworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkoc2NyYXRjaEdQ
UikpOwogI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHNjcmF0Y2hHUFIpOwotICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
c2NyYXRjaEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShzY3JhdGNoR1BSKSk7CiAj
ZW5kaWYKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTI4MzgsMTAgKzEyODM4LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0
b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9y
YWdlOjp2ZWN0b3JPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUikp
OworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkoc2NyYXRjaEdQ
UikpOwogI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmRW1wdHkoc2NyYXRjaEdQUikpOwogI2VuZGlmCiAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGM5ZmMxNTcwNzMzZTc3OTlhNjYzY2JlN2ZkNDczMjNkNjc5YTNkM2MuLjlmMTMxZDkxNGIxZTUw
MDJiNTQ2NmMxNzRhNzg3OGU2YTY3NTM0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtODA5LDcgKzgwOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIHByZXBh
cmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb25D
YWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWws
IEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaElm
Tm90RW1wdHkoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKICAgICAgICAgCiAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgd2UgbWVhbnQgdG8gbWFrZSBhIG5vcm1hbCBjYWxsLiBP
b3BzLgogICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBK
SVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtOTg3LDcgKzk4Nyw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRnZSBlZGdl
LCBEYXRhRm9ybWF0JiByZXR1cm5GCiAgICAgICAgIG1fZ3Bycy5sb2NrKHRhZ0dQUik7CiAgICAg
ICAgIG1fZ3Bycy5sb2NrKHBheWxvYWRHUFIpOwogICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50
MzJPbmx5KQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIs
IHBheWxvYWRHUFIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEludDMyKHRhZ0dQUikpOwogICAg
ICAgICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQ
Uik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHBheWxvYWRHUFIpOwpAQCAtMTE5Nyw3ICsxMTk3
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVk
Z2UpCiAgICAgICAgIG1fZ3Bycy5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5sb2NrKHBh
eWxvYWRHUFIpOwogICAgICAgICBpZiAodHlwZSAmIH5TcGVjQm9vbGVhbikKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BS
KSwgZWRnZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdl
LCBtX2ppdC5icmFuY2hJZk5vdEJvb2xlYW4odGFnR1BSLCBJbnZhbGlkR1BSUmVnKSk7CiAKICAg
ICAgICAgbV9ncHJzLnVubG9jayh0YWdHUFIpOwogICAgICAgICBtX2dwcnMucmVsZWFzZSh0YWdH
UFIpOwpAQCAtMjI3MiwxOCArMjI3MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlUmVnLCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIFBheWxvYWRPZmZzZXQpLAogICAgICAg
ICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkLmdwcigpKTsKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgewotICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdFRhZy5ncHIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFn
KSk7CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUgPSBtX2pp
dC5icmFuY2hJZk5vdEVtcHR5KHJlc3VsdFRhZy5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlc3VsdFRh
Zy5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZXN1bHRQYXlsb2FkLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgbm90SG9sZS5saW5r
KCZtX2ppdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRGcm9tSG9sZSwg
SlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMy
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVz
dWx0VGFnLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoSWZFbXB0eShyZXN1bHRUYWcuZ3ByKCkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQu
Z3ByKCksIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMxMSw3ICsyMzA3LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9y
YWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnUmVnKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZFJlZyk7Ci0gICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
cmVzdWx0VGFnUmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRUYWdS
ZWcpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKApAQCAtMjM5Myw3ICsyMzg5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogCiAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcuZ3ByKCkp
OwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVl
UmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRh
Zy5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIDAs
IG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0VGFnLmdwcigpKSk7CiAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9m
ZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVz
dWx0UGF5bG9hZC5ncHIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC0y
NDIwLDggKzI0MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJy
YXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpOwogCiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ1JlZyk7
Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBob2xlID0gbV9qaXQuYnJhbmNoMzIoCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZXN1bHRUYWcuZ3ByKCksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBob2xlID0gbV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRUYWcuZ3ByKCkpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3Jh
Z2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0UGF5bG9hZFJlZyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0yODA2LDcgKzI4MDEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
R1BSLCB2YWx1ZVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksCiAgICAgICAgICAgICAgICAgdmFsdWVU
YWdHUFIpOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlVGFnR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hJZkVtcHR5KHZhbHVlVGFnR1BSKTsKICAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSwKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHZhbHVlUGF5bG9hZEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSk7CkBAIC0yODg0LDcgKzI4NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzdG9yYWdl
TGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBBcnJheVN0b3Jh
Z2U6Omxlbmd0aE9mZnNldCgpKSk7CiAKLSAgICAgICAgICAgIHNldFVuZGVmaW5lZENhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSwgdmFsdWVUYWdHUFIpKTsKKyAgICAgICAgICAgIHNldFVu
ZGVmaW5lZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkVtcHR5KHZhbHVlVGFnR1BSKSk7CiAg
ICAgICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
RW1wdHlWYWx1ZVRhZyksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3Rv
cmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6
dmVjdG9yT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkp
OwogCkBAIC0zMDExLDggKzMwMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBh
eWxvYWQuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVQ
YXlsb2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzQm9vbGVhbiA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpFcXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFn
KSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFu
Y2hJZkJvb2xlYW4odmFsdWVUYWdHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgbV9q
aXQubW92ZSh2YWx1ZVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBpc0Jvb2xlYW4ubGlu
aygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggNWRiOTg1OTUyM2Q1MWMxYjNmYWFhMjU5MWE1ZjEyNDk2ZTc5OTY0
OS4uMWYzZmJlY2Y5N2MwOTZkMWIzNzk3N2ViYjhkYzY5ZDNmMmYyNzE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNjYs
MTMgKzM2NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
U3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaFRlc3Q2
NChKSVRDb21waWxlcjo6WmVybywgcmVzdWx0R1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJ
ZkNlbGwocmVzdWx0R1BSKTsKICAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxl
ZnRPSyA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIGFyZzFHUFIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8s
IGFyZzFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMUdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51bWJlcihh
cmcxR1BSKTsKICAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1
YWwsIGFyZzJHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBp
bGVyOjpOb25aZXJvLCBhcmcyR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihh
cmcyR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHREb3VibGUgPSBtX2ppdC5i
cmFuY2hJZk51bWJlcihhcmcyR1BSKTsKICAgICAgICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIAogICAgICAgICBicmFuY2g2NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwg
OiBKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHRha2VuKTsKQEAgLTQzNCw3
ICs0MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xl
U3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAKICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd1BhdGhDYXNlczsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2Fz
ZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgcmVzdWx0R1BSLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2Fz
ZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwogCiAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxUmVncyk7CiAgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcp
KTsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlKQogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1faml0
LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoVGVz
dDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHBh
cnQgd2hlcmUgd2UgbWVhbnQgdG8gbWFrZSBhIG5vcm1hbCBjYWxsLiBPb3BzLgogICAgICAgICBt
X2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBKSVRDb21waWxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtOTUzLDcgKzk1Myw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRnZSBlZGdlLCBEYXRhRm9ybWF0JiBy
ZXR1cm5GCiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMu
bG9jayhncHIpOwogICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzJPbmx5KQotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2pp
dC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTm90SW50MzIoZ3ByKSk7CiAgICAg
ICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsK
ICAgICAgICAgLy8gSWYgIXN0cmljdCB3ZSdyZSBkb25lLCByZXR1cm4uCiAgICAgICAgIGlmICgh
c3RyaWN0KSB7CkBAIC0yMzkwLDE0ICsyMzkwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5h
cnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpOwotICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJhbmNoVGVzdDY0
KAotICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3Vs
dC5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEhvbGUg
PSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vdEhvbGUubGluaygmbV9q
aXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkRnJvbUhvbGUsIEpTVmFs
dWVSZWdzKCksIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdC5ncHIoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG5v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIgPyBEYXRhRm9ybWF0SlNJbnQz
MiA6IERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDIyLDcgKzI0
MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVn
LCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKICAgICAgICAgICAgIG1f
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdFJlZyk7Ci0gICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgcmVzdWx0UmVnKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aElmRW1wdHkocmVzdWx0UmVnKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKQEAgLTI1MDUsNyAr
MjUwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3Jh
Z2U6OnZlY3Rvck9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9q
aXQuYnJhbmNoSWZFbXB0eShyZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTI1MzAsNyArMjUyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0
KCkpKSk7CiAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpLCByZXN1bHRSZWcpOwotICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHJlc3VsdFJlZykpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hJZkVtcHR5KHJlc3VsdFJlZykpOwogICAgIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKApAQCAtMjY0MCw4ICsyNjM5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
aWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJyYXk6OkludDMyKSB7CiAgICAgICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlUmVn
KSwgY2hpbGQzLCBTcGVjSW50MzJPbmx5LAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2g2NCgKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgdmFs
dWVSZWcsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hJZk5vdEludDMyKHZhbHVlUmVnKSk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgY2hpbGQ0KTsKQEAgLTMx
NDIsNyArMzE0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICAvLyBsZW5ndGggYW5kIHRoZSBuZXcgbGVuZ3RoLgogICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlNjQoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW02NCgoaW50NjRfdCkwKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
R1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCkpOwotICAg
ICAgICAgICAgICAgIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCB2YWx1ZUdQUik7CisgICAgICAgICAgICAgICAgc2xvd0Nhc2UgPSBtX2ppdC5icmFu
Y2hJZkVtcHR5KHZhbHVlR1BSKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCkBAIC0zMTcwLDcgKzMxNjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHN0b3JhZ2VMZW5ndGhHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6dmVjdG9y
TGVuZ3RoT2Zmc2V0KCkpKSk7CiAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpLCB2
YWx1ZUdQUik7Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2
NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWVHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eSh2YWx1ZUdQUikpOwogICAgICAgICAKICAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOwogICAgICAg
ICAKQEAgLTM1MzMsNyArMzUzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgR1BSUmVnIGlucHV0ID0gb3BlcmFuZC5ncHIoKTsKLSAgICAgICAgICAgIGF1dG8gZG9uZSA9
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgaW5wdXQpOworICAg
ICAgICAgICAgYXV0byBkb25lID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShpbnB1dCk7CiAgICAg
ICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0
KTsKICAgICAgICAgfQpAQCAtMzU1NSw3ICszNTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzRW1wdHk7CiAgICAgICAgIGlmIChtX2lu
dGVycHJldGVyLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNFbXB0eSkKLSAg
ICAgICAgICAgIGlzRW1wdHkgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIGNlbGxHUFIpOworICAgICAgICAgICAgaXNFbXB0eSA9IG1faml0LmJyYW5jaElmRW1wdHko
Y2VsbEdQUik7CiAKICAgICAgICAgZW1pdFN0cnVjdHVyZUNoZWNrKG5vZGUsIGNlbGxHUFIsIElu
dmFsaWRHUFJSZWcpOwogCkBAIC00NzAwLDggKzQ2OTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb252ZXJ0QW55SW50KEVkZ2UgdmFsdWVFZGdlLCBHUFJSZWcgcmVzdWx0R1BSKQogICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIHZhbHVlRWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICAKLSAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RJbnQzMiA9Ci0gICAgICAgIG1faml0LmJyYW5jaDY0KEpJVENvbXBp
bGVyOjpCZWxvdywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50MzIgPSBtX2ppdC5icmFuY2hJZk5vdEludDMyKHZh
bHVlR1BSKTsKICAgICAKICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cih2YWx1ZUdQUiwgcmVz
dWx0R1BSKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIxZjMw
YWJlMDA2MGZlZDJiZTNjOTU3OWVhYTY2OGQ5NjkzOTIwMjcuLjY0MTE3NmM4OGJkNTRjOGNhMWY5
OTE4Y2UxMzI5NjhjNGMxMWNkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTI5NTMsNyArMjk1Myw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICBHUFJS
ZWcgaW5wdXQgPSAgcGFyYW1zWzBdLmdwcigpOwotICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBkb25lID0gaml0LmJyYW5jaFRlc3Q2NChDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGlu
cHV0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5icmFu
Y2hJZk5vdEVtcHR5KGlucHV0KTsKICAgICAgICAgICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwog
ICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZWNkMTg4NWQxY2M3
NzBkOWZkMmZhYTAwZGQ1MGZkZThkYTIxYTcxMC4uNTYyNTE5OTFhYzkxMTU0ZDY5Yzc3ZjE0YmFm
NmU5ZmMzYmI3ZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCkBAIC03MDcsNiArNzA3LDcgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgcmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogI2VuZGlm
CiAgICAgfQorCiAgICAgSnVtcCBicmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MgcmVncywgVGFn
UmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKICAgICB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKQEAgLTc2MCwzNCArNzYxLDQ1IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgSnVtcCBicmFu
Y2hJZkludDMyKEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVU
YWdSZWdpc3RlcnMpCisgICAgSnVtcCBicmFuY2hJZkludDMyKEdQUlJlZyBncHIsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCiAgICAgewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpCi0gICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBy
ZWdzLmdwcigpLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIFRydXN0
ZWRJbW02NChUYWdUeXBlTnVtYmVyKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0obW9k
ZSk7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihFcXVh
bCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICNlbmRpZgogICAgIH0K
IAorICAgIEp1bXAgYnJhbmNoSWZJbnQzMihKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQorICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICByZXR1cm4gYnJhbmNoSWZJbnQzMihyZWdzLmdwcigpLCBtb2RlKTsKKyNlbHNlCisg
ICAgICAgIHJldHVybiBicmFuY2hJZkludDMyKHJlZ3MudGFnR1BSKCksIG1vZGUpOworI2VuZGlm
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hJZk5vdEludDMyKEdQUlJlZyBncHIsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCiAgICAgeworI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpCiAgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoNjQoQmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEJlbG93LCBncHIsIFRydXN0ZWRJbW02NChUYWdU
eXBlTnVtYmVyKSk7Ci0gICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSk7CiAjZW5kaWYKKyAgICB9CiAKICAgICBKdW1wIGJyYW5jaElmTm90SW50
MzIoSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lz
dGVycykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgcmV0dXJuIGJyYW5jaElm
Tm90SW50MzIocmVncy5ncHIoKSwgbW9kZSk7CiAjZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
bW9kZSk7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgcmVncy50YWdHUFIoKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAgICAgIHJldHVybiBicmFuY2hJ
Zk5vdEludDMyKHJlZ3MudGFnR1BSKCksIG1vZGUpOwogI2VuZGlmCiAgICAgfQogCkBAIC03OTks
MTcgKzgxMSwxOCBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICByZXR1cm4gYnJhbmNoSWZOdW1iZXIocmVncy5ncHIoKSwgbW9kZSk7CiAj
ZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0obW9kZSk7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BS
ICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3Mu
dGFnR1BSKCksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoQmVsb3csIHRlbXBH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcgKyAxKSk7CiAjZW5kaWYKICAgICB9
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEp1bXAgYnJhbmNoSWZOdW1iZXIoR1BSUmVnIHJl
ZywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICBKdW1wIGJy
YW5jaElmTnVtYmVyKEdQUlJlZyBncHIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdS
ZWdpc3RlcnMpCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQot
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWcsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVy
bywgcmVnLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q2NChOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgZ3ByLCBUcnVzdGVkSW1t
NjQoVGFnVHlwZU51bWJlcikpOwogICAgIH0KICNlbmRpZgogICAgIApAQCAtODI3LDExICs4NDAs
MTEgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEp1bXAgYnJhbmNoSWZOb3ROdW1iZXIoR1BS
UmVnIHJlZywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICBK
dW1wIGJyYW5jaElmTm90TnVtYmVyKEdQUlJlZyBncHIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9
IEhhdmVUYWdSZWdpc3RlcnMpCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVn
aXN0ZXJzKQotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQo
WmVybywgcmVnLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgZ3ByLCBUcnVzdGVkSW1tNjQo
VGFnVHlwZU51bWJlcikpOwogICAgIH0KICNlbmRpZgogCkBAIC04NDgsMjggKzg2MSw1MCBAQCBj
bGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIH0KIAog
ICAgIC8vIE5vdGUgdGhhdCB0aGUgdGVtcEdQUiBpcyBub3QgdXNlZCBpbiAzMi1iaXQgbW9kZS4K
LSAgICBKdW1wIGJyYW5jaElmQm9vbGVhbihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQ
UikKKyAgICBKdW1wIGJyYW5jaElmQm9vbGVhbihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikK
ICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0ZW1w
R1BSKTsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IG1vdmUoZ3ByLCB0ZW1wR1BSKTsKICAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcEdQUik7CiAgICAgICAgIHJldHVybiBicmFu
Y2hUZXN0NjQoWmVybywgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KH4xKSkpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRlbXBHUFIpOwotICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoRXF1YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpCb29sZWFuVGFnKSk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpOworI2VuZGlmCisgICAgfQorCisgICAgLy8g
Tm90ZSB0aGF0IHRoZSB0ZW1wR1BSIGlzIG5vdCB1c2VkIGluIDMyLWJpdCBtb2RlLgorICAgIEp1
bXAgYnJhbmNoSWZCb29sZWFuKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQorICAg
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoSWZCb29sZWFuKHJl
Z3MuZ3ByKCksIHRlbXBHUFIpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmQm9vbGVh
bihyZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAgIH0KICAgICAKICAgICAvLyBO
b3RlIHRoYXQgdGhlIHRlbXBHUFIgaXMgbm90IHVzZWQgaW4gMzItYml0IG1vZGUuCi0gICAgSnVt
cCBicmFuY2hJZk5vdEJvb2xlYW4oSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisg
ICAgSnVtcCBicmFuY2hJZk5vdEJvb2xlYW4oR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCiAg
ICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVtcEdQ
Uik7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBt
b3ZlKGdwciwgdGVtcEdQUik7CiAgICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDY0KE5vblplcm8sIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
Pih+MSkpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wR1BSKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCByZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Qm9vbGVhblRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIGdw
ciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIC8vIE5vdGUgdGhhdCB0aGUgdGVtcEdQUiBpcyBub3QgdXNlZCBpbiAzMi1iaXQgbW9kZS4K
KyAgICBKdW1wIGJyYW5jaElmTm90Qm9vbGVhbihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVt
cEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJyYW5jaElm
Tm90Qm9vbGVhbihyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBi
cmFuY2hJZk5vdEJvb2xlYW4ocmVncy50YWdHUFIoKSwgdGVtcEdQUik7CiAjZW5kaWYKICAgICB9
CiAgICAgCkBAIC05MDQsMTIgKzkzOSw0OSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJs
aWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2Vs
bEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQog
ICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJh
bmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIAorICAgIEp1bXAg
YnJhbmNoSWZFbXB0eShHUFJSZWcgZ3ByKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIGdwcik7CisjZWxzZQorICAgICAgICByZXR1
cm4gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVU
YWcpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIEp1bXAgYnJhbmNoSWZFbXB0eShKU1ZhbHVlUmVn
cyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDY0KFplcm8sIHJlZ3MuZ3ByKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoSWZFbXB0eShy
ZWdzLmdwcigpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hJZkVtcHR5KHJlZ3MudGFn
R1BSKCkpOworI2VuZGlmCisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZk5vdEVtcHR5KEdQUlJl
ZyBncHIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hU
ZXN0NjQoTm9uWmVybywgZ3ByKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBicmFuY2gzMihFcXVh
bCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElm
Tm90RW1wdHkoSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaElmTm90RW1wdHkocmVncy5ncHIoKSk7CisjZWxzZQorICAgICAg
ICByZXR1cm4gYnJhbmNoSWZOb3RFbXB0eShyZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0K
KworICAgIC8vIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJlc3BlY3QgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC4KKyAgICBKdW1wIGJyYW5jaElmVW5kZWZpbmVkKEdQUlJlZyBncHIp
CisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVh
bCwgZ3ByLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OlVuZGVmaW5lZFRhZykpOwogI2VuZGlmCiAgICAgfQogCkBAIC05MTcsMTggKzk4OSw2
NSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAg
IEp1bXAgYnJhbmNoSWZVbmRlZmluZWQoSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCByZWdzLmdwcigpLCBU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CisgICAgICAgIHJl
dHVybiBicmFuY2hJZlVuZGVmaW5lZChyZWdzLmdwcigpKTsKICNlbHNlCi0gICAgICAgIHJldHVy
biBicmFuY2gzMihFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVu
ZGVmaW5lZFRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoSWZVbmRlZmluZWQocmVncy50YWdH
UFIoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdCByZXNwZWN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuCisgICAgSnVtcCBicmFuY2hJ
Zk5vdFVuZGVmaW5lZChHUFJSZWcgZ3ByKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKKyNl
bmRpZgorICAgIH0KKworICAgIC8vIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJl
c3BlY3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC4KKyAgICBKdW1wIGJyYW5jaElmTm90VW5kZWZp
bmVkKEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IHJldHVybiBicmFuY2hJZk5vdFVuZGVmaW5lZChyZWdzLmdwcigpKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBicmFuY2hJZk5vdFVuZGVmaW5lZChyZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAg
IH0KKworICAgIEp1bXAgYnJhbmNoSWZOdWxsKEdQUlJlZyBncHIpCisgICAgeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgZ3ByLCBUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CiAjZW5k
aWYKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaElmTnVsbChKU1ZhbHVlUmVncyByZWdzKQogICAg
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHJl
Z3MuZ3ByKCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSk7CisgICAg
ICAgIHJldHVybiBicmFuY2hJZk51bGwocmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICByZXR1
cm4gYnJhbmNoSWZOdWxsKHJlZ3MudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQorCisgICAgSnVt
cCBicmFuY2hJZk5vdE51bGwoR1BSUmVnIGdwcikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Tm90RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyNlbmRpZgor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZOb3ROdWxsKEpTVmFsdWVSZWdzIHJlZ3MpCisgICAg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hJZk5vdE51bGwocmVn
cy5ncHIoKSk7CiAjZWxzZQotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIHJlZ3MudGFn
R1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CisgICAgICAgIHJldHVybiBi
cmFuY2hJZk5vdE51bGwocmVncy50YWdHUFIoKSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGFlYjZhZDk2Y2Y1OGM5YjJlYjRiNGE4NjJmMmQ0ZTZlYmU0YTli
NWYuLmNiNmQ0NzE3MmM2MDU4MzdjNWNjNjYwZmY2NzFiODM1YmZhODkxNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtMzIzLDggKzMyMyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2
YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBS
ZWdpc3RlcklEIHZhbHVlKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE9iamVjdChSZWdp
c3RlcklEIGNlbGxSZWcpOwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KFJl
Z2lzdGVySUQgY2VsbFJlZyk7CiAKICAgICAgICAgZW51bSBXcml0ZUJhcnJpZXJNb2RlIHsgVW5j
b25kaXRpb25hbFdyaXRlQmFycmllciwgU2hvdWxkRmlsdGVyQmFzZSwgU2hvdWxkRmlsdGVyVmFs
dWUsIFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB9OwogICAgICAgICAvLyB2YWx1ZSByZWdpc3Rl
ciBpbiB3cml0ZSBiYXJyaWVyIGlzIHVzZWQgYmVmb3JlIGFueSBzY3JhdGNoIHJlZ2lzdGVycwpA
QCAtNDQxLDEzICs0MzksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgcGF5bG9hZCk7CiAgICAgICAgIH0KIAotICAgICAgICBKdW1w
IGVtaXRKdW1wSWZKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZkJv
dGhKU0NlbGxzKFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICB2
b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZkpTQ2VsbChSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQsIGludCBWUmVnKTsKLSAgICAgICAg
SnVtcCBlbWl0SnVtcElmSW50KFJlZ2lzdGVySUQpOwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZO
b3RJbnQoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdEludChSZWdpc3Rl
cklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEIHNjcmF0Y2gpOwogICAgICAgICBQYXRjaGFibGVK
dW1wIGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggMzc2MWM5YmNiNjc2ZjZiYTU4NWI5ODdh
MGRmMDM1M2M4ZTY0NDViNS4uMmIzZmU5MGNjZWNmYTlhMzYwMDhkMDA0YzQ5ZDA4YzY4MzI4ODdl
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC0y
NTQsNyArMjU0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQsIGlu
dCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXQKIAogICAgIGlmIChpc09wZXJh
bmRDb25zdGFudENoYXIob3AxKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MiwgcmVnVDApOwotICAgICAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1Qw
KSk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMCkpOwogICAgICAg
ICBKdW1wTGlzdCBmYWlsdXJlczsKICAgICAgICAgZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcocmVn
VDAsIHJlZ1QwLCBmYWlsdXJlcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGZhaWx1cmVzKTsKQEAg
LTI2Myw3ICsyNjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCwg
aW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdAogICAgIH0KICAgICBpZiAo
aXNPcGVyYW5kQ29uc3RhbnRDaGFyKG9wMikpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihvcDEsIHJlZ1QwKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCkpOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDApKTsK
ICAgICAgICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgICAgIGVtaXRMb2FkQ2hhcmFjdGVyU3Ry
aW5nKHJlZ1QwLCByZWdUMCwgZmFpbHVyZXMpOwogICAgICAgICBhZGRTbG93Q2FzZShmYWlsdXJl
cyk7CkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93
KGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgRG91YmxlQ29uZGkKICAgICAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1Bv
aW50KCkpIHsKLSAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBlbWl0SnVtcElmTm90TnVtYmVyKHJl
Z1QwKTsKKyAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMCk7
CiAgICAgICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKICAgICAg
ICAgICAgIG1vdmU2NFRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKIApAQCAtMzgwLDcgKzM4MCw3
IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQgb3AxLCBpbnQgb3AyLCB1
bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpCiAgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKICAgICAgICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7Ci0gICAgICAgICAg
ICBKdW1wIGZhaWwxID0gZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMSk7CisgICAgICAgICAgICBK
dW1wIGZhaWwxID0gYnJhbmNoSWZOb3ROdW1iZXIocmVnVDEpOwogICAgICAgICAgICAgYWRkNjQo
dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgICAgICBtb3ZlNjRUb0RvdWJs
ZShyZWdUMSwgZnBSZWdUMSk7CiAKQEAgLTQwNSw5ICs0MDUsOSBAQCB2b2lkIEpJVDo6ZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBEb3Vi
bGVDb25kaQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gTEhTIGlzIG5vdCBJbnQuCiAKICAg
ICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKLSAgICAgICAgSnVtcCBmYWlsMSA9IGVt
aXRKdW1wSWZOb3ROdW1iZXIocmVnVDApOwotICAgICAgICBKdW1wIGZhaWwyID0gZW1pdEp1bXBJ
Zk5vdE51bWJlcihyZWdUMSk7Ci0gICAgICAgIEp1bXAgZmFpbDMgPSBlbWl0SnVtcElmSW50KHJl
Z1QxKTsKKyAgICAgICAgSnVtcCBmYWlsMSA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QwKTsKKyAg
ICAgICAgSnVtcCBmYWlsMiA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QxKTsKKyAgICAgICAgSnVt
cCBmYWlsMyA9IGJyYW5jaElmSW50MzIocmVnVDEpOwogICAgICAgICBhZGQ2NCh0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIHJlZ1QwKTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVy
LCByZWdUMSk7CiAgICAgICAgIG1vdmU2NFRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAppbmRleCA4
MjQ1NzAyZmM0ZTNjZGQ2NjI1MWExNzQ3OTAzYjNiMTNiYjJkNzcyLi5kM2ViZGI2N2M1MjFjYjY5
OWYzN2UwOTg5MjA3YTRlMjFlNzljYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgSklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlEIG9wY29kZSwgaW50IG9wMSwgaW50IG9wMiwgdW5z
aWduZWQgdGFyZ2V0CiAgICAgLy8gQ2hhcmFjdGVyIGxlc3MuCiAgICAgaWYgKGlzT3BlcmFuZENv
bnN0YW50Q2hhcihvcDEpKSB7CiAgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDEsIHJlZ1QwKTsK
LSAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QxKSk7CiAgICAgICAgIEp1bXBMaXN0IGZhaWx1cmVzOwogICAgICAgICBlbWl0TG9h
ZENoYXJhY3RlclN0cmluZyhyZWdUMCwgcmVnVDAsIGZhaWx1cmVzKTsKICAgICAgICAgYWRkU2xv
d0Nhc2UoZmFpbHVyZXMpOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJl
QW5kSnVtcChPcGNvZGVJRCBvcGNvZGUsIGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdl
dAogICAgIH0KICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRDaGFyKG9wMikpIHsKICAgICAgICAg
ZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAg
ICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKICAgICAgICAgSnVtcExp
c3QgZmFpbHVyZXM7CiAgICAgICAgIGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKHJlZ1QwLCByZWdU
MCwgZmFpbHVyZXMpOwogICAgICAgICBhZGRTbG93Q2FzZShmYWlsdXJlcyk7CkBAIC02NywxNiAr
NjcsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQKICAgICB9IAogICAgIGlmIChpc09wZXJh
bmRDb25zdGFudEludChvcDEpKSB7CiAgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDMsIHJlZ1Qy
KTsKLSAgICAgICAgbm90SW50MzJPcDIuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOworICAgICAgICBub3RJbnQzMk9wMi5h
cHBlbmQoYnJhbmNoSWZOb3RJbnQzMihyZWdUMykpOwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMy
KGNvbW11dGUoY29uZGl0aW9uKSwgcmVnVDIsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZChvcDEp
LmFzSW50MzIoKSkpLCB0YXJnZXQpOwogICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJ
bnQob3AyKSkgewogICAgICAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCByZWdUMCk7Ci0gICAgICAg
IG5vdEludDMyT3AxLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgbm90SW50MzJPcDEuYXBwZW5kKGJyYW5j
aElmTm90SW50MzIocmVnVDEpKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb25kaXRpb24s
IHJlZ1QwLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AyKS5hc0ludDMyKCkpKSwgdGFyZ2V0
KTsKICAgICB9IGVsc2UgewogICAgICAgICBlbWl0TG9hZDIob3AxLCByZWdUMSwgcmVnVDAsIG9w
MiwgcmVnVDMsIHJlZ1QyKTsKLSAgICAgICAgbm90SW50MzJPcDEuYXBwZW5kKGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwotICAgICAg
ICBub3RJbnQzMk9wMi5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgIG5vdEludDMyT3AxLmFwcGVuZChicmFu
Y2hJZk5vdEludDMyKHJlZ1QxKSk7CisgICAgICAgIG5vdEludDMyT3AyLmFwcGVuZChicmFuY2hJ
Zk5vdEludDMyKHJlZ1QzKSk7CiAgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9uLCBy
ZWdUMCwgcmVnVDIpLCB0YXJnZXQpOwogICAgIH0KIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3Vuc2lnbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgCiAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwogICAgIAotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMy
VGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SW50MzIocmVnVDEpKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihMZXNzVGhhbiwgcmVnVDAsIFRydXN0ZWRJbW0zMigwKSkpOwog
ICAgIGVtaXRTdG9yZUludDMyKHJlc3VsdCwgcmVnVDAsIHJlc3VsdCA9PSBvcDEpOwogfQpAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQoc3JjRHN0LCByZWdUMSwgcmVnVDApOwogCi0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RJbnQzMihyZWdU
MSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKE92ZXJmbG93LCBUcnVzdGVkSW1tMzIo
MSksIHJlZ1QwKSk7CiAgICAgZW1pdFN0b3JlSW50MzIoc3JjRHN0LCByZWdUMCwgdHJ1ZSk7CiB9
CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZChzcmNEc3QsIHJlZ1QxLCByZWdUMCk7
CiAKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEludDMy
KHJlZ1QxKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3ViMzIoT3ZlcmZsb3csIFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApKTsKICAgICBlbWl0U3RvcmVJbnQzMihzcmNEc3QsIHJlZ1QwLCB0cnVl
KTsKIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9wKE9w
Y29kZUlEIG9wY29kZUlELCBpbnQgZHN0LCBpbnQgb3AxLCBpbnQgb3AyLCBPcGVyYQogICAgICAg
ICBKdW1wIGRvdWJsZU9wMiA9IGJyYW5jaDMyKEJlbG93LCByZWdUMywgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6Okxvd2VzdFRhZykpOwogCiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5p
dGVseUlzTnVtYmVyKCkpCi0gICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVh
bCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SW50MzIocmVnVDMpKTsKIAogICAgICAgICBjb252ZXJ0
SW50MzJUb0RvdWJsZShyZWdUMiwgZnBSZWdUMCk7CiAgICAgICAgIEp1bXAgZG9UaGVNYXRoID0g
anVtcCgpOwpAQCAtMzEzLDggKzMxMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX21vZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEFTU0VSVChyZWdUMyA9PSBYODZSZWdpc3Rl
cnM6OmVieCk7CiAKICAgICBlbWl0TG9hZDIob3AxLCByZWdUMCwgcmVnVDMsIG9wMiwgcmVnVDEs
IHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk5vdEludDMyKHJlZ1QxKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoSWZOb3RJbnQzMihyZWdUMCkpOwogCiAgICAgbW92ZShyZWdUMywgcmVnVDApOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKaW5kZXggMWRhYTdiYzEzMjJmNTMyMmE5ZmQxNzk5M2E3OTNhMGNkNDJm
YWIyZS4uNTBhYjQ4YjE1YWY2ZDU2Y2QxZWQwYzNkZjI1OTZkMjUyOGMyMTYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVDYWxsRXZhbChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkNhbGxFdmFsLCByZWdUMSk7CiAKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2g2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiAKICAgICBzYW1w
bGVDb2RlQmxvY2sobV9jb2RlQmxvY2spOwogICAgIApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIHVuc2lnbmVkIGNhCiAKICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYg
c2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1Ro
aXMoMCksIHJlZ1QwKTsKLSAgICAgICAgICAgIEp1bXAgZG9uZSA9IGVtaXRKdW1wSWZOb3RKU0Nl
bGwocmVnVDApOworICAgICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1Qw
KTsKICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgICAgICAgICBzdG9yZTMyKHJlZ1QwLCBpbnN0cnVjdGlv
bltPUENPREVfTEVOR1RIKG9wX2NhbGwpIC0gMl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxh
c3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZmRjNDIxNzU3OWIx
MDkxNzMzNDIxYWVlNjI0MGZjZmM1NWFlY2VjMi4uZDFlZmJlOTdkNTU3YjMwMTFiNjRlYjg1Yjc5
MmEwZWUwODZlMDZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsRXZh
bCwgcmVnVDEpOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZkVtcHR5KHJlZ1QxKSk7CiAKICAgICBzYW1wbGVDb2RlQmxvY2sobV9jb2RlQmxvY2spOwog
ICAgIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlE
IG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhCiAgICAgICAg
IAogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKICAgICAgICAgICAgIGVtaXRMb2FkKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwLCByZWdUMSk7Ci0gICAgICAgICAg
ICBKdW1wIGRvbmUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CisgICAgICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENlbGwo
cmVnVDApOwogICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7CiAgICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5z
dHJ1Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMp
OwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9w
Y29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhCiAgICAgaWYgKG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJn
cykKICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogCi0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKIAogICAgIERhdGFM
YWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwogICAgIEp1bXAgc2xvd0Nhc2Ug
PSBicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIHJlZ1QwLCBhZGRyZXNzT2ZMaW5rZWRGdW5j
dGlvbkNoZWNrLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKaW5kZXggMTcwOTAwNzFlNDg2YmNjYTkyNGQ0M2RlMjcwMmExNjk5NmIy
Mzk0Ny4uOWE0YjczN2M4NGFhZGU2ZGEzN2MzNzFkODU2N2VlYzllZjUwNjA1NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI1MiwxNiArMjUyLDYgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93VG9Ib3QoSnVtcCBqdW1wLCBpbnQgcmVsYXRp
dmVPZmZzZXQpCiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRlY29kZU9mZnNldCArIHJl
bGF0aXZlT2Zmc2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6
ZW1pdEp1bXBJZkNlbGxPYmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVnKQotewotICAgIHJldHVybiBi
cmFuY2g4KEFib3ZlT3JFcXVhbCwgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKLX0KLQotQUxXQVlTX0lOTElO
RSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxS
ZWcpCi17Ci0gICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci19Ci0K
ICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpzZXRT
YW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKQogewpAQCAtNTU2LDcgKzU0Niw3IEBAIGlubGluZSB2
b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGludCB2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCwgUmVnaXN0ZXJJCiAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lz
dGVySW5kZXgodmlydHVhbFJlZ2lzdGVySW5kZXgpKQogICAgICAgICAgICAgYWRkU2xvd0Nhc2Uo
anVtcCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIHRhZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAg
ICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwodGFnKSk7CiAgICAgfQogfQogCkBAIC02
NDgsMjYgKzYzOCwyMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SW5pdFJlZ2lzdGVy
KGludCBkc3QpCiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgZHN0ICogc2l6ZW9mKFJlZ2lz
dGVyKSkpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZKU0Nl
bGwoUmVnaXN0ZXJJRCByZWcpCi17Ci0gICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcs
IHRhZ01hc2tSZWdpc3Rlcik7Ci19Ci0KIEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1p
dEp1bXBJZkJvdGhKU0NlbGxzKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdp
c3RlcklEIHNjcmF0Y2gpCiB7CiAgICAgbW92ZShyZWcxLCBzY3JhdGNoKTsKICAgICBvcjY0KHJl
ZzIsIHNjcmF0Y2gpOwotICAgIHJldHVybiBlbWl0SnVtcElmSlNDZWxsKHNjcmF0Y2gpOworICAg
IHJldHVybiBicmFuY2hJZkNlbGwoc2NyYXRjaCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZkpTQ2VsbChSZWdpc3RlcklEIHJlZykKIHsKLSAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmSlNDZWxsKHJlZykpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Q2VsbChyZWcpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnKQogewotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1w
SWZOb3RKU0NlbGwocmVnKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZykp
OwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoUmVnaXN0ZXJJRCByZWcsIGludCB2UmVnKQpAQCAtNjk0LDE2ICs2NzksNiBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2
YWx1ZSkKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc0ZvcihpbmRleCksIHZh
bHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmSW50KFJl
Z2lzdGVySUQgcmVnKQotewotICAgIHJldHVybiBicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJlZywg
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLX0KLQotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklU
OjplbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQgcmVnKQotewotICAgIHJldHVybiBicmFuY2g2
NChCZWxvdywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotfQotCiBBTFdBWVNfSU5MSU5F
IEpJVDo6UGF0Y2hhYmxlSnVtcCBKSVQ6OmVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQoUmVnaXN0
ZXJJRCByZWcpCiB7CiAgICAgcmV0dXJuIHBhdGNoYWJsZUJyYW5jaDY0KEJlbG93LCByZWcsIHRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7CkBAIC03MTMsMTIgKzY4OCwxMiBAQCBBTFdBWVNfSU5MSU5F
IEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3Rl
cklEIHJlZzIsCiB7CiAgICAgbW92ZShyZWcxLCBzY3JhdGNoKTsKICAgICBhbmQ2NChyZWcyLCBz
Y3JhdGNoKTsKLSAgICByZXR1cm4gZW1pdEp1bXBJZk5vdEludChzY3JhdGNoKTsKKyAgICByZXR1
cm4gYnJhbmNoSWZOb3RJbnQzMihzY3JhdGNoKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQgcmVnKQogewotICAgIGFkZFNs
b3dDYXNlKGVtaXRKdW1wSWZOb3RJbnQocmVnKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZO
b3RJbnQzMihyZWcpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklE
IHNjcmF0Y2gpCkBAIC03MjgsNyArNzAzLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcKIAog
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90TnVtYmVyKFJlZ2lz
dGVySUQgcmVnKQogewotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3ROdW1iZXIocmVnKSk7CiB9CiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdCb29sKFJlZ2lzdGVySUQgcmVnKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMzI5NmUwYjY3NWNjZjNiZTljNzNjMThm
NTQzMDkxMWFmNTAyZWQxZi4uMmMwOTY4NGEzZWVlYzMwM2NmNzYzNDJlZmExZTFhNmM0ODRmZDZm
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNTIsNyAr
MTUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJv
dG8pOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0gICAgYWRk
U2xvd0Nhc2UoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDEpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdE9iamVjdChyZWdUMSkpOwogICAgIAogICAgIC8vIE9wdGltaXN0aWNhbGx5
IGxvYWQgdGhlIHJlc3VsdCB0cnVlLCBhbmQgc3RhcnQgbG9vcGluZy4KICAgICAvLyBJbml0aWFs
bHksIHJlZ1QxIHN0aWxsIGNvbnRhaW5zIHByb3RvIGFuZCByZWdUMiBzdGlsbCBjb250YWlucyB2
YWx1ZS4KQEAgLTE2NiwxMiArMTY2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2Yo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyBPdGhlcndpc2UsIGNoZWNr
IGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29w
LCBpZiBub3QgZ28gYWdhaW4uCiAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoKnZtKCksIHJlZ1QyLCBy
ZWdUNCwgcmVnVDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1Q0LCBTdHJ1Y3R1cmU6OnByb3Rv
dHlwZU9mZnNldCgpKSwgcmVnVDQpOwotICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gYnJhbmNoVGVz
dDY0KE5vblplcm8sIHJlZ1Q0KTsKKyAgICBhdXRvIGhhc01vbm9Qcm90byA9IGJyYW5jaElmTm90
RW1wdHkocmVnVDQpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShrbm93blBvbHlQcm90b09mZnNldCkpLCByZWdUNCk7CiAgICAgaGFzTW9ub1Byb3RvLmxp
bmsodGhpcyk7CiAgICAgbW92ZShyZWdUNCwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9
IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKLSAgICBlbWl0SnVtcElmSlNDZWxsKHJl
Z1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CisgICAgYnJhbmNoSWZDZWxsKHJlZ1QyKS5saW5rVG8o
bG9vcCwgdGhpcyk7CiAKICAgICAvLyBXZSBnZXQgaGVyZSBlaXRoZXIgYnkgZHJvcHBpbmcgb3V0
IG9mIHRoZSBsb29wLCBvciBpZiB2YWx1ZSB3YXMgbm90IGFuIE9iamVjdC4gIFJlc3VsdCBpcyBm
YWxzZS4KICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSkpLCByZWdUMCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
dW5kZWZpbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgaW50IHZhbHVl
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Ci0gICAgSnVtcCBpc0NlbGwgPSBlbWl0SnVtcElm
SlNDZWxsKHJlZ1QwKTsKKyAgICBKdW1wIGlzQ2VsbCA9IGJyYW5jaElmQ2VsbChyZWdUMCk7CiAK
ICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVVbmRlZmluZWQp
LCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgaW50IHR5cGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
OwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgIEp1bXAg
aXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CisgICAgSnVtcCBpc05vdENl
bGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlw
ZSksIHJlZ1QwKTsKICAgICBlbWl0VGFnQm9vbChyZWdUMCk7CkBAIC0yNzYsNyArMjc2LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKLSAgICBKdW1wIGlzTm90
Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIEp1bXAgaXNOb3RDZWxsID0g
YnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIGNvbXBhcmU4KEFib3ZlT3JFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihP
YmplY3RUeXBlKSwgcmVnVDApOwogICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKQEAgLTMxMSw4ICsz
MTEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7
CiAgICAgCi0gICAgSnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAg
IGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsT2JqZWN0KHJlZ1QwKSk7CisgICAgSnVtcCBpc0lt
bSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZPYmpl
Y3QocmVnVDApKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMp
CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMs
IHJlZ1QwKTsKLSAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdU
MCk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAKICAg
ICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCiAgICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7
CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
LCByZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAg
ICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVy
bywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOwpAQCAtNDgzLDE1ICs0ODMs
MTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHkKICAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBh
cmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgogICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKICAg
ICBvcjY0KHJlZ1QxLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZkpTQ2VsbChy
ZWdUMikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwogICAgIAogICAg
IC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBh
biBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CiAgICAgLy8gaWYgaXQncyBh
IGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9IGVtaXRKdW1wSWZJbnQocmVnVDApOwotICAgIGFk
ZFNsb3dDYXNlKGVtaXRKdW1wSWZOdW1iZXIocmVnVDApKTsKKyAgICBKdW1wIGxlZnRPSyA9IGJy
YW5jaElmSW50MzIocmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1Qw
KSk7CiAgICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gZW1pdEp1bXBJ
ZkludChyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk51bWJlcihyZWdUMSkpOwor
ICAgIEp1bXAgcmlnaHRPSyA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTnVtYmVyKHJlZ1QxKSk7CiAgICAgcmlnaHRPSy5saW5rKHRoaXMpOwogCiAgICAg
aWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKQEAgLTUyNCwxNSAr
NTI0LDE1IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0CiAgICAgLy8gSnVtcCBzbG93IGlmIGJv
dGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7
CiAgICAgb3I2NChyZWdUMSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZKU0Nl
bGwocmVnVDIpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKIAogICAg
IC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBh
biBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CiAgICAgLy8gaWYgaXQncyBh
IGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9IGVtaXRKdW1wSWZJbnQocmVnVDApOwotICAgIGFk
ZFNsb3dDYXNlKGVtaXRKdW1wSWZOdW1iZXIocmVnVDApKTsKKyAgICBKdW1wIGxlZnRPSyA9IGJy
YW5jaElmSW50MzIocmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1Qw
KSk7CiAgICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gZW1pdEp1bXBJ
ZkludChyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk51bWJlcihyZWdUMSkpOwor
ICAgIEp1bXAgcmlnaHRPSyA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTnVtYmVyKHJlZ1QxKSk7CiAgICAgcmlnaHRPSy5saW5rKHRoaXMpOwogCiAgICAg
aWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKQEAgLTU3NSw3ICs1
NzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBpbnQgc3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAgICAg
Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90TnVtYmVyKHJlZ1QwKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKCk7CiAgICAgaWYgKHNyY1ZSZWcgIT0gZHN0VlJlZykKQEAgLTU4Nyw3ICs1ODcsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBpbnQgc3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKLSAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoSWZOb3RDZWxsKHJlZ1QwKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihTdHJpbmdUeXBlKSkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF90b19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQg
c3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVt
cElmTm90SlNDZWxsKHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJl
Z1QwKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChCZWxvdywgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOwog
CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBpbnQgc3JjMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKLSAgICBKdW1wIGlzSW1tZWRpYXRlID0g
ZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMCk7CiAKICAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwpAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
aW50IHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVt
aXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDApOwogCiAgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBi
cmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1Qw
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogfQogCiAKQEAgLTEw
NTgsNyArMTA1OCw3IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwotICAgIG5vdFVu
ZGVmaW5lZFNjb3BlID0gYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CisgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBi
cmFuY2hJZk5vdFVuZGVmaW5lZChyZWdUMCk7CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
c2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwpAQCAtMTMzMywyNSArMTMzMywy
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIEp1bXBMaXN0IGp1bXBUb0VuZDsKIAotICAgIGp1bXBUb0VuZC5h
cHBlbmQoYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKSk7CisgICAganVtcFRvRW5kLmFwcGVuZChi
cmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiAKICAgICAvLyBDb21waWxlIGluIGEgcHJlZGljdGl2ZSB0
eXBlIGNoZWNrLCBpZiBwb3NzaWJsZSwgdG8gc2VlIGlmIHdlIGNhbiBza2lwIHdyaXRpbmcgdG8g
dGhlIGxvZy4KICAgICAvLyBUaGVzZSB0eXBlY2hlY2tzIGFyZSBpbmxpbmVkIHRvIG1hdGNoIHRo
b3NlIG9mIHRoZSA2NC1iaXQgSlNWYWx1ZSB0eXBlIGNoZWNrcy4KICAgICBpZiAoY2FjaGVkVHlw
ZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlVW5kZWZpbmVkKQotICAgICAgICBqdW1w
VG9FbmQuYXBwZW5kKGJyYW5jaDY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFu
Y2hJZlVuZGVmaW5lZChyZWdUMCkpOwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+
bV9sYXN0U2VlblR5cGUgPT0gVHlwZU51bGwpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJh
bmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KSkpKTsKLSAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09
IFR5cGVCb29sZWFuKSB7Ci0gICAgICAgIG1vdmUocmVnVDAsIHJlZ1QxKTsKLSAgICAgICAgYW5k
NjQoVHJ1c3RlZEltbTMyKH4xKSwgcmVnVDEpOwotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJy
YW5jaDY0KEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTY0KFZhbHVlRmFsc2UpKSk7Ci0gICAgfSBl
bHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVBbnlJbnQp
Ci0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoZW1pdEp1bXBJZkludChyZWdUMCkpOworICAgICAg
ICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmTnVsbChyZWdUMCkpOworICAgIGVsc2UgaWYgKGNh
Y2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZUJvb2xlYW4pCisgICAgICAg
IGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZCb29sZWFuKHJlZ1QwLCByZWdUMSkpOworICAgIGVs
c2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZUFueUludCkK
KyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZkludDMyKHJlZ1QwKSk7CiAgICAgZWxz
ZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVtYmVyKQot
ICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGVtaXRKdW1wSWZOdW1iZXIocmVnVDApKTsKKyAgICAg
ICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZk51bWJlcihyZWdUMCkpOwogICAgIGVsc2UgaWYg
KGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZVN0cmluZykgewotICAg
ICAgICBKdW1wIGlzTm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgICAg
ICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAg
ICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOworICAgICAgICBqdW1w
VG9FbmQuYXBwZW5kKGJyYW5jaElmU3RyaW5nKHJlZ1QwKSk7CiAgICAgICAgIGlzTm90Q2VsbC5s
aW5rKHRoaXMpOwogICAgIH0KIApAQCAtMTM2NSw3ICsxMzYzLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3Rv
cmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFs
dWVPZmZzZXQoKSkpOwogCiAgICAgLy8gU3RvcmUgdGhlIHN0cnVjdHVyZUlEIG9mIHRoZSBjZWxs
IGlmIFQwIGlzIGEgY2VsbCwgb3RoZXJ3aXNlLCBzdG9yZSAwIG9uIHRoZSBsb2cgZW50cnkuCi0g
ICAgSnVtcCBub3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CisgICAgSnVtcCBu
b3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIHN0b3JlMzIocmVn
VDAsIEFkZHJlc3MocmVnVDEsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpKTsKICAgICBKdW1wIHNraXBJc0NlbGwgPSBqdW1wKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggNGMyZTQ0NTU4Yzc3OGI5
NzY4NWYxNzNjN2QzMjZmNWU5MzdmNWQ4Zi4uNzI4NjQzMmU3NWU4MTE5NWE1MGMzNGNiZTkwY2U2
ZGNlZDY2ZjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2Yo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFu
IG9iamVjdAotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RPYmplY3QocmVnVDEpKTsKIAogICAgIC8vIE9w
dGltaXN0aWNhbGx5IGxvYWQgdGhlIHJlc3VsdCB0cnVlLCBhbmQgc3RhcnQgbG9vcGluZy4KICAg
ICAvLyBJbml0aWFsbHksIHJlZ1QxIHN0aWxsIGNvbnRhaW5zIHByb3RvIGFuZCByZWdUMiBzdGls
bCBjb250YWlucyB2YWx1ZS4KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUNCk7CiAgICAg
bG9hZDMyKEFkZHJlc3MocmVnVDQsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdP
ZmZzZXQpLCByZWdUMyk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDQsIFN0cnVjdHVyZTo6cHJv
dG90eXBlT2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDQpOwotICAgIGF1dG8gaGFzTW9u
b1Byb3RvID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
RW1wdHlWYWx1ZVRhZykpOworICAgIGF1dG8gaGFzTW9ub1Byb3RvID0gYnJhbmNoSWZOb3RFbXB0
eShyZWdUMyk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCByZWdUNCk7CiAgICAgaGFz
TW9ub1Byb3RvLmxpbmsodGhpcyk7CiAgICAgbW92ZShyZWdUNCwgcmVnVDIpOwpAQCAtMjM2LDcg
KzIzNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7Ci0gICAg
SnVtcCBpc0NlbGwgPSBicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSk7CisgICAgSnVtcCBpc0NlbGwgPSBicmFuY2hJZkNlbGwocmVnVDEpOwogCiAg
ICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5l
ZFRhZyksIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CkBAIC0yODUsNyArMjg1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBpbnQgdHlwZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBKdW1wIGlz
Tm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKKyAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7
CiAKICAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19vYmplY3Qo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgdmFsdWUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCBy
ZWdUMCk7Ci0gICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgSnVtcCBpc05vdENlbGwgPSBicmFu
Y2hJZk5vdENlbGwocmVnVDEpOwogCiAgICAgY29tcGFyZTgoQWJvdmVPckVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVj
dFR5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpAQCAtMzIyLDggKzMyMiw4
IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCi0gICAgSnVt
cCBpc0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE9iamVjdChyZWdUMCkp
OworICAgIEp1bXAgaXNJbW0gPSBicmFuY2hJZk5vdENlbGwocmVnVDEpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmT2JqZWN0KHJlZ1QwKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAg
IGlmIChkc3QgIT0gc3JjKQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25v
dChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkVGFnKHNyYywg
cmVnVDApOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xl
YW5UYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCb29sZWFuKHJlZ1QxLCBJbnZh
bGlkR1BSUmVnKSk7CiAgICAgeG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAKICAgICBl
bWl0U3RvcmVCb29sKGRzdCwgcmVnVDAsIChkc3QgPT0gc3JjKSk7CkBAIC0zOTEsNyArMzkxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIEp1bXAgaXNJ
bW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdU
MSk7CiAKICAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4
KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTQwMSw5ICs0
MDEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiAgICAgLy8gTm93IGhhbmRsZSB0aGUgaW1tZWRpYXRlIGNhc2VzIC0gdW5k
ZWZpbmVkICYgbnVsbAogICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7Ci0gICAgQVNTRVJUKChK
U1ZhbHVlOjpVbmRlZmluZWRUYWcgKyAxID09IEpTVmFsdWU6Ok51bGxUYWcpICYmIChKU1ZhbHVl
OjpOdWxsVGFnICYgMHgxKSk7CisgICAgc3RhdGljX2Fzc2VydCgoSlNWYWx1ZTo6VW5kZWZpbmVk
VGFnICsgMSA9PSBKU1ZhbHVlOjpOdWxsVGFnKSAmJiAoSlNWYWx1ZTo6TnVsbFRhZyAmIDB4MSks
ICIiKTsKICAgICBvcjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwotICAgIGFkZEp1bXAoYnJh
bmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpLCB0YXJn
ZXQpOworICAgIGFkZEp1bXAoYnJhbmNoSWZOdWxsKHJlZ1QxKSwgdGFyZ2V0KTsKIAogICAgIGlz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwogICAgIG1hc3F1ZXJhZGVzR2xv
YmFsT2JqZWN0SXNGb3JlaWduLmxpbmsodGhpcyk7CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
ICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKLSAgICBKdW1wIGlzSW1tZWRpYXRl
ID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDEpOwogCiAg
ICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSks
IHRhcmdldCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZWdUMik7CkBAIC00MjcsOSArNDI3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
am5lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gTm93IGhh
bmRsZSB0aGUgaW1tZWRpYXRlIGNhc2VzIC0gdW5kZWZpbmVkICYgbnVsbAogICAgIGlzSW1tZWRp
YXRlLmxpbmsodGhpcyk7CiAKLSAgICBBU1NFUlQoKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyArIDEg
PT0gSlNWYWx1ZTo6TnVsbFRhZykgJiYgKEpTVmFsdWU6Ok51bGxUYWcgJiAweDEpKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KChKU1ZhbHVlOjpVbmRlZmluZWRUYWcgKyAxID09IEpTVmFsdWU6Ok51bGxU
YWcpICYmIChKU1ZhbHVlOjpOdWxsVGFnICYgMHgxKSwgIiIpOwogICAgIG9yMzIoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMSk7Ci0gICAgYWRkSnVtcChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChicmFu
Y2hJZk5vdE51bGwocmVnVDEpLCB0YXJnZXQpOwogCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmso
dGhpcyk7CiB9CkBAIC00NDEsOCArNDQxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdU
MSwgcmVnVDApOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIENDYWxs
SGVscGVyczo6SnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1Q
dHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkpOworICAgIEp1bXAgbm90Q2Vs
bCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CisgICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihF
cXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywg
cHRyKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MigxKSwgJmN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgIGFkZEp1bXAoanVt
cCgpLCB0YXJnZXQpOwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVn
VDEsIHJlZ1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgcmVnVDMpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmQ2VsbChyZWdUMSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEJlbG93
LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKIAogICAgIGNvbXBh
cmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC00OTksNyArNDk5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfamVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAg
ICBlbWl0TG9hZDIoc3JjMSwgcmVnVDEsIHJlZ1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgcmVnVDMpKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMSkpOwogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKEJlbG93LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2Vz
dFRhZykpKTsKIAogICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWwsIHJlZ1QwLCByZWdUMiksIHRh
cmdldCk7CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVnVDEsIHJl
Z1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMSwgcmVnVDMpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEJlbG93LCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKIAogICAgIGNvbXBhcmUzMihO
b3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfam5lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
ZW1pdExvYWQyKHNyYzEsIHJlZ1QxLCByZWdUMCwgc3JjMiwgcmVnVDMsIHJlZ1QyKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIHJlZ1QzKSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDEpKTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihCZWxvdywgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RU
YWcpKSk7CiAKICAgICBhZGRKdW1wKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpLCB0
YXJnZXQpOwpAQCAtNjEwLDkgKzYxMCw5IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5CiAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSkpOwogCiAgICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBib3RoIGFyZSBz
dHJpbmdzIG9yIHN5bWJvbHMgKG5vbiBvYmplY3QpLgotICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAg
ICBKdW1wIGZpcnN0SXNPYmplY3QgPSBlbWl0SnVtcElmQ2VsbE9iamVjdChyZWdUMCk7Ci0gICAg
YWRkU2xvd0Nhc2UoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDIpKTsKKyAgICBKdW1wIG5v
dENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDEpOworICAgIEp1bXAgZmlyc3RJc09iamVjdCA9
IGJyYW5jaElmT2JqZWN0KHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVj
dChyZWdUMikpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBmaXJzdElzT2JqZWN0Lmxp
bmsodGhpcyk7CiAKQEAgLTY0OCw5ICs2NDgsOSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0
RXFKdW1wKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdAog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEJlbG93LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6Okxvd2VzdFRhZykpKTsKIAogICAgIC8vIEp1bXAgdG8gYSBzbG93IGNhc2UgaWYgYm90aCBh
cmUgc3RyaW5ncyBvciBzeW1ib2xzIChub24gb2JqZWN0KS4KLSAgICBKdW1wIG5vdENlbGwgPSBi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
Ci0gICAgSnVtcCBmaXJzdElzT2JqZWN0ID0gZW1pdEp1bXBJZkNlbGxPYmplY3QocmVnVDApOwot
ICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QyKSk7CisgICAgSnVt
cCBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKKyAgICBKdW1wIGZpcnN0SXNPYmpl
Y3QgPSBicmFuY2hJZk9iamVjdChyZWdUMCk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RP
YmplY3QocmVnVDIpKTsKICAgICBub3RDZWxsLmxpbmsodGhpcyk7CiAgICAgZmlyc3RJc09iamVj
dC5saW5rKHRoaXMpOwogCkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFf
bnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBzcmMgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwg
cmVnVDApOwotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgSnVtcCBpc0ltbWVkaWF0ZSA9
IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CiAKICAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDEpOwpAQCAtNzI2LDcgKzcyNiw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgaW50IHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBl
bWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAg
ICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKIAogICAgIEp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMSk7CkBA
IC03NjcsNyArNzY3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7
CiAKLSAgICBKdW1wIGlzSW50MzIgPSBicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgIEp1bXAgaXNJbnQzMiA9IGJyYW5jaElmSW50MzIo
cmVnVDEpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAgICAgaXNJbnQzMi5saW5rKHRoaXMp
OwogCkBAIC03ODMsOCArNzgzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCBy
ZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwo
cmVnVDEpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFN0cmluZyhyZWdUMCkpOwogCiAg
ICAgaWYgKHNyYyAhPSBkc3QpCiAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7
CkBAIC03OTcsOCArNzk3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdU
MCk7CiAKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoQmVsb3cs
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDEp
KTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGlmIChzcmMgIT0gZHN0KQpAQCAtOTkyLDggKzk5
Miw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihG
aW5hbE9iamVjdFR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1Qz
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5
cGUpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyKSk7CkBAIC0xMDAy
LDcgKzEwMDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0TG9hZFRhZyhjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoRXF1YWws
IHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hh
c19zdHJ1Y3R1cmVfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEyMTMsMjQgKzEyMTMsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKdW1wTGlzdCBqdW1wVG9FbmQ7CiAK
LSAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJ
ZkVtcHR5KHJlZ1QzKSk7CiAKICAgICAvLyBDb21waWxlIGluIGEgcHJlZGljdGl2ZSB0eXBlIGNo
ZWNrLCBpZiBwb3NzaWJsZSwgdG8gc2VlIGlmIHdlIGNhbiBza2lwIHdyaXRpbmcgdG8gdGhlIGxv
Zy4KICAgICAvLyBUaGVzZSB0eXBlY2hlY2tzIGFyZSBpbmxpbmVkIHRvIG1hdGNoIHRob3NlIG9m
IHRoZSAzMi1iaXQgSlNWYWx1ZSB0eXBlIGNoZWNrcy4KICAgICBpZiAoY2FjaGVkVHlwZUxvY2F0
aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlVW5kZWZpbmVkKQotICAgICAgICBqdW1wVG9FbmQu
YXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVm
aW5lZFRhZykpKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZlVuZGVmaW5lZChy
ZWdUMykpOwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUg
PT0gVHlwZU51bGwpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJl
Z1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKKyAgICAgICAganVtcFRvRW5k
LmFwcGVuZChicmFuY2hJZk51bGwocmVnVDMpKTsKICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9j
YXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVCb29sZWFuKQotICAgICAgICBqdW1wVG9FbmQu
YXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xl
YW5UYWcpKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZCb29sZWFuKHJlZ1Qz
LCBJbnZhbGlkR1BSUmVnKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xh
c3RTZWVuVHlwZSA9PSBUeXBlQW55SW50KQotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5j
aDMyKEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOworICAg
ICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmSW50MzIocmVnVDMpKTsKICAgICBlbHNlIGlm
IChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVOdW1iZXIpIHsKLSAg
ICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2gzMihCZWxvdywgcmVnVDMsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7Ci0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNo
MzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAg
ICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZOdW1iZXIoSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QwKSwgcmVnVDEpKTsKICAgICB9IGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0
U2VlblR5cGUgPT0gVHlwZVN0cmluZykgewotICAgICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAg
ICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2g4KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7Cisg
ICAgICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKTsKKyAgICAgICAg
anVtcFRvRW5kLmFwcGVuZChicmFuY2hJZlN0cmluZyhyZWdUMCkpOwogICAgICAgICBpc05vdENl
bGwubGluayh0aGlzKTsKICAgICB9CiAKQEAgLTEyNDYsNyArMTI0NSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IHN0b3JlMzIocmVnVDMsIEFkZHJlc3MocmVnVDEsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6
OnZhbHVlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkp
OwogCiAgICAgLy8gU3RvcmUgdGhlIHN0cnVjdHVyZUlEIG9mIHRoZSBjZWxsIGlmIGFyZ3VtZW50
IGlzIGEgY2VsbCwgb3RoZXJ3aXNlLCBzdG9yZSAwIG9uIHRoZSBsb2cgZW50cnkuCi0gICAgSnVt
cCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpOworICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMyk7
CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHJlZ1QwKTsKICAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJM
b2c6OkxvZ0VudHJ5OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgSnVtcCBza2lwTm90Q2Vs
bCA9IGp1bXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKaW5kZXggMWI5N2RhMWEwN2I0OWFjMzA2NjI2MmIxMjg0ZGMyMGYxNDYyZTkxYS4u
NmNlMGExOTA3ZTBkNzQxZTkxYzhlZjU2OGRjZmQzYzY3Y2QzNWE2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CiAgICAgCiAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpIHsKLSAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJyYW5jaFRlc3Q2NChOb25a
ZXJvLCByZWdUMCk7CisgICAgICAgIEp1bXAgcmVzdWx0T0sgPSBicmFuY2hJZk5vdEVtcHR5KHJl
Z1QwKTsKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVEdldEJ5VmFsUmVzdWx0SXNOb3RFbXB0
eSk7CiAgICAgICAgIHJlc3VsdE9LLmxpbmsodGhpcyk7CiAgICAgfQpAQCAtMjE5LDcgKzIxOSw3
IEBAIEpJVEdldEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQoQnlW
YWxJbmZvKiBieVZhbEluZm8sIEluc3RydWN0CiAKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5v
dEpTQ2VsbChyZWdUMSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKHJl
Z1QxKSk7CiAgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKGJ5VmFsSW5mbywgcmVnVDEsIHJl
Z1QzLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKQEAgLTM1MCwxMSArMzUwLDExIEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDMpOwogICAgIHN3aXRjaCAoaW5kZXhp
bmdTaGFwZSkgewogICAgIGNhc2UgSW50MzJTaGFwZToKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChlbWl0SnVtcElmTm90SW50KHJlZ1QzKSk7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoSWZOb3RJbnQzMihyZWdUMykpOwogICAgICAgICBzdG9yZTY0KHJlZ1QzLCBCYXNlSW5kZXgo
cmVnVDIsIHJlZ1QxLCBUaW1lc0VpZ2h0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG91
YmxlU2hhcGU6IHsKLSAgICAgICAgSnVtcCBub3RJbnQgPSBlbWl0SnVtcElmTm90SW50KHJlZ1Qz
KTsKKyAgICAgICAgSnVtcCBub3RJbnQgPSBicmFuY2hJZk5vdEludDMyKHJlZ1QzKTsKICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUocmVnVDMsIGZwUmVnVDApOwogICAgICAgICBKdW1wIHJl
YWR5ID0ganVtcCgpOwogICAgICAgICBub3RJbnQubGluayh0aGlzKTsKQEAgLTQzMyw3ICs0MzMs
NyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBJbnN0cnVjdAogICAgIGludCBiYXNlID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QxKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDEpKTsK
ICAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soYnlWYWxJbmZvLCByZWdUMSwgcmVnVDEsIHBy
b3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKIAogICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtzIHRo
ZSByZWdpc3RlcnMuIFNvIGFmdGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCkBAIC05MTQs
NyArOTE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBl
bWl0R2V0VmFyRnJvbVBvaW50ZXIoYml0d2lzZV9jYXN0PEpTVmFsdWUqPigqb3BlcmFuZFNsb3Qp
LCByZWdUMCk7CiAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
ciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cykgLy8gVERaIGNoZWNrLgotICAgICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q2
NChaZXJvLCByZWdUMCkpOworICAgICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1w
dHkocmVnVDApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENsb3N1cmVWYXI6
CiAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xMDQx
LDcgKzEwNDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgICAgICAgICAgICAgZW1pdEdldFZhckZyb21J
bmRpcmVjdFBvaW50ZXIoYml0d2lzZV9jYXN0PEpTVmFsdWUqKj4ob3BlcmFuZFNsb3QpLCByZWdU
MCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0R2V0VmFy
RnJvbVBvaW50ZXIoYml0d2lzZV9jYXN0PEpTVmFsdWUqPigqb3BlcmFuZFNsb3QpLCByZWdUMCk7
Ci0gICAgICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKSk7
CisgICAgICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGluZGlyZWN0TG9hZEZvck9wZXJhbmQpCiAgICAg
ICAgICAgICAgICAgZW1pdFB1dEdsb2JhbFZhcmlhYmxlSW5kaXJlY3QoYml0d2lzZV9jYXN0PEpT
VmFsdWUqKj4ob3BlcmFuZFNsb3QpLCB2YWx1ZSwgYml0d2lzZV9jYXN0PFdhdGNocG9pbnRTZXQq
Kj4oJmN1cnJlbnRJbnN0cnVjdGlvbls1XSkpOwpAQCAtMTE1MCwxMyArMTE1MCwxMyBAQCB2b2lk
IEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdy
aXRlQmFycmllck1vZGUgbW9kZQogICAgIEp1bXAgdmFsdWVOb3RDZWxsOwogICAgIGlmIChtb2Rl
ID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVl
KSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKLSAgICAg
ICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVn
aXN0ZXIpOworICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwog
ICAgIH0KICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG93bmVyLCByZWdUMCk7CiAg
ICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFu
ZFZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSkKLSAgICAgICAgb3duZXJOb3RDZWxs
ID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOworICAgICAg
ICBvd25lck5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgSnVtcCBvd25l
cklzUmVtZW1iZXJlZE9ySW5FZGVuID0gYmFycmllckJyYW5jaCgqdm0oKSwgcmVnVDAsIHJlZ1Qx
KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoLCByZWdU
MCk7CkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0Nl
bGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBKdW1wIHZhbHVlTm90Q2Vs
bDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSkKLSAgICAgICAgdmFsdWVOb3RD
ZWxsID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOworICAg
ICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgZW1pdFdy
aXRlQmFycmllcihvd25lcik7CiAKQEAgLTExODgsMTMgKzExODgsMTMgQEAgdm9pZCBKSVQ6OmVt
aXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJp
ZXJNb2RlIG1vZGUKICAgICBKdW1wIHZhbHVlTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91
bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgewogICAg
ICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CisgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgfQog
ICAgIAogICAgIGVtaXRMb2FkKG93bmVyLCByZWdUMCwgcmVnVDEpOwogICAgIEp1bXAgb3duZXJO
b3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2UgfHwgbW9kZSA9PSBTaG91
bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCi0gICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAg
b3duZXJOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIEp1bXAgb3duZXJJ
c1JlbWVtYmVyZWRPckluRWRlbiA9IGJhcnJpZXJCcmFuY2goKnZtKCksIHJlZ1QxLCByZWdUMik7
CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCwgcmVnVDEp
OwpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxs
KiBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKICAgICBKdW1w
IHZhbHVlTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSkgewogICAg
ICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CisgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAgICAgfQog
CiAgICAgZW1pdFdyaXRlQmFycmllcihvd25lcik7CkBAIC0xNjYwLDEwICsxNjYwLDEwIEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFBhCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCBlYXJseVNjcmF0Y2gpOwotICAgIHNsb3dDYXNlcy5h
cHBlbmQoZW1pdEp1bXBJZk5vdEludChlYXJseVNjcmF0Y2gpKTsKKyAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaElmTm90SW50MzIoZWFybHlTY3JhdGNoKSk7CiAjZWxzZQogICAgIGVtaXRMb2Fk
KHZhbHVlLCBsYXRlU2NyYXRjaCwgZWFybHlTY3JhdGNoKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaDMyKE5vdEVxdWFsLCBsYXRlU2NyYXRjaCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihsYXRlU2Ny
YXRjaCkpOwogI2VuZGlmCiAgICAgCiAgICAgLy8gV2Ugd291bGQgYmUgbG9hZGluZyB0aGlzIGlu
dG8gYmFzZSBhcyBpbiBnZXRfYnlfdmFsLCBleGNlcHQgdGhhdCB0aGUgc2xvdwpAQCAtMTczMywx
NyArMTczMywxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCBlYXJseVNjcmF0Y2gpOwot
ICAgIEp1bXAgZG91YmxlQ2FzZSA9IGVtaXRKdW1wSWZOb3RJbnQoZWFybHlTY3JhdGNoKTsKKyAg
ICBKdW1wIGRvdWJsZUNhc2UgPSBicmFuY2hJZk5vdEludDMyKGVhcmx5U2NyYXRjaCk7CiAgICAg
Y29udmVydEludDMyVG9Eb3VibGUoZWFybHlTY3JhdGNoLCBmcFJlZ1QwKTsKICAgICBKdW1wIHJl
YWR5ID0ganVtcCgpOwogICAgIGRvdWJsZUNhc2UubGluayh0aGlzKTsKLSAgICBzbG93Q2FzZXMu
YXBwZW5kKGVtaXRKdW1wSWZOb3ROdW1iZXIoZWFybHlTY3JhdGNoKSk7CisgICAgc2xvd0Nhc2Vz
LmFwcGVuZChicmFuY2hJZk5vdE51bWJlcihlYXJseVNjcmF0Y2gpKTsKICAgICBhZGQ2NCh0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIGVhcmx5U2NyYXRjaCk7CiAgICAgbW92ZTY0VG9Eb3VibGUoZWFy
bHlTY3JhdGNoLCBmcFJlZ1QwKTsKICAgICByZWFkeS5saW5rKHRoaXMpOwogI2Vsc2UKICAgICBl
bWl0TG9hZCh2YWx1ZSwgbGF0ZVNjcmF0Y2gsIGVhcmx5U2NyYXRjaCk7Ci0gICAgSnVtcCBkb3Vi
bGVDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIGxhdGVTY3JhdGNoLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKTsKKyAgICBKdW1wIGRvdWJsZUNhc2UgPSBicmFuY2hJZk5vdEludDMy
KGxhdGVTY3JhdGNoKTsKICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZw
UmVnVDApOwogICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKaW5kZXggNTFiZDQ4MDg1OGY3ZTg0NDY3Mjc1YWMyZTc0OTI3YzE2MTc5ZmMw
OS4uZGIyYTQ3MmU4NTBhNTY2ZTA3YTAyM2NmNDMzMDQyMjIxODExNWQ2NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogCiAgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
KyAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJyYW5jaElmTm90RW1wdHkocmVnVDEpOwogICAgICAg
ICBhYm9ydFdpdGhSZWFzb24oSklUR2V0QnlWYWxSZXN1bHRJc05vdEVtcHR5KTsKICAgICAgICAg
cmVzdWx0T0subGluayh0aGlzKTsKICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEluZGUKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDIsIEFkZHJlc3MocmVnVDMsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpKTsKICAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QzLCByZWdUMiwgVGltZXNFaWdodCwgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZwogICAg
IGxvYWQzMihCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKLSAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZkVtcHR5
KHJlZ1QxKSk7CiAgICAgCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KQEAgLTI2Myw3ICsyNjMs
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoSW5zdHJ1Y3Rpb24q
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JM
ZW5ndGhPZmZzZXQoKSkpKTsKICAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QzLCByZWdUMiwgVGlt
ZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOyAvLyB0YWcKICAgICBsb2FkMzIoQmFzZUlu
ZGV4KHJlZ1QzLCByZWdUMiwgVGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQo
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsg
Ly8gcGF5bG9hZAotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaElmRW1wdHkocmVnVDEpKTsKICAgICAKICAgICByZXR1cm4gc2xvd0Nhc2VzOwog
fQpAQCAtMjc2LDcgKzI3Niw3IEBAIEpJVEdldEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0R2V0QnlW
YWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIEluc3RydWN0CiAgICAgLy8gcHJv
cGVydHk6IHRhZyhyZWdUMyksIHBheWxvYWQocmVnVDIpCiAgICAgLy8gc2NyYXRjaDogcmVnVDQK
IAotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElm
Tm90Q2VsbChyZWdUMykpOwogICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8s
IHJlZ1QyLCByZWdUNCwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCkBAIC0zOTUsNyArMzk1LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24KICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBzd2l0Y2ggKGluZGV4
aW5nU2hhcGUpIHsKICAgICBjYXNlIEludDMyU2hhcGU6Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKSk7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihyZWdUMSkp
OwogICAgICAgICBzdG9yZTMyKHJlZ1QwLCBCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKICAgICAg
ICAgc3RvcmUzMihyZWdUMSwgQmFzZUluZGV4KHJlZ1QzLCByZWdUMiwgVGltZXNFaWdodCwgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKICAgICAgICAgYnJlYWs7CkBA
IC00MDYsNyArNDA2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KICAgICAgICAgZW1pdFdy
aXRlQmFycmllcihiYXNlLCB2YWx1ZSwgU2hvdWxkRmlsdGVyVmFsdWUpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIERvdWJsZVNoYXBlOiB7Ci0gICAgICAgIEp1bXAgbm90SW50ID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAg
ICAgICAgSnVtcCBub3RJbnQgPSBicmFuY2hJZk5vdEludDMyKHJlZ1QxKTsKICAgICAgICAgY29u
dmVydEludDMyVG9Eb3VibGUocmVnVDAsIGZwUmVnVDApOwogICAgICAgICBKdW1wIHJlYWR5ID0g
anVtcCgpOwogICAgICAgICBub3RJbnQubGluayh0aGlzKTsKQEAgLTQ4Miw3ICs0ODIsNyBAQCBK
SVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBJbnN0cnVjdAogICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKICAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKGJ5
VmFsSW5mbywgcmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICAv
LyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5nIHRo
ZSB3cml0ZSBiYXJyaWVyLApAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9mcm9tX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZW1pdEdldFZhckZyb21Qb2ludGVyKGJpdHdpc2VfY2Fz
dDxKU1ZhbHVlKj4oKm9wZXJhbmRTbG90KSwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAgICAgIGlm
IChyZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBlID09IEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSAvLyBURFogY2hlY2suCi0gICAgICAg
ICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZkVtcHR5KHJlZ1QxKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
bG9zdXJlVmFyOgogICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OgpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgICAgICAgICAgICAgIGVtaXRH
ZXRWYXJGcm9tSW5kaXJlY3RQb2ludGVyKGJpdHdpc2VfY2FzdDxKU1ZhbHVlKio+KG9wZXJhbmRT
bG90KSwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIGVtaXRHZXRWYXJGcm9tUG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCpvcGVy
YW5kU2xvdCksIHJlZ1QxLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
KTsKKyAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1QxKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaW5kaXJlY3RMb2FkRm9yT3BlcmFuZCkKICAg
ICAgICAgICAgICAgICBlbWl0UHV0R2xvYmFsVmFyaWFibGVJbmRpcmVjdChiaXR3aXNlX2Nhc3Q8
SlNWYWx1ZSoqPihvcGVyYW5kU2xvdCksIHZhbHVlLCBiaXR3aXNlX2Nhc3Q8V2F0Y2hwb2ludFNl
dCoqPigmY3VycmVudEluc3RydWN0aW9uWzVdKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgKaW5kZXggZjFlZDA1NTc4M2ZjN2EzNGRkYWQzMGYzNTcyZjg3Y2M4
MmJlZTMzNy4uMjM1MTk3M2Q0ZjkyNjRlZWRmOGQ1NDQ2N2IzNjc2ZGY1MTllY2Q4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtNTksMTQgKzU5LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbChSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0
SnVtcElmTnVtYmVyKFJlZ2lzdGVySUQpOwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3ROdW1i
ZXIoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRpZgogCi0gICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5
cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUpOwotCiAgICAgICAgIHZvaWQgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoaW50IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklE
IGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgaW50IGVudHJ5KTsKICAgICAgICAgdm9pZCBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIGludCBlbnRyeSk7CkBAIC0xNDcsNDMg
KzE0MiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0SnVtcElmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWcsIHRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk51bWJlcihSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFu
Y2hUZXN0NjQoTm9uWmVybywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIH0KLSAg
ICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0
SnVtcElmTm90TnVtYmVyKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3Q2NChaZXJvLCByZWcsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgfQogICAg
IGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRKU0Nl
bGwodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbG9hZDY0KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOwot
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGRzdCwgdGFnTWFza1JlZ2lzdGVy
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Q2VsbChkc3QpOwogICAgIH0KICAgICAKICAg
ICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50
MzIodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbG9hZDY0KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOwot
ICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDY0KEJlbG93LCBkc3QsIHRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7CisgICAgICAgIEp1bXAgbm90SW50MzIgPSBicmFuY2hJZk5vdEludDMyKGRzdCk7
CiAgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKGRzdCwgZHN0KTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgcmV0dXJuIG5vdEludDMyOwogICAgIH0KIAogICAgIGlubGluZSBKU0lu
dGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWREb3VibGUodW5zaWduZWQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIEZQUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRj
aCkKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4
KSwgc2NyYXRjaCk7Ci0gICAgICAgIEp1bXAgbm90TnVtYmVyID0gZW1pdEp1bXBJZk5vdE51bWJl
cihzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBub3RJbnQgPSBicmFuY2g2NChCZWxvdywgc2NyYXRj
aCwgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgSnVtcCBub3ROdW1iZXIgPSBicmFu
Y2hJZk5vdE51bWJlcihzY3JhdGNoKTsKKyAgICAgICAgSnVtcCBub3RJbnQgPSBicmFuY2hJZk5v
dEludDMyKHNjcmF0Y2gpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShzY3JhdGNoLCBk
c3QpOwogICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgICAgIG5vdEludC5saW5rKHRo
aXMpOwotICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHNjcmF0Y2gpOwotICAg
ICAgICBtb3ZlNjRUb0RvdWJsZShzY3JhdGNoLCBkc3QpOworICAgICAgICB1bmJveERvdWJsZShz
Y3JhdGNoLCBzY3JhdGNoLCBkc3QpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAg
IHJldHVybiBub3ROdW1iZXI7CiAgICAgfQpAQCAtMjE2LDExICsxOTcsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6
Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJl
ZywgSlNUeXBlIHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKHR5cGUpKTsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VK
SVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKGludCBlbnRyeSwgUmVnaXN0ZXJJRCB0
bywgUmVnaXN0ZXJJRCBmcm9tKQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyb20s
IGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCmluZGV4IDQxZWIxZWE4ZDJmZGQzOTlmN2I3ZjIxMzhkNjFjMGEyNTM5Y2I5YzYu
LmJmODhiZGJiNjdiYTMxYmM5MTI4YjdmZmM1NmE4OTIzZjNmNjMwNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIGZ1bmN0aW9uIGFu
ZCBzdGFzaCB0aGUgZXhlY3V0YWJsZSBpbiBzY3JhdGNoR1BSLgogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDY0KENDYWxsSGVs
cGVyczo6Tm9uWmVybywgY2FsbGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAg
ICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJKaXQuYnJhbmNoSWZOb3RDZWxsKGNhbGxlZUdQUikp
OwogI2Vsc2UKICAgICAgICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0
aGUgY2FsbGVlIGlzIGEgY2VsbC4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDg4MzIwNjViYzJmNTE1ZjIzMTZkOTlhZTczZjNh
OWQyNGIyZTEzZjQuLjZlN2U2MzEzZGNmM2UwZWJjMGU4N2VmZDYyNzBmMjM2NWVkOTAyMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTE5
NCwxMCArMTk0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8KICAgICBzbG93Q2FzZS5hcHBl
bmQoCiAgICAgICAgIGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJ
bmZvOjpyZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CiAjZWxzZQotICAgIHNsb3dDYXNlLmFwcGVu
ZCgKLSAgICAgICAgaml0LmJyYW5jaDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RDZWxsKEdQUkluZm86OnJlZ1QxKSk7CiAjZW5kaWYKICAgICBhdXRvIG5vdEpTRnVuY3Rp
b24gPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9uVHlwZSk7
CiAgICAgCkBAIC0xMDI0LDcgKzEwMjEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldCgwKTsKICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXJJbmRleCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RJbnRlZ2VyID0gaml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgYXV0byBu
b3RJbnRlZ2VyID0gaml0LmJyYW5jaElmTm90SW50MzIoR1BSSW5mbzo6cmVnVDApOwogCiAgICAg
Ly8gQWJzIEludDMyLgogICAgIGppdC5yc2hpZnQzMihHUFJJbmZvOjpyZWdUMCwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMigzMSksIEdQUkluZm86OnJlZ1QxKTsKQEAgLTEwNDAsNyArMTAz
Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYWJzVGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQogCiAgICAgLy8gSGFuZGxlIERvdWJsZXMuCiAgICAgbm90SW50ZWdlci5s
aW5rKCZqaXQpOwotICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoSWZOb3ROdW1iZXIoR1BS
SW5mbzo6cmVnVDApKTsKICAgICBqaXQudW5ib3hEb3VibGVXaXRob3V0QXNzZXJ0aW9ucyhHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwogICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBhYnNGUFIwTGFiZWwgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuYWJz
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEZQUkluZm86OmZwUmVnVDEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340587</attachid>
            <date>2018-05-17 08:40:05 -0700</date>
            <delta_ts>2018-05-17 08:41:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185730-20180518004004.patch</filename>
            <type>text/plain</type>
            <size>127181</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjY2YTM0Y2M5ZmY1YjQ2MzgwYjBlMDZlZWJkYzVlMmVlZjNiZmZkLi5kMzAxOTBjZDExYTlkMDZj
ZTE5MzE2OWMzNTM5YWVmYzRiZjE1NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTMgQEAKKzIwMTgtMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIEFzc2VtYmx5SGVscGVycycgdHlwZSBjaGVja2lu
ZyBmdW5jdGlvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0J3MgdXNlIEFzc2VtYmx5SGVscGVycycgdHlwZSBj
aGVja2luZyBmdW5jdGlvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhpcyBoaWRlcyB0aGUgY29t
cGxleAorICAgICAgICBiaXQgYW5kIHJlZ2lzdGVyIG9wZXJhdGlvbnMgZm9yIHR5cGUgdGFnZ2lu
ZyBvZiBKU1ZhbHVlLiBJdCBpcyByZWFsbHkgdXNlZnVsIHdoZW4gd2Ugd291bGQgbGlrZQorICAg
ICAgICB0byB0d2VhayB0eXBlIHRhZ2dpbmcgcmVwcmVzZW50YXRpb24gc2luY2UgdGhlIGNvZGUg
aXMgY29sbGVjdGVkIGludG8gQXNzZW1ibHlIZWxwZXJzLiBBbmQKKyAgICAgICAgdGhlIG5hbWVk
IGZ1bmN0aW9uIGlzIG1vcmUgcmVhZGFibGUgdGhhbiBzb21lIGJyYW5jaGluZyBvcGVyYXRpb25z
LgorCisgICAgICAgIFdlIGFsc28gcmVtb3ZlIHVubmVjZXNzYXJ5IGJyYW5jaGluZyBmdW5jdGlv
bnMgaW4gSklUIC8gSlNJbnRlcmZhY2VKSVQuIFNvbWUgb2YgdGhlbSBhcmUgZHVwbGljYXRlCisg
ICAgICAgIHRvIEFzc2VtYmx5SGVscGVycycgb25lLgorCisgICAgICAgIFdlIGFkZCBzZXZlcmFs
IG5ldyB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuIE1vcmVvdmVy
LCB3ZSBhZGQgYnJhbmNoSWZYWFgoR1BSUmVnKQorICAgICAgICBmdW5jdGlvbnMgZXZlbiBmb3Ig
MzJiaXQgZW52aXJvbm1lbnQuIEluIDMyYml0IGVudmlyb25tZW50LCB0aGlzIGZ1bmN0aW9uIHRh
a2VzIHRhZyByZWdpc3Rlci4gVGhpcworICAgICAgICBzZW1hbnRpY3MgaXMgYWxpZ25lZCB0byB0
aGUgZXhpc3RpbmcgYnJhbmNoSWZDZWxsIC8gYnJhbmNoSWZOb3RDZWxsLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1pc2MpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBH
ZXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5k
ZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252ZXJ0QW55SW50KToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUFzc2VydE5vdEVtcHR5KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZJbnQzMik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RJbnQzMik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkJvb2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJy
YW5jaElmTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNo
SWZFbXB0eSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RFbXB0
eSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90VW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk51bGwpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90TnVsbCk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF91bnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QmluYXJ5
RG91YmxlT3ApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW9kKToKKyAgICAgICAgKiBq
aXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SnVtcElmQm90aEpTQ2VsbHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZk5v
dEludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEp1bXBJZkpTQ2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1
bXBJZkludCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfY2VsbF93
aXRoX3R5cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
dG9fbnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja190ZHopOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXROZXdGdW5jRXhwckNvbW1vbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9m
aWxlX3R5cGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRo
X3R5cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2puZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2plcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcSk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
SnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rv
X251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19zdHJpbmcpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZSk6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
dG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdl
dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29wZSk6CisgICAgICAgICogaml0L0pTSW50
ZXJmYWNlSklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEpTQ2Vs
bCk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKToKKyAgICAg
ICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6
SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdE51bWJlcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxs
KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmly
dHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3IpOgorCisgICAg
ICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9y
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVh
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxUeXBl
V2l0aG91dFR5cGVGaWx0ZXJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU1pc2MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
RXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3Ry
aWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRBbnlJ
bnQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXNzZXJ0Tm90RW1wdHkpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZkludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5v
dEludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk51bWJlcik6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3ROdW1iZXIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQm9vbGVhbik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RCb29sZWFuKToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkVtcHR5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpicmFuY2hJZk5vdEVtcHR5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZlVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJh
bmNoSWZOb3RVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTnVsbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3ROdWxs
KToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KToKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9tb2QpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZCb3RoSlNDZWxscyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmSlNDZWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SnVtcElmTm90SW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVt
cFNsb3dDYXNlSWZOb3RJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZkNlbGxPYmplY3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmSlNDZWxsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmSW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pc19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZl
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3Ry
aWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1iZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX29iamVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVu
Y0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm90KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0
cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1iZXIpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2NoZWNrX3Rkeik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
cm9maWxlX3R5cGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmlj
Q29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRB
cnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0
QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRDb250aWd1b3VzTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZUxv
YWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
dG9fc2NvcGUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRKU0NlbGwpOgorICAgICAgICAoSlNDOjpKU0ludGVy
ZmFjZUpJVDo6ZW1pdExvYWRJbnQzMik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElm
TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1w
SWZOb3ROdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1p
dEp1bXBJZk5vdFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAg
ICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVua0Zvcik6CisgICAgICAgIChK
U0M6OmFic1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoK
KyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6Y2hlY2tTdWJDbGFzc1NuaXBwZXQpOgorICAgICAg
ICAoV1RGOjpET01KSVRGdW5jdGlvbk9iamVjdDo6Y2hlY2tTdWJDbGFzc1NuaXBwZXQpOgorCiAy
MDE4LTA1LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGRvZXNuJ3QgbmVlZCBhIHBhcmVudCBzb3VyY2Ugb3Zl
cnJpZGUgZmllbGQgc2luY2UgaXQncyBvbmx5IHVzZWQgZm9yIGRlZmF1bHQgY2xhc3MgY29uc3Ry
dWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMmNiODM3NmY5Nzk3MTY5YmJkMmExNmIxM2Y5ZTZkZjVkODc1NmJlZS4uOGQ4ODE2N2Yy
YzJiYzJhZjdkNjcxMTM1YjhlYWU4MjdlYWI2Nzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMzc0LDIwICszNzQsMTQgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICBjYXNlIFN0cmluZ0xlbmd0aDogewog
ICAgICAgICBBU1NFUlQoIXZpYVByb3h5KCkpOwogICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQo
Ci0gICAgICAgICAgICBqaXQuYnJhbmNoOCgKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOworICAgICAgICAgICAgaml0LmJyYW5j
aElmTm90U3RyaW5nKGJhc2VHUFIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6IHsKICAgICAgICAgQVNTRVJUKCF2aWFQcm94eSgpKTsK
ICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAotICAgICAgICAgICAgaml0LmJyYW5jaDgoCi0g
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoRGlyZWN0QXJn
dW1lbnRzVHlwZSkpKTsKKyAgICAgICAgICAgIGppdC5icmFuY2hJZk5vdFR5cGUoYmFzZUdQUiwg
RGlyZWN0QXJndW1lbnRzVHlwZSkpOwogCiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZCgKICAg
ICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRyKApAQCAtNDA0LDEwICszOTgsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVu
Z3RoOiB7CiAgICAgICAgIEFTU0VSVCghdmlhUHJveHkoKSk7CiAgICAgICAgIGZhbGxUaHJvdWdo
LmFwcGVuZCgKLSAgICAgICAgICAgIGppdC5icmFuY2g4KAotICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFNjb3BlZEFyZ3VtZW50c1R5cGUpKSk7CisgICAg
ICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKGJhc2VHUFIsIFNjb3BlZEFyZ3VtZW50c1R5cGUp
KTsKIAogICAgICAgICBqaXQubG9hZFB0cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlR1BSLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mU3RvcmFnZSgpKSwKQEAgLTQ0
OCw3ICs0MzksNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaGFzIHRoZSBwcm9wZXJ0eS4KICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90
b09mZnNldCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgYmFz
ZUZvckFjY2Vzc0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hJZk5v
dE51bGwoYmFzZUZvckFjY2Vzc0dQUikpOwogI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zm
c2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCks
IGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2gu
YXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgYmFzZUZvckFj
Y2Vzc0dQUikpOwpAQCAtNDYzLDcgKzQ1NCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVX
aXRoR3VhcmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOyAvLyBQcmltaXRpdmVzIG11c3QgaGF2ZSBhIHN0b3JlZCBwcm90b3R5
cGUuIFdlIHVzZSBwcm90b3R5cGVGb3JMb29rdXAgZm9yIHRoZW0uCiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJv
dG9PZmZzZXQpKSwgYmFzZUZvckFjY2Vzc0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
YWxsVGhyb3VnaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6RXF1YWwsIGJhc2VG
b3JBY2Nlc3NHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoSWZOdWxs
KGJhc2VGb3JBY2Nlc3NHUFIpKTsKICNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNl
Rm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVu
ZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIGJhc2VGb3JBY2Nlc3NHUFIp
KTsKQEAgLTQ3NCwxMCArNDY1LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICh2aWFQcm94eSgpKSB7CiAgICAg
ICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBqaXQu
YnJhbmNoOCgKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWws
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmJyYW5jaElmTm90VHlwZShiYXNlR1BSLCBQdXJlRm9yd2Fy
ZGluZ1Byb3h5VHlwZSkpOwogCiAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTUHJveHk6OnRhcmdldE9mZnNldCgpKSwgc2NyYXRjaEdQ
Uik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggYjkwMTMxODY2M2VkYWNiMmM2NWRlOGY2MWY5ZWQwY2NlN2YxYWYzOC4uZTVmNmE0
YzU1ZWVlNTRlZmMzZTgzNjdjZjViMWY0MmI2YzM0M2ViYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIzNzUsMTYgKzIzNzUsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQog
ICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHRlbXBGcHIodGhpcyk7CiAgICAgICAgICAgICBGUFJS
ZWcgZnByID0gdGVtcEZwci5mcHIoKTsKIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
Z3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoSWZJbnQzMihncHIpOwogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGNvbnZlcnRlZDsKIAogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAg
ICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaElmTm90TnVtYmVyKGdwcikpOwogICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051bWJlciA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTnVtYmVyID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoZ3ByKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbENoZWNrLCBtX2ppdC5icmFu
Y2hJZkNlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwpAQCAtMjQyOSw3ICsyNDI4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgIEZQUlJlZyBmcHIgPSB0ZW1wRnByLmZwcigpOwogICAgICAgICAgICAgICAgIEZQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaElmSW50MzIodGFnR1BSKTsK
IAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTnVtYmVy
VXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKApAQCAtMjQ0NSw3ICsy
NDQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZDZWxsKG9wMS5qc1Zh
bHVlUmVncygpKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAv
LyBJdCdzIG5vdCBhIGNlbGw6IHNvIHRydWUgdHVybnMgaW50byAxIGFuZCBhbGwgZWxzZSB0dXJu
cyBpbnRvIDAuCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQm9vbGVh
biA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2hJZkJvb2xlYW4odGFnR1BSLCBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdEdwcik7CiAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBlbmQobV9qaXQu
anVtcCgpKTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0yNjAyLDE3ICsyNjAxLDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm9kZSogbm9kZSkKICAgICAgICAg
RlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IGRvbmU7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9q
aXQuYnJhbmNoNjQoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBv
cDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaElmSW50MzIob3AxR1BSKTsKIAogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE5vdENlbGxVc2UpIHsKLSAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3Rlcik7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0
LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVV
bmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTnVtYmVyID0gbV9q
aXQuYnJhbmNoSWZOdW1iZXIob3AxR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoSWZVbmRlZmluZWQob3AxR1BSKTsKIAogICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICAgICAgICAgIG1faml0Lmxv
YWREb3VibGUoVHJ1c3RlZEltbVB0cigmemVybyksIHJlc3VsdEZQUik7CiAKLSAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzTnVsbCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpF
cXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc051bGwgPSBtX2ppdC5icmFuY2hJZk51bGwob3AxR1BSKTsKICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNL
KEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywKQEAg
LTI2MzMsNyArMjYzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAo
Tm9kZSogbm9kZSkKICAgICAgICAgfSBlbHNlIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAgICAgICAgdHlwZUNoZWNrKAogICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0
ZWNvZGVOdW1iZXIsCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwor
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmTm90TnVtYmVyKG9wMUdQUikpOwogICAgICAg
ICB9CiAKICAgICAgICAgdW5ib3hEb3VibGUob3AxR1BSLCB0ZW1wR1BSLCByZXN1bHRGUFIpOwpA
QCAtMjY1MSwyMCArMjY0OSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91Ymxl
UmVwKE5vZGUqIG5vZGUpCiAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgIAotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJh
bmNoSWZJbnQzMihvcDFUYWdHUFIpOwogCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gTm90Q2VsbFVzZSkgewogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNO
dW1iZXIgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QmVsb3csIG9wMVRhZ0dQUiwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcgKyAxKSk7Ci0gICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVk
VGFnKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0
LmJyYW5jaElmVW5kZWZpbmVkKG9wMVRhZ0dQUik7CiAKICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBkb3VibGUgemVybyA9IDA7CiAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJ
bW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOwogCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc051bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTnVsbCA9IG1faml0LmJyYW5jaElmTnVsbChvcDFUYWdHUFIpOwogICAgICAgICAg
ICAgZG9uZS5hcHBlbmQoaXNOdWxsKTsKIAotICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNW
YWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVj
Q2VsbCwgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOworICAgICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIH5TcGVjQ2VsbCwgbV9qaXQuYnJhbmNoSWZOb3RCb29sZWFuKG9wMVRhZ0dQUiwgSW52YWxp
ZEdQUlJlZykpOwogCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ZhbHNlID0gbV9q
aXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDFQYXlsb2FkR1BSLCBUcnVzdGVk
SW1tMzIoMSkpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBvbmUgPSAxOwpAQCAt
MjY3OSw2ICsyNjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChO
b2RlKiBub2RlKQogCiAgICAgICAgICAgICBpc051bWJlci5saW5rKCZtX2ppdCk7CiAgICAgICAg
IH0gZWxzZSBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51
bWJlcikpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgZmFpbHMgd2l0aCBJbnQzMlRhZywg
YnV0IGl0IGlzIE9LIHNpbmNlIEludDMyIGNhc2UgaXMgYWxyZWFkeSBleGNsdWRlZC4KICAgICAg
ICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIs
IG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAogICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKQEAgLTMzMjks
MTkgKzMzMjcsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JP
YmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHAKICAgICAKICAgICAvLyBXYWxr
IHVwIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNoUmVnKSwgY29t
cGFyaW5nIHRvIHByb3RvdHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgm
bV9qaXQpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHBlcmZvcm1EZWZhdWx0SGFzSW5zdGFu
Y2UgPSBtX2ppdC5icmFuY2g4KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihQcm94eU9iamVjdFR5cGUpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBwZXJmb3JtRGVmYXVsdEhhc0luc3RhbmNlID0gbV9qaXQuYnJhbmNoSWZUeXBlKHNjcmF0
Y2hSZWcsIFByb3h5T2JqZWN0VHlwZSk7CiAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoKm1f
aml0LnZtKCksIHNjcmF0Y2hSZWcsIHNjcmF0Y2gzUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaDNSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCBzY3JhdGNoM1JlZyk7Ci0g
ICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5v
blplcm8sIHNjcmF0Y2gzUmVnKTsKKyAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5j
aElmTm90RW1wdHkoc2NyYXRjaDNSZWcpOwogICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
QWRkcmVzcyhzY3JhdGNoUmVnLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09m
ZnNldCkpLCBzY3JhdGNoM1JlZyk7CiAgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKICAg
ICBtX2ppdC5tb3ZlKHNjcmF0Y2gzUmVnLCBzY3JhdGNoUmVnKTsKICNlbHNlCiAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBTdHJ1Y3R1cmU6OnBy
b3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgc2NyYXRjaDJSZWcpOwogICAgIG1faml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3RydWN0dXJlOjpwcm90
b3R5cGVPZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoM1JlZyk7Ci0gICAgYXV0byBo
YXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3Jh
dGNoMlJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICBhdXRv
IGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90RW1wdHkoc2NyYXRjaDJSZWcpOwogICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBvZmZzZXRSZWxh
dGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgc2NyYXRj
aDNSZWcpOwogICAgIGhhc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShz
Y3JhdGNoM1JlZywgc2NyYXRjaFJlZyk7CkBAIC03NjYwLDcgKzc2NTcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBhdXRvIGxv
b3BTdGFydCA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVk
SW1tMzIoMSksIGxlbmd0aEdQUik7CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzY3JhdGNoMUdQUiwgbGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCksIHNjcmF0Y2gyR1BSKTsKLSAgICAgICAgICAgIGF1dG8gbm90RW1wdHkgPSBt
X2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHNjcmF0Y2gyR1BSKTsK
KyAgICAgICAgICAgIGF1dG8gbm90RW1wdHkgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHNjcmF0
Y2gyR1BSKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIG5vdEVtcHR5
LmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoc2NyYXRjaDJHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCBsZW5ndGhHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUaW1lc0VpZ2h0LCBKU0ZpeGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSk7CkBAIC05NjY0
LDEwICs5NjYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQ2VsbFR5cGVXaXRo
b3V0VHlwZUZpbHRlcmluZygKIHsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgZWRnZSwKLSAgICAgICAg
bV9qaXQuYnJhbmNoOCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
Mihqc1R5cGUpKSk7CisgICAgICAgIG1faml0LmJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBqc1R5
cGUpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQ2VsbFR5cGUoCkBAIC05
Njc1LDEwICs5NjY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQ2VsbFR5cGUo
CiB7CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGNlbGxHUFIpLCBlZGdlLCBzcGVjVHlwZSwKLSAgICAgICAgbV9qaXQuYnJhbmNoOCgKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgVHJ1c3RlZEltbTMyKGpzVHlwZSkpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNo
SWZOb3RUeXBlKGNlbGxHUFIsIGpzVHlwZSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVJbnQzMihFZGdlIGVkZ2UpCkBAIC05Njk5LDEyICs5NjkwLDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGdlIGVkZ2UpCiAgICAgR1BSUmVnIGdwciA9
IHZhbHVlLmdwcigpOwogICAgIHR5cGVDaGVjaygKICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwg
ZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLAotICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CisgICAgICAgIG1faml0LmJyYW5jaElmTm90TnVtYmVyKGdwcikpOwogI2Vsc2UKKyAgICBzdGF0
aWNfYXNzZXJ0KEpTVmFsdWU6OkludDMyVGFnID49IEpTVmFsdWU6Okxvd2VzdFRhZywgIkludDMy
VGFnIGlzIGluY2x1ZGVkIGluID49IEpTVmFsdWU6Okxvd2VzdFRhZyByYW5nZS4iKTsKICAgICBH
UFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAg
ICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjSW50MzJPbmx5LAotICAgICAgICBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOworICAgICAgICBtX2ppdC5icmFuY2hJZkludDMyKHRhZ0dQ
UikpOwogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBl
ZGdlLCBTcGVjQnl0ZWNvZGVOdW1iZXIsCiAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2Vz
dFRhZykpKTsKQEAgLTEwMTkzLDkgKzEwMTg1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU1pc2MoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgICAgICByZWdzLCBl
ZGdlLCBTcGVjTWlzYywKICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlLCByZWdzLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFRhZ0JpdFR5cGVP
dGhlciB8IFRhZ0JpdEJvb2wgfCBUYWdCaXRVbmRlZmluZWQpKSk7CiAjZWxzZQorICAgIHN0YXRp
Y19hc3NlcnQoSlNWYWx1ZTo6SW50MzJUYWcgPj0gSlNWYWx1ZTo6VW5kZWZpbmVkVGFnLCAiSW50
MzJUYWcgaXMgaW5jbHVkZWQgaW4gPj0gSlNWYWx1ZTo6VW5kZWZpbmVkVGFnIHJhbmdlLiIpOwog
ICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICByZWdzLCBlZGdlLCB+U3BlY0ludDMyT25seSwK
LSAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZWdzLnRhZ0dQ
UigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwor
ICAgICAgICBtX2ppdC5icmFuY2hJZkludDMyKHJlZ3MudGFnR1BSKCkpKTsKICAgICBERkdfVFlQ
RV9DSEVDSygKICAgICAgICAgcmVncywgZWRnZSwgU3BlY01pc2MsCiAgICAgICAgIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcmVncy50YWdHUFIoKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSk7CkBAIC0xMTcwNSw3ICsx
MTY5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFeHRyYWN0VmFsdWVGcm9tV2Vh
a01hcEdldChOb2RlKiBub2RlKQogICAgIG1faml0Lm1vdmVWYWx1ZShqc1VuZGVmaW5lZCgpLCBy
ZXN1bHRSZWdzKTsKICAgICBkb25lLmxpbmsoJm1faml0KTsKICNlbHNlCi0gICAgYXV0byBpc0Vt
cHR5ID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB2YWx1ZVJlZ3MudGFnR1BS
KCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgYXV0byBpc0Vt
cHR5ID0gbV9qaXQuYnJhbmNoSWZFbXB0eSh2YWx1ZVJlZ3MudGFnR1BSKCkpOwogICAgIG1faml0
Lm1vdmVWYWx1ZVJlZ3ModmFsdWVSZWdzLCByZXN1bHRSZWdzKTsKICAgICBhdXRvIGRvbmUgPSBt
X2ppdC5qdW1wKCk7CiAKQEAgLTEyMjMzLDggKzEyMjI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZVRoaXMoTm9kZSogbm9kZSkKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93UGF0aDsKIAotICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVl
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEpTRnVuY3Rp
b25UeXBlKSkpOworICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEZ1bmN0aW9u
KGNhbGxlZUdQUikpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2Fs
bGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7CiAg
ICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgbV9qaXQueG9yUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgcmFyZURhdGFHUFIpOwpAQCAtMTI2MDQs
MTQgKzEyNTk2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVP
ZihOb2RlKiBub2RlKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbV9qaXQubG9hZDY0
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFu
Y2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHRlbXBHUFIpOworICAgICAgICBhdXRvIGhh
c01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90RW1wdHkodGVtcEdQUik7CiAgICAgICAgIG1f
aml0LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIHRlbXBHUFIpOwogICAgICAgICBoYXNNb25v
UHJvdG8ubGluaygmbV9qaXQpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUp
OwogI2Vsc2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQ
Uik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BS
LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHRlbXBHUFIp
OwotICAgICAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6Tm90RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRh
ZykpOworICAgICAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90RW1wdHko
dGVtcDJHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob2Jq
ZWN0R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkgKyBUYWdP
ZmZzZXQpLCB0ZW1wMkdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRk
cmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKICAgICAgICAgaGFzTW9ub1Byb3RvLmxpbmso
Jm1faml0KTsKQEAgLTEyNzk2LDEwICsxMjc4OCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
R1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBzY3JhdGNoR1BSKTsK
LSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZkVtcHR5KHNjcmF0Y2hHUFIpKTsKICNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
LCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnKSkpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
RW1wdHkoc2NyYXRjaEdQUikpOwogI2VuZGlmCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICBicmVhazsKQEAgLTEyODM4LDEwICsxMjgzMCwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUq
IG5vZGUpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9B
c3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
LSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZkVtcHR5KHNjcmF0Y2hHUFIpKTsKICNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3Jh
dGNoR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkVtcHR5KHNjcmF0Y2hHUFIpKTsKICNlbmRp
ZgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCBjOWZjMTU3MDczM2U3Nzk5YTY2M2NiZTdmZDQ3MzIzZDY3
OWEzZDNjLi45ZjEzMWQ5MTRiMWU1MDAyYjU0NjZjMTc0YTc4NzhlNmE2NzUzNGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlKQogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1faml0
LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoMzIo
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7
CiAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHdlIG1lYW50IHRv
IG1ha2UgYSBub3JtYWwgY2FsbC4gT29wcy4KICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
QEAgLTk4Nyw3ICs5ODcsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnQzMkludGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgICAgICBtX2dw
cnMubG9jayh0YWdHUFIpOwogICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKICAgICAg
ICAgaWYgKHR5cGUgJiB+U3BlY0ludDMyT25seSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZO
b3RJbnQzMih0YWdHUFIpKTsKICAgICAgICAgbV9ncHJzLnVubG9jayh0YWdHUFIpOwogICAgICAg
ICBtX2dwcnMucmVsZWFzZSh0YWdHUFIpOwogICAgICAgICBtX2dwcnMucmVsZWFzZShwYXlsb2Fk
R1BSKTsKQEAgLTExOTcsNyArMTE5Nyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIpOwog
ICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3Bl
Y0Jvb2xlYW4pCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFn
R1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCb29sZWFuKHRhZ0dQUiwg
SW52YWxpZEdQUlJlZykpOwogCiAgICAgICAgIG1fZ3Bycy51bmxvY2sodGFnR1BSKTsKICAgICAg
ICAgbV9ncHJzLnJlbGVhc2UodGFnR1BSKTsKQEAgLTIyNzIsMTggKzIyNzIsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBQ
YXlsb2FkT2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJy
YW5jaDMyKAotICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCByZXN1bHRUYWcuZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHRUYWcuZ3ByKCkp
OwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpV
bmRlZmluZWRUYWcpLCByZXN1bHRUYWcuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIG5vdEhvbGUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAg
ICAgICAgICBMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRhZy5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0VGFnLmdwcigpKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFn
LmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTIzMTEsNyArMjMwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJl
c3VsdFRhZ1JlZyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBh
eWxvYWRSZWcpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRhZ1JlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmRW1wdHkocmVzdWx0VGFnUmVnKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKQEAgLTIz
OTMsNyArMjM4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKIAogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3Jh
Z2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9y
YWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50
YWcpKSwgcmVzdWx0VGFnLmdwcigpKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCByZXN1bHRUYWcuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0
eVZhbHVlVGFnKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21I
b2xlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFRhZy5ncHIo
KSkpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwg
QXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1
LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxv
YWQuZ3ByKCksIG5vZGUpOwpAQCAtMjQyMCw4ICsyNDE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKTsK
IAogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0
b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCByZXN1bHRUYWdSZWcpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaG9s
ZSA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgcmVzdWx0VGFnLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaG9sZSA9IG1faml0LmJyYW5jaElmRW1w
dHkocmVzdWx0VGFnLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRSZWcpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAt
MjgwNiw3ICsyODAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgdmFsdWVQYXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLAog
ICAgICAgICAgICAgICAgIHZhbHVlVGFnR1BSKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2
YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZFbXB0
eSh2YWx1ZVRhZ0dQUik7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyks
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCB2
YWx1ZVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOwpAQCAtMjg4NCw3ICsyODc5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOwogCi0gICAgICAgICAg
ICBzZXRVbmRlZmluZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksIHZhbHVlVGFnR1BS
KSk7CisgICAgICAgICAgICBzZXRVbmRlZmluZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZF
bXB0eSh2YWx1ZVRhZ0dQUikpOwogICAgICAgICAKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLCBNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKIApAQCAtMzAxMSw4ICszMDA2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKHZhbHVlUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2gzMigKLSAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlVGFnR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNCb29sZWFuID0gbV9qaXQuYnJhbmNoSWZCb29sZWFuKHZhbHVlVGFnR1BSLCBJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVUYWdHUFIsIHJlc3VsdFRhZ0dQUik7
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAg
ICAgICAgICAgaXNCb29sZWFuLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDVkYjk4NTk1MjNkNTFjMWIz
ZmFhYTI1OTFhNWYxMjQ5NmU3OTk2NDkuLjc4MmQ1NWZkYjdiMjYzMzcyZDE0NzIwNjhiNGI4YWMx
MzVjNThhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcApAQCAtMzY2LDEzICszNjYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5v
ZGUKICAgICB9IGVsc2UgewogICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxsc0Nh
c2UgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olplcm8sIHJlc3VsdEdQUiwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgdHdvQ2Vs
bHNDYXNlID0gbV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUik7CiAgICAgICAgIAotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6
QWJvdmVPckVxdWFsLCBhcmcxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0RG91YmxlID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpOb25aZXJvLCBhcmcxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2hJ
ZkludDMyKGFyZzFHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0RG91YmxlID0g
bV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMUdQUik7CiAgICAgICAgIGxlZnRPSy5saW5rKCZtX2pp
dCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2g2NChK
SVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBhcmcyR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCByaWdodERvdWJsZSA9IG1faml0
LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgYXJnMkdQUiwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9
IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7CiAgICAgICAgIHJp
Z2h0T0subGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8g
SklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcy
R1BSLCB0YWtlbik7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQog
CiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CiAKLSAgICBKSVRDb21w
aWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6
Olplcm8sIHJlc3VsdEdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsK
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJn
MVJlZ3MpOwogICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGFy
ZzFSZWdzLCBJbnZhbGlkR1BSUmVnKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFs
Q2FsbCgpOwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQu
YnJhbmNoSWZOb3RFbXB0eShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHdlIG1lYW50IHRvIG1ha2UgYSBub3JtYWwg
Y2FsbC4gT29wcy4KICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5
dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTk1Myw3ICs5NTMs
NyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVk
Z2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3Bl
Y0ludDMyT25seSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBn
cHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJ
Zk5vdEludDMyKGdwcikpOwogICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3By
LCBEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgICAgIC8vIElmICFzdHJpY3Qgd2UncmUgZG9uZSwg
cmV0dXJuLgogICAgICAgICBpZiAoIXN0cmljdCkgewpAQCAtMjM5MCwxNCArMjM5MCwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgewogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpD
b250aWd1b3VzKTsKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9s
ZSA9IG1faml0LmJyYW5jaFRlc3Q2NCgKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHQuZ3By
KCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAg
ICAgICBub3RIb2xlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgICAg
ICAgTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0Lmdw
cigpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlLCBub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6Oklu
dDMyID8gRGF0YUZvcm1hdEpTSW50MzIgOiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjQyMiw3ICsyNDIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSkpOwogCiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBy
ZXN1bHRSZWcpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0
NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdFJlZykpOworICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFJlZykpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCkBAIC0yNTA1LDcgKzI1MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7
Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVS
ZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0
LmdwcigpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUs
IEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0LmdwcigpKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTMwLDcgKzI1MjksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3Jh
Z2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgIAogICAgICAgICAgICAgbV9qaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpKSwg
cmVzdWx0UmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRSZWcpKTsKKyAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcpKTsKICAgICAKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCgKQEAgLTI2NDAsOCArMjYzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpJbnQz
MikgewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZVJlZyksIGNoaWxkMywgU3BlY0ludDMyT25seSwKLSAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QmVsb3csIHZhbHVlUmVnLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RJbnQzMih2YWx1ZVJl
ZykpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdl
KHRoaXMsIGNoaWxkNCk7CkBAIC0zMTQyLDcgKzMxNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgLy8gbGVuZ3RoIGFuZCB0aGUg
bmV3IGxlbmd0aC4KICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoKGludDY0X3QpMCksIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQpKTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZSA9IG1faml0LmJyYW5j
aFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWVHUFIpOworICAgICAgICAgICAgICAg
IHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZFbXB0eSh2YWx1ZUdQUik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKApAQCAtMzE3MCw3ICszMTY4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgICAgICAKICAgICAg
ICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIs
IHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3Jh
Z2U6OnZlY3Rvck9mZnNldCgpKSwgdmFsdWVHUFIpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHZhbHVlR1BSKSk7
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkodmFsdWVH
UFIpKTsKICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHN0b3JhZ2VMZW5ndGhH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6bGVu
Z3RoT2Zmc2V0KCkpKTsKICAgICAgICAgCkBAIC0zNTMzLDcgKzM1MzEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBpbnB1dCA9IG9wZXJhbmQuZ3ByKCk7Ci0g
ICAgICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIGlucHV0KTsKKyAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0LmJyYW5jaElm
Tm90RW1wdHkoaW5wdXQpOwogICAgICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAg
ICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTM1NTUsNyArMzU1Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVn
IGNlbGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0Vt
cHR5OwogICAgICAgICBpZiAobV9pbnRlcnByZXRlci5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3R5cGUgJiBTcGVjRW1wdHkpCi0gICAgICAgICAgICBpc0VtcHR5ID0gbV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBjZWxsR1BSKTsKKyAgICAgICAgICAgIGlzRW1wdHkg
PSBtX2ppdC5icmFuY2hJZkVtcHR5KGNlbGxHUFIpOwogCiAgICAgICAgIGVtaXRTdHJ1Y3R1cmVD
aGVjayhub2RlLCBjZWxsR1BSLCBJbnZhbGlkR1BSUmVnKTsKIApAQCAtMzkzMiw3ICszOTMwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBpbnB1dEdQUik7CiAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoOChN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGlucHV0R1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoSWZTdHJpbmcoaW5w
dXRHUFIpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoaW5wdXRHUFIsIHJlc3VsdEdQUik7
CiAgICAgICAgICAgICAgICAgbV9qaXQud2FuZ3NJbnQ2NEhhc2gocmVzdWx0R1BSLCB0ZW1wR1BS
KTsKICAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwpAQCAtMzk3Niw3
ICszOTc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgc3RyYWlnaHRIYXNo
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoaW5wdXRHUFIpKTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwotICAgICAgICBzdHJhaWdodEhhc2guYXBwZW5k
KG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhpbnB1dEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihTdHJpbmdUeXBlKSkpOworICAgICAgICBzdHJhaWdodEhhc2guYXBwZW5kKG1faml0LmJy
YW5jaElmTm90U3RyaW5nKGlucHV0R1BSKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoaW5wdXRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBy
ZXN1bHRHUFIpOwogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOwpAQCAtNDA2NywxMCArNDA2NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CiAgICAgICAg
ICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGJ1
Y2tldEdQUiwga2V5R1BSKSk7CiAgICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSkpOwotICAgICAgICAgICAgbG9v
cEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7Ci0gICAgICAgICAg
ICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhrZXlHUFIsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAg
ICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKGJ1Y2tldEdQUikp
OworICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmco
a2V5R1BSKSk7CiAgICAgICAgICAgICAvLyBUaGV5J3JlIGJvdGggc3RyaW5ncy4KICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQwNzgsOCArNDA3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgICAgIGRvbmUuYXBw
ZW5kKG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgYnVja2V0R1BSLCBrZXlH
UFIpKTsgLy8gVGhleSdyZSBkZWZpbml0ZWx5IHRoZSBzYW1lIHZhbHVlLCB3ZSBmb3VuZCB0aGUg
YnVja2V0IHdlIHdlcmUgbG9va2luZyBmb3IhCiAgICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSkpOwotICAgICAg
ICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1
YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7Cisg
ICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhidWNr
ZXRHUFIpKTsKICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDA5MCwxMSArNDA4NSw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIC8vIGZp
cnN0IGlzIGEgY2VsbCBoZXJlLgogICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGtleUdQUikpKTsKICAgICAgICAgICAgIC8vIEJv
dGggYXJlIGNlbGxzIGhlcmUuCi0gICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5i
cmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyhidWNrZXRHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90U3RyaW5nKGJ1Y2tldEdQUikpOwogICAgICAgICAgICAgLy8gVGhlIGZp
cnN0IGlzIGEgc3RyaW5nIGhlcmUuCi0gICAgICAgICAgICBzbG93UGF0aENhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhrZXlHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmU3RyaW5nKGtleUdQUikpOwogICAgICAgICAgICAgLy8gVGhlIGZpcnN0
IGlzIGEgc3RyaW5nLCBidXQgdGhlIHNlY29uZCBpcyBub3QsIHdlIGNvbnRpbnVlIHRvIGxvb3Ag
YXJvdW5kLgogICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNDcwMCw4ICs0NjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29udmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BSUmVnIHJlc3VsdEdQUikKICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCB2YWx1ZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90SW50MzIgPQotICAgICAgICBtX2ppdC5icmFuY2g2NChKSVRDb21w
aWxlcjo6QmVsb3csIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludDMyID0gbV9qaXQuYnJhbmNoSWZOb3RJbnQzMih2
YWx1ZUdQUik7CiAgICAgCiAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIodmFsdWVHUFIsIHJl
c3VsdEdQUik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyMWYz
MGFiZTAwNjBmZWQyYmUzYzk1NzllYWE2NjhkOTY5MzkyMDI3Li42NDExNzZjODhiZDU0YzhjYTFm
OTkxOGNlMTMyOTY4YzRjMTFjZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0yOTUzLDcgKzI5NTMsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgR1BS
UmVnIGlucHV0ID0gIHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZG9uZSA9IGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBp
bnB1dCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuYnJh
bmNoSWZOb3RFbXB0eShpbnB1dCk7CiAgICAgICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsK
ICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGVjZDE4ODVkMWNj
NzcwZDlmZDJmYWEwMGRkNTBmZGU4ZGEyMWE3MTAuLjU2MjUxOTkxYWM5MTE1NGQ2OWM3N2YxNGJh
ZjZlOWZjM2JiN2QwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaApAQCAtNzA3LDYgKzcwNyw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIHJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICNlbmRp
ZgogICAgIH0KKwogICAgIEp1bXAgYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzIHJlZ3MsIFRh
Z1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCiAgICAgewogI2lmIFVTRShK
U1ZBTFVFNjQpCkBAIC03NjAsMzQgKzc2MSw0NSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBw
dWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogICAgIAotICAgIEp1bXAgYnJh
bmNoSWZJbnQzMihKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZl
VGFnUmVnaXN0ZXJzKQorICAgIEp1bXAgYnJhbmNoSWZJbnQzMihHUFJSZWcgZ3ByLCBUYWdSZWdp
c3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgIHsKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwg
cmVncy5ncHIoKSwgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBUcnVz
dGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKG1v
ZGUpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1
YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAjZW5kaWYKICAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaElmSW50MzIoSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJz
TW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgcmV0dXJuIGJyYW5jaElmSW50MzIocmVncy5ncHIoKSwgbW9kZSk7CisjZWxzZQor
ICAgICAgICByZXR1cm4gYnJhbmNoSWZJbnQzMihyZWdzLnRhZ0dQUigpLCBtb2RlKTsKKyNlbmRp
ZgorICAgIH0KKwogICAgIEp1bXAgYnJhbmNoSWZOb3RJbnQzMihHUFJSZWcgZ3ByLCBUYWdSZWdp
c3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KEJlbG93LCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CiAgICAgICAgIHJldHVybiBicmFuY2g2NChCZWxvdywgZ3ByLCBUcnVzdGVkSW1tNjQoVGFn
VHlwZU51bWJlcikpOwotICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtb2RlKTsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOwogI2VuZGlmCisgICAgfQogCiAgICAgSnVtcCBicmFuY2hJZk5vdElu
dDMyKEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdp
c3RlcnMpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHJldHVybiBicmFuY2hJ
Zk5vdEludDMyKHJlZ3MuZ3ByKCksIG1vZGUpOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFN
KG1vZGUpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ3MudGFnR1BSKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3RJbnQzMihyZWdzLnRhZ0dQUigpLCBtb2RlKTsKICNlbmRpZgogICAgIH0KIApAQCAtNzk5
LDE3ICs4MTEsMTggQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaElmTnVtYmVyKHJlZ3MuZ3ByKCksIG1vZGUpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOworICAgICAgICBBU1NFUlQodGVtcEdQ
UiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdz
LnRhZ0dQUigpLCB0ZW1wR1BSKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEJlbG93LCB0ZW1w
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnICsgMSkpOwogI2VuZGlmCiAgICAg
fQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKdW1wIGJyYW5jaElmTnVtYmVyKEdQUlJlZyBy
ZWcsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgSnVtcCBi
cmFuY2hJZk51bWJlcihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFn
UmVnaXN0ZXJzKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykK
LSAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblpl
cm8sIHJlZywgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJldHVy
biBicmFuY2hUZXN0NjQoTm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGdwciwgVHJ1c3RlZElt
bTY0KFRhZ1R5cGVOdW1iZXIpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTgyNywxMSArODQw
LDExIEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKdW1wIGJyYW5jaElmTm90TnVtYmVyKEdQ
UlJlZyByZWcsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAg
SnVtcCBicmFuY2hJZk5vdE51bWJlcihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUg
PSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1Jl
Z2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVnLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KFplcm8sIHJlZywgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0NjQoWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIGdwciwgVHJ1c3RlZEltbTY0
KFRhZ1R5cGVOdW1iZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtODQ4LDI4ICs4NjEsNTAgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAK
ICAgICAvLyBOb3RlIHRoYXQgdGhlIHRlbXBHUFIgaXMgbm90IHVzZWQgaW4gMzItYml0IG1vZGUu
Ci0gICAgSnVtcCBicmFuY2hJZkJvb2xlYW4oSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBH
UFIpCisgICAgSnVtcCBicmFuY2hJZkJvb2xlYW4oR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIp
CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVt
cEdQUik7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAg
ICBtb3ZlKGdwciwgdGVtcEdQUik7CiAgICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDY0KFplcm8sIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
Pih+MSkpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wR1BSKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKEVxdWFsLCByZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Qm9vbGVhblRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKTsKKyNlbmRpZgorICAgIH0KKworICAgIC8v
IE5vdGUgdGhhdCB0aGUgdGVtcEdQUiBpcyBub3QgdXNlZCBpbiAzMi1iaXQgbW9kZS4KKyAgICBK
dW1wIGJyYW5jaElmQm9vbGVhbihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAg
ICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmQm9vbGVhbihy
ZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hJZkJvb2xl
YW4ocmVncy50YWdHUFIoKSwgdGVtcEdQUik7CiAjZW5kaWYKICAgICB9CiAgICAgCiAgICAgLy8g
Tm90ZSB0aGF0IHRoZSB0ZW1wR1BSIGlzIG5vdCB1c2VkIGluIDMyLWJpdCBtb2RlLgotICAgIEp1
bXAgYnJhbmNoSWZOb3RCb29sZWFuKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQor
ICAgIEp1bXAgYnJhbmNoSWZOb3RCb29sZWFuKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQog
ICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBtb3ZlKHJlZ3MuZ3ByKCksIHRlbXBH
UFIpOworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAg
bW92ZShncHIsIHRlbXBHUFIpOwogICAgICAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCB0ZW1wR1BSKTsKICAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3Q2NChOb25aZXJvLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4ofjEpKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odGVtcEdQUik7Ci0gICAgICAg
IHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkJvb2xlYW5UYWcpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCBn
cHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSk7CisjZW5kaWYKKyAgICB9CisK
KyAgICAvLyBOb3RlIHRoYXQgdGhlIHRlbXBHUFIgaXMgbm90IHVzZWQgaW4gMzItYml0IG1vZGUu
CisgICAgSnVtcCBicmFuY2hJZk5vdEJvb2xlYW4oSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRl
bXBHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hJ
Zk5vdEJvb2xlYW4ocmVncy5ncHIoKSwgdGVtcEdQUik7CisjZWxzZQorICAgICAgICByZXR1cm4g
YnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlmCiAgICAg
fQogICAgIApAQCAtOTA0LDEyICs5MzksNDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVi
bGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0K
ICAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJy
YW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICAKKyAgICBKdW1w
IGJyYW5jaElmRW1wdHkoR1BSUmVnIGdwcikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIpOworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVl
VGFnKSk7CisjZW5kaWYKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaElmRW1wdHkoSlNWYWx1ZVJl
Z3MgcmVncykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3Q2NChaZXJvLCByZWdzLmdwcigpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmRW1wdHko
cmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoSWZFbXB0eShyZWdzLnRh
Z0dQUigpKTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZOb3RFbXB0eShHUFJS
ZWcgZ3ByKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDY0KE5vblplcm8sIGdwcik7CiAjZWxzZQotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1
YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7
CisgICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworI2VuZGlmCisgICAgfQorCisgICAgSnVtcCBicmFuY2hJ
Zk5vdEVtcHR5KEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIHJldHVybiBicmFuY2hJZk5vdEVtcHR5KHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaElmTm90RW1wdHkocmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXNwZWN0IE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQuCisgICAgSnVtcCBicmFuY2hJZlVuZGVmaW5lZChHUFJSZWcgZ3By
KQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1
YWwsIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwor
I2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKICNlbmRpZgogICAgIH0KIApAQCAtOTE3LDE4ICs5ODks
NjUgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICBKdW1wIGJyYW5jaElmVW5kZWZpbmVkKEpTVmFsdWVSZWdzIHJlZ3MpCiAgICAgewogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgcmVncy5ncHIoKSwg
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoSWZVbmRlZmluZWQocmVncy5ncHIoKSk7CiAjZWxzZQotICAgICAgICByZXR1
cm4gYnJhbmNoMzIoRXF1YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpV
bmRlZmluZWRUYWcpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmVW5kZWZpbmVkKHJlZ3MudGFn
R1BSKCkpOworI2VuZGlmCisgICAgfQorCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3QgcmVzcGVjdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLgorICAgIEp1bXAgYnJhbmNo
SWZOb3RVbmRlZmluZWQoR1BSUmVnIGdwcikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2gz
MihOb3RFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBy
ZXNwZWN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuCisgICAgSnVtcCBicmFuY2hJZk5vdFVuZGVm
aW5lZChKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICByZXR1cm4gYnJhbmNoSWZOb3RVbmRlZmluZWQocmVncy5ncHIoKSk7CisjZWxzZQorICAgICAg
ICByZXR1cm4gYnJhbmNoSWZOb3RVbmRlZmluZWQocmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaElmTnVsbChHUFJSZWcgZ3ByKQorICAgIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIGdwciwgVHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBi
cmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOwogI2Vu
ZGlmCiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hJZk51bGwoSlNWYWx1ZVJlZ3MgcmVncykKICAg
ICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCBy
ZWdzLmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOworICAg
ICAgICByZXR1cm4gYnJhbmNoSWZOdWxsKHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIGJyYW5jaElmTnVsbChyZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1
bXAgYnJhbmNoSWZOb3ROdWxsKEdQUlJlZyBncHIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElmTm90TnVsbChKU1ZhbHVlUmVncyByZWdzKQorICAg
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3ROdWxsKHJl
Z3MuZ3ByKCkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCByZWdzLnRh
Z0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOworICAgICAgICByZXR1cm4g
YnJhbmNoSWZOb3ROdWxsKHJlZ3MudGFnR1BSKCkpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAppbmRleCBhZWI2YWQ5NmNmNThjOWIyZWI0YjRhODYyZjJkNGU2ZWJlNGE5
YjVmLi5jYjZkNDcxNzJjNjA1ODM3YzVjYzY2MGZmNjcxYjgzNWJmYTg5MTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKQEAgLTMyMyw4ICszMjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgZW1pdExvYWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQg
dmFsdWUpOwogICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQ
UmVnaXN0ZXJJRCB2YWx1ZSk7Ci0gICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxPYmplY3QoUmVn
aXN0ZXJJRCBjZWxsUmVnKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChS
ZWdpc3RlcklEIGNlbGxSZWcpOwogCiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9kZSB7IFVu
Y29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3VsZEZpbHRlclZh
bHVlLCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFsdWUgcmVnaXN0
ZXIgaW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCByZWdpc3RlcnMK
QEAgLTQ0MSwxMyArNDM5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHBheWxvYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgSnVt
cCBlbWl0SnVtcElmSlNDZWxsKFJlZ2lzdGVySUQpOwogICAgICAgICBKdW1wIGVtaXRKdW1wSWZC
b3RoSlNDZWxscyhSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAg
dm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklELCBpbnQgVlJlZyk7Ci0gICAgICAg
IEp1bXAgZW1pdEp1bXBJZkludChSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElm
Tm90SW50KFJlZ2lzdGVySUQpOwogICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQoUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgUGF0Y2hhYmxl
SnVtcCBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lk
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDM3NjFjOWJjYjY3NmY2YmE1ODViOTg3
YTBkZjAzNTNjOGU2NDQ1YjUuLjJiM2ZlOTBjY2VjZmE5YTM2MDA4ZDAwNGM0OWQwOGM2ODMyODg3
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAt
MjU0LDcgKzI1NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCBp
bnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0CiAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRDaGFyKG9wMSkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihv
cDIsIHJlZ1QwKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdU
MCkpOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDApKTsKICAgICAg
ICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgICAgIGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKHJl
Z1QwLCByZWdUMCwgZmFpbHVyZXMpOwogICAgICAgICBhZGRTbG93Q2FzZShmYWlsdXJlcyk7CkBA
IC0yNjMsNyArMjYzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQs
IGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXQKICAgICB9CiAgICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIob3AxLCByZWdUMCk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RKU0Nl
bGwocmVnVDApKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKSk7
CiAgICAgICAgIEp1bXBMaXN0IGZhaWx1cmVzOwogICAgICAgICBlbWl0TG9hZENoYXJhY3RlclN0
cmluZyhyZWdUMCwgcmVnVDAsIGZhaWx1cmVzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZmFpbHVy
ZXMpOwpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dyhpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpCiAgICAgICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICAgICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQ
b2ludCgpKSB7Ci0gICAgICAgICAgICBKdW1wIGZhaWwxID0gZW1pdEp1bXBJZk5vdE51bWJlcihy
ZWdUMCk7CisgICAgICAgICAgICBKdW1wIGZhaWwxID0gYnJhbmNoSWZOb3ROdW1iZXIocmVnVDAp
OwogICAgICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAg
ICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAKQEAgLTM4MCw3ICszODAs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwg
dW5zaWduZWQgdGFyZ2V0LCBEb3VibGVDb25kaQogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwogCiAgICAgICAgIGlmIChzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkgewotICAgICAgICAg
ICAgSnVtcCBmYWlsMSA9IGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDEpOworICAgICAgICAgICAg
SnVtcCBmYWlsMSA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QxKTsKICAgICAgICAgICAgIGFkZDY0
KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICAgICAgbW92ZTY0VG9Eb3Vi
bGUocmVnVDEsIGZwUmVnVDEpOwogCkBAIC00MDUsOSArNDA1LDkgQEAgdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93KGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgRG91
YmxlQ29uZGkKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIExIUyBpcyBub3QgSW50LgogCiAg
ICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7Ci0gICAgICAgIEp1bXAgZmFpbDEgPSBl
bWl0SnVtcElmTm90TnVtYmVyKHJlZ1QwKTsKLSAgICAgICAgSnVtcCBmYWlsMiA9IGVtaXRKdW1w
SWZOb3ROdW1iZXIocmVnVDEpOwotICAgICAgICBKdW1wIGZhaWwzID0gZW1pdEp1bXBJZkludChy
ZWdUMSk7CisgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMCk7Cisg
ICAgICAgIEp1bXAgZmFpbDIgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMSk7CisgICAgICAgIEp1
bXAgZmFpbDMgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51
bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgcmVnVDEpOwogICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKaW5kZXgg
ODI0NTcwMmZjNGUzY2RkNjYyNTFhMTc0NzkwM2IzYjEzYmIyZDc3Mi4uZDNlYmRiNjdjNTIxY2I2
OTlmMzdlMDk4OTIwN2E0ZTIxZTc5Y2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIEpJVDo6
ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCBvcGNvZGUsIGludCBvcDEsIGludCBvcDIsIHVu
c2lnbmVkIHRhcmdldAogICAgIC8vIENoYXJhY3RlciBsZXNzLgogICAgIGlmIChpc09wZXJhbmRD
b25zdGFudENoYXIob3AxKSkgewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QxLCByZWdUMCk7
Ci0gICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90
Q2VsbChyZWdUMSkpOwogICAgICAgICBKdW1wTGlzdCBmYWlsdXJlczsKICAgICAgICAgZW1pdExv
YWRDaGFyYWN0ZXJTdHJpbmcocmVnVDAsIHJlZ1QwLCBmYWlsdXJlcyk7CiAgICAgICAgIGFkZFNs
b3dDYXNlKGZhaWx1cmVzKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFy
ZUFuZEp1bXAoT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJn
ZXQKICAgICB9CiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDIpKSB7CiAgICAgICAg
IGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKSk7CiAgICAgICAgIEp1bXBM
aXN0IGZhaWx1cmVzOwogICAgICAgICBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhyZWdUMCwgcmVn
VDAsIGZhaWx1cmVzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZmFpbHVyZXMpOwpAQCAtNjcsMTYg
KzY3LDE2IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlEIG9wY29kZSwg
aW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0CiAgICAgfSAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdU
Mik7Ci0gICAgICAgIG5vdEludDMyT3AyLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgbm90SW50MzJPcDIu
YXBwZW5kKGJyYW5jaElmTm90SW50MzIocmVnVDMpKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gz
Mihjb21tdXRlKGNvbmRpdGlvbiksIHJlZ1QyLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3Ax
KS5hc0ludDMyKCkpKSwgdGFyZ2V0KTsKICAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50
SW50KG9wMikpIHsKICAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwotICAgICAg
ICBub3RJbnQzMk9wMS5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgIG5vdEludDMyT3AxLmFwcGVuZChicmFu
Y2hJZk5vdEludDMyKHJlZ1QxKSk7CiAgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9u
LCByZWdUMCwgSW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpKSksIHRhcmdl
dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW1pdExvYWQyKG9wMSwgcmVnVDEsIHJlZ1QwLCBv
cDIsIHJlZ1QzLCByZWdUMik7Ci0gICAgICAgIG5vdEludDMyT3AxLmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLSAgICAg
ICAgbm90SW50MzJPcDIuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOworICAgICAgICBub3RJbnQzMk9wMS5hcHBlbmQoYnJh
bmNoSWZOb3RJbnQzMihyZWdUMSkpOworICAgICAgICBub3RJbnQzMk9wMi5hcHBlbmQoYnJhbmNo
SWZOb3RJbnQzMihyZWdUMykpOwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwg
cmVnVDAsIHJlZ1QyKSwgdGFyZ2V0KTsKICAgICB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF91bnNpZ25lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIAogICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKICAgICAKLSAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEludDMyKHJlZ1QxKSk7CiAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoMzIoTGVzc1RoYW4sIHJlZ1QwLCBUcnVzdGVkSW1tMzIoMCkpKTsK
ICAgICBlbWl0U3RvcmVJbnQzMihyZXN1bHQsIHJlZ1QwLCByZXN1bHQgPT0gb3AxKTsKIH0KQEAg
LTE1MCw3ICsxNTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRMb2FkKHNyY0RzdCwgcmVnVDEsIHJlZ1QwKTsKIAot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkludDMyVGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SW50MzIocmVn
VDEpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVyZmxvdywgVHJ1c3RlZEltbTMy
KDEpLCByZWdUMCkpOwogICAgIGVtaXRTdG9yZUludDMyKHNyY0RzdCwgcmVnVDAsIHRydWUpOwog
fQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQoc3JjRHN0LCByZWdUMSwgcmVnVDAp
OwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RJbnQz
MihyZWdUMSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN1YjMyKE92ZXJmbG93LCBUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKSk7CiAgICAgZW1pdFN0b3JlSW50MzIoc3JjRHN0LCByZWdUMCwgdHJ1
ZSk7CiB9CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChP
cGNvZGVJRCBvcGNvZGVJRCwgaW50IGRzdCwgaW50IG9wMSwgaW50IG9wMiwgT3BlcmEKICAgICAg
ICAgSnVtcCBkb3VibGVPcDIgPSBicmFuY2gzMihCZWxvdywgcmVnVDMsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpMb3dlc3RUYWcpKTsKIAogICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmlu
aXRlbHlJc051bWJlcigpKQotICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgICAg
ICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEludDMyKHJlZ1QzKSk7CiAKICAgICAgICAgY29udmVy
dEludDMyVG9Eb3VibGUocmVnVDIsIGZwUmVnVDApOwogICAgICAgICBKdW1wIGRvVGhlTWF0aCA9
IGp1bXAoKTsKQEAgLTMxMyw4ICszMTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBBU1NFUlQocmVnVDMgPT0gWDg2UmVnaXN0
ZXJzOjplYngpOwogCiAgICAgZW1pdExvYWQyKG9wMSwgcmVnVDAsIHJlZ1QzLCBvcDIsIHJlZ1Qx
LCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RJbnQzMihyZWdUMSkpOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmTm90SW50MzIocmVnVDApKTsKIAogICAgIG1vdmUocmVnVDMsIHJlZ1QwKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoWmVybywgcmVnVDIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCmluZGV4IDFkYWE3YmMxMzIyZjUzMjJhOWZkMTc5OTNhNzkzYTBjZDQy
ZmFiMmUuLjUwYWI0OGIxNWFmNmQ1NmNkMWVkMGMzZGYyNTk2ZDI1MjhjMjE2MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgSklU
Ojpjb21waWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25DYWxsRXZhbCwgcmVnVDEpOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJh
bmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogCiAgICAgc2Ft
cGxlQ29kZUJsb2NrKG1fY29kZUJsb2NrKTsKICAgICAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCB1bnNpZ25lZCBjYQogCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYm
IHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKDApLCByZWdUMCk7Ci0gICAgICAgICAgICBKdW1wIGRvbmUgPSBlbWl0SnVtcElmTm90SlND
ZWxsKHJlZ1QwKTsKKyAgICAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbChyZWdU
MCk7CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDApOwogICAgICAgICAgICAgc3RvcmUzMihyZWdUMCwgaW5zdHJ1Y3Rp
b25bT1BDT0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZM
YXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGZkYzQyMTc1Nzli
MTA5MTczMzQyMWFlZTYyNDBmY2ZjNTVhZWNlYzIuLmQxZWZiZTk3ZDU1N2IzMDExYjY0ZWI4NWI3
OTJhMGVlMDg2ZTA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbEV2
YWwsIHJlZ1QxKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoSWZFbXB0eShyZWdUMSkpOwogCiAgICAgc2FtcGxlQ29kZUJsb2NrKG1fY29kZUJsb2NrKTsK
ICAgICAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJ
RCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgICAg
ICAKICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7CiAgICAgICAgICAgICBlbWl0TG9hZChyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCwgcmVnVDEpOwotICAgICAgICAg
ICAgSnVtcCBkb25lID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpOworICAgICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxs
KHJlZ1QwKTsKICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgICAgICAgICAgc3RvcmVQdHIocmVnVDEsIGlu
c3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5UHJvZmlsZS0+YWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgICAgIGRvbmUubGluayh0aGlz
KTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIGlmIChv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFy
Z3MpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKSk7CiAKICAgICBEYXRh
TGFiZWxQdHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNl
ID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVu
Y3Rpb25DaGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCmluZGV4IDE3MDkwMDcxZTQ4NmJjY2E5MjRkNDNkZTI3MDJhMTY5OTZi
MjM5NDcuLjlhNGI3MzdjODRhYWRlNmRhMzdjMzcxZDg1NjdlZWM5ZWY1MDYwNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yNTIsMTYgKzI1Miw2IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90KEp1bXAganVtcCwgaW50IHJlbGF0
aXZlT2Zmc2V0KQogICAgIGp1bXAubGlua1RvKG1fbGFiZWxzW21fYnl0ZWNvZGVPZmZzZXQgKyBy
ZWxhdGl2ZU9mZnNldF0sIHRoaXMpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6
OmVtaXRKdW1wSWZDZWxsT2JqZWN0KFJlZ2lzdGVySUQgY2VsbFJlZykKLXsKLSAgICByZXR1cm4g
YnJhbmNoOChBYm92ZU9yRXF1YWwsIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci19Ci0KLUFMV0FZU19JTkxJ
TkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxs
UmVnKQotewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKGNlbGxSZWcsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOwotfQot
CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2V0
U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKIHsKQEAgLTU1Niw3ICs1NDYsNyBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVy
SW5kZXgsIFJlZ2lzdGVySQogICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdp
c3RlckluZGV4KHZpcnR1YWxSZWdpc3RlckluZGV4KSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNl
KGp1bXAoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KE5vdEVxdWFsLCB0YWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAg
ICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHRhZykpOwogICAgIH0KIH0KIApAQCAt
NjQ4LDI2ICs2MzgsMjEgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3Rl
cihpbnQgZHN0KQogICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGRzdCAqIHNpemVvZihSZWdp
c3RlcikpKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmSlND
ZWxsKFJlZ2lzdGVySUQgcmVnKQotewotICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVn
LCB0YWdNYXNrUmVnaXN0ZXIpOwotfQotCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVt
aXRKdW1wSWZCb3RoSlNDZWxscyhSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVn
aXN0ZXJJRCBzY3JhdGNoKQogewogICAgIG1vdmUocmVnMSwgc2NyYXRjaCk7CiAgICAgb3I2NChy
ZWcyLCBzY3JhdGNoKTsKLSAgICByZXR1cm4gZW1pdEp1bXBJZkpTQ2VsbChzY3JhdGNoKTsKKyAg
ICByZXR1cm4gYnJhbmNoSWZDZWxsKHNjcmF0Y2gpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0SnVtcFNsb3dDYXNlSWZKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgYWRk
U2xvd0Nhc2UoZW1pdEp1bXBJZkpTQ2VsbChyZWcpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJ
ZkNlbGwocmVnKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZykKIHsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVt
cElmTm90SlNDZWxsKHJlZykpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWcp
KTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKFJlZ2lzdGVySUQgcmVnLCBpbnQgdlJlZykKQEAgLTY5NCwxNiArNjc5LDYgQEAgaW5saW5l
IHZvaWQgSklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQg
dmFsdWUpCiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGFkZHJlc3NGb3IoaW5kZXgpLCB2
YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkludChS
ZWdpc3RlcklEIHJlZykKLXsKLSAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWcs
IHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJ
VDo6ZW1pdEp1bXBJZk5vdEludChSZWdpc3RlcklEIHJlZykKLXsKLSAgICByZXR1cm4gYnJhbmNo
NjQoQmVsb3csIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLX0KLQogQUxXQVlTX0lOTElO
RSBKSVQ6OlBhdGNoYWJsZUp1bXAgSklUOjplbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KFJlZ2lz
dGVySUQgcmVnKQogewogICAgIHJldHVybiBwYXRjaGFibGVCcmFuY2g2NChCZWxvdywgcmVnLCB0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwpAQCAtNzEzLDEyICs2ODgsMTIgQEAgQUxXQVlTX0lOTElO
RSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0
ZXJJRCByZWcyLAogewogICAgIG1vdmUocmVnMSwgc2NyYXRjaCk7CiAgICAgYW5kNjQocmVnMiwg
c2NyYXRjaCk7Ci0gICAgcmV0dXJuIGVtaXRKdW1wSWZOb3RJbnQoc2NyYXRjaCk7CisgICAgcmV0
dXJuIGJyYW5jaElmTm90SW50MzIoc2NyYXRjaCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklEIHJlZykKIHsKLSAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmTm90SW50KHJlZykpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Tm90SW50MzIocmVnKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEludChSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKQpAQCAtNzI4LDcgKzcwMyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnCiAK
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcihSZWdp
c3RlcklEIHJlZykKIHsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90TnVtYmVyKHJlZykp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90TnVtYmVyKHJlZykpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHZvaWQgSklUOjplbWl0VGFnQm9vbChSZWdpc3RlcklEIHJlZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDMyOTZlMGI2NzVjY2YzYmU5YzczYzE4
ZjU0MzA5MTFhZjUwMmVkMWYuLmY1YjFjZTNkZTBiZjk3YzAxMDUwYTYxMDI3NWFhMWE3OGFmMDJk
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHBy
b3RvKTsKIAogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdAotICAgIGFk
ZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZOb3RPYmplY3QocmVnVDEpKTsKICAgICAKICAgICAvLyBPcHRpbWlzdGljYWxs
eSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAgICAgLy8gSW5pdGlh
bGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3RpbGwgY29udGFpbnMg
dmFsdWUuCkBAIC0xNjAsMTggKzE2MCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgTGFiZWwgbG9v
cCh0aGlzKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MocmVnVDIs
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoUHJveHlPYmplY3RU
eXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmVHlwZShyZWdUMiwgUHJveHlPYmplY3RU
eXBlKSk7CiAKICAgICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdCBpbiByZWdU
Mi4gIElmIHRoaXMgaXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAgICAgLy8gT3RoZXJ3aXNlLCBj
aGVjayBpZiB3ZSd2ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBvZiB0aGUg
bG9vcCwgaWYgbm90IGdvIGFnYWluLgogICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgpLCByZWdU
MiwgcmVnVDQsIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpw
cm90b3R5cGVPZmZzZXQoKSksIHJlZ1Q0KTsKLSAgICBhdXRvIGhhc01vbm9Qcm90byA9IGJyYW5j
aFRlc3Q2NChOb25aZXJvLCByZWdUNCk7CisgICAgYXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2hJ
Zk5vdEVtcHR5KHJlZ1Q0KTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRp
dmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgcmVnVDQpOwogICAgIGhhc01vbm9Qcm90
by5saW5rKHRoaXMpOwogICAgIG1vdmUocmVnVDQsIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFu
Y2UgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7Ci0gICAgZW1pdEp1bXBJZkpTQ2Vs
bChyZWdUMikubGlua1RvKGxvb3AsIHRoaXMpOworICAgIGJyYW5jaElmQ2VsbChyZWdUMikubGlu
a1RvKGxvb3AsIHRoaXMpOwogCiAgICAgLy8gV2UgZ2V0IGhlcmUgZWl0aGVyIGJ5IGRyb3BwaW5n
IG91dCBvZiB0aGUgbG9vcCwgb3IgaWYgdmFsdWUgd2FzIG5vdCBhbiBPYmplY3QuICBSZXN1bHQg
aXMgZmFsc2UuCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihmYWxzZSkpKSwgcmVnVDApOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCB2
YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgIEp1bXAgaXNDZWxsID0gZW1pdEp1
bXBJZkpTQ2VsbChyZWdUMCk7CisgICAgSnVtcCBpc0NlbGwgPSBicmFuY2hJZkNlbGwocmVnVDAp
OwogCiAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZp
bmVkKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKQEAgLTI1Nyw3ICsyNTcsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGludCB0eXBlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKLSAgICBK
dW1wIGlzTm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIEp1bXAgaXNO
b3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIGNvbXBhcmU4KEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KHR5cGUpLCByZWdUMCk7CiAgICAgZW1pdFRhZ0Jvb2wocmVnVDApOwpAQCAtMjc2LDcgKzI3Niw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Ci0gICAgSnVtcCBp
c05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKKyAgICBKdW1wIGlzTm90Q2Vs
bCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAKICAgICBjb21wYXJlOChBYm92ZU9yRXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoT2JqZWN0VHlwZSksIHJlZ1QwKTsKICAgICBlbWl0VGFnQm9vbChyZWdUMCk7CkBAIC0zMTEs
OCArMzExLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVn
VDApOwogICAgIAotICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsK
LSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE9iamVjdChyZWdUMCkpOworICAgIEp1bXAg
aXNJbW0gPSBicmFuY2hJZk5vdENlbGwocmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
T2JqZWN0KHJlZ1QwKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0g
c3JjKQpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
c3JjLCByZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwo
cmVnVDApOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwog
CiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgogICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyYywgcmVnVDApOwotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsK
IAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KICAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4
KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKQEAgLTQ4MywxNSAr
NDgzLDE1IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5CiAgICAgLy8gSnVtcCBzbG93IGlmIGJv
dGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7
CiAgICAgb3I2NChyZWdUMSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZKU0Nl
bGwocmVnVDIpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKICAgICAK
ICAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0
J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdAogICAgIC8vIGlmIGl0
J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBlbWl0SnVtcElmSW50KHJlZ1QwKTsKLSAg
ICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTnVtYmVyKHJlZ1QwKSk7CisgICAgSnVtcCBsZWZ0T0sg
PSBicmFuY2hJZkludDMyKHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihy
ZWdUMCkpOwogICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGVtaXRK
dW1wSWZJbnQocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOdW1iZXIocmVnVDEp
KTsKKyAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwogICAgIHJpZ2h0T0subGluayh0aGlzKTsKIAog
ICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCkBAIC01MjQs
MTUgKzUyNCwxNSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdAogICAgIC8vIEp1bXAgc2xvdyBp
ZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVn
VDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElm
SlNDZWxsKHJlZ1QyKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CiAK
ICAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0
J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdAogICAgIC8vIGlmIGl0
J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBlbWl0SnVtcElmSW50KHJlZ1QwKTsKLSAg
ICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTnVtYmVyKHJlZ1QwKSk7CisgICAgSnVtcCBsZWZ0T0sg
PSBicmFuY2hJZkludDMyKHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihy
ZWdUMCkpOwogICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGVtaXRK
dW1wSWZJbnQocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOdW1iZXIocmVnVDEp
KTsKKyAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwogICAgIHJpZ2h0T0subGluayh0aGlzKTsKIAog
ICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCkBAIC01NzUs
NyArNTc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwog
ICAgIAotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDApKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk5vdE51bWJlcihyZWdUMCkpOwogCiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZSgpOwogICAgIGlmIChzcmNWUmVnICE9IGRzdFZSZWcpCkBAIC01ODcsOCArNTg3
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCi0gICAg
YWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdENlbGwocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFN0cmluZyhy
ZWdUMCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKIH0KQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
b19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgc3JjVlJl
ZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90
SlNDZWxsKHJlZ1QwKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChCZWxvdywgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMCkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaElmTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKCk7CiAgICAgaWYgKHNyY1ZSZWcgIT0gZHN0VlJlZykKQEAgLTcyOCw3ICs3Mjgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgaW50IHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7Ci0gICAgSnVtcCBpc0lt
bWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIEp1bXAgaXNJbW1lZGlh
dGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKQEAgLTc2MCw3ICs3NjAsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGludCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwotICAgIEp1bXAgaXNJbW1l
ZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRl
ID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CkBAIC04MTQsNyArODE0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKIAotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90VHlwZShyZWdUMSwgRmluYWxPYmplY3RUeXBlKSk7CiAgICAgbG9h
ZFB0cihjYWNoZWRTdHJ1Y3R1cmUsIHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0
UHRyKFplcm8sIHJlZ1QyKSk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9IHJlZ1QzOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjYWxsZWUsIGNhbGxlZVJlZyk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RF
cXVhbCwgQWRkcmVzcyhjYWxsZWVSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoSlNGdW5jdGlvblR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZO
b3RGdW5jdGlvbihjYWxsZWVSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwogICAgIHhvclB0cihUcnVz
dGVkSW1tUHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgcmFyZURhdGFSZWcpOwpAQCAtODYy
LDcgKzg2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2hUZXN0NjQoWmVybywgcmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5
KHJlZ1QwKSk7CiB9CiAKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBKSVQ6OmVtaXROZXdG
dW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kLCByZWdUMCk7Ci0gICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2g2NChOb3RFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyAg
ICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaElmTm90VW5kZWZpbmVkKHJlZ1QwKTsKICAgICBz
dG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRy
ZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAjZWxzZQog
ICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MCk7CkBAIC0xMzMzLDI1ICsxMzMzLDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlw
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSnVtcExpc3QganVtcFRv
RW5kOwogCi0gICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hUZXN0NjQoWmVybywgcmVnVDApKTsK
KyAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIAogICAgIC8vIENv
bXBpbGUgaW4gYSBwcmVkaWN0aXZlIHR5cGUgY2hlY2ssIGlmIHBvc3NpYmxlLCB0byBzZWUgaWYg
d2UgY2FuIHNraXAgd3JpdGluZyB0byB0aGUgbG9nLgogICAgIC8vIFRoZXNlIHR5cGVjaGVja3Mg
YXJlIGlubGluZWQgdG8gbWF0Y2ggdGhvc2Ugb2YgdGhlIDY0LWJpdCBKU1ZhbHVlIHR5cGUgY2hl
Y2tzLgogICAgIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVV
bmRlZmluZWQpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIHJlZ1Qw
LCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSkpOworICAgICAg
ICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmVW5kZWZpbmVkKHJlZ1QwKSk7CiAgICAgZWxzZSBp
ZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVsbCkKLSAgICAg
ICAganVtcFRvRW5kLmFwcGVuZChicmFuY2g2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChK
U1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSkpOwotICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2Nh
dGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZUJvb2xlYW4pIHsKLSAgICAgICAgbW92ZShyZWdU
MCwgcmVnVDEpOwotICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjEpLCByZWdUMSk7Ci0gICAg
ICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tNjQo
VmFsdWVGYWxzZSkpKTsKLSAgICB9IGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0
U2VlblR5cGUgPT0gVHlwZUFueUludCkKLSAgICAgICAganVtcFRvRW5kLmFwcGVuZChlbWl0SnVt
cElmSW50KHJlZ1QwKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZOdWxsKHJl
Z1QwKSk7CisgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9
PSBUeXBlQm9vbGVhbikKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZkJvb2xlYW4o
cmVnVDAsIHJlZ1QxKSk7CisgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RT
ZWVuVHlwZSA9PSBUeXBlQW55SW50KQorICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElm
SW50MzIocmVnVDApKTsKICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNl
ZW5UeXBlID09IFR5cGVOdW1iZXIpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoZW1pdEp1bXBJ
Zk51bWJlcihyZWdUMCkpOworICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmTnVtYmVy
KHJlZ1QwKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlw
ZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgIEp1bXAgaXNOb3RDZWxsID0gZW1pdEp1bXBJZk5v
dEpTQ2VsbChyZWdUMCk7Ci0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoOChFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihTdHJpbmdUeXBlKSkpOworICAgICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2Vs
bChyZWdUMCk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZTdHJpbmcocmVnVDAp
KTsKICAgICAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CiAgICAgfQogCkBAIC0xMzY1LDcgKzEz
NjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJv
ZmlsZXJMb2c6OkxvZ0VudHJ5Ojp2YWx1ZU9mZnNldCgpKSk7CiAKICAgICAvLyBTdG9yZSB0aGUg
c3RydWN0dXJlSUQgb2YgdGhlIGNlbGwgaWYgVDAgaXMgYSBjZWxsLCBvdGhlcndpc2UsIHN0b3Jl
IDAgb24gdGhlIGxvZyBlbnRyeS4KLSAgICBKdW1wIG5vdENlbGwgPSBlbWl0SnVtcElmTm90SlND
ZWxsKHJlZ1QwKTsKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwog
ICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBy
ZWdUMCk7CiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgVHlwZVByb2ZpbGVyTG9n
OjpMb2dFbnRyeTo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgIEp1bXAgc2tpcElzQ2VsbCA9
IGp1bXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAppbmRleCA0YzJlNDQ1NThjNzc4Yjk3Njg1ZjE3M2M3ZDMyNmY1ZTkzN2Y1ZDhmLi43NDhmZGJh
NDhmODU0N2Y0OTM1NzBjYzY1MDFjOTEwZWViMGNlZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgLy8gQ2hl
Y2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJ
ZkNlbGxOb3RPYmplY3QocmVnVDEpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVj
dChyZWdUMSkpOwogCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUs
IGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFp
bnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTYwLDE0ICsxNjAs
MTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAgICAgTGFiZWwg
bG9vcCh0aGlzKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MocmVn
VDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoUHJveHlPYmpl
Y3RUeXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmVHlwZShyZWdUMiwgUHJveHlPYmpl
Y3RUeXBlKSk7CiAKICAgICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIGNlbGwgaW4gcmVn
VDIuICBJZiB0aGlzIGlzIGVxdWFsIHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVyd2lzZSwg
Y2hlY2sgaWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQgb2YgdGhl
IGxvb3AsIGlmIG5vdCBnbyBhZ2Fpbi4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Q0KTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdU
NCwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFRhZ09mZnNldCksIHJlZ1QzKTsKICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFBh
eWxvYWRPZmZzZXQpLCByZWdUNCk7Ci0gICAgYXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7Cisg
ICAgYXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2hJZk5vdEVtcHR5KHJlZ1QzKTsKICAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZz
ZXQpICsgUGF5bG9hZE9mZnNldCksIHJlZ1Q0KTsKICAgICBoYXNNb25vUHJvdG8ubGluayh0aGlz
KTsKICAgICBtb3ZlKHJlZ1Q0LCByZWdUMik7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAg
ICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBKdW1wIGlzQ2VsbCA9IGJyYW5j
aDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBK
dW1wIGlzQ2VsbCA9IGJyYW5jaElmQ2VsbChyZWdUMSk7CiAKICAgICBjb21wYXJlMzIoRXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDApOwogICAg
IEp1bXAgZG9uZSA9IGp1bXAoKTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pc19jZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGludCB0eXBlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRM
b2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwotICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIEp1
bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKIAogICAgIGNvbXBhcmU4KEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKHR5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpAQCAtMzAzLDcg
KzMwMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBKdW1wIGlz
Tm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKKyAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7
CiAKICAgICBjb21wYXJlOChBYm92ZU9yRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSksIHJlZ1QwKTsKICAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7CkBAIC0zMjIsOCArMzIyLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBl
bWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKLSAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFk
ZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsT2JqZWN0KHJlZ1QwKSk7CisgICAgSnVtcCBpc0ltbSA9
IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZPYmplY3Qo
cmVnVDApKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBA
IC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRUYWcoc3JjLCByZWdUMCk7CiAKICAgICBlbWl0
TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk5vdEJvb2xlYW4ocmVnVDEsIEludmFsaWRHUFJSZWcpKTsKICAgICB4
b3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGVtaXRTdG9yZUJvb2woZHN0LCBy
ZWdUMCwgKGRzdCA9PSBzcmMpKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdExv
YWQoc3JjLCByZWdUMSwgcmVnVDApOwogCi0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBK
dW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKIAogICAgIEp1bXAgaXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwpAQCAtNDAxLDkgKzQwMSw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICAv
LyBOb3cgaGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAg
aXNJbW1lZGlhdGUubGluayh0aGlzKTsKLSAgICBBU1NFUlQoKEpTVmFsdWU6OlVuZGVmaW5lZFRh
ZyArIDEgPT0gSlNWYWx1ZTo6TnVsbFRhZykgJiYgKEpTVmFsdWU6Ok51bGxUYWcgJiAweDEpKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KChKU1ZhbHVlOjpVbmRlZmluZWRUYWcgKyAxID09IEpTVmFsdWU6
Ok51bGxUYWcpICYmIChKU1ZhbHVlOjpOdWxsVGFnICYgMHgxKSwgIiIpOwogICAgIG9yMzIoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMSk7Ci0gICAgYWRkSnVtcChicmFuY2gzMihFcXVhbCwgcmVnVDEs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChi
cmFuY2hJZk51bGwocmVnVDEpLCB0YXJnZXQpOwogCiAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLmxpbmsodGhpcyk7CiAgICAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24u
bGluayh0aGlzKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251
bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRMb2FkKHNyYywg
cmVnVDEsIHJlZ1QwKTsKIAotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgSnVtcCBpc0lt
bWVkaWF0ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CiAKICAgICBhZGRKdW1wKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsK
QEAgLTQyNyw5ICs0MjcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyBOb3cgaGFuZGxlIHRoZSBpbW1lZGlhdGUg
Y2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKIAot
ICAgIEFTU0VSVCgoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnICsgMSA9PSBKU1ZhbHVlOjpOdWxsVGFn
KSAmJiAoSlNWYWx1ZTo6TnVsbFRhZyAmIDB4MSkpOworICAgIHN0YXRpY19hc3NlcnQoKEpTVmFs
dWU6OlVuZGVmaW5lZFRhZyArIDEgPT0gSlNWYWx1ZTo6TnVsbFRhZykgJiYgKEpTVmFsdWU6Ok51
bGxUYWcgJiAweDEpLCAiIik7CiAgICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKLSAg
ICBhZGRKdW1wKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
Ok51bGxUYWcpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaElmTm90TnVsbChyZWdUMSks
IHRhcmdldCk7CiAKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlzKTsKIH0KQEAgLTQ0MSw4
ICs0NDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFs
ID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9y
KG1fY29kZUJsb2NrLCBwdHIpKSk7CisgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxs
KHJlZ1QxKTsKKyAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3Rl
ZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJsb2NrLCBwdHIpKSk7CiAgICAgbm90Q2Vs
bC5saW5rKHRoaXMpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDEpLCAmY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCk7CiAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CkBAIC00
NTcsNyArNDU3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNyYzIsIHJl
Z1QzLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBy
ZWdUMykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJl
Z1QxKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogCiAgICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwg
cmVnVDIsIHJlZ1QwKTsKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRMb2FkMihzcmMxLCBy
ZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QxKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVs
b3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogCiAgICAgYWRk
SnVtcChicmFuY2gzMihFcXVhbCwgcmVnVDAsIHJlZ1QyKSwgdGFyZ2V0KTsKQEAgLTU0Myw3ICs1
NDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCBy
ZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QxKSk7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOwogCiAgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMCwgcmVn
VDIsIHJlZ1QwKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVn
VDEsIHJlZ1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgcmVnVDMpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmQ2VsbChyZWdUMSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEJlbG93
LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKIAogICAgIGFkZEp1
bXAoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMiksIHRhcmdldCk7CkBAIC02MTAsOSAr
NjEwLDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHkKICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihCZWxvdywgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAKICAg
ICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJvdGggYXJlIHN0cmluZ3Mgb3Igc3ltYm9scyAo
bm9uIG9iamVjdCkuCi0gICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3RJc09iamVj
dCA9IGVtaXRKdW1wSWZDZWxsT2JqZWN0KHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVt
cElmQ2VsbE5vdE9iamVjdChyZWdUMikpOworICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMSk7CisgICAgSnVtcCBmaXJzdElzT2JqZWN0ID0gYnJhbmNoSWZPYmplY3QocmVn
VDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T2JqZWN0KHJlZ1QyKSk7CiAgICAgbm90
Q2VsbC5saW5rKHRoaXMpOwogICAgIGZpcnN0SXNPYmplY3QubGluayh0aGlzKTsKIApAQCAtNjQ4
LDkgKzY0OCw5IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0CiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoMzIoQmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwog
CiAgICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBib3RoIGFyZSBzdHJpbmdzIG9yIHN5bWJv
bHMgKG5vbiBvYmplY3QpLgotICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBKdW1wIGZpcnN0SXNP
YmplY3QgPSBlbWl0SnVtcElmQ2VsbE9iamVjdChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1p
dEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDIpKTsKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDEpOworICAgIEp1bXAgZmlyc3RJc09iamVjdCA9IGJyYW5jaElmT2JqZWN0
KHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdChyZWdUMikpOwogICAg
IG5vdENlbGwubGluayh0aGlzKTsKICAgICBmaXJzdElzT2JqZWN0LmxpbmsodGhpcyk7CiAKQEAg
LTY5NSw3ICs2OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgaW50IHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgSnVtcCBp
c0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJl
Z1QxKTsKIAogICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDApLCByZWdUMSk7CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVx
X251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgc3JjID0gY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEs
IHJlZ1QwKTsKLSAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIEp1bXAgaXNJbW1lZGlhdGUg
PSBicmFuY2hJZk5vdENlbGwocmVnVDEpOwogCiAgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7
CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90b19udW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIEp1bXAgaXNJbnQz
MiA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFn
KSk7CisgICAgSnVtcCBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
Okxvd2VzdFRhZykpKTsKICAgICBpc0ludDMyLmxpbmsodGhpcyk7CiAKQEAgLTc4Myw4ICs3ODMs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBl
KSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90U3RyaW5nKHJlZ1QwKSk7CiAKICAgICBpZiAoc3JjICE9IGRzdCkK
ICAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTc5Nyw4ICs3OTcsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChCZWxvdywgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMSkpOworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KCk7CiAgICAgaWYgKHNyYyAhPSBkc3QpCkBAIC05NjYsNyArOTY2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBS
ZWdpc3RlcklEIHNjcmF0Y2hSZWcgPSByZWdUMzsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChjYWxs
ZWUsIGNhbGxlZVJlZyk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVz
cyhjYWxsZWVSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
SlNGdW5jdGlvblR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RGdW5jdGlvbihj
YWxsZWVSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
VGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwogICAgIGxvYWQzMihBZGRyZXNzKHJhcmVEYXRh
UmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRv
clJlZyk7CkBAIC05OTIsOCArOTkyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVy
LCByZWdUMywgcmVnVDIpOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdENlbGwocmVnVDMpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5cGUo
cmVnVDIsIEZpbmFsT2JqZWN0VHlwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3Ry
dWN0dXJlLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MCwgcmVnVDIpKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2No
ZWNrX3RkeihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRMb2Fk
VGFnKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKLSAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZh
bHVlVGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtMTIxMywyNCArMTIxMywyMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEp1
bXBMaXN0IGp1bXBUb0VuZDsKIAotICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWws
IHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBqdW1w
VG9FbmQuYXBwZW5kKGJyYW5jaElmRW1wdHkocmVnVDMpKTsKIAogICAgIC8vIENvbXBpbGUgaW4g
YSBwcmVkaWN0aXZlIHR5cGUgY2hlY2ssIGlmIHBvc3NpYmxlLCB0byBzZWUgaWYgd2UgY2FuIHNr
aXAgd3JpdGluZyB0byB0aGUgbG9nLgogICAgIC8vIFRoZXNlIHR5cGVjaGVja3MgYXJlIGlubGlu
ZWQgdG8gbWF0Y2ggdGhvc2Ugb2YgdGhlIDMyLWJpdCBKU1ZhbHVlIHR5cGUgY2hlY2tzLgogICAg
IGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVVbmRlZmluZWQp
Ci0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSkpOworICAgICAgICBqdW1wVG9FbmQuYXBwZW5k
KGJyYW5jaElmVW5kZWZpbmVkKHJlZ1QzKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0
aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVsbCkKLSAgICAgICAganVtcFRvRW5kLmFwcGVu
ZChicmFuY2gzMihFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSkp
OworICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmTnVsbChyZWdUMykpOwogICAgIGVs
c2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZUJvb2xlYW4p
Ci0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChi
cmFuY2hJZkJvb2xlYW4ocmVnVDMsIEludmFsaWRHUFJSZWcpKTsKICAgICBlbHNlIGlmIChjYWNo
ZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVBbnlJbnQpCi0gICAgICAgIGp1
bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZJbnQzMihy
ZWdUMykpOwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUg
PT0gVHlwZU51bWJlcikgewotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDMyKEJlbG93
LCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKLSAgICAgICAganVt
cFRvRW5kLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZk51bWJlcihK
U1ZhbHVlUmVncyhyZWdUMywgcmVnVDApLCByZWdUMSkpOwogICAgIH0gZWxzZSBpZiAoY2FjaGVk
VHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgIEp1
bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpOwotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDgoRXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENl
bGwocmVnVDMpOworICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmU3RyaW5nKHJlZ1Qw
KSk7CiAgICAgICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwogICAgIH0KIApAQCAtMTI0Niw3ICsx
MjQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3RvcmUzMihyZWdUMywgQWRkcmVzcyhyZWdUMSwgVHlwZVBy
b2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSk7CiAKICAgICAvLyBTdG9yZSB0aGUgc3RydWN0dXJlSUQgb2Yg
dGhlIGNlbGwgaWYgYXJndW1lbnQgaXMgYSBjZWxsLCBvdGhlcndpc2UsIHN0b3JlIDAgb24gdGhl
IGxvZyBlbnRyeS4KLSAgICBKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgSnVtcCBub3RDZWxsID0gYnJh
bmNoSWZOb3RDZWxsKHJlZ1QzKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Mo
cmVnVDEsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsK
ICAgICBKdW1wIHNraXBOb3RDZWxsID0ganVtcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAxYjk3ZGExYTA3YjQ5YWMzMDY2MjYy
YjEyODRkYzIwZjE0NjJlOTFhLi42Y2UwYTE5MDdlMGQ3NDFlOTFjOGVmNTY4ZGNmZDNjNjdjZDM1
YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
ICAgICAKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBKdW1wIHJlc3VsdE9L
ID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwKTsKKyAgICAgICAgSnVtcCByZXN1bHRPSyA9
IGJyYW5jaElmTm90RW1wdHkocmVnVDApOwogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUR2V0
QnlWYWxSZXN1bHRJc05vdEVtcHR5KTsKICAgICAgICAgcmVzdWx0T0subGluayh0aGlzKTsKICAg
ICB9CkBAIC0yMTksNyArMjE5LDcgQEAgSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRC
eVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3QKIAogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCi0gICAgc2xvd0Nhc2Vz
LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QxKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKICAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2so
YnlWYWxJbmZvLCByZWdUMSwgcmVnVDMsIHByb3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKIAogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKApAQCAtMzUwLDExICszNTAsMTEgQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMyk7
CiAgICAgc3dpdGNoIChpbmRleGluZ1NoYXBlKSB7CiAgICAgY2FzZSBJbnQzMlNoYXBlOgotICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RJbnQocmVnVDMpKTsKKyAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdEludDMyKHJlZ1QzKSk7CiAgICAgICAgIHN0b3Jl
NjQocmVnVDMsIEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFRpbWVzRWlnaHQpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBEb3VibGVTaGFwZTogewotICAgICAgICBKdW1wIG5vdEludCA9IGVt
aXRKdW1wSWZOb3RJbnQocmVnVDMpOworICAgICAgICBKdW1wIG5vdEludCA9IGJyYW5jaElmTm90
SW50MzIocmVnVDMpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMywgZnBSZWdU
MCk7CiAgICAgICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgICAgIG5vdEludC5saW5rKHRo
aXMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIEluc3RydWN0CiAgICAgaW50
IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCB2YWx1ZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5k
KGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDEpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aElmTm90Q2VsbChyZWdUMSkpOwogICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbElu
Zm8sIHJlZ1QxLCByZWdUMSwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgLy8gV3Jp
dGUgYmFycmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3Jp
dGUgYmFycmllciwKQEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGVtaXRHZXRWYXJGcm9tUG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNW
YWx1ZSo+KCpvcGVyYW5kU2xvdCksIHJlZ1QwKTsKICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlw
ZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKSAvLyBURFogY2hlY2suCi0gICAgICAgICAgICAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKSk7CisgICAgICAgICAgICAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczoKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90
b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgICAg
ICAgICBlbWl0R2V0VmFyRnJvbUluZGlyZWN0UG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSoq
PihvcGVyYW5kU2xvdCksIHJlZ1QwKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRHZXRWYXJGcm9tUG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCpv
cGVyYW5kU2xvdCksIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hU
ZXN0NjQoWmVybywgcmVnVDApKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJ
ZkVtcHR5KHJlZ1QwKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaW5kaXJlY3RM
b2FkRm9yT3BlcmFuZCkKICAgICAgICAgICAgICAgICBlbWl0UHV0R2xvYmFsVmFyaWFibGVJbmRp
cmVjdChiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSoqPihvcGVyYW5kU2xvdCksIHZhbHVlLCBiaXR3aXNl
X2Nhc3Q8V2F0Y2hwb2ludFNldCoqPigmY3VycmVudEluc3RydWN0aW9uWzVdKSk7CkBAIC0xMTUw
LDEzICsxMTUwLDEzIEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVy
LCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAgICAgSnVtcCB2YWx1ZU5v
dENlbGw7CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91
bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2
YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVy
bywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMCk7CiAgICAgfQogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3duZXIsIHJlZ1QwKTsKICAgICBKdW1wIG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQot
ICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01h
c2tSZWdpc3Rlcik7CisgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdU
MCk7CiAKICAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBiYXJyaWVyQnJhbmNo
KCp2bSgpLCByZWdUMCwgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uV3JpdGVC
YXJyaWVyU2xvd1BhdGgsIHJlZ1QwKTsKQEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgSklUOjpl
bWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJp
ZXJNb2RlIG1vZGUpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwog
ICAgIEp1bXAgdmFsdWVOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVl
KQotICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRh
Z01hc2tSZWdpc3Rlcik7CisgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChy
ZWdUMCk7CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVyKTsKIApAQCAtMTE4OCwxMyArMTE4
OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWdu
ZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZQogICAgIEp1bXAgdmFsdWVOb3RDZWxsOwog
ICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVy
QmFzZUFuZFZhbHVlKSB7CiAgICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7Ci0gICAg
ICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QwKTsKICAgICB9CiAgICAgCiAgICAgZW1pdExvYWQob3duZXIsIHJlZ1QwLCByZWdU
MSk7CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVy
QmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKLSAgICAgICAgb3duZXJO
b3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpOworICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDAp
OwogCiAgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gYmFycmllckJyYW5jaCgq
dm0oKSwgcmVnVDEsIHJlZ1QyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbldyaXRlQmFy
cmllclNsb3dQYXRoLCByZWdUMSk7CkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVy
TW9kZSBtb2RlKQogICAgIEp1bXAgdmFsdWVOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3Vs
ZEZpbHRlclZhbHVlKSB7CiAgICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7Ci0gICAg
ICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QwKTsKICAgICB9CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVyKTsKQEAgLTE2
NjAsMTAgKzE2NjAsMTAgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0
QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGEKICAgICAKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIGVhcmx5U2NyYXRj
aCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90SW50KGVhcmx5U2NyYXRjaCkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihlYXJseVNjcmF0Y2gpKTsK
ICNlbHNlCiAgICAgZW1pdExvYWQodmFsdWUsIGxhdGVTY3JhdGNoLCBlYXJseVNjcmF0Y2gpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGxhdGVTY3JhdGNoLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hJZk5vdEludDMyKGxhdGVTY3JhdGNoKSk7CiAjZW5kaWYKICAgICAKICAgICAvLyBXZSB3b3Vs
ZCBiZSBsb2FkaW5nIHRoaXMgaW50byBiYXNlIGFzIGluIGdldF9ieV92YWwsIGV4Y2VwdCB0aGF0
IHRoZSBzbG93CkBAIC0xNzMzLDE3ICsxNzMzLDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwK
ICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUsIGVhcmx5U2NyYXRjaCk7Ci0gICAgSnVtcCBkb3VibGVDYXNlID0gZW1pdEp1bXBJZk5vdElu
dChlYXJseVNjcmF0Y2gpOworICAgIEp1bXAgZG91YmxlQ2FzZSA9IGJyYW5jaElmTm90SW50MzIo
ZWFybHlTY3JhdGNoKTsKICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZw
UmVnVDApOwogICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRo
aXMpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdE51bWJlcihlYXJseVNjcmF0
Y2gpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90TnVtYmVyKGVhcmx5U2NyYXRj
aCkpOwogICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZWFybHlTY3JhdGNoKTsKICAg
ICBtb3ZlNjRUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZwUmVnVDApOwogICAgIHJlYWR5Lmxpbmso
dGhpcyk7CiAjZWxzZQogICAgIGVtaXRMb2FkKHZhbHVlLCBsYXRlU2NyYXRjaCwgZWFybHlTY3Jh
dGNoKTsKLSAgICBKdW1wIGRvdWJsZUNhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgbGF0ZVNjcmF0
Y2gsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgIEp1bXAgZG91YmxlQ2Fz
ZSA9IGJyYW5jaElmTm90SW50MzIobGF0ZVNjcmF0Y2gpOwogICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKGVhcmx5U2NyYXRjaCwgZnBSZWdUMCk7CiAgICAgSnVtcCByZWFkeSA9IGp1bXAoKTsKICAg
ICBkb3VibGVDYXNlLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1MWJkNDgwODU4ZjdlODQ0Njcy
NzVhYzJlNzQ5MjdjMTYxNzlmYzA5Li5kYjJhNDcyZTg1MGE1NjZlMDdhMDIzY2Y0MzMwNDIyMjE4
MTE1ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgTGFiZWwgZG9u
ZSA9IGxhYmVsKCk7CiAKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBKdW1w
IHJlc3VsdE9LID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICBKdW1wIHJlc3VsdE9LID0gYnJhbmNoSWZOb3RF
bXB0eShyZWdUMSk7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRHZXRCeVZhbFJlc3VsdElz
Tm90RW1wdHkpOwogICAgICAgICByZXN1bHRPSy5saW5rKHRoaXMpOwogICAgIH0KQEAgLTIzNSw3
ICsyMzUsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZQogICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMywgQnV0dGVyZmx5Ojpv
ZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDMsIHJl
Z1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSks
IHJlZ1QxKTsgLy8gdGFnCiAgICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMywgcmVnVDIsIFRpbWVz
RWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1Qw
KTsgLy8gcGF5bG9hZAotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaElmRW1wdHkocmVnVDEpKTsKICAgICAKICAgICByZXR1cm4gc2xvd0Nhc2Vz
OwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9y
YWdlTG9hZChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzLCBB
cnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgIGxvYWQzMihCYXNlSW5k
ZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgp
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRh
ZwogICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBBcnJheVN0
b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpKSwgcmVnVDApOyAvLyBwYXlsb2FkCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZFbXB0eShyZWdUMSkpOwogICAgIAogICAg
IHJldHVybiBzbG93Q2FzZXM7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgSklUR2V0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywg
SW5zdHJ1Y3QKICAgICAvLyBwcm9wZXJ0eTogdGFnKHJlZ1QzKSwgcGF5bG9hZChyZWdUMikKICAg
ICAvLyBzY3JhdGNoOiByZWdUNAogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgZW1pdEJ5VmFsSWRlbnRp
ZmllckNoZWNrKGJ5VmFsSW5mbywgcmVnVDIsIHJlZ1Q0LCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNl
cyk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKQEAgLTM5NSw3ICszOTUsNyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbgogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDAp
OwogICAgIHN3aXRjaCAoaW5kZXhpbmdTaGFwZSkgewogICAgIGNhc2UgSW50MzJTaGFwZToKLSAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hJZk5vdEludDMyKHJlZ1QxKSk7CiAgICAgICAgIHN0b3JlMzIocmVnVDAsIEJhc2VJbmRleChy
ZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy5wYXlsb2FkKSkpOwogICAgICAgICBzdG9yZTMyKHJlZ1QxLCBCYXNlSW5kZXgocmVnVDMsIHJl
Z1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkp
OwogICAgICAgICBicmVhazsKQEAgLTQwNiw3ICs0MDYsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbgogICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIHZhbHVlLCBTaG91bGRGaWx0ZXJW
YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG91YmxlU2hhcGU6IHsKLSAgICAgICAg
SnVtcCBub3RJbnQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpOworICAgICAgICBKdW1wIG5vdEludCA9IGJyYW5jaElmTm90SW50MzIo
cmVnVDEpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAg
ICAgICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgICAgIG5vdEludC5saW5rKHRoaXMpOwpA
QCAtNDgyLDcgKzQ4Miw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIEluc3RydWN0CiAgICAgaW50IGJhc2Ug
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCB2YWx1ZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Cisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKICAgICBlbWl0QnlW
YWxJZGVudGlmaWVyQ2hlY2soYnlWYWxJbmZvLCByZWdUMiwgcmVnVDIsIHByb3BlcnR5TmFtZSwg
c2xvd0Nhc2VzKTsKIAogICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtzIHRoZSByZWdpc3RlcnMu
IFNvIGFmdGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCkBAIC05MzMsNyArOTMzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbWl0R2V0VmFyRnJv
bVBvaW50ZXIoYml0d2lzZV9jYXN0PEpTVmFsdWUqPigqb3BlcmFuZFNsb3QpLCByZWdUMSwgcmVn
VDApOwogICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIgfHwg
cmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpIC8v
IFREWiBjaGVjay4KLSAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwg
cmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOworICAgICAgICAg
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDEpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgZW1pdEdldFZhckZyb21JbmRpcmVjdFBvaW50ZXIoYml0d2lzZV9jYXN0
PEpTVmFsdWUqKj4ob3BlcmFuZFNsb3QpLCByZWdUMSwgcmVnVDApOwogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZW1pdEdldFZhckZyb21Qb2ludGVyKGJpdHdpc2Vf
Y2FzdDxKU1ZhbHVlKj4oKm9wZXJhbmRTbG90KSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgICAg
ICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnKSkpOworICAgICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmRW1wdHkocmVnVDEpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpbmRpcmVj
dExvYWRGb3JPcGVyYW5kKQogICAgICAgICAgICAgICAgIGVtaXRQdXRHbG9iYWxWYXJpYWJsZUlu
ZGlyZWN0KGJpdHdpc2VfY2FzdDxKU1ZhbHVlKio+KG9wZXJhbmRTbG90KSwgdmFsdWUsIGJpdHdp
c2VfY2FzdDxXYXRjaHBvaW50U2V0Kio+KCZjdXJyZW50SW5zdHJ1Y3Rpb25bNV0pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBmMWVkMDU1NzgzZmM3
YTM0ZGRhZDMwZjM1NzJmODdjYzgyYmVlMzM3Li4yMzUxOTczZDRmOTI2NGVlZGY4ZDU0NDY3YjM2
NzZkZjUxOWVjZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCkBAIC01OSwxNCArNTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90SlNDZWxsKFJlZ2lzdGVySUQp
OwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZOdW1iZXIoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIEp1
bXAgZW1pdEp1bXBJZk5vdE51bWJlcihSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0VGFn
SW50KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAg
SnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSk7Ci0KICAg
ICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihpbnQgZW50cnksIFJlZ2lz
dGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAg
dm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBpbnQgZW50cnkp
OwogICAgICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgaW50
IGVudHJ5KTsKQEAgLTE0Nyw0MyArMTQyLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1
bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCi0g
ICAgewotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZywgdGFnTWFza1Jl
Z2lzdGVyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1w
IEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWcsIHRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAg
SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCByZWcpCi0gICAg
ewotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIHJlZywgdGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKLSAgICB9CiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJm
YWNlSklUOjplbWl0TG9hZEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBsb2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXJJbmRleCksIGRzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywg
ZHN0LCB0YWdNYXNrUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RDZWxsKGRz
dCk7CiAgICAgfQogICAgIAogICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVy
ZmFjZUpJVDo6ZW1pdExvYWRJbnQzMih1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBsb2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXJJbmRleCksIGRzdCk7Ci0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoNjQoQmVsb3cs
IGRzdCwgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgSnVtcCBub3RJbnQzMiA9IGJy
YW5jaElmTm90SW50MzIoZHN0KTsKICAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoZHN0LCBkc3Qp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gbm90SW50MzI7CiAgICAg
fQogCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0
TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgRlBSZWdpc3RlcklEIGRz
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKICAgICAgICAgbG9hZDY0KGFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVySW5kZXgpLCBzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBub3ROdW1iZXIg
PSBlbWl0SnVtcElmTm90TnVtYmVyKHNjcmF0Y2gpOwotICAgICAgICBKdW1wIG5vdEludCA9IGJy
YW5jaDY0KEJlbG93LCBzY3JhdGNoLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICBK
dW1wIG5vdE51bWJlciA9IGJyYW5jaElmTm90TnVtYmVyKHNjcmF0Y2gpOworICAgICAgICBKdW1w
IG5vdEludCA9IGJyYW5jaElmTm90SW50MzIoc2NyYXRjaCk7CiAgICAgICAgIGNvbnZlcnRJbnQz
MlRvRG91YmxlKHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAg
ICAgICAgbm90SW50LmxpbmsodGhpcyk7Ci0gICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdp
c3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIG1vdmU2NFRvRG91YmxlKHNjcmF0Y2gsIGRzdCk7Cisg
ICAgICAgIHVuYm94RG91YmxlKHNjcmF0Y2gsIHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgIGRvbmUu
bGluayh0aGlzKTsKICAgICAgICAgcmV0dXJuIG5vdE51bWJlcjsKICAgICB9CkBAIC0yMTYsMTEg
KzE5Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KICNlbmRpZgogCi0gICAgQUxXQVlTX0lO
TElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5
cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwotICAgIH0KLQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoaW50
IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCiAgICAgewogICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNDFlYjFlYThkMmZkZDM5OWY3Yjdm
MjEzOGQ2MWMwYTI1MzljYjljNi4uYmJiNDBmOTk4MWEyY2JlMGJiNDg2ZGNjNjNjZjc5NmQ2ODEw
MmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDksMTcgKzk0
OSwxMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIC8vIFZlcmlmeSB0aGF0
IHdlIGhhdmUgYSBmdW5jdGlvbiBhbmQgc3Rhc2ggdGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQ
Ui4KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChzdHViSml0
LmJyYW5jaFRlc3Q2NChDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZUdQUiwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChzdHViSml0LmJyYW5j
aElmTm90Q2VsbChjYWxsZWVHUFIpKTsKICNlbHNlCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUg
YWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCiAjZW5kaWYKIAogICAg
ICAgICAvLyBGSVhNRTogV2UgY291bGQgYWRkIGEgZmFzdCBwYXRoIGZvciBJbnRlcm5hbEZ1bmN0
aW9uIHdpdGggY2xvc3VyZSBjYWxsLgotICAgICAgICBzbG93UGF0aC5hcHBlbmQoCi0gICAgICAg
ICAgICBzdHViSml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uVHlwZSkpKTsKKyAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKHN0dWJKaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAgICAKICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNh
bGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDg4MzIwNjViYzJmNTE1
ZjIzMTZkOTlhZTczZjNhOWQyNGIyZTEzZjQuLjZlN2U2MzEzZGNmM2UwZWJjMGU4N2VmZDYyNzBm
MjM2NWVkOTAyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKQEAgLTE5NCwxMCArMTk0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8KICAg
ICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJz
OjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CiAjZWxzZQotICAg
IHNsb3dDYXNlLmFwcGVuZCgKLSAgICAgICAgaml0LmJyYW5jaDMyKAotICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dDYXNlLmFw
cGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEdQUkluZm86OnJlZ1QxKSk7CiAjZW5kaWYKICAgICBh
dXRvIG5vdEpTRnVuY3Rpb24gPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBK
U0Z1bmN0aW9uVHlwZSk7CiAgICAgCkBAIC0xMDI0LDcgKzEwMjEsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4ID0gQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldCgwKTsKICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RJbnRlZ2VyID0gaml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CisgICAgYXV0byBub3RJbnRlZ2VyID0gaml0LmJyYW5jaElmTm90SW50MzIoR1BSSW5mbzo6
cmVnVDApOwogCiAgICAgLy8gQWJzIEludDMyLgogICAgIGppdC5yc2hpZnQzMihHUFJJbmZvOjpy
ZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigzMSksIEdQUkluZm86OnJlZ1QxKTsK
QEAgLTEwNDAsNyArMTAzNyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gYWJzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogCiAgICAgLy8gSGFuZGxlIERvdWJsZXMuCiAg
ICAgbm90SW50ZWdlci5saW5rKCZqaXQpOwotICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNo
SWZOb3ROdW1iZXIoR1BSSW5mbzo6cmVnVDApKTsKICAgICBqaXQudW5ib3hEb3VibGVXaXRob3V0
QXNzZXJ0aW9ucyhHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVn
VDApOwogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBhYnNGUFIwTGFiZWwgPSBqaXQubGFiZWwo
KTsKICAgICBqaXQuYWJzRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEZQUkluZm86OmZwUmVnVDEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRlMTdh
ZmI0MTJmMGUwYWI3MmI3OGQ3NzI4OTFjYWYyYTM1ZmEyM2YuLjNmNDY2ODA4YmQ3NmY3ZGIzOTI2
Y2ZkOTVjMTAxYjEwNDRkN2QxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKQEAgLTQ2NywxMCArNDY3LDcgQEAgY2xhc3MgRE9NSklUTm9kZSA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgUmVmPFNuaXBwZXQ+IHNuaXBwZXQgPSBTbmlw
cGV0OjpjcmVhdGUoKTsKICAgICAgICAgc25pcHBldC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhl
bHBlcnMmIGppdCwgU25pcHBldFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5h
cHBlbmQoaml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigp
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpKSkp
OworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKHBh
cmFtc1swXS5ncHIoKSwgSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
biBzbmlwcGV0OwpAQCAtNzQxLDEwICs3MzgsNyBAQCBjbGFzcyBET01KSVRGdW5jdGlvbk9iamVj
dCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZmFpbHVyZUNhc2VzOwogICAgICAgICAgICAgLy8gTWF5IHVzZSBzY3JhdGNoIHJlZ2lzdGVy
cy4KICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmdmFsdWUpLCBwYXJhbXMuZnBTY3JhdGNoKDApKTsKLSAgICAgICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoaml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdw
cigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEp
KSkpOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBl
KHBhcmFtc1swXS5ncHIoKSwgSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKICAgICAgICAgfSk7CiAgICAgICAgIHJl
dHVybiBzbmlwcGV0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340588</attachid>
            <date>2018-05-17 08:41:10 -0700</date>
            <delta_ts>2018-05-17 08:50:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185730-20180518004109.patch</filename>
            <type>text/plain</type>
            <size>120962</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjY2YTM0Y2M5ZmY1YjQ2MzgwYjBlMDZlZWJkYzVlMmVlZjNiZmZkLi5jZTU1Mzc2ZmI3ZDlhYzYx
ZGZkMGMwZTBmZTc1ZWQ3Y2ZlMzdmNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzIgQEAKKzIwMTgtMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIEFzc2VtYmx5SGVscGVycycgdHlwZSBjaGVja2lu
ZyBmdW5jdGlvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0J3MgdXNlIEFzc2VtYmx5SGVscGVycycgdHlwZSBj
aGVja2luZyBmdW5jdGlvbnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhpcyBoaWRlcyB0aGUgY29t
cGxleAorICAgICAgICBiaXQgYW5kIHJlZ2lzdGVyIG9wZXJhdGlvbnMgZm9yIHR5cGUgdGFnZ2lu
ZyBvZiBKU1ZhbHVlLiBJdCBpcyByZWFsbHkgdXNlZnVsIHdoZW4gd2Ugd291bGQgbGlrZQorICAg
ICAgICB0byB0d2VhayB0eXBlIHRhZ2dpbmcgcmVwcmVzZW50YXRpb24gc2luY2UgdGhlIGNvZGUg
aXMgY29sbGVjdGVkIGludG8gQXNzZW1ibHlIZWxwZXJzLiBBbmQKKyAgICAgICAgdGhlIG5hbWVk
IGZ1bmN0aW9uIGlzIG1vcmUgcmVhZGFibGUgdGhhbiBzb21lIGJyYW5jaGluZyBvcGVyYXRpb25z
LgorCisgICAgICAgIFdlIGFsc28gcmVtb3ZlIHVubmVjZXNzYXJ5IGJyYW5jaGluZyBmdW5jdGlv
bnMgaW4gSklUIC8gSlNJbnRlcmZhY2VKSVQuIFNvbWUgb2YgdGhlbSBhcmUgZHVwbGljYXRlCisg
ICAgICAgIHRvIEFzc2VtYmx5SGVscGVycycgb25lLgorCisgICAgICAgIFdlIGFkZCBzZXZlcmFs
IG5ldyB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyB0byBBc3NlbWJseUhlbHBlcnMuIE1vcmVvdmVy
LCB3ZSBhZGQgYnJhbmNoSWZYWFgoR1BSUmVnKQorICAgICAgICBmdW5jdGlvbnMgZXZlbiBmb3Ig
MzJiaXQgZW52aXJvbm1lbnQuIEluIDMyYml0IGVudmlyb25tZW50LCB0aGlzIGZ1bmN0aW9uIHRh
a2VzIHRhZyByZWdpc3Rlci4gVGhpcworICAgICAgICBzZW1hbnRpY3MgaXMgYWxpZ25lZCB0byB0
aGUgZXhpc3RpbmcgYnJhbmNoSWZDZWxsIC8gYnJhbmNoSWZOb3RDZWxsLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxUeXBlV2l0aG91
dFR5cGVGaWx0ZXJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU1pc2MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFj
dFZhbHVlRnJvbVdlYWtNYXBHZXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRBbnlJbnQpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXNzZXJ0Tm90RW1wdHkpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJ
ZkludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEludDMy
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk51bWJlcik6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3ROdW1iZXIpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQm9vbGVhbik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RCb29sZWFuKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpicmFuY2hJZkVtcHR5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZk5vdEVtcHR5KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFu
Y2hJZlVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZO
b3RVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTnVs
bCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3ROdWxsKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9t
b2QpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAg
ICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxs
RXZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZCb3RoSlNDZWxscyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmSlNDZWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SnVtcElmTm90SW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51
bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZkNlbGxPYmplY3QpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmSlNDZWxsKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SnVtcElmSW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
c19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEp
OgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF90b19udW1iZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
dG9fc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX29iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJD
b21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm90KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2puZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2puZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1iZXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2NoZWNrX3Rkeik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wcm9maWxl
X3R5cGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0
QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0V3JpdGVCYXJyaWVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRDb250
aWd1b3VzTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fc2Nv
cGUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0lu
dGVyZmFjZUpJVDo6ZW1pdExvYWRKU0NlbGwpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJ
VDo6ZW1pdExvYWRJbnQzMik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9h
ZERvdWJsZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTnVtYmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RO
dW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJ
Zk5vdFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9y
cy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVua0Zvcik6CisgICAgICAgIChKU0M6OmFi
c1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKFdURjo6RE9NSklUTm9kZTo6Y2hlY2tTdWJDbGFzc1NuaXBwZXQpOgorICAgICAgICAoV1RG
OjpET01KSVRGdW5jdGlvbk9iamVjdDo6Y2hlY2tTdWJDbGFzc1NuaXBwZXQpOgorCiAyMDE4LTA1
LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIGRvZXNuJ3QgbmVlZCBhIHBhcmVudCBzb3VyY2Ugb3ZlcnJpZGUg
ZmllbGQgc2luY2UgaXQncyBvbmx5IHVzZWQgZm9yIGRlZmF1bHQgY2xhc3MgY29uc3RydWN0b3Jz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
MmNiODM3NmY5Nzk3MTY5YmJkMmExNmIxM2Y5ZTZkZjVkODc1NmJlZS4uOGQ4ODE2N2YyYzJiYzJh
ZjdkNjcxMTM1YjhlYWU4MjdlYWI2Nzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMzc0LDIwICszNzQsMTQgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICBjYXNlIFN0cmluZ0xlbmd0aDogewogICAgICAg
ICBBU1NFUlQoIXZpYVByb3h5KCkpOwogICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoCi0gICAg
ICAgICAgICBqaXQuYnJhbmNoOCgKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOworICAgICAgICAgICAgaml0LmJyYW5jaElmTm90
U3RyaW5nKGJhc2VHUFIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBEaXJl
Y3RBcmd1bWVudHNMZW5ndGg6IHsKICAgICAgICAgQVNTRVJUKCF2aWFQcm94eSgpKTsKICAgICAg
ICAgZmFsbFRocm91Z2guYXBwZW5kKAotICAgICAgICAgICAgaml0LmJyYW5jaDgoCi0gICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0g
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoRGlyZWN0QXJndW1lbnRz
VHlwZSkpKTsKKyAgICAgICAgICAgIGppdC5icmFuY2hJZk5vdFR5cGUoYmFzZUdQUiwgRGlyZWN0
QXJndW1lbnRzVHlwZSkpOwogCiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZCgKICAgICAgICAg
ICAgIGppdC5icmFuY2hUZXN0UHRyKApAQCAtNDA0LDEwICszOTgsNyBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOiB7
CiAgICAgICAgIEFTU0VSVCghdmlhUHJveHkoKSk7CiAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVu
ZCgKLSAgICAgICAgICAgIGppdC5icmFuY2g4KAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKFNjb3BlZEFyZ3VtZW50c1R5cGUpKSk7CisgICAgICAgICAg
ICBqaXQuYnJhbmNoSWZOb3RUeXBlKGJhc2VHUFIsIFNjb3BlZEFyZ3VtZW50c1R5cGUpKTsKIAog
ICAgICAgICBqaXQubG9hZFB0cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mU3RvcmFnZSgpKSwKQEAgLTQ0OCw3ICs0
MzksNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaGFzIHRoZSBwcm9wZXJ0eS4KICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlRm9yQWNjZXNzR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNl
dCkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxUaHJv
dWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgYmFzZUZvckFj
Y2Vzc0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bGwo
YmFzZUZvckFjY2Vzc0dQUikpOwogI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVs
YXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIGJhc2VG
b3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5k
KGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgYmFzZUZvckFjY2Vzc0dQ
UikpOwpAQCAtNDYzLDcgKzQ1NCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3Vh
cmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOyAvLyBQcmltaXRpdmVzIG11c3QgaGF2ZSBhIHN0b3JlZCBwcm90b3R5cGUuIFdl
IHVzZSBwcm90b3R5cGVGb3JMb29rdXAgZm9yIHRoZW0uCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUZvckFjY2Vzc0dQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZz
ZXQpKSwgYmFzZUZvckFjY2Vzc0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhy
b3VnaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6RXF1YWwsIGJhc2VGb3JBY2Nl
c3NHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoSWZOdWxsKGJhc2VG
b3JBY2Nlc3NHUFIpKTsKICNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNj
ZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKQEAg
LTQ3NCwxMCArNDY1LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICh2aWFQcm94eSgpKSB7CiAgICAgICAgICAg
ICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBqaXQuYnJhbmNo
OCgKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmJyYW5jaElmTm90VHlwZShiYXNlR1BSLCBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSkpOwogCiAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTUHJveHk6OnRhcmdldE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggYjkwMTMxODY2M2VkYWNiMmM2NWRlOGY2MWY5ZWQwY2NlN2YxYWYzOC4uZTVmNmE0YzU1ZWVl
NTRlZmMzZTgzNjdjZjViMWY0MmI2YzM0M2ViYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTIzNzUsMTYgKzIzNzUsMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQogICAgICAg
ICAgICAgRlBSVGVtcG9yYXJ5IHRlbXBGcHIodGhpcyk7CiAgICAgICAgICAgICBGUFJSZWcgZnBy
ID0gdGVtcEZwci5mcHIoKTsKIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRl
Z2VyID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgZ3ByLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoSWZJbnQzMihncHIpOwogICAgICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IGNvbnZlcnRlZDsKIAogICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICBERkdf
VFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaElmTm90TnVtYmVyKGdwcikpOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051bWJlciA9IG1faml0LmJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTnVt
YmVyID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoZ3ByKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbENoZWNrLCBtX2ppdC5icmFuY2hJZkNl
bGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwpAQCAtMjQyOSw3ICsyNDI4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IEZQUlJlZyBmcHIgPSB0ZW1wRnByLmZwcigpOwogICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJ
bnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaElmSW50MzIodGFnR1BSKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTnVtYmVyVXNlKSB7
CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKApAQCAtMjQ0NSw3ICsyNDQ0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZDZWxsKG9wMS5qc1ZhbHVlUmVn
cygpKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBJdCdz
IG5vdCBhIGNlbGw6IHNvIHRydWUgdHVybnMgaW50byAxIGFuZCBhbGwgZWxzZSB0dXJucyBpbnRv
IDAuCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQm9vbGVhbiA9IG1f
aml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Qm9vbGVhblRhZykpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2hJZkJvb2xlYW4odGFnR1BSLCBJbnZhbGlkR1BSUmVn
KTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3Vs
dEdwcik7CiAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBlbmQobV9qaXQuanVtcCgp
KTsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0yNjAyLDE3ICsyNjAxLDE2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm9kZSogbm9kZSkKICAgICAgICAgRlBSUmVn
IHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IGRvbmU7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJh
bmNoNjQoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaElmSW50MzIob3AxR1BSKTsKIAogICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE5vdENlbGxVc2UpIHsKLSAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzTnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmlu
ZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTnVtYmVyID0gbV9qaXQuYnJh
bmNoSWZOdW1iZXIob3AxR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzVW5k
ZWZpbmVkID0gbV9qaXQuYnJhbmNoSWZVbmRlZmluZWQob3AxR1BSKTsKIAogICAgICAgICAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICAgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoVHJ1c3RlZEltbVB0cigmemVybyksIHJlc3VsdEZQUik7CiAKLSAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzTnVsbCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwg
b3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc051bGwgPSBtX2ppdC5icmFuY2hJZk51bGwob3AxR1BSKTsKICAgICAgICAgICAg
IGRvbmUuYXBwZW5kKGlzTnVsbCk7CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFs
dWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywKQEAgLTI2MzMs
NyArMjYzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm9kZSog
bm9kZSkKICAgICAgICAgfSBlbHNlIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwg
U3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQnl0ZWNvZGVO
dW1iZXIsCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaElmTm90TnVtYmVyKG9wMUdQUikpOwogICAgICAgICB9CiAK
ICAgICAgICAgdW5ib3hEb3VibGUob3AxR1BSLCB0ZW1wR1BSLCByZXN1bHRGUFIpOwpAQCAtMjY1
MSwyMCArMjY0OSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgIAotICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcp
KTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoSWZJ
bnQzMihvcDFUYWdHUFIpOwogCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gTm90Q2VsbFVzZSkgewogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdW1iZXIg
PSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QmVsb3csIG9wMVRhZ0dQUiwgSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcgKyAxKSk7Ci0gICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVy
OjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aElmVW5kZWZpbmVkKG9wMVRhZ0dQUik7CiAKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3Vi
bGUgemVybyA9IDA7CiAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIo
Jnplcm8pLCByZXN1bHRGUFIpOwogCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051
bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTnVsbCA9IG1faml0LmJyYW5jaElmTnVsbChvcDFUYWdHUFIpOwogICAgICAgICAgICAgZG9u
ZS5hcHBlbmQoaXNOdWxsKTsKIAotICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJl
Z3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbCwg
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOworICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
SlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIH5T
cGVjQ2VsbCwgbV9qaXQuYnJhbmNoSWZOb3RCb29sZWFuKG9wMVRhZ0dQUiwgSW52YWxpZEdQUlJl
ZykpOwogCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ZhbHNlID0gbV9qaXQuYnJh
bmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDFQYXlsb2FkR1BSLCBUcnVzdGVkSW1tMzIo
MSkpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBvbmUgPSAxOwpAQCAtMjY3OSw2
ICsyNjc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChOb2RlKiBu
b2RlKQogCiAgICAgICAgICAgICBpc051bWJlci5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCeXRlY29kZU51bWJlcikp
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgZmFpbHMgd2l0aCBJbnQzMlRhZywgYnV0IGl0
IGlzIE9LIHNpbmNlIEludDMyIGNhc2UgaXMgYWxyZWFkeSBleGNsdWRlZC4KICAgICAgICAgICAg
IHR5cGVDaGVjaygKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBh
eWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVjb2RlTnVtYmVyLAogICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRh
Z0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKQEAgLTMzMjksMTkgKzMz
MjcsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qo
Tm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHAKICAgICAKICAgICAvLyBXYWxrIHVwIHRo
ZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNoUmVnKSwgY29tcGFyaW5n
IHRvIHByb3RvdHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQp
OwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHBlcmZvcm1EZWZhdWx0SGFzSW5zdGFuY2UgPSBt
X2ppdC5icmFuY2g4KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihQcm94eU9iamVjdFR5cGUpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBw
ZXJmb3JtRGVmYXVsdEhhc0luc3RhbmNlID0gbV9qaXQuYnJhbmNoSWZUeXBlKHNjcmF0Y2hSZWcs
IFByb3h5T2JqZWN0VHlwZSk7CiAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoKm1faml0LnZt
KCksIHNjcmF0Y2hSZWcsIHNjcmF0Y2gzUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaDNS
ZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCBzY3JhdGNoM1JlZyk7Ci0gICAgYXV0
byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8s
IHNjcmF0Y2gzUmVnKTsKKyAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90
RW1wdHkoc2NyYXRjaDNSZWcpOwogICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVz
cyhzY3JhdGNoUmVnLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkp
LCBzY3JhdGNoM1JlZyk7CiAgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKICAgICBtX2pp
dC5tb3ZlKHNjcmF0Y2gzUmVnLCBzY3JhdGNoUmVnKTsKICNlbHNlCiAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gzUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgc2NyYXRjaDJSZWcpOwogICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoM1JlZywgU3RydWN0dXJlOjpwcm90b3R5cGVP
ZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoM1JlZyk7Ci0gICAgYXV0byBoYXNNb25v
UHJvdG8gPSBtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMlJl
ZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICBhdXRvIGhhc01v
bm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90RW1wdHkoc2NyYXRjaDJSZWcpOwogICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBvZmZzZXRSZWxhdGl2ZVRv
QmFzZShrbm93blBvbHlQcm90b09mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgc2NyYXRjaDNSZWcp
OwogICAgIGhhc01vbm9Qcm90by5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShzY3JhdGNo
M1JlZywgc2NyYXRjaFJlZyk7CkBAIC03NjYwLDcgKzc2NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBhdXRvIGxvb3BTdGFy
dCA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIo
MSksIGxlbmd0aEdQUik7CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzY3JhdGNoMUdQUiwgbGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNF
aWdodCksIHNjcmF0Y2gyR1BSKTsKLSAgICAgICAgICAgIGF1dG8gbm90RW1wdHkgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHNjcmF0Y2gyR1BSKTsKKyAgICAg
ICAgICAgIGF1dG8gbm90RW1wdHkgPSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KHNjcmF0Y2gyR1BS
KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIG5vdEVtcHR5Lmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoc2NyYXRjaDJHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgocmVzdWx0R1BSLCBsZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0LCBKU0ZpeGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSk7CkBAIC05NjY0LDEwICs5
NjYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQ2VsbFR5cGVXaXRob3V0VHlw
ZUZpbHRlcmluZygKIHsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICBCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgZWRnZSwKLSAgICAgICAgbV9qaXQu
YnJhbmNoOCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihqc1R5
cGUpKSk7CisgICAgICAgIG1faml0LmJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBqc1R5cGUpKTsK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQ2VsbFR5cGUoCkBAIC05Njc1LDEw
ICs5NjY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQ2VsbFR5cGUoCiB7CiAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNl
bGxHUFIpLCBlZGdlLCBzcGVjVHlwZSwKLSAgICAgICAgbV9qaXQuYnJhbmNoOCgKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAg
ICAgICAgVHJ1c3RlZEltbTMyKGpzVHlwZSkpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RU
eXBlKGNlbGxHUFIsIGpzVHlwZSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVJbnQzMihFZGdlIGVkZ2UpCkBAIC05Njk5LDEyICs5NjkwLDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGdlIGVkZ2UpCiAgICAgR1BSUmVnIGdwciA9IHZhbHVl
LmdwcigpOwogICAgIHR5cGVDaGVjaygKICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwg
U3BlY0J5dGVjb2RlTnVtYmVyLAotICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAg
ICAgIG1faml0LmJyYW5jaElmTm90TnVtYmVyKGdwcikpOwogI2Vsc2UKKyAgICBzdGF0aWNfYXNz
ZXJ0KEpTVmFsdWU6OkludDMyVGFnID49IEpTVmFsdWU6Okxvd2VzdFRhZywgIkludDMyVGFnIGlz
IGluY2x1ZGVkIGluID49IEpTVmFsdWU6Okxvd2VzdFRhZyByYW5nZS4iKTsKICAgICBHUFJSZWcg
dGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHZh
bHVlLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjSW50MzJPbmx5LAotICAgICAgICBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSkpOworICAgICAgICBtX2ppdC5icmFuY2hJZkludDMyKHRhZ0dQUikpOwog
ICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCBT
cGVjQnl0ZWNvZGVOdW1iZXIsCiAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykp
KTsKQEAgLTEwMTkzLDkgKzEwMTg1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU1pc2MoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzKQogICAgICAgICByZWdzLCBlZGdlLCBT
cGVjTWlzYywKICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBy
ZWdzLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFRhZ0JpdFR5cGVPdGhlciB8
IFRhZ0JpdEJvb2wgfCBUYWdCaXRVbmRlZmluZWQpKSk7CiAjZWxzZQorICAgIHN0YXRpY19hc3Nl
cnQoSlNWYWx1ZTo6SW50MzJUYWcgPj0gSlNWYWx1ZTo6VW5kZWZpbmVkVGFnLCAiSW50MzJUYWcg
aXMgaW5jbHVkZWQgaW4gPj0gSlNWYWx1ZTo6VW5kZWZpbmVkVGFnIHJhbmdlLiIpOwogICAgIERG
R19UWVBFX0NIRUNLKAogICAgICAgICByZWdzLCBlZGdlLCB+U3BlY0ludDMyT25seSwKLSAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZWdzLnRhZ0dQUigpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOworICAgICAg
ICBtX2ppdC5icmFuY2hJZkludDMyKHJlZ3MudGFnR1BSKCkpKTsKICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgcmVncywgZWRnZSwgU3BlY01pc2MsCiAgICAgICAgIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcmVncy50YWdHUFIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSk7CkBAIC0xMTcwNSw3ICsxMTY5OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdl
dChOb2RlKiBub2RlKQogICAgIG1faml0Lm1vdmVWYWx1ZShqc1VuZGVmaW5lZCgpLCByZXN1bHRS
ZWdzKTsKICAgICBkb25lLmxpbmsoJm1faml0KTsKICNlbHNlCi0gICAgYXV0byBpc0VtcHR5ID0g
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB2YWx1ZVJlZ3MudGFnR1BSKCksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgYXV0byBpc0VtcHR5ID0g
bV9qaXQuYnJhbmNoSWZFbXB0eSh2YWx1ZVJlZ3MudGFnR1BSKCkpOwogICAgIG1faml0Lm1vdmVW
YWx1ZVJlZ3ModmFsdWVSZWdzLCByZXN1bHRSZWdzKTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5q
dW1wKCk7CiAKQEAgLTEyMjMzLDggKzEyMjI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNyZWF0ZVRoaXMoTm9kZSogbm9kZSkKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBzbG93UGF0aDsKIAotICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwKLSAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEpTRnVuY3Rpb25UeXBl
KSkpOworICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxl
ZUdQUikpOwogICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BS
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7CiAgICAgc2xv
d1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJh
cmVEYXRhR1BSKSk7CiAgICAgbV9qaXQueG9yUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgcmFyZURhdGFHUFIpOwpAQCAtMTI2MDQsMTQgKzEy
NTk2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZihOb2Rl
KiBub2RlKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkp
LCB0ZW1wR1BSKTsKLSAgICAgICAgYXV0byBoYXNNb25vUHJvdG8gPSBtX2ppdC5icmFuY2hUZXN0
NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHRlbXBHUFIpOworICAgICAgICBhdXRvIGhhc01vbm9Q
cm90byA9IG1faml0LmJyYW5jaElmTm90RW1wdHkodGVtcEdQUik7CiAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhvYmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNl
KGtub3duUG9seVByb3RvT2Zmc2V0KSksIHRlbXBHUFIpOwogICAgICAgICBoYXNNb25vUHJvdG8u
bGluaygmbV9qaXQpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUpOwogI2Vs
c2UKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7CiAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHRlbXBHUFIpOwotICAg
ICAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwor
ICAgICAgICBhdXRvIGhhc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90RW1wdHkodGVtcDJH
UFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob2JqZWN0R1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShrbm93blBvbHlQcm90b09mZnNldCkgKyBUYWdPZmZzZXQp
LCB0ZW1wMkdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhv
YmplY3RHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSArIFBh
eWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKICAgICAgICAgaGFzTW9ub1Byb3RvLmxpbmsoJm1faml0
KTsKQEAgLTEyNzk2LDEwICsxMjc4OCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBzY3JhdGNoR1BSKTsKLSAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZkVtcHR5KHNjcmF0Y2hHUFIpKTsKICNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBzY3Jh
dGNoR1BSKTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZh
bHVlVGFnKSkpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHko
c2NyYXRjaEdQUikpOwogI2VuZGlmCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEp
LCByZXN1bHRHUFIpOwogICAgICAgICBicmVhazsKQEAgLTEyODM4LDEwICsxMjgzMCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KE5vZGUqIG5vZGUp
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
RWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZkVtcHR5KHNjcmF0Y2hHUFIpKTsKICNlbHNlCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkVtcHR5KHNjcmF0Y2hHUFIpKTsKICNlbmRpZgogICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCBjOWZjMTU3MDczM2U3Nzk5YTY2M2NiZTdmZDQ3MzIzZDY3OWEzZDNj
Li45ZjEzMWQ5MTRiMWU1MDAyYjU0NjZjMTc0YTc4NzhlNmE2NzUzNGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTgwOSw3ICs4MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
KQogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1faml0LmFwcGVu
ZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5icmFuY2hJZk5vdEVtcHR5KEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CiAgICAg
ICAgIAogICAgICAgICAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHdlIG1lYW50IHRvIG1ha2Ug
YSBub3JtYWwgY2FsbC4gT29wcy4KICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihy
ZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTk4
Nyw3ICs5ODcsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMklu
dGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgICAgICBtX2dwcnMubG9j
ayh0YWdHUFIpOwogICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKICAgICAgICAgaWYg
KHR5cGUgJiB+U3BlY0ludDMyT25seSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RJbnQz
Mih0YWdHUFIpKTsKICAgICAgICAgbV9ncHJzLnVubG9jayh0YWdHUFIpOwogICAgICAgICBtX2dw
cnMucmVsZWFzZSh0YWdHUFIpOwogICAgICAgICBtX2dwcnMucmVsZWFzZShwYXlsb2FkR1BSKTsK
QEAgLTExOTcsNyArMTE5Nyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIpOwogICAgICAg
ICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0Jvb2xl
YW4pCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRh
Z0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBw
YXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCb29sZWFuKHRhZ0dQUiwgSW52YWxp
ZEdQUlJlZykpOwogCiAgICAgICAgIG1fZ3Bycy51bmxvY2sodGFnR1BSKTsKICAgICAgICAgbV9n
cHJzLnJlbGVhc2UodGFnR1BSKTsKQEAgLTIyNzIsMTggKzIyNzIsMTQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2Fk
T2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJyYW5jaDMy
KAotICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1
bHRUYWcuZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RIb2xlID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHRUYWcuZ3ByKCkpOwogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZXN1bHRUYWcuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIG5vdEhvbGUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIHJlc3VsdFRhZy5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0VGFnLmdwcigpKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigp
LCByZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTIzMTEsNyArMjMwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRh
Z1JlZyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRS
ZWcpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRhZ1JlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
RW1wdHkocmVzdWx0VGFnUmVnKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKQEAgLTIzOTMsNyAr
MjM4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKIAogICAgICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcs
IHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2
ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwg
cmVzdWx0VGFnLmdwcigpKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRG
cm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCByZXN1bHRUYWcuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVl
VGFnKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBK
U1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFRhZy5ncHIoKSkpOwog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0
b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlT
dG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3By
KCksIG5vZGUpOwpAQCAtMjQyMCw4ICsyNDE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKTsKIAogICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6
OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
LCByZXN1bHRUYWdSZWcpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaG9sZSA9IG1f
aml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVz
dWx0VGFnLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaG9sZSA9IG1faml0LmJyYW5jaElmRW1wdHkocmVz
dWx0VGFnLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNF
aWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRSZWcpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMjgwNiw3
ICsyODAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc3RvcmFnZUdQUiwgdmFsdWVQYXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGlt
ZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLAogICAgICAg
ICAgICAgICAgIHZhbHVlVGFnR1BSKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZVRh
Z0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZFbXB0eSh2YWx1
ZVRhZ0dQUik7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCB2YWx1ZVBh
eWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMudGFnKSkpOwpAQCAtMjg4NCw3ICsyODc5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgICAgIG1faml0
LnN0b3JlMzIoc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOwogCi0gICAgICAgICAgICBzZXRV
bmRlZmluZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksIHZhbHVlVGFnR1BSKSk7Cisg
ICAgICAgICAgICBzZXRVbmRlZmluZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eSh2
YWx1ZVRhZ0dQUikpOwogICAgICAgICAKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0
LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnRhZykpKTsKIApAQCAtMzAxMSw4ICszMDA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxv
YWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKHZhbHVlUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Qm9vbGVhblRhZykpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNCb29s
ZWFuID0gbV9qaXQuYnJhbmNoSWZCb29sZWFuKHZhbHVlVGFnR1BSLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVUYWdHUFIsIHJlc3VsdFRhZ0dQUik7CiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAg
ICAgaXNCb29sZWFuLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDVkYjk4NTk1MjNkNTFjMWIzZmFhYTI1
OTFhNWYxMjQ5NmU3OTk2NDkuLjc4MmQ1NWZkYjdiMjYzMzcyZDE0NzIwNjhiNGI4YWMxMzVjNThh
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcApAQCAtMzY2LDEzICszNjYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAg
ICB9IGVsc2UgewogICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQ
Uik7CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBt
X2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olplcm8sIHJlc3VsdEdQUiwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgdHdvQ2VsbHNDYXNl
ID0gbV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUik7CiAgICAgICAgIAotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVP
ckVxdWFsLCBhcmcxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0RG91YmxlID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENv
bXBpbGVyOjpOb25aZXJvLCBhcmcxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
OworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2hJZkludDMy
KGFyZzFHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0RG91YmxlID0gbV9qaXQu
YnJhbmNoSWZOdW1iZXIoYXJnMUdQUik7CiAgICAgICAgIGxlZnRPSy5saW5rKCZtX2ppdCk7Ci0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2g2NChKSVRDb21w
aWxlcjo6QWJvdmVPckVxdWFsLCBhcmcyR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCByaWdodERvdWJsZSA9IG1faml0LmJyYW5j
aFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgYXJnMkdQUiwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0
LmJyYW5jaElmSW50MzIoYXJnMkdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0
RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7CiAgICAgICAgIHJpZ2h0T0su
bGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29t
cGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0
YWtlbik7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CiAKLSAgICBKSVRDb21waWxlcjo6
SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olplcm8s
IHJlc3VsdEdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMVJlZ3Mp
OwogICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzFSZWdz
LCBJbnZhbGlkR1BSUmVnKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgp
OwogICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9
IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNo
SWZOb3RFbXB0eShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIAogICAgICAgICAv
LyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHdlIG1lYW50IHRvIG1ha2UgYSBub3JtYWwgY2FsbC4g
T29wcy4KICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwg
SklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTk1Myw3ICs5NTMsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRn
ZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
ICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0ludDMy
T25seSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
Z3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBncHIsIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdElu
dDMyKGdwcikpOwogICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0SlNJbnQzMik7CiAgICAgICAgIC8vIElmICFzdHJpY3Qgd2UncmUgZG9uZSwgcmV0dXJu
LgogICAgICAgICBpZiAoIXN0cmljdCkgewpAQCAtMjM5MCwxNCArMjM5MCwxMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1
b3VzKTsKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1f
aml0LmJyYW5jaFRlc3Q2NCgKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RIb2xlID0gbV9qaXQuYnJhbmNoSWZOb3RFbXB0eShyZXN1bHQuZ3ByKCkpOwog
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBu
b3RIb2xlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgTG9h
ZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0LmdwcigpKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlLCBub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkludDMyID8g
RGF0YUZvcm1hdEpTSW50MzIgOiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjQyMiw3ICsyNDIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwog
CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9y
YWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHRS
ZWcpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdFJlZykpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFJlZykpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwoCkBAIC0yNTA1LDcgKzI1MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNF
aWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCks
IDAsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0Lmdwcigp
KSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFs
dWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0LmdwcigpKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTMwLDcgKzI1MjksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3JhZ2U6OnZl
Y3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgIAogICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpKSwgcmVzdWx0
UmVnKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRSZWcpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWcpKTsKICAgICAKICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKQEAg
LTI2NDAsOCArMjYzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpJbnQzMikgewog
ICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZVJlZyksIGNoaWxkMywgU3BlY0ludDMyT25seSwKLSAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QmVsb3csIHZhbHVlUmVnLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RJbnQzMih2YWx1ZVJlZykpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMs
IGNoaWxkNCk7CkBAIC0zMTQyLDcgKzMxNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgLy8gbGVuZ3RoIGFuZCB0aGUgbmV3IGxl
bmd0aC4KICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoKGludDY0X3QpMCksIE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRWlnaHQpKTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q2
NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgIHNsb3dD
YXNlID0gbV9qaXQuYnJhbmNoSWZFbXB0eSh2YWx1ZUdQUik7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKApAQCAtMzE3MCw3ICszMTY4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBz
dG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgICAgICAKICAgICAgICAgICAg
IG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0b3Jh
Z2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZl
Y3Rvck9mZnNldCgpKSwgdmFsdWVHUFIpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHZhbHVlR1BSKSk7CisgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkodmFsdWVHUFIpKTsK
ICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHN0b3JhZ2VMZW5ndGhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zm
c2V0KCkpKTsKICAgICAgICAgCkBAIC0zNTMzLDcgKzM1MzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgp
KSB7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBpbnB1dCA9IG9wZXJhbmQuZ3ByKCk7Ci0gICAgICAg
ICAgICBhdXRvIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIGlucHV0KTsKKyAgICAgICAgICAgIGF1dG8gZG9uZSA9IG1faml0LmJyYW5jaElmTm90RW1w
dHkoaW5wdXQpOwogICAgICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAgICAgICAg
ZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTM1NTUsNyArMzU1Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIGNlbGxH
UFIgPSBjZWxsLmdwcigpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0VtcHR5Owog
ICAgICAgICBpZiAobV9pbnRlcnByZXRlci5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUg
JiBTcGVjRW1wdHkpCi0gICAgICAgICAgICBpc0VtcHR5ID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBjZWxsR1BSKTsKKyAgICAgICAgICAgIGlzRW1wdHkgPSBtX2pp
dC5icmFuY2hJZkVtcHR5KGNlbGxHUFIpOwogCiAgICAgICAgIGVtaXRTdHJ1Y3R1cmVDaGVjayhu
b2RlLCBjZWxsR1BSLCBJbnZhbGlkR1BSUmVnKTsKIApAQCAtMzkzMiw3ICszOTMwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBpbnB1dEdQUik7CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBhdXRvIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoOChNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGlucHV0R1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoSWZTdHJpbmcoaW5wdXRHUFIp
OwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoaW5wdXRHUFIsIHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICAgICAgbV9qaXQud2FuZ3NJbnQ2NEhhc2gocmVzdWx0R1BSLCB0ZW1wR1BSKTsKICAg
ICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwpAQCAtMzk3Niw3ICszOTc0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgc3RyYWlnaHRIYXNoLmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoaW5wdXRHUFIpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwotICAgICAgICBzdHJhaWdodEhhc2guYXBwZW5kKG1faml0
LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhpbnB1dEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihT
dHJpbmdUeXBlKSkpOworICAgICAgICBzdHJhaWdodEhhc2guYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90U3RyaW5nKGlucHV0R1BSKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoaW5wdXRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCByZXN1bHRH
UFIpOwogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLCBy
ZXN1bHRHUFIpOwpAQCAtNDA2NywxMCArNDA2NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGJ1Y2tldEdQ
Uiwga2V5R1BSKSk7CiAgICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSkpOwotICAgICAgICAgICAgbG9vcEFyb3Vu
ZC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7Ci0gICAgICAgICAgICBsb29w
QXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhrZXlHUFIsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgICAgIGxv
b3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKGJ1Y2tldEdQUikpOworICAg
ICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcoa2V5R1BS
KSk7CiAgICAgICAgICAgICAvLyBUaGV5J3JlIGJvdGggc3RyaW5ncy4KICAgICAgICAgICAgIHNs
b3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQwNzgsOCArNDA3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1f
aml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgYnVja2V0R1BSLCBrZXlHUFIpKTsg
Ly8gVGhleSdyZSBkZWZpbml0ZWx5IHRoZSBzYW1lIHZhbHVlLCB3ZSBmb3VuZCB0aGUgYnVja2V0
IHdlIHdlcmUgbG9va2luZyBmb3IhCiAgICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSkpOwotICAgICAgICAgICAg
bG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0g
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7CisgICAgICAg
ICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhidWNrZXRHUFIp
KTsKICAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDA5MCwxMSArNDA4NSw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIC8vIGZpcnN0IGlz
IGEgY2VsbCBoZXJlLgogICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RDZWxsKEpTVmFsdWVSZWdzKGtleUdQUikpKTsKICAgICAgICAgICAgIC8vIEJvdGggYXJl
IGNlbGxzIGhlcmUuCi0gICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2g4
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhidWNrZXRHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90U3RyaW5nKGJ1Y2tldEdQUikpOwogICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGlz
IGEgc3RyaW5nIGhlcmUuCi0gICAgICAgICAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2g4KEpJVENvbXBpbGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhrZXlHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmU3RyaW5nKGtleUdQUikpOwogICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGlzIGEg
c3RyaW5nLCBidXQgdGhlIHNlY29uZCBpcyBub3QsIHdlIGNvbnRpbnVlIHRvIGxvb3AgYXJvdW5k
LgogICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDcwMCw4ICs0NjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29u
dmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BSUmVnIHJlc3VsdEdQUikKICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCB2YWx1ZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgCi0gICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90SW50MzIgPQotICAgICAgICBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6
QmVsb3csIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdEludDMyID0gbV9qaXQuYnJhbmNoSWZOb3RJbnQzMih2YWx1ZUdQ
Uik7CiAgICAgCiAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIodmFsdWVHUFIsIHJlc3VsdEdQ
Uik7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyMWYzMGFiZTAw
NjBmZWQyYmUzYzk1NzllYWE2NjhkOTY5MzkyMDI3Li42NDExNzZjODhiZDU0YzhjYTFmOTkxOGNl
MTMyOTY4YzRjMTFjZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC0yOTUzLDcgKzI5NTMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGlu
cHV0ID0gIHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZG9uZSA9IGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBpbnB1dCk7
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuYnJhbmNoSWZO
b3RFbXB0eShpbnB1dCk7CiAgICAgICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKICAgICAg
ICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGVjZDE4ODVkMWNjNzcwZDlm
ZDJmYWEwMGRkNTBmZGU4ZGEyMWE3MTAuLjU2MjUxOTkxYWM5MTE1NGQ2OWM3N2YxNGJhZjZlOWZj
M2JiN2QwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aApAQCAtNzA3LDYgKzcwNyw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICNlbmRpZgogICAg
IH0KKwogICAgIEp1bXAgYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCiAgICAgewogI2lmIFVTRShKU1ZBTFVF
NjQpCkBAIC03NjAsMzQgKzc2MSw0NSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMg
TWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogICAgIAotICAgIEp1bXAgYnJhbmNoSWZJ
bnQzMihKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVn
aXN0ZXJzKQorICAgIEp1bXAgYnJhbmNoSWZJbnQzMihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVncy5n
cHIoKSwgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBUcnVzdGVkSW1t
NjQoVGFnVHlwZU51bWJlcikpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwot
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGdw
ciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAjZW5kaWYKICAgICB9CiAKKyAg
ICBKdW1wIGJyYW5jaElmSW50MzIoSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBt
b2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaElmSW50MzIocmVncy5ncHIoKSwgbW9kZSk7CisjZWxzZQorICAgICAg
ICByZXR1cm4gYnJhbmNoSWZJbnQzMihyZWdzLnRhZ0dQUigpLCBtb2RlKTsKKyNlbmRpZgorICAg
IH0KKwogICAgIEp1bXAgYnJhbmNoSWZOb3RJbnQzMihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQogICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KEJlbG93LCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAg
ICAgICAgIHJldHVybiBicmFuY2g2NChCZWxvdywgZ3ByLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51
bWJlcikpOwotICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZykpOwogI2VuZGlmCisgICAgfQogCiAgICAgSnVtcCBicmFuY2hJZk5vdEludDMyKEpT
VmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMp
CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHJldHVybiBicmFuY2hJZk5vdElu
dDMyKHJlZ3MuZ3ByKCksIG1vZGUpOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUp
OwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RJ
bnQzMihyZWdzLnRhZ0dQUigpLCBtb2RlKTsKICNlbmRpZgogICAgIH0KIApAQCAtNzk5LDE3ICs4
MTEsMTggQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaElmTnVtYmVyKHJlZ3MuZ3ByKCksIG1vZGUpOwogI2Vsc2UK
ICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdzLnRhZ0dQ
UigpLCB0ZW1wR1BSKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEJlbG93LCB0ZW1wR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnICsgMSkpOwogI2VuZGlmCiAgICAgfQogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKdW1wIGJyYW5jaElmTnVtYmVyKEdQUlJlZyByZWcsIFRh
Z1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgSnVtcCBicmFuY2hJ
Zk51bWJlcihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0
ZXJzKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJl
ZywgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hUZXN0NjQoTm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGdwciwgVHJ1c3RlZEltbTY0KFRh
Z1R5cGVOdW1iZXIpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTgyNywxMSArODQwLDExIEBA
IGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgfQog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKdW1wIGJyYW5jaElmTm90TnVtYmVyKEdQUlJlZyBy
ZWcsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgSnVtcCBi
cmFuY2hJZk5vdE51bWJlcihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZl
VGFnUmVnaXN0ZXJzKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVy
cykKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVnLCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8s
IHJlZywgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0NjQoWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIGdwciwgVHJ1c3RlZEltbTY0KFRhZ1R5
cGVOdW1iZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtODQ4LDI4ICs4NjEsNTAgQEAgY2xhc3Mg
QXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAKICAgICAv
LyBOb3RlIHRoYXQgdGhlIHRlbXBHUFIgaXMgbm90IHVzZWQgaW4gMzItYml0IG1vZGUuCi0gICAg
SnVtcCBicmFuY2hJZkJvb2xlYW4oSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisg
ICAgSnVtcCBicmFuY2hJZkJvb2xlYW4oR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCiAgICAg
ewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7
CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3Zl
KGdwciwgdGVtcEdQUik7CiAgICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxp
bnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDY0KFplcm8sIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkp
KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wR1BSKTsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKEVxdWFsLCByZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9v
bGVhblRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKTsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIE5vdGUg
dGhhdCB0aGUgdGVtcEdQUiBpcyBub3QgdXNlZCBpbiAzMi1iaXQgbW9kZS4KKyAgICBKdW1wIGJy
YW5jaElmQm9vbGVhbihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmQm9vbGVhbihyZWdzLmdw
cigpLCB0ZW1wR1BSKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hJZkJvb2xlYW4ocmVn
cy50YWdHUFIoKSwgdGVtcEdQUik7CiAjZW5kaWYKICAgICB9CiAgICAgCiAgICAgLy8gTm90ZSB0
aGF0IHRoZSB0ZW1wR1BSIGlzIG5vdCB1c2VkIGluIDMyLWJpdCBtb2RlLgotICAgIEp1bXAgYnJh
bmNoSWZOb3RCb29sZWFuKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQorICAgIEp1
bXAgYnJhbmNoSWZOb3RCb29sZWFuKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQogICAgIHsK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBtb3ZlKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOwor
ICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShn
cHIsIHRlbXBHUFIpOwogICAgICAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oVmFsdWVGYWxzZSkpLCB0ZW1wR1BSKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2
NChOb25aZXJvLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEp
KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odGVtcEdQUik7Ci0gICAgICAgIHJldHVy
biBicmFuY2gzMihOb3RFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkJvb2xlYW5UYWcpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCBncHIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICAv
LyBOb3RlIHRoYXQgdGhlIHRlbXBHUFIgaXMgbm90IHVzZWQgaW4gMzItYml0IG1vZGUuCisgICAg
SnVtcCBicmFuY2hJZk5vdEJvb2xlYW4oSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIp
CisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hJZk5vdEJv
b2xlYW4ocmVncy5ncHIoKSwgdGVtcEdQUik7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlmCiAgICAgfQogICAg
IApAQCAtOTA0LDEyICs5MzksNDkgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICBK
dW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICAKKyAgICBKdW1wIGJyYW5j
aElmRW1wdHkoR1BSUmVnIGdwcikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7
CisjZW5kaWYKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaElmRW1wdHkoSlNWYWx1ZVJlZ3MgcmVn
cykKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2
NChaZXJvLCByZWdzLmdwcigpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmRW1wdHkocmVncy5n
cHIoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoSWZFbXB0eShyZWdzLnRhZ0dQUigp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZOb3RFbXB0eShHUFJSZWcgZ3By
KQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KE5vblplcm8sIGdwcik7CiAjZWxzZQotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIHJl
Z3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAg
ICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
RW1wdHlWYWx1ZVRhZykpOworI2VuZGlmCisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZk5vdEVt
cHR5KEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IHJldHVybiBicmFuY2hJZk5vdEVtcHR5KHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIGJyYW5jaElmTm90RW1wdHkocmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisKKyAg
ICAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXNwZWN0IE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQuCisgICAgSnVtcCBicmFuY2hJZlVuZGVmaW5lZChHUFJSZWcgZ3ByKQorICAg
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIGdw
ciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOworI2Vsc2UK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpVbmRlZmluZWRUYWcpKTsKICNlbmRpZgogICAgIH0KIApAQCAtOTE3LDE4ICs5ODksNjUgQEAg
Y2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICBKdW1w
IGJyYW5jaElmVW5kZWZpbmVkKEpTVmFsdWVSZWdzIHJlZ3MpCiAgICAgewogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgcmVncy5ncHIoKSwgVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOworICAgICAgICByZXR1cm4g
YnJhbmNoSWZVbmRlZmluZWQocmVncy5ncHIoKSk7CiAjZWxzZQotICAgICAgICByZXR1cm4gYnJh
bmNoMzIoRXF1YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmVW5kZWZpbmVkKHJlZ3MudGFnR1BSKCkp
OworI2VuZGlmCisgICAgfQorCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBu
b3QgcmVzcGVjdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLgorICAgIEp1bXAgYnJhbmNoSWZOb3RV
bmRlZmluZWQoR1BSUmVnIGdwcikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2gzMihOb3RF
cXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXNwZWN0
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuCisgICAgSnVtcCBicmFuY2hJZk5vdFVuZGVmaW5lZChK
U1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1
cm4gYnJhbmNoSWZOb3RVbmRlZmluZWQocmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICByZXR1
cm4gYnJhbmNoSWZOb3RVbmRlZmluZWQocmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaElmTnVsbChHUFJSZWcgZ3ByKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2gz
MihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOwogI2VuZGlmCiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hJZk51bGwoSlNWYWx1ZVJlZ3MgcmVncykKICAgICB7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCByZWdzLmdw
cigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoSWZOdWxsKHJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJy
YW5jaElmTnVsbChyZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgYnJh
bmNoSWZOb3ROdWxsKEdQUlJlZyBncHIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVx
dWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaElmTm90TnVsbChKU1ZhbHVlUmVncyByZWdzKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3ROdWxsKHJlZ3MuZ3By
KCkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCByZWdzLnRhZ0dQUigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOworICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3ROdWxsKHJlZ3MudGFnR1BSKCkpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAppbmRleCBhZWI2YWQ5NmNmNThjOWIyZWI0YjRhODYyZjJkNGU2ZWJlNGE5YjVmLi5j
YjZkNDcxNzJjNjA1ODM3YzVjYzY2MGZmNjcxYjgzNWJmYTg5MTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKQEAgLTMyMyw4ICszMjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgZW1pdExvYWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUp
OwogICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0
ZXJJRCB2YWx1ZSk7Ci0gICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxPYmplY3QoUmVnaXN0ZXJJ
RCBjZWxsUmVnKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3Rl
cklEIGNlbGxSZWcpOwogCiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9kZSB7IFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3VsZEZpbHRlclZhbHVlLCBT
aG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFsdWUgcmVnaXN0ZXIgaW4g
d3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCByZWdpc3RlcnMKQEAgLTQ0
MSwxMyArNDM5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHBheWxvYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgSnVtcCBlbWl0
SnVtcElmSlNDZWxsKFJlZ2lzdGVySUQpOwogICAgICAgICBKdW1wIGVtaXRKdW1wSWZCb3RoSlND
ZWxscyhSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBl
bWl0SnVtcFNsb3dDYXNlSWZKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklELCBpbnQgVlJlZyk7Ci0gICAgICAgIEp1bXAg
ZW1pdEp1bXBJZkludChSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90SW50
KFJlZ2lzdGVySUQpOwogICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCwg
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgUGF0Y2hhYmxlSnVtcCBl
bWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDM3NjFjOWJjYjY3NmY2YmE1ODViOTg3YTBkZjAz
NTNjOGU2NDQ1YjUuLjJiM2ZlOTBjY2VjZmE5YTM2MDA4ZDAwNGM0OWQwOGM2ODMyODg3ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtMjU0LDcg
KzI1NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCBpbnQgb3Ax
LCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0CiAKICAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRDaGFyKG9wMSkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJl
Z1QwKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwor
ICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDApKTsKICAgICAgICAgSnVt
cExpc3QgZmFpbHVyZXM7CiAgICAgICAgIGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKHJlZ1QwLCBy
ZWdUMCwgZmFpbHVyZXMpOwogICAgICAgICBhZGRTbG93Q2FzZShmYWlsdXJlcyk7CkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQsIGludCBv
cDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgUmVsYXQKICAgICB9CiAgICAgaWYgKGlzT3Bl
cmFuZENvbnN0YW50Q2hhcihvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AxLCByZWdUMCk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKSk7CiAgICAg
ICAgIEp1bXBMaXN0IGZhaWx1cmVzOwogICAgICAgICBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhy
ZWdUMCwgcmVnVDAsIGZhaWx1cmVzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZmFpbHVyZXMpOwpA
QCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQg
b3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpCiAgICAgICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICAgICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludCgp
KSB7Ci0gICAgICAgICAgICBKdW1wIGZhaWwxID0gZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCk7
CisgICAgICAgICAgICBKdW1wIGZhaWwxID0gYnJhbmNoSWZOb3ROdW1iZXIocmVnVDApOwogICAg
ICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAg
ICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAKQEAgLTM4MCw3ICszODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWdu
ZWQgdGFyZ2V0LCBEb3VibGVDb25kaQogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
CiAgICAgICAgIGlmIChzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkgewotICAgICAgICAgICAgSnVt
cCBmYWlsMSA9IGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDEpOworICAgICAgICAgICAgSnVtcCBm
YWlsMSA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QxKTsKICAgICAgICAgICAgIGFkZDY0KHRhZ1R5
cGVOdW1iZXJSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVn
VDEsIGZwUmVnVDEpOwogCkBAIC00MDUsOSArNDA1LDkgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93KGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgRG91YmxlQ29u
ZGkKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIExIUyBpcyBub3QgSW50LgogCiAgICAgaWYg
KHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7Ci0gICAgICAgIEp1bXAgZmFpbDEgPSBlbWl0SnVt
cElmTm90TnVtYmVyKHJlZ1QwKTsKLSAgICAgICAgSnVtcCBmYWlsMiA9IGVtaXRKdW1wSWZOb3RO
dW1iZXIocmVnVDEpOwotICAgICAgICBKdW1wIGZhaWwzID0gZW1pdEp1bXBJZkludChyZWdUMSk7
CisgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMCk7CisgICAgICAg
IEp1bXAgZmFpbDIgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMSk7CisgICAgICAgIEp1bXAgZmFp
bDMgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJl
Z2lzdGVyLCByZWdUMCk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVn
VDEpOwogICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKaW5kZXggODI0NTcw
MmZjNGUzY2RkNjYyNTFhMTc0NzkwM2IzYjEzYmIyZDc3Mi4uZDNlYmRiNjdjNTIxY2I2OTlmMzdl
MDk4OTIwN2E0ZTIxZTc5Y2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYzMyXzY0LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9j
b21wYXJlQW5kSnVtcChPcGNvZGVJRCBvcGNvZGUsIGludCBvcDEsIGludCBvcDIsIHVuc2lnbmVk
IHRhcmdldAogICAgIC8vIENoYXJhY3RlciBsZXNzLgogICAgIGlmIChpc09wZXJhbmRDb25zdGFu
dENoYXIob3AxKSkgewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QxLCByZWdUMCk7Ci0gICAg
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChy
ZWdUMSkpOwogICAgICAgICBKdW1wTGlzdCBmYWlsdXJlczsKICAgICAgICAgZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcocmVnVDAsIHJlZ1QwLCBmYWlsdXJlcyk7CiAgICAgICAgIGFkZFNsb3dDYXNl
KGZhaWx1cmVzKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1
bXAoT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgb3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQKICAg
ICB9CiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDIpKSB7CiAgICAgICAgIGVtaXRM
b2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKSk7CiAgICAgICAgIEp1bXBMaXN0IGZh
aWx1cmVzOwogICAgICAgICBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhyZWdUMCwgcmVnVDAsIGZh
aWx1cmVzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZmFpbHVyZXMpOwpAQCAtNjcsMTYgKzY3LDE2
IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlEIG9wY29kZSwgaW50IG9w
MSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0CiAgICAgfSAKICAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRJbnQob3AxKSkgewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7Ci0g
ICAgICAgIG5vdEludDMyT3AyLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgbm90SW50MzJPcDIuYXBwZW5k
KGJyYW5jaElmTm90SW50MzIocmVnVDMpKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb21t
dXRlKGNvbmRpdGlvbiksIHJlZ1QyLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AxKS5hc0lu
dDMyKCkpKSwgdGFyZ2V0KTsKICAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9w
MikpIHsKICAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwotICAgICAgICBub3RJ
bnQzMk9wMS5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgIG5vdEludDMyT3AxLmFwcGVuZChicmFuY2hJZk5v
dEludDMyKHJlZ1QxKSk7CiAgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9uLCByZWdU
MCwgSW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpKSksIHRhcmdldCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZW1pdExvYWQyKG9wMSwgcmVnVDEsIHJlZ1QwLCBvcDIsIHJl
Z1QzLCByZWdUMik7Ci0gICAgICAgIG5vdEludDMyT3AxLmFwcGVuZChicmFuY2gzMihOb3RFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLSAgICAgICAgbm90
SW50MzJPcDIuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkludDMyVGFnKSkpOworICAgICAgICBub3RJbnQzMk9wMS5hcHBlbmQoYnJhbmNoSWZO
b3RJbnQzMihyZWdUMSkpOworICAgICAgICBub3RJbnQzMk9wMi5hcHBlbmQoYnJhbmNoSWZOb3RJ
bnQzMihyZWdUMykpOwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwgcmVnVDAs
IHJlZ1QyKSwgdGFyZ2V0KTsKICAgICB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF91bnNpZ25lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIAog
ICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKICAgICAKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
KTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEludDMyKHJlZ1QxKSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoTGVzc1RoYW4sIHJlZ1QwLCBUcnVzdGVkSW1tMzIoMCkpKTsKICAgICBl
bWl0U3RvcmVJbnQzMihyZXN1bHQsIHJlZ1QwLCByZXN1bHQgPT0gb3AxKTsKIH0KQEAgLTE1MCw3
ICsxNTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogICAgIGVtaXRMb2FkKHNyY0RzdCwgcmVnVDEsIHJlZ1QwKTsKIAotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SW50MzIocmVnVDEpKTsK
ICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVyZmxvdywgVHJ1c3RlZEltbTMyKDEpLCBy
ZWdUMCkpOwogICAgIGVtaXRTdG9yZUludDMyKHNyY0RzdCwgcmVnVDAsIHRydWUpOwogfQpAQCAt
MTYxLDcgKzE2MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQoc3JjRHN0LCByZWdUMSwgcmVnVDApOwogCi0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RJbnQzMihyZWdU
MSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN1YjMyKE92ZXJmbG93LCBUcnVzdGVkSW1tMzIo
MSksIHJlZ1QwKSk7CiAgICAgZW1pdFN0b3JlSW50MzIoc3JjRHN0LCByZWdUMCwgdHJ1ZSk7CiB9
CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChPcGNvZGVJ
RCBvcGNvZGVJRCwgaW50IGRzdCwgaW50IG9wMSwgaW50IG9wMiwgT3BlcmEKICAgICAgICAgSnVt
cCBkb3VibGVPcDIgPSBicmFuY2gzMihCZWxvdywgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpMb3dlc3RUYWcpKTsKIAogICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJ
c051bWJlcigpKQotICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgICAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk5vdEludDMyKHJlZ1QzKSk7CiAKICAgICAgICAgY29udmVydEludDMy
VG9Eb3VibGUocmVnVDIsIGZwUmVnVDApOwogICAgICAgICBKdW1wIGRvVGhlTWF0aCA9IGp1bXAo
KTsKQEAgLTMxMyw4ICszMTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBBU1NFUlQocmVnVDMgPT0gWDg2UmVnaXN0ZXJzOjpl
YngpOwogCiAgICAgZW1pdExvYWQyKG9wMSwgcmVnVDAsIHJlZ1QzLCBvcDIsIHJlZ1QxLCByZWdU
Mik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RJbnQzMihyZWdUMSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Tm90SW50MzIocmVnVDApKTsKIAogICAgIG1vdmUocmVnVDMsIHJlZ1QwKTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2hUZXN0MzIoWmVybywgcmVnVDIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCmluZGV4IDFkYWE3YmMxMzIyZjUzMjJhOWZkMTc5OTNhNzkzYTBjZDQyZmFiMmUu
LjUwYWI0OGIxNWFmNmQ1NmNkMWVkMGMzZGYyNTk2ZDI1MjhjMjE2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgSklUOjpjb21w
aWxlQ2FsbEV2YWwoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25DYWxsRXZhbCwgcmVnVDEpOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoNjQo
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogCiAgICAgc2FtcGxlQ29k
ZUJsb2NrKG1fY29kZUJsb2NrKTsKICAgICAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCB1bnNpZ25lZCBjYQogCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihy
ZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDAp
LCByZWdUMCk7Ci0gICAgICAgICAgICBKdW1wIGRvbmUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKKyAgICAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgcmVnVDApOwogICAgICAgICAgICAgc3RvcmUzMihyZWdUMCwgaW5zdHJ1Y3Rpb25bT1BD
T0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGZkYzQyMTc1NzliMTA5MTcz
MzQyMWFlZTYyNDBmY2ZjNTVhZWNlYzIuLmQxZWZiZTk3ZDU1N2IzMDExYjY0ZWI4NWI3OTJhMGVl
MDg2ZTA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
QEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsKEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbEV2YWwsIHJl
Z1QxKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZF
bXB0eShyZWdUMSkpOwogCiAgICAgc2FtcGxlQ29kZUJsb2NrKG1fY29kZUJsb2NrKTsKICAgICAK
QEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgICAgICAKICAg
ICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7
CiAgICAgICAgICAgICBlbWl0TG9hZChyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1l
bnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCwgcmVnVDEpOwotICAgICAgICAgICAgSnVt
cCBkb25lID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpOworICAgICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1Qw
KTsKICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDEpOwogICAgICAgICAgICAgc3RvcmVQdHIocmVnVDEsIGluc3RydWN0
aW9uW09QQ09ERV9MRU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09m
TGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgICAgIGRvbmUubGluayh0aGlzKTsKQEAg
LTI3NSw3ICsyNzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCiAg
ICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKSk7CiAKICAgICBEYXRhTGFiZWxQ
dHIgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjazsKICAgICBKdW1wIHNsb3dDYXNlID0gYnJh
bmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFsLCByZWdUMCwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25D
aGVjaywgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCmluZGV4IDE3MDkwMDcxZTQ4NmJjY2E5MjRkNDNkZTI3MDJhMTY5OTZiMjM5NDcu
LjlhNGI3MzdjODRhYWRlNmRhMzdjMzcxZDg1NjdlZWM5ZWY1MDYwNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yNTIsMTYgKzI1Miw2IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG90KEp1bXAganVtcCwgaW50IHJlbGF0aXZlT2Zm
c2V0KQogICAgIGp1bXAubGlua1RvKG1fbGFiZWxzW21fYnl0ZWNvZGVPZmZzZXQgKyByZWxhdGl2
ZU9mZnNldF0sIHRoaXMpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRK
dW1wSWZDZWxsT2JqZWN0KFJlZ2lzdGVySUQgY2VsbFJlZykKLXsKLSAgICByZXR1cm4gYnJhbmNo
OChBYm92ZU9yRXF1YWwsIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSklU
OjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVnKQot
ewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKGNlbGxSZWcsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOwotfQotCiAjaWYg
RU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2V0U2FtcGxp
bmdGbGFnKGludDMyX3QgZmxhZykKIHsKQEAgLTU1Niw3ICs1NDYsNyBAQCBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgs
IFJlZ2lzdGVySQogICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3Rlcklu
ZGV4KHZpcnR1YWxSZWdpc3RlckluZGV4KSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCB0YWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHRhZykpOwogICAgIH0KIH0KIApAQCAtNjQ4LDI2
ICs2MzgsMjEgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihpbnQg
ZHN0KQogICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGRzdCAqIHNpemVvZihSZWdpc3Rlcikp
KTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmSlNDZWxsKFJl
Z2lzdGVySUQgcmVnKQotewotICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVnLCB0YWdN
YXNrUmVnaXN0ZXIpOwotfQotCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1w
SWZCb3RoSlNDZWxscyhSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKQogewogICAgIG1vdmUocmVnMSwgc2NyYXRjaCk7CiAgICAgb3I2NChyZWcyLCBz
Y3JhdGNoKTsKLSAgICByZXR1cm4gZW1pdEp1bXBJZkpTQ2VsbChzY3JhdGNoKTsKKyAgICByZXR1
cm4gYnJhbmNoSWZDZWxsKHNjcmF0Y2gpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0SnVtcFNsb3dDYXNlSWZKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgYWRkU2xvd0Nh
c2UoZW1pdEp1bXBJZkpTQ2VsbChyZWcpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwo
cmVnKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChSZWdpc3RlcklEIHJlZykKIHsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90
SlNDZWxsKHJlZykpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWcpKTsKIH0K
IAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJl
Z2lzdGVySUQgcmVnLCBpbnQgdlJlZykKQEAgLTY5NCwxNiArNjc5LDYgQEAgaW5saW5lIHZvaWQg
SklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUp
CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGFkZHJlc3NGb3IoaW5kZXgpLCB2YWx1ZSk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkludChSZWdpc3Rl
cklEIHJlZykKLXsKLSAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWcsIHRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7Ci19Ci0KLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1p
dEp1bXBJZk5vdEludChSZWdpc3RlcklEIHJlZykKLXsKLSAgICByZXR1cm4gYnJhbmNoNjQoQmVs
b3csIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLX0KLQogQUxXQVlTX0lOTElORSBKSVQ6
OlBhdGNoYWJsZUp1bXAgSklUOjplbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KFJlZ2lzdGVySUQg
cmVnKQogewogICAgIHJldHVybiBwYXRjaGFibGVCcmFuY2g2NChCZWxvdywgcmVnLCB0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOwpAQCAtNzEzLDEyICs2ODgsMTIgQEAgQUxXQVlTX0lOTElORSBKSVQ6
Okp1bXAgSklUOjplbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCBy
ZWcyLAogewogICAgIG1vdmUocmVnMSwgc2NyYXRjaCk7CiAgICAgYW5kNjQocmVnMiwgc2NyYXRj
aCk7Ci0gICAgcmV0dXJuIGVtaXRKdW1wSWZOb3RJbnQoc2NyYXRjaCk7CisgICAgcmV0dXJuIGJy
YW5jaElmTm90SW50MzIoc2NyYXRjaCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklEIHJlZykKIHsKLSAgICBhZGRTbG93Q2Fz
ZShlbWl0SnVtcElmTm90SW50KHJlZykpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SW50
MzIocmVnKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEludChSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJRCBzY3Jh
dGNoKQpAQCAtNzI4LDcgKzcwMyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnCiAKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcihSZWdpc3RlcklE
IHJlZykKIHsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90TnVtYmVyKHJlZykpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmTm90TnVtYmVyKHJlZykpOwogfQogCiBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0VGFnQm9vbChSZWdpc3RlcklEIHJlZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDMyOTZlMGI2NzVjY2YzYmU5YzczYzE4ZjU0MzA5
MTFhZjUwMmVkMWYuLmY1YjFjZTNkZTBiZjk3YzAxMDUwYTYxMDI3NWFhMWE3OGFmMDJkMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTUyLDcgKzE1Miw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsK
IAogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdAotICAgIGFkZFNsb3dD
YXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoSWZOb3RPYmplY3QocmVnVDEpKTsKICAgICAKICAgICAvLyBPcHRpbWlzdGljYWxseSBsb2Fk
IHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAgICAgLy8gSW5pdGlhbGx5LCBy
ZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3RpbGwgY29udGFpbnMgdmFsdWUu
CkBAIC0xNjAsMTggKzE2MCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgTGFiZWwgbG9vcCh0aGlz
KTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSkp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmVHlwZShyZWdUMiwgUHJveHlPYmplY3RUeXBlKSk7
CiAKICAgICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdCBpbiByZWdUMi4gIElm
IHRoaXMgaXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBp
ZiB3ZSd2ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBvZiB0aGUgbG9vcCwg
aWYgbm90IGdvIGFnYWluLgogICAgIGVtaXRMb2FkU3RydWN0dXJlKCp2bSgpLCByZWdUMiwgcmVn
VDQsIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpwcm90b3R5
cGVPZmZzZXQoKSksIHJlZ1Q0KTsKLSAgICBhdXRvIGhhc01vbm9Qcm90byA9IGJyYW5jaFRlc3Q2
NChOb25aZXJvLCByZWdUNCk7CisgICAgYXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2hJZk5vdEVt
cHR5KHJlZ1Q0KTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpKSwgcmVnVDQpOwogICAgIGhhc01vbm9Qcm90by5saW5r
KHRoaXMpOwogICAgIG1vdmUocmVnVDQsIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBi
cmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7Ci0gICAgZW1pdEp1bXBJZkpTQ2VsbChyZWdU
MikubGlua1RvKGxvb3AsIHRoaXMpOworICAgIGJyYW5jaElmQ2VsbChyZWdUMikubGlua1RvKGxv
b3AsIHRoaXMpOwogCiAgICAgLy8gV2UgZ2V0IGhlcmUgZWl0aGVyIGJ5IGRyb3BwaW5nIG91dCBv
ZiB0aGUgbG9vcCwgb3IgaWYgdmFsdWUgd2FzIG5vdCBhbiBPYmplY3QuICBSZXN1bHQgaXMgZmFs
c2UuCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxz
ZSkpKSwgcmVnVDApOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3Vu
ZGVmaW5lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCB2YWx1ZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgIEp1bXAgaXNDZWxsID0gZW1pdEp1bXBJZkpT
Q2VsbChyZWdUMCk7CisgICAgSnVtcCBpc0NlbGwgPSBicmFuY2hJZkNlbGwocmVnVDApOwogCiAg
ICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwg
cmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGludCB0eXBlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKLSAgICBKdW1wIGlz
Tm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIEp1bXAgaXNOb3RDZWxs
ID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUp
LCByZWdUMCk7CiAgICAgZW1pdFRhZ0Jvb2wocmVnVDApOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2lzX29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Ci0gICAgSnVtcCBpc05vdENl
bGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKKyAgICBKdW1wIGlzTm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbChyZWdUMCk7CiAKICAgICBjb21wYXJlOChBYm92ZU9yRXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2Jq
ZWN0VHlwZSksIHJlZ1QwKTsKICAgICBlbWl0VGFnQm9vbChyZWdUMCk7CkBAIC0zMTEsOCArMzEx
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwog
ICAgIAotICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICBh
ZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE9iamVjdChyZWdUMCkpOworICAgIEp1bXAgaXNJbW0g
PSBicmFuY2hJZk5vdENlbGwocmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmT2JqZWN0
KHJlZ1QwKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpA
QCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCBy
ZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDAp
OworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAg
Ly8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgogICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwpA
QCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywg
cmVnVDApOwotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1Qw
KTsKKyAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAg
IC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KICAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKQEAgLTQ4MywxNSArNDgzLDE1
IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5CiAgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJl
IGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CiAgICAg
b3I2NChyZWdUMSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZKU0NlbGwocmVn
VDIpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKICAgICAKICAgICAv
LyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4g
aW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdAogICAgIC8vIGlmIGl0J3MgYSBk
b3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBlbWl0SnVtcElmSW50KHJlZ1QwKTsKLSAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmTnVtYmVyKHJlZ1QwKSk7CisgICAgSnVtcCBsZWZ0T0sgPSBicmFu
Y2hJZkludDMyKHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMCkp
OwogICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGVtaXRKdW1wSWZJ
bnQocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOdW1iZXIocmVnVDEpKTsKKyAg
ICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk51bWJlcihyZWdUMSkpOwogICAgIHJpZ2h0T0subGluayh0aGlzKTsKIAogICAgIGlm
ICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCkBAIC01MjQsMTUgKzUy
NCwxNSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdAogICAgIC8vIEp1bXAgc2xvdyBpZiBib3Ro
IGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwog
ICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmSlNDZWxs
KHJlZ1QyKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CiAKICAgICAv
LyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4g
aW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdAogICAgIC8vIGlmIGl0J3MgYSBk
b3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBlbWl0SnVtcElmSW50KHJlZ1QwKTsKLSAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmTnVtYmVyKHJlZ1QwKSk7CisgICAgSnVtcCBsZWZ0T0sgPSBicmFu
Y2hJZkludDMyKHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMCkp
OwogICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGVtaXRKdW1wSWZJ
bnQocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOdW1iZXIocmVnVDEpKTsKKyAg
ICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk51bWJlcihyZWdUMSkpOwogICAgIHJpZ2h0T0subGluayh0aGlzKTsKIAogICAgIGlm
ICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCkBAIC01NzUsNyArNTc1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogICAgIAot
ICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDApKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hJZk5vdE51bWJlcihyZWdUMCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZSgpOwogICAgIGlmIChzcmNWUmVnICE9IGRzdFZSZWcpCkBAIC01ODcsOCArNTg3LDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCi0gICAgYWRkU2xv
d0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5v
dENlbGwocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFN0cmluZyhyZWdUMCkp
OwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKIH0KQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19vYmpl
Y3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgc3JjVlJlZyA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihzcmNWUmVnLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChCZWxvdywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMCkpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKCk7CiAgICAgaWYgKHNyY1ZSZWcgIT0gZHN0VlJlZykKQEAgLTcyOCw3ICs3MjgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgaW50IHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0
ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGludCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwotICAgIEp1bXAgaXNJbW1lZGlhdGUg
PSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKIAotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90VHlwZShyZWdUMSwgRmluYWxPYmplY3RUeXBlKSk7CiAgICAgbG9hZFB0cihj
YWNoZWRTdHJ1Y3R1cmUsIHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFpl
cm8sIHJlZ1QyKSk7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFJl
Z2lzdGVySUQgc2NyYXRjaFJlZyA9IHJlZ1QzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjYWxsZWUsIGNhbGxlZVJlZyk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhjYWxsZWVSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoSlNGdW5jdGlvblR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RGdW5j
dGlvbihjYWxsZWVSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwogICAgIHhvclB0cihUcnVzdGVkSW1t
UHRyKEpTRnVuY3Rpb25Qb2lzb246OmtleSgpKSwgcmFyZURhdGFSZWcpOwpAQCAtODYyLDcgKzg2
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hU
ZXN0NjQoWmVybywgcmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5KHJlZ1Qw
KSk7CiB9CiAKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhw
ckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCBy
ZWdUMCk7Ci0gICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAs
IFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyAgICBub3RV
bmRlZmluZWRTY29wZSA9IGJyYW5jaElmTm90VW5kZWZpbmVkKHJlZ1QwKTsKICAgICBzdG9yZTY0
KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNh
bGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAjZWxzZQogICAgIGVt
aXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CkBA
IC0xMzMzLDI1ICsxMzMzLDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSnVtcExpc3QganVtcFRvRW5kOwog
Ci0gICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hUZXN0NjQoWmVybywgcmVnVDApKTsKKyAgICBq
dW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIAogICAgIC8vIENvbXBpbGUg
aW4gYSBwcmVkaWN0aXZlIHR5cGUgY2hlY2ssIGlmIHBvc3NpYmxlLCB0byBzZWUgaWYgd2UgY2Fu
IHNraXAgd3JpdGluZyB0byB0aGUgbG9nLgogICAgIC8vIFRoZXNlIHR5cGVjaGVja3MgYXJlIGlu
bGluZWQgdG8gbWF0Y2ggdGhvc2Ugb2YgdGhlIDY0LWJpdCBKU1ZhbHVlIHR5cGUgY2hlY2tzLgog
ICAgIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVVbmRlZmlu
ZWQpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSkpOworICAgICAgICBqdW1w
VG9FbmQuYXBwZW5kKGJyYW5jaElmVW5kZWZpbmVkKHJlZ1QwKSk7CiAgICAgZWxzZSBpZiAoY2Fj
aGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVsbCkKLSAgICAgICAganVt
cFRvRW5kLmFwcGVuZChicmFuY2g2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpKSkpOwotICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+
bV9sYXN0U2VlblR5cGUgPT0gVHlwZUJvb2xlYW4pIHsKLSAgICAgICAgbW92ZShyZWdUMCwgcmVn
VDEpOwotICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjEpLCByZWdUMSk7Ci0gICAgICAgIGp1
bXBUb0VuZC5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tNjQoVmFsdWVG
YWxzZSkpKTsKLSAgICB9IGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5
cGUgPT0gVHlwZUFueUludCkKLSAgICAgICAganVtcFRvRW5kLmFwcGVuZChlbWl0SnVtcElmSW50
KHJlZ1QwKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZOdWxsKHJlZ1QwKSk7
CisgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBl
Qm9vbGVhbikKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZkJvb2xlYW4ocmVnVDAs
IHJlZ1QxKSk7CisgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlw
ZSA9PSBUeXBlQW55SW50KQorICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmSW50MzIo
cmVnVDApKTsKICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBl
ID09IFR5cGVOdW1iZXIpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoZW1pdEp1bXBJZk51bWJl
cihyZWdUMCkpOworICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmTnVtYmVyKHJlZ1Qw
KSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBU
eXBlU3RyaW5nKSB7Ci0gICAgICAgIEp1bXAgaXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCk7Ci0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoOChFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJp
bmdUeXBlKSkpOworICAgICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdU
MCk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZTdHJpbmcocmVnVDApKTsKICAg
ICAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CiAgICAgfQogCkBAIC0xMzY1LDcgKzEzNjMsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBUeXBlUHJvZmlsZXJM
b2c6OkxvZ0VudHJ5Ojp2YWx1ZU9mZnNldCgpKSk7CiAKICAgICAvLyBTdG9yZSB0aGUgc3RydWN0
dXJlSUQgb2YgdGhlIGNlbGwgaWYgVDAgaXMgYSBjZWxsLCBvdGhlcndpc2UsIHN0b3JlIDAgb24g
dGhlIGxvZyBlbnRyeS4KLSAgICBKdW1wIG5vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogICAgIGxv
YWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7
CiAgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgVHlwZVByb2ZpbGVyTG9nOjpMb2dF
bnRyeTo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgIEp1bXAgc2tpcElzQ2VsbCA9IGp1bXAo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRl
eCA0YzJlNDQ1NThjNzc4Yjk3Njg1ZjE3M2M3ZDMyNmY1ZTkzN2Y1ZDhmLi43NDhmZGJhNDhmODU0
N2Y0OTM1NzBjYzY1MDFjOTEwZWViMGNlZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhh
dCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZkNlbGxO
b3RPYmplY3QocmVnVDEpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdChyZWdU
MSkpOwogCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUsIGFuZCBz
dGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFpbnMgcHJv
dG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTYwLDE0ICsxNjAsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAgICAgTGFiZWwgbG9vcCh0
aGlzKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpT
Q2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBl
KSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmVHlwZShyZWdUMiwgUHJveHlPYmplY3RUeXBl
KSk7CiAKICAgICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIGNlbGwgaW4gcmVnVDIuICBJ
ZiB0aGlzIGlzIGVxdWFsIHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVyd2lzZSwgY2hlY2sg
aWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQgb2YgdGhlIGxvb3As
IGlmIG5vdCBnbyBhZ2Fpbi4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHJlZ1Q0KTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUNCwgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFRhZ09mZnNldCksIHJlZ1QzKTsKICAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUNCwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFBheWxvYWRP
ZmZzZXQpLCByZWdUNCk7Ci0gICAgYXV0byBoYXNNb25vUHJvdG8gPSBicmFuY2gzMihOb3RFcXVh
bCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CisgICAgYXV0
byBoYXNNb25vUHJvdG8gPSBicmFuY2hJZk5vdEVtcHR5KHJlZ1QzKTsKICAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoa25vd25Qb2x5UHJvdG9PZmZzZXQpICsg
UGF5bG9hZE9mZnNldCksIHJlZ1Q0KTsKICAgICBoYXNNb25vUHJvdG8ubGluayh0aGlzKTsKICAg
ICBtb3ZlKHJlZ1Q0LCByZWdUMik7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgaW50
IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0
TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBKdW1wIGlzQ2VsbCA9IGJyYW5jaDMyKEVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBKdW1wIGlz
Q2VsbCA9IGJyYW5jaElmQ2VsbChyZWdUMSk7CiAKICAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDApOwogICAgIEp1bXAg
ZG9uZSA9IGp1bXAoKTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19j
ZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCB0
eXBlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkKHZh
bHVlLCByZWdUMSwgcmVnVDApOwotICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIEp1bXAgaXNO
b3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKIAogICAgIGNvbXBhcmU4KEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KHR5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpAQCAtMzAzLDcgKzMwMyw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CiAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBKdW1wIGlzTm90Q2Vs
bCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKTsKKyAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CiAKICAg
ICBjb21wYXJlOChBYm92ZU9yRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSksIHJlZ1QwKTsKICAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7CkBAIC0zMjIsOCArMzIyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9f
cHJpbWl0aXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9h
ZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKLSAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dD
YXNlKGVtaXRKdW1wSWZDZWxsT2JqZWN0KHJlZ1QwKSk7CisgICAgSnVtcCBpc0ltbSA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZPYmplY3QocmVnVDAp
KTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdExvYWRUYWcoc3JjLCByZWdUMCk7CiAKICAgICBlbWl0TG9hZChz
cmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdEJvb2xlYW4ocmVnVDEsIEludmFsaWRHUFJSZWcpKTsKICAgICB4b3IzMihU
cnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCwg
KGRzdCA9PSBzcmMpKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFf
bnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQoc3Jj
LCByZWdUMSwgcmVnVDApOwogCi0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBKdW1wIGlz
SW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKIAogICAgIEp1bXAgaXNOb3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDIpOwpAQCAtNDAxLDkgKzQwMSw5IEBAIHZvaWQgSklUOjplbWl0X29w
X2plcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICAvLyBOb3cg
aGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1l
ZGlhdGUubGluayh0aGlzKTsKLSAgICBBU1NFUlQoKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyArIDEg
PT0gSlNWYWx1ZTo6TnVsbFRhZykgJiYgKEpTVmFsdWU6Ok51bGxUYWcgJiAweDEpKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KChKU1ZhbHVlOjpVbmRlZmluZWRUYWcgKyAxID09IEpTVmFsdWU6Ok51bGxU
YWcpICYmIChKU1ZhbHVlOjpOdWxsVGFnICYgMHgxKSwgIiIpOwogICAgIG9yMzIoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMSk7Ci0gICAgYWRkSnVtcChicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChicmFuY2hJ
Zk51bGwocmVnVDEpLCB0YXJnZXQpOwogCiAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LmxpbmsodGhpcyk7CiAgICAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24ubGluayh0
aGlzKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEs
IHJlZ1QwKTsKIAotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgSnVtcCBpc0ltbWVkaWF0
ZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7CiAKICAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFpl
cm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTQy
Nyw5ICs0MjcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyBOb3cgaGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMg
LSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKIAotICAgIEFT
U0VSVCgoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnICsgMSA9PSBKU1ZhbHVlOjpOdWxsVGFnKSAmJiAo
SlNWYWx1ZTo6TnVsbFRhZyAmIDB4MSkpOworICAgIHN0YXRpY19hc3NlcnQoKEpTVmFsdWU6OlVu
ZGVmaW5lZFRhZyArIDEgPT0gSlNWYWx1ZTo6TnVsbFRhZykgJiYgKEpTVmFsdWU6Ok51bGxUYWcg
JiAweDEpLCAiIik7CiAgICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKLSAgICBhZGRK
dW1wKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxU
YWcpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaElmTm90TnVsbChyZWdUMSksIHRhcmdl
dCk7CiAKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlzKTsKIH0KQEAgLTQ0MSw4ICs0NDEs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJh
bmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29k
ZUJsb2NrLCBwdHIpKSk7CisgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1Qx
KTsKKyAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0
cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJsb2NrLCBwdHIpKSk7CiAgICAgbm90Q2VsbC5saW5r
KHRoaXMpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDEpLCAmY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCk7CiAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CkBAIC00NTcsNyAr
NDU3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCBy
ZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QxKSk7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOwogCiAgICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIs
IHJlZ1QwKTsKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwg
cmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCByZWdUMykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCBy
ZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoSWZDZWxsKHJlZ1QxKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVsb3csIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogCiAgICAgYWRkSnVtcChi
cmFuY2gzMihFcXVhbCwgcmVnVDAsIHJlZ1QyKSwgdGFyZ2V0KTsKQEAgLTU0Myw3ICs1NDMsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykpOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QxKSk7CiAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoMzIoQmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSkpOwogCiAgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIsIHJl
Z1QwKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVnVDEsIHJl
Z1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMSwgcmVnVDMpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEJlbG93LCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKIAogICAgIGFkZEp1bXAoYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMiksIHRhcmdldCk7CkBAIC02MTAsOSArNjEwLDkg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHkKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihCZWxv
dywgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAKICAgICAvLyBK
dW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJvdGggYXJlIHN0cmluZ3Mgb3Igc3ltYm9scyAobm9uIG9i
amVjdCkuCi0gICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3RJc09iamVjdCA9IGVt
aXRKdW1wSWZDZWxsT2JqZWN0KHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChyZWdUMikpOworICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChy
ZWdUMSk7CisgICAgSnVtcCBmaXJzdElzT2JqZWN0ID0gYnJhbmNoSWZPYmplY3QocmVnVDApOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T2JqZWN0KHJlZ1QyKSk7CiAgICAgbm90Q2VsbC5s
aW5rKHRoaXMpOwogICAgIGZpcnN0SXNPYmplY3QubGluayh0aGlzKTsKIApAQCAtNjQ4LDkgKzY0
OCw5IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
QmVsb3csIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogCiAgICAg
Ly8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBib3RoIGFyZSBzdHJpbmdzIG9yIHN5bWJvbHMgKG5v
biBvYmplY3QpLgotICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBKdW1wIGZpcnN0SXNPYmplY3Qg
PSBlbWl0SnVtcElmQ2VsbE9iamVjdChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJ
ZkNlbGxOb3RPYmplY3QocmVnVDIpKTsKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENl
bGwocmVnVDEpOworICAgIEp1bXAgZmlyc3RJc09iamVjdCA9IGJyYW5jaElmT2JqZWN0KHJlZ1Qw
KTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdChyZWdUMikpOwogICAgIG5vdENl
bGwubGluayh0aGlzKTsKICAgICBmaXJzdElzT2JqZWN0LmxpbmsodGhpcyk7CiAKQEAgLTY5NSw3
ICs2OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgaW50IHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0gICAgSnVtcCBpc0ltbWVk
aWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKKyAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsK
IAogICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVy
bywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZWdUMSk7CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgc3JjID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1Qw
KTsKLSAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFu
Y2hJZk5vdENlbGwocmVnVDEpOwogCiAgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF90b19udW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
ICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIEp1bXAgaXNJbnQzMiA9IGJy
YW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Cisg
ICAgSnVtcCBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2Vz
dFRhZykpKTsKICAgICBpc0ludDMyLmxpbmsodGhpcyk7CiAKQEAgLTc4Myw4ICs3ODMsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMSkpOworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90U3RyaW5nKHJlZ1QwKSk7CiAKICAgICBpZiAoc3JjICE9IGRzdCkKICAgICAg
ICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTc5Nyw4ICs3OTcsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7
Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChCZWxvdywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAg
ICAgaWYgKHNyYyAhPSBkc3QpCkBAIC05NjYsNyArOTY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBSZWdpc3Rl
cklEIHNjcmF0Y2hSZWcgPSByZWdUMzsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIGNh
bGxlZVJlZyk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjYWxs
ZWVSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSlNGdW5j
dGlvblR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVS
ZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0
cihaZXJvLCByYXJlRGF0YVJlZykpOwogICAgIGxvYWQzMihBZGRyZXNzKHJhcmVEYXRhUmVnLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7
CkBAIC05OTIsOCArOTkyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdU
MywgcmVnVDIpOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2g4
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJ
Zk5vdENlbGwocmVnVDMpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5cGUocmVnVDIs
IEZpbmFsT2JqZWN0VHlwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJl
LCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVn
VDIpKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rk
eihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRMb2FkVGFnKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFn
KSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDApKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMTIxMywyNCArMTIxMywyMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9m
aWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEp1bXBMaXN0
IGp1bXBUb0VuZDsKIAotICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1Qz
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBqdW1wVG9FbmQu
YXBwZW5kKGJyYW5jaElmRW1wdHkocmVnVDMpKTsKIAogICAgIC8vIENvbXBpbGUgaW4gYSBwcmVk
aWN0aXZlIHR5cGUgY2hlY2ssIGlmIHBvc3NpYmxlLCB0byBzZWUgaWYgd2UgY2FuIHNraXAgd3Jp
dGluZyB0byB0aGUgbG9nLgogICAgIC8vIFRoZXNlIHR5cGVjaGVja3MgYXJlIGlubGluZWQgdG8g
bWF0Y2ggdGhvc2Ugb2YgdGhlIDMyLWJpdCBKU1ZhbHVlIHR5cGUgY2hlY2tzLgogICAgIGlmIChj
YWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVVbmRlZmluZWQpCi0gICAg
ICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSkpOworICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5j
aElmVW5kZWZpbmVkKHJlZ1QzKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5t
X2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVsbCkKLSAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSkpOworICAg
ICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmTnVsbChyZWdUMykpOwogICAgIGVsc2UgaWYg
KGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZUJvb2xlYW4pCi0gICAg
ICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJ
ZkJvb2xlYW4ocmVnVDMsIEludmFsaWRHUFJSZWcpKTsKICAgICBlbHNlIGlmIChjYWNoZWRUeXBl
TG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVBbnlJbnQpCi0gICAgICAgIGp1bXBUb0Vu
ZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSWZJbnQzMihyZWdUMykp
OwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlw
ZU51bWJlcikgewotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDMyKEJlbG93LCByZWdU
MywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKLSAgICAgICAganVtcFRvRW5k
LmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2hJZk51bWJlcihKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDApLCByZWdUMSkpOwogICAgIH0gZWxzZSBpZiAoY2FjaGVkVHlwZUxv
Y2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgIEp1bXAgaXNO
b3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpOwotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDgoRXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3Ry
aW5nVHlwZSkpKTsKKyAgICAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVn
VDMpOworICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElmU3RyaW5nKHJlZ1QwKSk7CiAg
ICAgICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwogICAgIH0KIApAQCAtMTI0Niw3ICsxMjQ1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgc3RvcmUzMihyZWdUMywgQWRkcmVzcyhyZWdUMSwgVHlwZVByb2ZpbGVy
TG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1
LmFzQml0cy50YWcpKSk7CiAKICAgICAvLyBTdG9yZSB0aGUgc3RydWN0dXJlSUQgb2YgdGhlIGNl
bGwgaWYgYXJndW1lbnQgaXMgYSBjZWxsLCBvdGhlcndpc2UsIHN0b3JlIDAgb24gdGhlIGxvZyBl
bnRyeS4KLSAgICBKdW1wIG5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoSWZO
b3RDZWxsKHJlZ1QzKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEs
IFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICBK
dW1wIHNraXBOb3RDZWxsID0ganVtcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAxYjk3ZGExYTA3YjQ5YWMzMDY2MjYyYjEyODRk
YzIwZjE0NjJlOTFhLi42Y2UwYTE5MDdlMGQ3NDFlOTFjOGVmNTY4ZGNmZDNjNjdjZDM1YTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKICAgICAK
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBKdW1wIHJlc3VsdE9LID0gYnJh
bmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwKTsKKyAgICAgICAgSnVtcCByZXN1bHRPSyA9IGJyYW5j
aElmTm90RW1wdHkocmVnVDApOwogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUR2V0QnlWYWxS
ZXN1bHRJc05vdEVtcHR5KTsKICAgICAgICAgcmVzdWx0T0subGluayh0aGlzKTsKICAgICB9CkBA
IC0yMTksNyArMjE5LDcgQEAgSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdp
dGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3QKIAogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVu
ZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QxKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hJZk5vdENlbGwocmVnVDEpKTsKICAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soYnlWYWxJ
bmZvLCByZWdUMSwgcmVnVDMsIHByb3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKIAogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKApAQCAtMzUwLDExICszNTAsMTEgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMyk7CiAgICAg
c3dpdGNoIChpbmRleGluZ1NoYXBlKSB7CiAgICAgY2FzZSBJbnQzMlNoYXBlOgotICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RJbnQocmVnVDMpKTsKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2hJZk5vdEludDMyKHJlZ1QzKSk7CiAgICAgICAgIHN0b3JlNjQocmVn
VDMsIEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFRpbWVzRWlnaHQpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEb3VibGVTaGFwZTogewotICAgICAgICBKdW1wIG5vdEludCA9IGVtaXRKdW1w
SWZOb3RJbnQocmVnVDMpOworICAgICAgICBKdW1wIG5vdEludCA9IGJyYW5jaElmTm90SW50MzIo
cmVnVDMpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMywgZnBSZWdUMCk7CiAg
ICAgICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgICAgIG5vdEludC5saW5rKHRoaXMpOwpA
QCAtNDMzLDcgKzQzMyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIEluc3RydWN0CiAgICAgaW50IGJhc2Ug
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCB2YWx1ZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDEpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90
Q2VsbChyZWdUMSkpOwogICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJl
Z1QxLCByZWdUMSwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgLy8gV3JpdGUgYmFy
cmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFy
cmllciwKQEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGVtaXRHZXRWYXJGcm9tUG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+
KCpvcGVyYW5kU2xvdCksIHJlZ1QwKTsKICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBH
bG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKSAvLyBURFogY2hlY2suCi0gICAgICAgICAgICAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ2xvc3VyZVZhcjoKICAgICAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBl
bWl0R2V0VmFyRnJvbUluZGlyZWN0UG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSoqPihvcGVy
YW5kU2xvdCksIHJlZ1QwKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRHZXRWYXJGcm9tUG9pbnRlcihiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCpvcGVyYW5k
U2xvdCksIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0NjQo
WmVybywgcmVnVDApKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkVtcHR5
KHJlZ1QwKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaW5kaXJlY3RMb2FkRm9y
T3BlcmFuZCkKICAgICAgICAgICAgICAgICBlbWl0UHV0R2xvYmFsVmFyaWFibGVJbmRpcmVjdChi
aXR3aXNlX2Nhc3Q8SlNWYWx1ZSoqPihvcGVyYW5kU2xvdCksIHZhbHVlLCBiaXR3aXNlX2Nhc3Q8
V2F0Y2hwb2ludFNldCoqPigmY3VycmVudEluc3RydWN0aW9uWzVdKSk7CkBAIC0xMTUwLDEzICsx
MTUwLDEzIEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNp
Z25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAgICAgSnVtcCB2YWx1ZU5vdENlbGw7
CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0
ZXJCYXNlQW5kVmFsdWUpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwg
cmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVn
VDAsIHRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMCk7CiAgICAgfQogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3du
ZXIsIHJlZ1QwKTsKICAgICBKdW1wIG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91
bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQotICAgICAg
ICBvd25lck5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdp
c3Rlcik7CisgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAK
ICAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBiYXJyaWVyQnJhbmNoKCp2bSgp
LCByZWdUMCwgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uV3JpdGVCYXJyaWVy
U2xvd1BhdGgsIHJlZ1QwKTsKQEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgSklUOjplbWl0V3Jp
dGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2Rl
IG1vZGUpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIEp1
bXAgdmFsdWVOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlKQotICAg
ICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tS
ZWdpc3Rlcik7CisgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7
CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVyKTsKIApAQCAtMTE4OCwxMyArMTE4OCwxMyBA
QCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFs
dWUsIFdyaXRlQmFycmllck1vZGUgbW9kZQogICAgIEp1bXAgdmFsdWVOb3RDZWxsOwogICAgIGlm
IChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFu
ZFZhbHVlKSB7CiAgICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7Ci0gICAgICAgIHZh
bHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJl
Z1QwKTsKICAgICB9CiAgICAgCiAgICAgZW1pdExvYWQob3duZXIsIHJlZ1QwLCByZWdUMSk7CiAg
ICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8
fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKLSAgICAgICAgb3duZXJOb3RDZWxs
ID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOworICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAg
ICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gYmFycmllckJyYW5jaCgqdm0oKSwg
cmVnVDEsIHJlZ1QyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbldyaXRlQmFycmllclNs
b3dQYXRoLCByZWdUMSk7CkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRl
QmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBt
b2RlKQogICAgIEp1bXAgdmFsdWVOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRl
clZhbHVlKSB7CiAgICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7Ci0gICAgICAgIHZh
bHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJl
Z1QwKTsKICAgICB9CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVyKTsKQEAgLTE2NjAsMTAg
KzE2NjAsMTAgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGEKICAgICAKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIGVhcmx5U2NyYXRjaCk7Ci0g
ICAgc2xvd0Nhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90SW50KGVhcmx5U2NyYXRjaCkpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihlYXJseVNjcmF0Y2gpKTsKICNlbHNl
CiAgICAgZW1pdExvYWQodmFsdWUsIGxhdGVTY3JhdGNoLCBlYXJseVNjcmF0Y2gpOwotICAgIHNs
b3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGxhdGVTY3JhdGNoLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5v
dEludDMyKGxhdGVTY3JhdGNoKSk7CiAjZW5kaWYKICAgICAKICAgICAvLyBXZSB3b3VsZCBiZSBs
b2FkaW5nIHRoaXMgaW50byBiYXNlIGFzIGluIGdldF9ieV92YWwsIGV4Y2VwdCB0aGF0IHRoZSBz
bG93CkBAIC0xNzMzLDE3ICsxNzMzLDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIGVh
cmx5U2NyYXRjaCk7Ci0gICAgSnVtcCBkb3VibGVDYXNlID0gZW1pdEp1bXBJZk5vdEludChlYXJs
eVNjcmF0Y2gpOworICAgIEp1bXAgZG91YmxlQ2FzZSA9IGJyYW5jaElmTm90SW50MzIoZWFybHlT
Y3JhdGNoKTsKICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZwUmVnVDAp
OwogICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRoaXMpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdE51bWJlcihlYXJseVNjcmF0Y2gpKTsK
KyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90TnVtYmVyKGVhcmx5U2NyYXRjaCkpOwog
ICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZWFybHlTY3JhdGNoKTsKICAgICBtb3Zl
NjRUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZwUmVnVDApOwogICAgIHJlYWR5LmxpbmsodGhpcyk7
CiAjZWxzZQogICAgIGVtaXRMb2FkKHZhbHVlLCBsYXRlU2NyYXRjaCwgZWFybHlTY3JhdGNoKTsK
LSAgICBKdW1wIGRvdWJsZUNhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgbGF0ZVNjcmF0Y2gsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgIEp1bXAgZG91YmxlQ2FzZSA9IGJy
YW5jaElmTm90SW50MzIobGF0ZVNjcmF0Y2gpOwogICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGVh
cmx5U2NyYXRjaCwgZnBSZWdUMCk7CiAgICAgSnVtcCByZWFkeSA9IGp1bXAoKTsKICAgICBkb3Vi
bGVDYXNlLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1MWJkNDgwODU4ZjdlODQ0NjcyNzVhYzJl
NzQ5MjdjMTYxNzlmYzA5Li5kYjJhNDcyZTg1MGE1NjZlMDdhMDIzY2Y0MzMwNDIyMjE4MTE1ZDY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgTGFiZWwgZG9uZSA9IGxh
YmVsKCk7CiAKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBKdW1wIHJlc3Vs
dE9LID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1w
dHlWYWx1ZVRhZykpOworICAgICAgICBKdW1wIHJlc3VsdE9LID0gYnJhbmNoSWZOb3RFbXB0eShy
ZWdUMSk7CiAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRHZXRCeVZhbFJlc3VsdElzTm90RW1w
dHkpOwogICAgICAgICByZXN1bHRPSy5saW5rKHRoaXMpOwogICAgIH0KQEAgLTIzNSw3ICsyMzUs
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZQogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMywgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBU
aW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1Qx
KTsgLy8gdGFnCiAgICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsgLy8g
cGF5bG9hZAotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaElmRW1wdHkocmVnVDEpKTsKICAgICAKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQpA
QCAtMjYzLDcgKzI2Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9h
ZChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzLCBBcnJheVN0
b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgIGxvYWQzMihCYXNlSW5kZXgocmVn
VDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZwogICAg
IGxvYWQzMihCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6
OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKSwgcmVnVDApOyAvLyBwYXlsb2FkCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZFbXB0eShyZWdUMSkpOwogICAgIAogICAgIHJldHVy
biBzbG93Q2FzZXM7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgSklUR2V0QnlJZEdlbmVyYXRvciBK
SVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1
Y3QKICAgICAvLyBwcm9wZXJ0eTogdGFnKHJlZ1QzKSwgcGF5bG9hZChyZWdUMikKICAgICAvLyBz
Y3JhdGNoOiByZWdUNAogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dDYXNlcy5h
cHBlbmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNo
ZWNrKGJ5VmFsSW5mbywgcmVnVDIsIHJlZ1Q0LCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKQEAgLTM5NSw3ICszOTUsNyBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbgogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwogICAg
IHN3aXRjaCAoaW5kZXhpbmdTaGFwZSkgewogICAgIGNhc2UgSW50MzJTaGFwZToKLSAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5v
dEludDMyKHJlZ1QxKSk7CiAgICAgICAgIHN0b3JlMzIocmVnVDAsIEJhc2VJbmRleChyZWdUMywg
cmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSkpOwogICAgICAgICBzdG9yZTMyKHJlZ1QxLCBCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBU
aW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOwogICAg
ICAgICBicmVhazsKQEAgLTQwNiw3ICs0MDYsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgog
ICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIHZhbHVlLCBTaG91bGRGaWx0ZXJWYWx1ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG91YmxlU2hhcGU6IHsKLSAgICAgICAgSnVtcCBu
b3RJbnQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZykpOworICAgICAgICBKdW1wIG5vdEludCA9IGJyYW5jaElmTm90SW50MzIocmVnVDEp
OwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAgICAgICAg
IEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgICAgIG5vdEludC5saW5rKHRoaXMpOwpAQCAtNDgy
LDcgKzQ4Miw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIEluc3RydWN0CiAgICAgaW50IGJhc2UgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKICAgICBlbWl0QnlWYWxJZGVu
dGlmaWVyQ2hlY2soYnlWYWxJbmZvLCByZWdUMiwgcmVnVDIsIHByb3BlcnR5TmFtZSwgc2xvd0Nh
c2VzKTsKIAogICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtzIHRoZSByZWdpc3RlcnMuIFNvIGFm
dGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbWl0R2V0VmFyRnJvbVBvaW50
ZXIoYml0d2lzZV9jYXN0PEpTVmFsdWUqPigqb3BlcmFuZFNsb3QpLCByZWdUMSwgcmVnVDApOwog
ICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgcmVzb2x2
ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpIC8vIFREWiBj
aGVjay4KLSAgICAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVnVDEs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOworICAgICAgICAgICAgICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmRW1wdHkocmVnVDEpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgICAg
ICAgICAgICAgZW1pdEdldFZhckZyb21JbmRpcmVjdFBvaW50ZXIoYml0d2lzZV9jYXN0PEpTVmFs
dWUqKj4ob3BlcmFuZFNsb3QpLCByZWdUMSwgcmVnVDApOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgZW1pdEdldFZhckZyb21Qb2ludGVyKGJpdHdpc2VfY2FzdDxK
U1ZhbHVlKj4oKm9wZXJhbmRTbG90KSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnKSkpOworICAgICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmRW1w
dHkocmVnVDEpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpbmRpcmVjdExvYWRG
b3JPcGVyYW5kKQogICAgICAgICAgICAgICAgIGVtaXRQdXRHbG9iYWxWYXJpYWJsZUluZGlyZWN0
KGJpdHdpc2VfY2FzdDxKU1ZhbHVlKio+KG9wZXJhbmRTbG90KSwgdmFsdWUsIGJpdHdpc2VfY2Fz
dDxXYXRjaHBvaW50U2V0Kio+KCZjdXJyZW50SW5zdHJ1Y3Rpb25bNV0pKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBmMWVkMDU1NzgzZmM3YTM0ZGRh
ZDMwZjM1NzJmODdjYzgyYmVlMzM3Li4yMzUxOTczZDRmOTI2NGVlZGY4ZDU0NDY3YjM2NzZkZjUx
OWVjZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBA
IC01OSwxNCArNTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90SlNDZWxsKFJlZ2lzdGVySUQpOwotICAg
ICAgICBKdW1wIGVtaXRKdW1wSWZOdW1iZXIoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIEp1bXAgZW1p
dEp1bXBJZk5vdE51bWJlcihSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0VGFnSW50KFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAgSnVtcCBl
bWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSk7Ci0KICAgICAgICAg
dm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihpbnQgZW50cnksIFJlZ2lzdGVySUQg
dG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgdm9pZCBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBpbnQgZW50cnkpOwogICAg
ICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgaW50IGVudHJ5
KTsKQEAgLTE0Nyw0MyArMTQyLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJ
bnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCByZWcpCi0gICAgewot
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZywgdGFnTWFza1JlZ2lzdGVy
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50
ZXJmYWNlSklUOjplbWl0SnVtcElmTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWcsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRl
cmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAg
ICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKLSAgICB9CiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklU
OjplbWl0TG9hZEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBsb2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCksIGRzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgZHN0LCB0
YWdNYXNrUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RDZWxsKGRzdCk7CiAg
ICAgfQogICAgIAogICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJ
VDo6ZW1pdExvYWRJbnQzMih1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBsb2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCksIGRzdCk7Ci0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoNjQoQmVsb3csIGRzdCwg
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgSnVtcCBub3RJbnQzMiA9IGJyYW5jaElm
Tm90SW50MzIoZHN0KTsKICAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoZHN0LCBkc3QpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gbm90SW50MzI7CiAgICAgfQogCiAg
ICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZERv
dWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgRlBSZWdpc3RlcklEIGRzdCwgUmVn
aXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKICAgICAgICAgbG9hZDY0KGFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVySW5kZXgpLCBzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBub3ROdW1iZXIgPSBlbWl0
SnVtcElmTm90TnVtYmVyKHNjcmF0Y2gpOwotICAgICAgICBKdW1wIG5vdEludCA9IGJyYW5jaDY0
KEJlbG93LCBzY3JhdGNoLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgICAgICBKdW1wIG5v
dE51bWJlciA9IGJyYW5jaElmTm90TnVtYmVyKHNjcmF0Y2gpOworICAgICAgICBKdW1wIG5vdElu
dCA9IGJyYW5jaElmTm90SW50MzIoc2NyYXRjaCk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAgICAg
bm90SW50LmxpbmsodGhpcyk7Ci0gICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
c2NyYXRjaCk7Ci0gICAgICAgIG1vdmU2NFRvRG91YmxlKHNjcmF0Y2gsIGRzdCk7CisgICAgICAg
IHVuYm94RG91YmxlKHNjcmF0Y2gsIHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgIGRvbmUubGluayh0
aGlzKTsKICAgICAgICAgcmV0dXJuIG5vdE51bWJlcjsKICAgICB9CkBAIC0yMTYsMTEgKzE5Nyw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KICNlbmRpZgogCi0gICAgQUxXQVlTX0lOTElORSBK
U0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUoUmVn
aXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFu
Y2g4KE5vdEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwotICAgIH0KLQogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoaW50IGVudHJ5
LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCiAgICAgewogICAgICAgICBsb2FkUHRy
KEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNDFlYjFlYThkMmZkZDM5OWY3YjdmMjEzOGQ2
MWMwYTI1MzljYjljNi4uYmJiNDBmOTk4MWEyY2JlMGJiNDg2ZGNjNjNjZjc5NmQ2ODEwMmFkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDksMTcgKzk0OSwxMyBA
QCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhh
dmUgYSBmdW5jdGlvbiBhbmQgc3Rhc2ggdGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQUi4KIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChzdHViSml0LmJyYW5j
aFRlc3Q2NChDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZUdQUiwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChzdHViSml0LmJyYW5jaElmTm90
Q2VsbChjYWxsZWVHUFIpKTsKICNlbHNlCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFk
eSBjaGVja2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCiAjZW5kaWYKIAogICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgYWRkIGEgZmFzdCBwYXRoIGZvciBJbnRlcm5hbEZ1bmN0aW9uIHdp
dGggY2xvc3VyZSBjYWxsLgotICAgICAgICBzbG93UGF0aC5hcHBlbmQoCi0gICAgICAgICAgICBz
dHViSml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU0Z1bmN0aW9uVHlwZSkpKTsKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0
dWJKaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAgICAKICAgICAgICAgc3R1
YkppdC5sb2FkUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQ
UiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDg4MzIwNjViYzJmNTE1ZjIzMTZk
OTlhZTczZjNhOWQyNGIyZTEzZjQuLjZlN2U2MzEzZGNmM2UwZWJjMGU4N2VmZDYyNzBmMjM2NWVk
OTAyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKQEAgLTE5NCwxMCArMTk0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8KICAgICBzbG93
Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25a
ZXJvLCBHUFJJbmZvOjpyZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7CiAjZWxzZQotICAgIHNsb3dD
YXNlLmFwcGVuZCgKLSAgICAgICAgaml0LmJyYW5jaDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dDYXNlLmFwcGVuZChq
aXQuYnJhbmNoSWZOb3RDZWxsKEdQUkluZm86OnJlZ1QxKSk7CiAjZW5kaWYKICAgICBhdXRvIG5v
dEpTRnVuY3Rpb24gPSBqaXQuYnJhbmNoSWZOb3RUeXBlKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0
aW9uVHlwZSk7CiAgICAgCkBAIC0xMDI0LDcgKzEwMjEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgIHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4ID0gQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldCgwKTsKICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RJbnRlZ2VyID0gaml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Cisg
ICAgYXV0byBub3RJbnRlZ2VyID0gaml0LmJyYW5jaElmTm90SW50MzIoR1BSSW5mbzo6cmVnVDAp
OwogCiAgICAgLy8gQWJzIEludDMyLgogICAgIGppdC5yc2hpZnQzMihHUFJJbmZvOjpyZWdUMCwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigzMSksIEdQUkluZm86OnJlZ1QxKTsKQEAgLTEw
NDAsNyArMTAzNyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYWJz
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogCiAgICAgLy8gSGFuZGxlIERvdWJsZXMuCiAgICAgbm90
SW50ZWdlci5saW5rKCZqaXQpOwotICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFuY2hUZXN0
NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpKTsKKyAgICBqaXQuYXBwZW5kRmFpbHVyZShqaXQuYnJhbmNoSWZOb3RO
dW1iZXIoR1BSSW5mbzo6cmVnVDApKTsKICAgICBqaXQudW5ib3hEb3VibGVXaXRob3V0QXNzZXJ0
aW9ucyhHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwog
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBhYnNGUFIwTGFiZWwgPSBqaXQubGFiZWwoKTsKICAg
ICBqaXQuYWJzRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEZQUkluZm86OmZwUmVnVDEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRlMTdhZmI0MTJm
MGUwYWI3MmI3OGQ3NzI4OTFjYWYyYTM1ZmEyM2YuLjNmNDY2ODA4YmQ3NmY3ZGIzOTI2Y2ZkOTVj
MTAxYjEwNDRkN2QxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKQEAgLTQ2NywxMCArNDY3LDcgQEAgY2xhc3MgRE9NSklUTm9kZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICAgICAgUmVmPFNuaXBwZXQ+IHNuaXBwZXQgPSBTbmlwcGV0Ojpj
cmVhdGUoKTsKICAgICAgICAgc25pcHBldC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMm
IGppdCwgU25pcHBldFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
aml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpKSkpOworICAg
ICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKHBhcmFtc1sw
XS5ncHIoKSwgSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBzbmlw
cGV0OwpAQCAtNzQxLDEwICs3MzgsNyBAQCBjbGFzcyBET01KSVRGdW5jdGlvbk9iamVjdCA6IHB1
YmxpYyBET01KSVROb2RlIHsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFp
bHVyZUNhc2VzOwogICAgICAgICAgICAgLy8gTWF5IHVzZSBzY3JhdGNoIHJlZ2lzdGVycy4KICAg
ICAgICAgICAgIGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdmFs
dWUpLCBwYXJhbXMuZnBTY3JhdGNoKDApKTsKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBl
bmQoaml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpKSkpOwor
ICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RUeXBlKHBhcmFt
c1swXS5ncHIoKSwgSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBz
bmlwcGV0Owo=
</data>
<flag name="review"
          id="358833"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>