<?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>160526</bug_id>
          
          <creation_ts>2016-08-03 14:42:03 -0700</creation_ts>
          <short_desc>Remove the Objective-C bindings generator</short_desc>
          <delta_ts>2016-08-03 15:54:31 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1217213</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-03 14:42:03 -0700</bug_when>
    <thetext>Remove the Objective-C bindings generator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217221</commentid>
    <comment_count>1</comment_count>
      <attachid>285279</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-03 14:45:39 -0700</bug_when>
    <thetext>Created attachment 285279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217226</commentid>
    <comment_count>2</comment_count>
      <attachid>285279</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-03 14:52:19 -0700</bug_when>
    <thetext>Comment on attachment 285279
Patch

rs=me :(.  We had a good decade, you and I. Good night, sweet sweet generator of mine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217248</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-03 15:54:31 -0700</bug_when>
    <thetext>Committed r204104: &lt;http://trac.webkit.org/changeset/204104&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285279</attachid>
            <date>2016-08-03 14:45:39 -0700</date>
            <delta_ts>2016-08-03 14:52:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160526-20160803144415.patch</filename>
            <type>text/plain</type>
            <size>449997</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTUxYjc4NjFhZGEzYmFk
ZjgxNjU4MDgyNzM1MjY5OWEwYjM4MTg5My4uMmQzMmFhMWY5OGZiYzE2YWExNmMyZmY3ODdjZmU5
YzExYzVkOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNCBAQAogMjAxNi0wOC0wMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUg
T2JqZWN0aXZlLUMgYmluZGluZ3MgZ2VuZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA1MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NRmxvYXQ2NEFycmF5Lmg6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NRmxvYXQ2NEFycmF5Lm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUZsb2F0NjRBcnJheUludGVy
bmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
SW50ZXJmYWNlTmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTUludGVyZmFjZU5hbWUubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNlTmFtZUludGVybmFsLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVj
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RBY3RpdmVET01PYmplY3QubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdEludGVybmFsLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmg6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxi
YWNrLm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RDYWxsYmFja0Z1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24ubW06IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25J
bnRlcm5hbC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDYWxsYmFja0ludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Lmg6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdEludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDdXN0b21OYW1lZEdldHRlckludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1
Y3Rvci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0RXZlbnRDb25zdHJ1Y3RvckludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1t
OiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RF
dmVudFRhcmdldEludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRpb24ubW06IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbkludGVybmFs
Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEdsb2JhbE9iamVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9iYWxPYmplY3QubW06IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdsb2JhbE9iamVjdEludGVy
bmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdEltcGxlbWVudHMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RJbXBsZW1lbnRzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW06IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFj
ZUludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEl0ZXJhYmxlLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEl0ZXJhYmxlLm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJdGVyYWJsZUludGVybmFsLmg6IFJlbW92ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLm1tOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckludGVy
bmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0TmFtZWRDb25zdHJ1Y3RvckludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vZGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZS5tbTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZUludGVybmFsLmg6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vbmRl
dGVybWluaXN0aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0Tm9uZGV0ZXJtaW5pc3RpYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9uZGV0ZXJtaW5pc3RpY0ludGVybmFsLmg6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iakludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmg6IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T3ZlcnJpZGVCdWlsdGlucy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T3ZlcnJpZGVCdWlsdGluc0ludGVybmFsLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UubW06IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUludGVybmFsLmg6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFN1cHBsZW1lbnRhbC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFN1cHBsZW1lbnRh
bC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RUeXBlZGVmcy5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RUeXBlZGVmcy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnNJbnRlcm5hbC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZS5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1dGVJ
bnRlcm5hbC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTXJlYWRvbmx5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NcmVhZG9ubHkubW06IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NcmVhZG9ubHlJbnRlcm5hbC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL09iakNUZXN0U3VwcGxlbWVudGFsLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9PYmpDVGVzdFN1cHBsZW1l
bnRhbC5oOiBSZW1vdmVkLgorCisyMDE2LTA4LTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKICAgICAgICAgUmVtb3ZlIGRlYWQgYmluZGluZ3MgY29kZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTIxCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEzNTM2MzcyOTNkYjM4NmQwODQ4OWFmMjMxYTgz
ZjFlNmQ4Yjc3ZWQuLjIzN2FlMTIyN2UzYjgzZDQxYmZkZjM1Nzc1NGM4Yjc0MGQ1NmNlYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNTEsNyArNTEsNiBAQCBWUEFUSCA9IFwK
ICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbiBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9nZW5l
cmljIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzIFwKLSAgICAkKFdlYkNvcmUpL2JpbmRp
bmdzL29iamMgXAogICAgICQoV2ViQ29yZSkvY3J5cHRvIFwKICAgICAkKFdlYkNvcmUpL2NzcyBc
CiAgICAgJChXZWJDb3JlKS9kb20gXApAQCAtNzUsOSArNzQsOSBAQCBWUEFUSCA9IFwKICAgICAk
KFdlYkNvcmUpL3dlYnNvY2tldHMgXAogIwogCi1KU19BTkRfT0JKQ19CSU5ESU5HX0lETFMgPSBc
CitKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FpcnBsYXkvV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwgXAotCSQoV2ViQ29yZSkvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1l
dGhvZFNlbGVjdGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5pZGwgXApAQCAtMTIyLDI4ICsxMjEs
MjggQEAgSlNfQU5EX09CSkNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXNlc3Npb24vSFRNTE1lZGlhRWxlbWVudE1lZGlhU2Vzc2lvbi5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9scy5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmlkbCBcCi0J
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0RPTVVSTE1lZGlhU291cmNlLmlkbCBcCi0J
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL0F1ZGlvVHJhY2tNZWRpYVNvdXJjZS5pZGwg
XAotCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwgXAotCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsIFwKLQkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5pZGwgXAorICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9BdWRpb1RyYWNrTWVkaWFTb3VyY2UuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvRE9NVVJMTWVkaWFTb3VyY2UuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAorICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKLQkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsIFwK
LQkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291cmNlLmlk
bCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5
LmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVVSTE1lZGlhU3RyZWFt
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1RleHRUcmFja01lZGlh
U291cmNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxh
eWJhY2tRdWFsaXR5LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1Zp
ZGVvVHJhY2tNZWRpYVNvdXJjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgXAotCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5pZGwg
XApAQCAtMTcxLDggKzE3MCw4IEBAIEpTX0FORF9PQkpDX0JJTkRJTkdfSURMUyA9IFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3F1b3Rh
L1N0b3JhZ2VRdW90YUNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3F1b3Rh
L1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbCBcCkBAIC0xODksMzMgKzE4OCwzMyBAQCBKU19BTkRf
T0JKQ19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
c3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbE1lcmdlck5vZGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0
ZW5lci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vZGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b21wbGV0aW9uRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCBc
CkBAIC0yMzYsNyArMjM1LDQ1IEBAIEpTX0FORF9PQkpDX0JJTkRJTkdfSURMUyA9IFwKICAgICAk
KFdlYkNvcmUpL2NyeXB0by9DcnlwdG9LZXkuaWRsIFwKICAgICAkKFdlYkNvcmUpL2NyeXB0by9D
cnlwdG9LZXlQYWlyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jcnlwdG8vV2ViS2l0U3VidGxlQ3J5
cHRvLmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkv
Y3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL0NTU0ltcG9ydFJ1
bGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3Mv
Q1NTTWVkaWFSdWxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvQ1NTUGFnZVJ1bGUuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5pZGwgXAorICAgICQoV2ViQ29y
ZSkvY3NzL0NTU1J1bGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlTGlzdC5pZGwg
XAorICAgICQoV2ViQ29yZSkvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2Nzcy9DU1NTdHlsZVJ1bGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9DU1NTdHls
ZVNoZWV0LmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9jc3MvQ1NTVW5rbm93blJ1bGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nz
cy9DU1NWYWx1ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL0NTU1ZhbHVlTGlzdC5pZGwgXAor
ICAgICQoV2ViQ29yZSkvY3NzL0NvdW50ZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9ET01D
U1NOYW1lc3BhY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAorICAg
ICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNlU2V0LmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvTWVk
aWFMaXN0LmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvTWVkaWFRdWVyeUxpc3QuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2Nzcy9NZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmlkbCBcCisgICAgJChXZWJD
b3JlKS9jc3MvUkdCQ29sb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9SZWN0LmlkbCBcCisg
ICAgJChXZWJDb3JlKS9jc3MvU3R5bGVNZWRpYS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL1N0
eWxlU2hlZXQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwgXAor
ICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmlkbCBcCisgICAgJChXZWJD
b3JlKS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmlk
bCBcCisgICAgJChXZWJDb3JlKS9kb20vQW5pbWF0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9BdHRyLmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vQXV0b2NvbXBsZXRlRXJyb3JF
dmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9k
b20vQ0RBVEFTZWN0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vQ2hhcmFjdGVyRGF0YS5p
ZGwgXApAQCAtMjQ5LDYgKzI4Niw3IEBAIEpTX0FORF9PQkpDX0JJTkRJTkdfSURMUyA9IFwKICAg
ICAkKFdlYkNvcmUpL2RvbS9ET01Db3JlRXhjZXB0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9k
b20vRE9NRXJyb3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5p
ZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2RvbS9ET01TdHJpbmdMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20v
RE9NU3RyaW5nTWFwLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRGF0YVRyYW5zZmVyLmlkbCBc
CkBAIC0yNjMsNDEgKzMwMSwxNTEgQEAgSlNfQU5EX09CSkNfQklORElOR19JRExTID0gXAogICAg
ICQoV2ViQ29yZSkvZG9tL0VudGl0eS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0VudGl0eVJl
ZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0Vycm9yRXZlbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2RvbS9FdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL0V2ZW50TGlzdGVu
ZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9FdmVudFRhcmdldC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvZG9tL0ZvY3VzRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9HbG9iYWxFdmVu
dEhhbmRsZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vSGFzaENoYW5nZUV2ZW50LmlkbCBc
CisgICAgJChXZWJDb3JlKS9kb20vS2V5Ym9hcmRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL01lc3NhZ2VDaGFubmVsLmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vTWVzc2FnZUV2ZW50
LmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vTWVzc2FnZVBvcnQuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL2RvbS9Nb3VzZUV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vTXV0YXRpb25FdmVu
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2RvbS9NdXRhdGlvblJlY29yZC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL05h
bWVkTm9kZU1hcC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL05vZGUuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2RvbS9Ob2RlRmlsdGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vTm9kZUl0ZXJh
dG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vTm9kZUxpc3QuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL2RvbS9Ob25FbGVtZW50UGFyZW50Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL05v
bkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL05vbkVsZW1l
bnRQYXJlbnROb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vT3ZlcmZsb3dFdmVudC5pZGwg
XAorICAgICQoV2ViQ29yZSkvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9QYXJlbnROb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vUG9wU3RhdGVF
dmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwg
XAorICAgICQoV2ViQ29yZSkvZG9tL1Byb2dyZXNzRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L2RvbS9Qcm9ncmVzc0V2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vUmFuZ2UuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgXAog
ICAgICQoV2ViQ29yZSkvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2RvbS9TaGFkb3dSb290LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vU2xv
dGFibGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9TdHJpbmdDYWxsYmFjay5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL1RleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RXZlbnQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL2RvbS9UcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9UcmVlV2Fsa2VyLmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vVUlFdmVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbCBcCisgICAg
JChXZWJDb3JlKS9kb20vV2ViS2l0TmFtZWRGbG93LmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20v
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9kb20vV2hlZWxFdmVu
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1hNTERvY3VtZW50LmlkbCBcCisgICAgJChXZWJD
b3JlKS9maWxlYXBpL0Jsb2IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRmlsZS5pZGwg
XAorICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlRXJyb3IuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2ZpbGVhcGkvRmlsZUV4Y2VwdGlvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxl
TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9maWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbCBcCiAgICAgJChXZWJDb3JlKS9o
dG1sL0RPTUZvcm1EYXRhLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0RPTVNldHRhYmxlVG9r
ZW5MaXN0LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0RPTVRva2VuTGlzdC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9ET01VUkwuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEFs
bENvbGxlY3Rpb24uaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2h0bWwvSFRNTEFyZWFFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MQXVk
aW9FbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxCUkVsZW1lbnQuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3Jl
KS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1s
L0hUTUxETGlzdEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTERhdGFFbGVt
ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmlkbCBcCisgICAgJChXZWJD
b3JlKS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1s
L0hUTUxEaXZFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxEb2N1bWVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29y
ZSkvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlk
bCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgXAorICAgICQoV2Vi
Q29yZSkvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEhSRWxlbWVu
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MSGVhZEVsZW1lbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9o
dG1sL0hUTUxIdG1sRWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MSHlwZXJs
aW5rRWxlbWVudFV0aWxzLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkv
aHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MTElF
bGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL2h0bWwvSFRNTExpbmtFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxN
YXBFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL0hUTUxNZW51RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MTW9kRWxlbWVudC5pZGwgXAorICAgICQo
V2ViQ29yZSkvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9o
dG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxQ
YXJhbUVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50
LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxQcmVFbGVtZW50LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvSFRNTFF1b3RlRWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwg
XAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRN
TFNwYW5FbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5pZGwgXAor
ICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbCBcCisgICAgJChXZWJD
b3JlKS9odG1sL0hUTUxUaW1lRWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5pZGwgXAorICAgICQo
V2ViQ29yZSkvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGEu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9odG1sL01lZGlhRXJyb3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFL
ZXlFcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUtleUV2ZW50LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0
bWwvVGV4dE1ldHJpY3MuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvVGltZVJhbmdlcy5pZGwg
XAogICAgICQoV2ViQ29yZSkvaHRtbC9VUkxVdGlscy5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRt
bC9WYWxpZGl0eVN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL1ZvaWRDYWxsYmFjay5p
ZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmlkbCBcCkBAIC0z
MDYsMTEgKzQ1NCwxMSBAQCBKU19BTkRfT0JKQ19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJD
b3JlKS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL0RPTVBhdGguaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL0VYVEJsZW5kTWluTWF4LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRG
cmFnRGVwdGguaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUc1JHQi5pZGwg
XAotICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaWRsIFwKLSAgICAk
KFdlYkNvcmUpL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbCBcCkBAIC0zMTgsNiArNDY2LDcgQEAgSlNfQU5E
X09CSkNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUhhbGZGbG9hdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VTVmVy
dGV4QXJyYXlPYmplY3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQWN0
aXZlSW5mby5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aWRsIFwKQEAgLTMzNCw5ICs0ODMsOCBAQCBKU19BTkRfT0JKQ19CSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyYnVmZmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL1dlYkdMU2FtcGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lz
aW9uRm9ybWF0LmlkbCBcCkBAIC0zNTMsMTIgKzUwMSwxMiBAQCBKU19BTkRfT0JKQ19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9WVFRD
dWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVlRUUmVnaW9uLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9W
aWRlb1RyYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZUVEN1ZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAogICAgICQoV2ViQ29yZSkvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKQEAgLTM4MiwxOTIgKzUzMCwx
OSBAQCBKU19BTkRfT0JKQ19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1Bl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuaWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvU2NyZWVuLmlkbCBcCi0gICAg
JChXZWJDb3JlKS9wYWdlL1dlYktpdFBvaW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9wYWdlL1dl
YktpdE5hbWVzcGFjZS5pZGwgXAotICAgICQoV2ViQ29yZSkvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9wYWdlL1dlYktpdE5hbWVzcGFjZS5pZGwgXAorICAgICQo
V2ViQ29yZSkvcGFnZS9XZWJLaXRQb2ludC5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9XaW5k
b3dFdmVudEhhbmRsZXJzLmlkbCBcCi0gICAgJChXZWJDb3JlKS9wYWdlL1dvcmtlck5hdmlnYXRv
ci5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlk
bCBcCisgICAgJChXZWJDb3JlKS9wYWdlL1dvcmtlck5hdmlnYXRvci5pZGwgXAogICAgICQoV2Vi
Q29yZSkvcGx1Z2lucy9ET01NaW1lVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucy9E
T01NaW1lVHlwZUFycmF5LmlkbCBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zL0RPTVBsdWdpbi5p
ZGwgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5pZGwgXAogICAgICQo
V2ViQ29yZSkvc3RvcmFnZS9TdG9yYWdlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdlL1N0
b3JhZ2VFdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvdGVzdGluZy9HQ09ic2VydmF0aW9uLmlk
bCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL0ludGVybmFscy5pZGwgXAotICAgICQoV2ViQ29y
ZSkvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5n
L01hbGxvY1N0YXRpc3RpY3MuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTWVtb3J5SW5m
by5pZGwgXAotICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmlkbCBcCi0JJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheS5pZGwgXAotICAgICQo
V2ViQ29yZSkvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3dvcmtlcnMvV29ya2Vy
LmlkbCBcCi0gICAgJChXZWJDb3JlKS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbCBcCi0g
ICAgJChXZWJDb3JlKS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS94bWwvRE9NUGFyc2VyLmlkbCBcCi0gICAgJChXZWJDb3JlKS94bWwvWE1MSHR0cFJlcXVlc3Qu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmlkbCBc
Ci0gICAgJChXZWJDb3JlKS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCBcCi0g
ICAgJChXZWJDb3JlKS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL3htbC9YTUxTZXJpYWxpemVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS94bWwvWFNMVFByb2Nl
c3Nvci5pZGwgXAotICAgIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsCi0jCi0KLUpTX09O
TFlfQklORElOR19JRExTID0gXAotCSQoV2ViQ29yZSkvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbCBc
Ci0JJChXZWJDb3JlKS9jc3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuaWRsIFwKLQkkKFdlYkNvcmUp
L2Nzcy9DU1NGb250RmFjZVJ1bGUuaWRsIFwKLQkkKFdlYkNvcmUpL2Nzcy9DU1NJbXBvcnRSdWxl
LmlkbCBcCi0JJChXZWJDb3JlKS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmlkbCBcCi0JJChXZWJDb3Jl
KS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL0NTU01lZGlhUnVs
ZS5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL0NTU1BhZ2VSdWxlLmlkbCBcCi0JJChXZWJDb3JlKS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaWRsIFwKLQkkKFdlYkNvcmUpL2Nzcy9DU1NSdWxlLmlkbCBc
Ci0JJChXZWJDb3JlKS9jc3MvQ1NTUnVsZUxpc3QuaWRsIFwKLQkkKFdlYkNvcmUpL2Nzcy9DU1NT
dHlsZURlY2xhcmF0aW9uLmlkbCBcCi0JJChXZWJDb3JlKS9jc3MvQ1NTU3R5bGVSdWxlLmlkbCBc
Ci0JJChXZWJDb3JlKS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL0NT
U1N1cHBvcnRzUnVsZS5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL0NTU1Vua25vd25SdWxlLmlkbCBc
Ci0JJChXZWJDb3JlKS9jc3MvQ1NTVmFsdWUuaWRsIFwKLQkkKFdlYkNvcmUpL2Nzcy9DU1NWYWx1
ZUxpc3QuaWRsIFwKLQkkKFdlYkNvcmUpL2Nzcy9Db3VudGVyLmlkbCBcCi0JJChXZWJDb3JlKS9j
c3MvRE9NQ1NTTmFtZXNwYWNlLmlkbCBcCi0JJChXZWJDb3JlKS9jc3MvRm9udEZhY2UuaWRsIFwK
LQkkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZVNldC5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL01lZGlh
TGlzdC5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL01lZGlhUXVlcnlMaXN0LmlkbCBcCi0JJChXZWJD
b3JlKS9jc3MvTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5pZGwgXAotCSQoV2ViQ29yZSkvY3NzL1JH
QkNvbG9yLmlkbCBcCi0JJChXZWJDb3JlKS9jc3MvUmVjdC5pZGwgXAotCSQoV2ViQ29yZSkvY3Nz
L1N0eWxlTWVkaWEuaWRsIFwKLQkkKFdlYkNvcmUpL2Nzcy9TdHlsZVNoZWV0LmlkbCBcCi0JJChX
ZWJDb3JlKS9jc3MvU3R5bGVTaGVldExpc3QuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU01hdHJp
eC5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgXAotICAgICQoV2Vi
Q29yZSkvY3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5pZGwgXAotCSQoV2ViQ29yZSkvZG9tL0Fu
aW1hdGlvbkV2ZW50LmlkbCBcCi0JJChXZWJDb3JlKS9kb20vQXV0b2NvbXBsZXRlRXJyb3JFdmVu
dC5pZGwgXAotCSQoV2ViQ29yZSkvZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwgXAotCSQoV2ViQ29y
ZSkvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsIFwKLQkkKFdlYkNvcmUpL2RvbS9NZXNz
YWdlRXZlbnQuaWRsIFwKLQkkKFdlYkNvcmUpL2RvbS9NZXNzYWdlUG9ydC5pZGwgXAotCSQoV2Vi
Q29yZSkvZG9tL05vZGVGaWx0ZXIuaWRsIFwKLQkkKFdlYkNvcmUpL2RvbS9Ob2RlSXRlcmF0b3Iu
aWRsIFwKLQkkKFdlYkNvcmUpL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCBcCi0JJChXZWJD
b3JlKS9kb20vUmFuZ2UuaWRsIFwKLQkkKFdlYkNvcmUpL2RvbS9UcmFuc2l0aW9uRXZlbnQuaWRs
IFwKLQkkKFdlYkNvcmUpL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGwgXAotCSQoV2ViQ29y
ZSkvZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwgXAotCSQoV2ViQ29yZSkvZG9tL1dlYktpdFRyYW5z
aXRpb25FdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL0V2ZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9kb20vRXZlbnRMaXN0ZW5lci5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL0V2ZW50
VGFyZ2V0LmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vS2V5Ym9hcmRFdmVudC5pZGwgXAotICAg
ICQoV2ViQ29yZSkvZG9tL01vdXNlRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2RvbS9NdXRh
dGlvbkV2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vT3ZlcmZsb3dFdmVudC5pZGwgXAot
ICAgICQoV2ViQ29yZSkvZG9tL1Byb2dyZXNzRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2Rv
bS9Qcm9ncmVzc0V2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vVGV4dEV2ZW50LmlkbCBc
Ci0gICAgJChXZWJDb3JlKS9kb20vVUlFdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL1do
ZWVsRXZlbnQuaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvQmxvYi5pZGwgXAotCSQoV2ViQ29y
ZSkvZmlsZWFwaS9GaWxlLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVFcnJvci5pZGwg
XAotCSQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlTGlzdC5pZGwgXAotCSQoV2ViQ29yZSkvaHRtbC9E
T01Ub2tlbkxpc3QuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRs
IFwKLQkkKFdlYkNvcmUpL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsIFwKLQkkKFdlYkNvcmUp
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL0hUTUxCUkVsZW1l
bnQuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbCBcCi0JJChXZWJD
b3JlKS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL0hUTUxCdXR0b25FbGVtZW50Lmlk
bCBcCi0JJChXZWJDb3JlKS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBcCi0JJChXZWJDb3Jl
KS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL0hUTUxETGlzdEVs
ZW1lbnQuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvSFRNTERhdGFFbGVtZW50LmlkbCBcCi0JJChX
ZWJDb3JlKS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5p
ZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmlkbCBcCi0gICAg
JChXZWJDb3JlKS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkv
aHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1M
RGl2RWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRG9jdW1lbnQuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxGb250RWxlbWVudC5pZGwg
XAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgXAot
ICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxIUkVsZW1lbnQuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEhlYWRFbGVtZW50LmlkbCBcCi0gICAgJChXZWJD
b3JlKS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9I
VE1MSHRtbEVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEh5cGVybGlua0Vs
ZW1lbnRVdGlscy5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5p
ZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTExJRWxlbWVu
dC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmlkbCBcCi0gICAg
JChXZWJDb3JlKS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MTWFwRWxl
bWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29y
ZSkvaHRtbC9IVE1MTWVudUVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTE1l
dGFFbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTE1vZEVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwgXAotICAgICQoV2Vi
Q29yZSkvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9I
VE1MUGFyYWdyYXBoRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MUGFyYW1F
bGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxQcmVFbGVtZW50LmlkbCBcCi0g
ICAgJChXZWJDb3JlKS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0
bWwvSFRNTFNwYW5FbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29y
ZSkvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxU
YWJsZVJvd0VsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5p
ZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbCBcCi0gICAg
JChXZWJDb3JlKS9odG1sL0hUTUxUaW1lRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5pZGwgXAot
ICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvaHRtbC9NZWRp
YUVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS9odG1sL1RpbWVSYW5nZXMuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL2h0bWwvVmFsaWRpdHlTdGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvc3ZnL1NW
R0FFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9zdmcvU1ZHQWx0R2x5cGhEZWZFbGVtZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmlkbCBcCkBAIC03
MTUsMTEgKzY5MCwzMiBAQCBKU19PTkxZX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L3N2Zy9TVkdWaWV3U3BlYy5pZGwgXAogICAgICQoV2ViQ29yZSkvc3ZnL1NWR1pvb21BbmRQYW4u
aWRsIFwKICAgICAkKFdlYkNvcmUpL3N2Zy9TVkdab29tRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmlkbCBcCisgICAgJChXZWJDb3JlKS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgXAorICAgICQoV2ViQ29yZSkvdGVzdGluZy9NYWxsb2NTdGF0aXN0aWNzLmlkbCBcCisgICAg
JChXZWJDb3JlKS90ZXN0aW5nL01lbW9yeUluZm8uaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgXAorICAgICQoV2ViQ29yZSkvdGVzdGlu
Zy9Nb2NrUGFnZU92ZXJsYXkuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvVHlwZUNvbnZl
cnNpb25zLmlkbCBcCisgICAgJChXZWJDb3JlKS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBc
CisgICAgJChXZWJDb3JlKS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCBc
CisgICAgJChXZWJDb3JlKS93b3JrZXJzL1dvcmtlci5pZGwgXAorICAgICQoV2ViQ29yZSkvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5pZGwgXAorICAgICQoV2ViQ29yZSkveG1sL0RPTVBhcnNlci5pZGwgXAorICAg
ICQoV2ViQ29yZSkveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBcCisgICAgJChXZWJDb3JlKS94bWwv
WE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5pZGwgXAorICAgICQoV2ViQ29yZSkveG1sL1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkveG1sL1hNTEh0dHBS
ZXF1ZXN0VXBsb2FkLmlkbCBcCisgICAgJChXZWJDb3JlKS94bWwvWE1MU2VyaWFsaXplci5pZGwg
XAogICAgICQoV2ViQ29yZSkveG1sL1hQYXRoRXZhbHVhdG9yLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS94bWwvWFBhdGhFeGNlcHRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YUGF0aEV4cHJl
c3Npb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YUGF0aE5TUmVzb2x2ZXIuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL3htbC9YUGF0aFJlc3VsdC5pZGwgXAorICAgICQoV2ViQ29yZSkveG1sL1hT
TFRQcm9jZXNzb3IuaWRsIFwKKyAgICBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbCBcCiAj
CiAKIFBZVEhPTiA9IHB5dGhvbgpAQCAtNzkxLDcgKzc4Nyw3IEBAIEFERElUSU9OQUxfRVZFTlRf
VEFSR0VUX0ZBQ1RPUlkgPQogCiAtaW5jbHVkZSBXZWJDb3JlRGVyaXZlZFNvdXJjZXNBZGRpdGlv
bnMubWFrZQogCi1KU19PTkxZX0JJTkRJTkdfSURMUyArPSAkKEFERElUSU9OQUxfQklORElOR19J
RExTKQorSlNfQklORElOR19JRExTICs9ICQoQURESVRJT05BTF9CSU5ESU5HX0lETFMpCiAKIGFs
bCA6ICQoQURESVRJT05BTF9CSU5ESU5HX0lETFM6JS5pZGw9SlMlLmgpCiAKQEAgLTgwMyw3ICs3
OTksNyBAQCAkKEFERElUSU9OQUxfQklORElOR19JRExTKSA6ICUgOiBXZWJLaXRBZGRpdGlvbnMv
JQogZW5kaWYgIyBNQUNPUwogCiBpZm5lcSAoJChXVEZfUExBVEZPUk1fSU9TKSwgMSkKLUpTX09O
TFlfQklORElOR19JRExTICs9IFwKK0pTX0JJTkRJTkdfSURMUyArPSBcCiAgICAgJChXZWJDb3Jl
KS9kb20vVG91Y2guaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9Ub3VjaEV2ZW50LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9kb20vVG91Y2hMaXN0LmlkbApAQCAtODExLDggKzgwNyw2IEBAIGVuZGlm
CiAKIC5QSE9OWSA6IGFsbAogCi1KU19CSU5ESU5HX0lETFMgPSAkKEpTX0FORF9PQkpDX0JJTkRJ
TkdfSURMUykgJChKU19PTkxZX0JJTkRJTkdfSURMUykKLQogSlNfRE9NX0NMQVNTRVM9JChiYXNl
bmFtZSAkKG5vdGRpciAkKEpTX0JJTkRJTkdfSURMUykpKQogCiBKU19ET01fSEVBREVSUz0kKGZp
bHRlci1vdXQgSlNFdmVudExpc3RlbmVyLmgsICQoSlNfRE9NX0NMQVNTRVM6JT1KUyUuaCkpCkBA
IC0xMzUyLDEyICsxMzQ2LDYgQEAgYWxsIDogJChub3RkaXIgJChXZWJDb3JlX0JVSUxUSU5TX1NP
VVJDRVM6JS5qcz0lQnVpbHRpbnMuaCkpICQoZmlyc3R3b3JkICQoV2ViQ28KIAogaWZlcSAoJChP
UyksTUFDT1MpCiAKLU9CSkNfRE9NX0NMQVNTRVM9JChiYXNlbmFtZSAkKG5vdGRpciAkKEpTX0FO
RF9PQkpDX0JJTkRJTkdfSURMUykpKQotCi1PQkpDX0RPTV9IRUFERVJTPSQoZmlsdGVyLW91dCBE
T01ET01XaW5kb3cuaCBET01ET01NaW1lVHlwZS5oIERPTURPTVBsdWdpbi5oLCQoT0JKQ19ET01f
Q0xBU1NFUzolPURPTSUuaCkpCi0KLWFsbCA6ICQoT0JKQ19ET01fSEVBREVSUykKLQogYWxsIDog
Q2hhcnNldERhdGEuY3BwCiAKICMgLS0tLS0tLS0KQEAgLTEzNzUsMTYgKzEzNjMsNiBAQCBDaGFy
c2V0RGF0YS5jcHAgOiBwbGF0Zm9ybS90ZXh0L21hYy9tYWtlLWNoYXJzZXQtdGFibGUucGwgcGxh
dGZvcm0vdGV4dC9tYWMvY2hhcgogCiAjIC0tLS0tLS0tCiAKLSMgT2JqZWN0aXZlLUMgYmluZGlu
Z3MKLQotRE9NX0JJTkRJTkdTX1NDUklQVFMgPSAkKENPTU1PTl9CSU5ESU5HU19TQ1JJUFRTKSBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCi1ET00lLmggOiAlLmlkbCAkKERP
TV9CSU5ESU5HU19TQ1JJUFRTKSBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaCAk
KFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUykKLQkkKGNhbGwgZ2VuZXJhdG9yX3NjcmlwdCwgJChE
T01fQklORElOR1NfU0NSSVBUUykpICQoSURMX0NPTU1PTl9BUkdTKSAtLWRlZmluZXMgIiQoRkVB
VFVSRV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX09CSkVDVElW
RV9DIiAtLWdlbmVyYXRvciBPYmpDIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUgJChTVVBQ
TEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFKSAkPAotCi0taW5jbHVkZSAkKE9CSkNfRE9NX0hFQURF
UlM6Lmg9LmRlcCkKLQotIyAtLS0tLS0tLQotCiBlbmRpZiAjIE1BQ09TCiAKICMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMTg1ZTViZGUwM2IxMTE4Yjc2OWRlN2MyYWFkNjg4NzkyYjRk
NTc5Yy4uMjU5Yzk3NzZjMGQyZDYwM2NlNDY5ZDk0OTEzNzYxYzY4OGZhYjA2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODI4
NCw3ICs4Mjg0LDYgQEAKIAkJMUNDQTczMjExMEFERDQzRTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1
dEVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhU
TUxJbnB1dEVsZW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
Q0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQzE5OTAzMzI0MDBCQ0VC
QUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDRDBCNjIwMEFBQkRCNTAwMEQwQTNGRiAvKiBQdWJsaWNET01JbnRlcmZhY2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1YmxpY0RPTUludGVyZmFjZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBE
ZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0
NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDY2MCw3ICsxMDY1OSw2IEBACiAJCTg1OUE5QzQ0MEFBNUUzQkQwMEI2
OTRCMiAvKiBET01IVE1MTWV0YUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NSFRNTE1ldGFFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NTlBOUM0NTBBQTVFM0JEMDBCNjk0QjIgLyogRE9NSFRNTFN0eWxlRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTFN0eWxlRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTlBOUM0NjBBQTVFM0JEMDBCNjk0
QjIgLyogRE9NSFRNTFN0eWxlRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01IVE1MU3R5bGVFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyogQ29kZUdlbmVyYXRvck9iakMu
cG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JPYmpD
LnBtOyBwYXRoID0gLi4vc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTg1QUNBOTg0MEE5
QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NQ2hhcmFjdGVyRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29k
ZS5sYW5nLm9iamNwcDsgfTsKIAkJODVBQ0E5ODUwQTlCNTIwMzAwNjcxRTkwIC8qIERPTUNoYXJh
Y3RlckRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBsaW5lRW5kaW5n
ID0gMDsgcGF0aCA9IERPTUNoYXJhY3RlckRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9
OwogCQk4NUFDQTk5QTBBOUI1NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjIwMjYsNyArMjIwMjQsNiBAQAogCQkJCTFBRDJEMTVDMUQ0RkQ2QjIwMEI3REUzNiAv
KiBIVE1MICovLAogCQkJCUJDRDBGQkNFMERCRDYyNDEwMEIyRjYzMCAvKiBWaWV3cyAqLywKIAkJ
CQkxQUNGM0ZCNTFENTAxMjQ0MDA2M0FFRkIgLyogWFBhdGggKi8sCi0JCQkJODU5QjdGQjkwQThE
Mjg4ODAwQTVGMUVBIC8qIENvZGVHZW5lcmF0b3JPYmpDLnBtICovLAogCQkJCUJDMUEzNzk3MDk3
QzcxNUYwMDE5RjNEOCAvKiBET00uaCAqLywKIAkJCQlCQzFBMzc5ODA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NLm1tICovLAogCQkJCUJDMUEzNzk5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01Db3JlLmgg
Ki8sCkBAIC0yMjA1Nyw3ICsyMjA1NCw2IEBACiAJCQkJMUNGNkJERjkwRTlCQjI2QTAwMjVFMUNE
IC8qIE9iakNFdmVudExpc3RlbmVyLm1tICovLAogCQkJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFD
RCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovLAogCQkJCTFDRjZCRTEyMEU5QkI0Njcw
MDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLywKLQkJCQkxQ0QwQjYyMDBB
QUJEQjUwMDBEMEEzRkYgLyogUHVibGljRE9NSW50ZXJmYWNlcy5oICovLAogCQkJCTVERkVCQUI2
MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKIAkJCQkxQ0FGMzQ3
RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8sCiAJCQkJMUNBRjM0N0Yw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDIwZmRhNTlhOTljNmM0ZGEwYjZjZDVlMmNjMmEzNjg3ZjZjYzZj
OGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0vLyBhcmUgbWV0OgotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotLy8gRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLS8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLS8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotLy8gRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8g
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0vLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0vLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0KLS8vIFRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0gdG8gZGV0ZXJtaW5lIHB1YmxpYyBBUEkuCi0vLyBBbGwgcHVibGlj
IERPTSBjbGFzcyBpbnRlcmZhY2VzLCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIG5lZWQgdG8gYmUg
aW4gdGhpcyBmaWxlLgotLy8gQW55dGhpbmcgbm90IGluIHRoZSBmaWxlIHdpbGwgYmUgZ2VuZXJh
dGVkIGludG8gdGhlIGFwcHJvcHJpYXRlIHByaXZhdGUgaGVhZGVyIGZpbGUuCi0KLSNpZm5kZWYg
T0JKQ19DT0RFX0dFTkVSQVRJT04KLSNlcnJvciBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciwg
aW5zdGVhZCBpbmNsdWRlIHRoZSBhcHByb3ByaWF0ZSBET00gaGVhZGVyLgotI2VuZGlmCi0KLSNp
ZmRlZiBfX0FQUExFX18KLSNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KLSNlbmRpZgot
Ci1AaW50ZXJmYWNlIERPTUF0dHIgOiBET01Ob2RlIDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpuYW1lOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBzcGVjaWZp
ZWQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp2YWx1ZTsKLUBwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NRWxlbWVudCAqb3duZXJFbGVtZW50OwotQHByb3BlcnR5IChyZWFkb25s
eSwgc3Ryb25nKSBET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZSBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKLUBlbmQKLQotQGludGVyZmFjZSBET01DREFUQVNlY3Rpb24gOiBET01UZXh0
IDEwXzQKLUBlbmQKLQotQGludGVyZmFjZSBET01DaGFyYWN0ZXJEYXRhIDogRE9NTm9kZSAxMF80
Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpkYXRhOwotQHByb3BlcnR5IChyZWFkb25seSkg
dW5zaWduZWQgbGVuZ3RoOwotLSAoTlNTdHJpbmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClv
ZmZzZXQgOih1bnNpZ25lZClsZW5ndGg7Ci0tIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVu
c2lnbmVkKW9mZnNldCBsZW5ndGg6KHVuc2lnbmVkKWxlbmd0aCBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKLS0gKHZvaWQpYXBwZW5kRGF0YTooTlNTdHJpbmcgKilkYXRhOwotLSAodm9pZClp
bnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWRhdGE7Ci0tICh2b2lkKWRl
bGV0ZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWxlbmd0aDsKLS0gKHZvaWQpcmVw
bGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWxlbmd0aCA6KE5TU3RyaW5nICop
ZGF0YTsKLS0gKHZvaWQpaW5zZXJ0RGF0YToodW5zaWduZWQpb2Zmc2V0IGRhdGE6KE5TU3RyaW5n
ICopZGF0YSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKHZvaWQpZGVsZXRlRGF0YToo
dW5zaWduZWQpb2Zmc2V0IGxlbmd0aDoodW5zaWduZWQpbGVuZ3RoIFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOwotLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWduZWQpb2Zmc2V0IGxlbmd0aDoo
dW5zaWduZWQpbGVuZ3RoIGRhdGE6KE5TU3RyaW5nICopZGF0YSBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKLUBlbmQKLQotQGludGVyZmFjZSBET01Db21tZW50IDogRE9NQ2hhcmFjdGVyRGF0
YSAxMF80Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gOiBET01PYmplY3Qg
MTBfNAotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAq
KXZlcnNpb247Ci0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5
c3RlbUlkOwotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilk
b2N0eXBlOwotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3Ry
aW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhOwotLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0
cmluZyAqKWZlYXR1cmUgdmVyc2lvbjooTlNTdHJpbmcgKil2ZXJzaW9uIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOwotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgcHVibGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lz
dGVtSWQ6KE5TU3RyaW5nICopc3lzdGVtSWQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0t
IChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBx
dWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgZG9jdHlwZTooRE9NRG9jdW1l
bnRUeXBlICopZG9jdHlwZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTUNTU1N0
eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIG1lZGlhOihO
U1N0cmluZyAqKW1lZGlhIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAoRE9NSFRNTERv
Y3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlIFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyA6IERP
TU9iamVjdCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTURvY3VtZW50ICpk
b2N1bWVudDsKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUgMTBfNAot
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Eb2N1bWVudFR5cGUgKmRvY3R5cGU7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUltcGxlbWVudGF0aW9uICppbXBsZW1lbnRh
dGlvbjsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqZG9jdW1lbnRF
bGVtZW50OwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01BYnN0cmFjdFZpZXcgKmRl
ZmF1bHRWaWV3OwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01TdHlsZVNoZWV0TGlz
dCAqc3R5bGVTaGVldHM7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xs
ZWN0aW9uICppbWFnZXM7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xs
ZWN0aW9uICphcHBsZXRzOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01IVE1MQ29s
bGVjdGlvbiAqbGlua3M7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xs
ZWN0aW9uICpmb3JtczsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NSFRNTENvbGxl
Y3Rpb24gKmFuY2hvcnM7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp0aXRsZTsKLUBwcm9w
ZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpyZWZlcnJlcjsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkb21haW47Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5
KSBOU1N0cmluZyAqVVJMOwotQHByb3BlcnR5IChzdHJvbmcpIERPTUhUTUxFbGVtZW50ICpib2R5
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqY29va2llOwotQHByb3BlcnR5IChyZWFkb25s
eSwgY29weSkgTlNTdHJpbmcgKmlucHV0RW5jb2RpbmcgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqeG1sRW5jb2RpbmcgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp4bWxW
ZXJzaW9uIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IEJPT0wgeG1sU3Rh
bmRhbG9uZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAoY29weSkgTlNT
dHJpbmcgKmRvY3VtZW50VVJJIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5
IChjb3B5KSBOU1N0cmluZyAqY2hhcnNldCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBw
cm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpkZWZhdWx0Q2hhcnNldCBXRUJLSVRf
QVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5n
ICpyZWFkeVN0YXRlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFk
b25seSwgY29weSkgTlNTdHJpbmcgKmNoYXJhY3RlclNldCBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpwcmVmZXJyZWRTdHls
ZXNoZWV0U2V0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqc2VsZWN0ZWRTdHlsZXNoZWV0U2V0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUp
OwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmxhc3RNb2RpZmllZCBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF82KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
RWxlbWVudCAqYWN0aXZlRWxlbWVudCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKLS0gKERP
TUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWU7Ci0tIChET01Eb2N1
bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudDsKLS0gKERPTVRleHQgKiljcmVh
dGVUZXh0Tm9kZTooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NQ29tbWVudCAqKWNyZWF0ZUNvbW1l
bnQ6KE5TU3RyaW5nICopZGF0YTsKLS0gKERPTUNEQVRBU2VjdGlvbiAqKWNyZWF0ZUNEQVRBU2Vj
dGlvbjooTlNTdHJpbmcgKilkYXRhOwotLSAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopY3Jl
YXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uOihOU1N0cmluZyAqKXRhcmdldCA6KE5TU3RyaW5nICop
ZGF0YTsKLS0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgZGF0YTooTlNTdHJpbmcgKilkYXRhIFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzUpOwotLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lOwotLSAoRE9NRW50aXR5UmVmZXJlbmNlICopY3JlYXRlRW50aXR5UmVmZXJlbmNl
OihOU1N0cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1l
OihOU1N0cmluZyAqKXRhZ25hbWU7Ci0tIChET01Ob2RlICopaW1wb3J0Tm9kZTooRE9NTm9kZSAq
KWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcDsKLS0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lOwot
LSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNC
eVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFt
ZTsKLS0gKERPTU5vZGUgKilpbXBvcnROb2RlOihET01Ob2RlICopaW1wb3J0ZWROb2RlIGRlZXA6
KEJPT0wpZGVlcCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTU5vZGUgKilhZG9w
dE5vZGU6KERPTU5vZGUgKilzb3VyY2UgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChE
T01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBxdWFs
aWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMo
MTBfNSk7Ci0tIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKLS0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2FsTmFt
ZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50
QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQ7Ci0tIChET01FdmVudCAqKWNyZWF0ZUV2ZW50OihO
U1N0cmluZyAqKWV2ZW50VHlwZTsKLS0gKERPTVJhbmdlICopY3JlYXRlUmFuZ2U7Ci0tIChET01D
U1NTdHlsZURlY2xhcmF0aW9uICopY3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbiBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKLS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlk
ZVN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCA6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudDsK
LS0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50
ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQgV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29t
cHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsZW1lbnQgOihOU1N0cmluZyAqKXBzZXVkb0VsZW1l
bnQ7Ci0tIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxl
bWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcgKilwc2V1ZG9FbGVtZW50IFdF
QktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVk
Q1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICop
cHNldWRvRWxlbWVudCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTUNTU1J1bGVM
aXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVt
ZW50OihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50
c0J5TmFtZTooTlNTdHJpbmcgKillbGVtZW50TmFtZTsKLS0gKERPTU5vZGVJdGVyYXRvciAqKWNy
ZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3Qgd2hhdFRvU2hvdzoodW5zaWduZWQpd2hh
dFRvU2hvdyBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlczooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzIFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOwotLSAoRE9NVHJlZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKily
b290IHdoYXRUb1Nob3c6KHVuc2lnbmVkKXdoYXRUb1Nob3cgZmlsdGVyOihpZCA8RE9NTm9kZUZp
bHRlcj4pZmlsdGVyIGV4cGFuZEVudGl0eVJlZmVyZW5jZXM6KEJPT0wpZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTU5vZGVJdGVyYXRvciAq
KWNyZWF0ZU5vZGVJdGVyYXRvcjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93
IDooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNl
czsKLS0gKERPTVRyZWVXYWxrZXIgKiljcmVhdGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCA6
KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyIDooQk9PTCll
eHBhbmRFbnRpdHlSZWZlcmVuY2VzOwotLSAoRE9NWFBhdGhFeHByZXNzaW9uICopY3JlYXRlRXhw
cmVzc2lvbjooTlNTdHJpbmcgKilleHByZXNzaW9uIDooaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4p
cmVzb2x2ZXIgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzUsIDEwXzUpOwotLSAoRE9NWFBhdGhF
eHByZXNzaW9uICopY3JlYXRlRXhwcmVzc2lvbjooTlNTdHJpbmcgKilleHByZXNzaW9uIHJlc29s
dmVyOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKLS0gKGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KWNyZWF0ZU5TUmVzb2x2ZXI6KERP
TU5vZGUgKilub2RlUmVzb2x2ZXIgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChET01Y
UGF0aFJlc3VsdCAqKWV2YWx1YXRlOihOU1N0cmluZyAqKWV4cHJlc3Npb24gOihET01Ob2RlICop
Y29udGV4dE5vZGUgOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciA6KHVuc2lnbmVk
IHNob3J0KXR5cGUgOihET01YUGF0aFJlc3VsdCAqKWluUmVzdWx0IFdFQktJVF9ERVBSRUNBVEVE
X01BQygxMF81LCAxMF81KTsKLS0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KE5TU3RyaW5n
ICopZXhwcmVzc2lvbiBjb250ZXh0Tm9kZTooRE9NTm9kZSAqKWNvbnRleHROb2RlIHJlc29sdmVy
OihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciB0eXBlOih1bnNpZ25lZCBzaG9ydCl0
eXBlIGluUmVzdWx0OihET01YUGF0aFJlc3VsdCAqKWluUmVzdWx0IFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOwotLSAoQk9PTClleGVjQ29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIHVzZXJJ
bnRlcmZhY2U6KEJPT0wpdXNlckludGVyZmFjZSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKEJPT0wpZXhlY0NvbW1hbmQ6KE5TU3RyaW5nICop
Y29tbWFuZCB1c2VySW50ZXJmYWNlOihCT09MKXVzZXJJbnRlcmZhY2UgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNSk7Ci0tIChCT09MKWV4ZWNDb21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChCT09MKXF1ZXJ5Q29tbWFuZEVuYWJsZWQ6KE5T
U3RyaW5nICopY29tbWFuZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKEJPT0wpcXVl
cnlDb21tYW5kSW5kZXRlcm06KE5TU3RyaW5nICopY29tbWFuZCBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKLS0gKEJPT0wpcXVlcnlDb21tYW5kU3RhdGU6KE5TU3RyaW5nICopY29tbWFuZCBX
RUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKEJPT0wpcXVlcnlDb21tYW5kU3VwcG9ydGVk
OihOU1N0cmluZyAqKWNvbW1hbmQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChOU1N0
cmluZyAqKXF1ZXJ5Q29tbWFuZFZhbHVlOihOU1N0cmluZyAqKWNvbW1hbmQgV0VCS0lUX0FWQUlM
QUJMRV9NQUMoMTBfNSk7Ci0tIChET01FbGVtZW50ICopZWxlbWVudEZyb21Qb2ludDooaW50KXgg
eTooaW50KXkgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopY2xhc3NOYW1lcyBXRUJLSVRfQVZBSUxB
QkxFX01BQygxMF82KTsKLS0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAq
KXNlbGVjdG9ycyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKLS0gKERPTU5vZGVMaXN0ICop
cXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilzZWxlY3RvcnMgV0VCS0lUX0FWQUlMQUJMRV9N
QUMoMTBfNik7Ci0jaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9G
VUxMU0NSRUVOX0FQSQotLSAodm9pZCl3ZWJraXRDYW5jZWxGdWxsU2NyZWVuIFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzYpOwotI2VuZGlmCi0tIChCT09MKWhhc0ZvY3VzIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzYpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21lbnQgOiBE
T01Ob2RlIDEwXzQKLUBlbmQKLQotQGludGVyZmFjZSBET01Eb2N1bWVudFR5cGUgOiBET01Ob2Rl
IDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOwotQHByb3Bl
cnR5IChyZWFkb25seSwgc3Ryb25nKSBET01OYW1lZE5vZGVNYXAgKmVudGl0aWVzOwotQHByb3Bl
cnR5IChyZWFkb25seSwgc3Ryb25nKSBET01OYW1lZE5vZGVNYXAgKm5vdGF0aW9uczsKLUBwcm9w
ZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpwdWJsaWNJZDsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpzeXN0ZW1JZDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNv
cHkpIE5TU3RyaW5nICppbnRlcm5hbFN1YnNldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01FbGVt
ZW50IDogRE9NTm9kZSAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
dGFnTmFtZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqc3R5bGU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjbGFzc05hbWU7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSBpbnQgb2Zmc2V0TGVmdDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGlu
dCBvZmZzZXRUb3A7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgb2Zmc2V0V2lkdGg7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSBpbnQgb2Zmc2V0SGVpZ2h0OwotQHByb3BlcnR5IChyZWFkb25seSwg
c3Ryb25nKSBET01FbGVtZW50ICpvZmZzZXRQYXJlbnQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBp
bnQgY2xpZW50V2lkdGg7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50SGVpZ2h0Owot
QHByb3BlcnR5IGludCBzY3JvbGxMZWZ0OwotQHByb3BlcnR5IGludCBzY3JvbGxUb3A7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSBpbnQgc2Nyb2xsV2lkdGg7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBp
bnQgc2Nyb2xsSGVpZ2h0OwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IGNsaWVudExlZnQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50
VG9wIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSwgY29w
eSkgTlNTdHJpbmcgKmlubmVyVGV4dCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmlubmVySFRNTDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJp
bmcgKm91dGVySFRNTDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAq
Zmlyc3RFbGVtZW50Q2hpbGQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci1AcHJvcGVydHkg
KHJlYWRvbmx5LCBzdHJvbmcpIERPTUVsZW1lbnQgKmxhc3RFbGVtZW50Q2hpbGQgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNik7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUVsZW1l
bnQgKnByZXZpb3VzRWxlbWVudFNpYmxpbmcgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUVsZW1lbnQgKm5leHRFbGVtZW50U2libGlu
ZyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2ln
bmVkIGNoaWxkRWxlbWVudENvdW50IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotLSAoTlNT
dHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpc2V0QXR0cmli
dXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClzZXRBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKLS0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5h
bWU7Ci0tIChET01BdHRyICopZ2V0QXR0cmlidXRlTm9kZTooTlNTdHJpbmcgKiluYW1lOwotLSAo
RE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKiluZXdBdHRyOwotLSAoRE9NQXR0
ciAqKXJlbW92ZUF0dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyOwotLSAoRE9NTm9kZUxp
c3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZTooTlNTdHJpbmcgKiluYW1lOwotLSAoTlNTdHJpbmcg
KilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxv
Y2FsTmFtZTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJ
IDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKHZvaWQp
cmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWU7Ci0tIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3Ry
aW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWU7Ci0tIChET01BdHRyICop
Z2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICop
bG9jYWxOYW1lOwotLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1l
c3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2FsTmFtZSBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSB2YWx1ZTooTlNTdHJp
bmcgKil2YWx1ZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKHZvaWQpcmVtb3ZlQXR0
cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZTooTlNTdHJpbmcgKils
b2NhbE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZToo
TlNTdHJpbmcgKilsb2NhbE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChET01B
dHRyICopZ2V0QXR0cmlidXRlTm9kZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBsb2NhbE5h
bWU6KE5TU3RyaW5nICopbG9jYWxOYW1lIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAo
RE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0ciAqKW5ld0F0dHI7Ci0tIChCT09M
KWhhc0F0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwotLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKEJPT0wp
aGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZTooTlNTdHJp
bmcgKilsb2NhbE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKXNjcm9s
bEludG9WaWV3OihCT09MKWFsaWduV2l0aFRvcCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsK
LS0gKHZvaWQpc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDooQk9PTCljZW50ZXJJZk5lZWRlZCBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKHZvaWQpc2Nyb2xsQnlMaW5lczooaW50KWxpbmVz
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAodm9pZClzY3JvbGxCeVBhZ2VzOihpbnQp
cGFnZXMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKWZvY3VzIFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzYpOwotLSAodm9pZClibHVyIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEw
XzYpOwotLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAq
KW5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci0tIChET01FbGVtZW50ICopcXVlcnlT
ZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7
Ci0tIChET01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3Jz
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKLS0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW46KHVuc2lnbmVkIHNob3J0KWZsYWdzIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYp
OwotI2VuZGlmCi1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRW50aXR5IDogRE9NTm9kZSAxMF80Ci1A
cHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcHVibGljSWQ7Ci1AcHJvcGVydHkg
KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqc3lzdGVtSWQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5
LCBjb3B5KSBOU1N0cmluZyAqbm90YXRpb25OYW1lOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUVu
dGl0eVJlZmVyZW5jZSA6IERPTU5vZGUgMTBfNAotQGVuZAotCi1AaW50ZXJmYWNlIERPTUJsb2Ig
OiBET01PYmplY3QgMTBfNgotQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWduZWQgbG9uZyBsb25n
IHNpemU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRmlsZSA6IERPTUJsb2IgMTBfNgotQHByb3Bl
cnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NRmlsZUxpc3QgOiBET01PYmplY3QgMTBfNgotQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWdu
ZWQgbGVuZ3RoOwotLSAoRE9NRmlsZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTU5hbWVkTm9kZU1hcCA6IERPTU9iamVjdCAxMF80Ci1AcHJvcGVydHkgKHJl
YWRvbmx5KSB1bnNpZ25lZCBsZW5ndGg7Ci0tIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0
cmluZyAqKW5hbWU7Ci0tIChET01Ob2RlICopc2V0TmFtZWRJdGVtOihET01Ob2RlICopbm9kZTsK
LS0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKERPTU5v
ZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW1OUzoo
TlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZTsKLS0gKERPTU5v
ZGUgKilnZXROYW1lZEl0ZW1OUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihO
U1N0cmluZyAqKWxvY2FsTmFtZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTU5v
ZGUgKilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKW5vZGU7Ci0tIChET01Ob2RlICopcmVtb3Zl
TmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5h
bWU7Ci0tIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIGxvY2FsTmFtZTooTlNTdHJpbmcgKilsb2NhbE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMo
MTBfNSk7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTm9kZSA6IERPTU9iamVjdCAxMF80Ci1AcHJv
cGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbm9kZU5hbWU7Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICpub2RlVmFsdWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBz
aG9ydCBub2RlVHlwZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTm9kZSAqcGFy
ZW50Tm9kZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTm9kZUxpc3QgKmNoaWxk
Tm9kZXM7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5vZGUgKmZpcnN0Q2hpbGQ7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5vZGUgKmxhc3RDaGlsZDsKLUBwcm9w
ZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTm9kZSAqcHJldmlvdXNTaWJsaW5nOwotQHByb3Bl
cnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpuZXh0U2libGluZzsKLUBwcm9wZXJ0eSAo
cmVhZG9ubHksIHN0cm9uZykgRE9NTmFtZWROb2RlTWFwICphdHRyaWJ1dGVzOwotQHByb3BlcnR5
IChyZWFkb25seSwgc3Ryb25nKSBET01Eb2N1bWVudCAqb3duZXJEb2N1bWVudDsKLUBwcm9wZXJ0
eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lc3BhY2VVUkk7Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICpwcmVmaXg7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqbG9jYWxOYW1lOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdGV4dENvbnRlbnQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0
cmluZyAqYmFzZVVSSSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqcGFyZW50RWxlbWVudCBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNDb250ZW50RWRpdGFibGUg
V0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihE
T01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopcmVmQ2hpbGQ7Ci0tIChET01Ob2RlICopaW5z
ZXJ0QmVmb3JlOihET01Ob2RlICopbmV3Q2hpbGQgcmVmQ2hpbGQ6KERPTU5vZGUgKilyZWZDaGls
ZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTU5vZGUgKilyZXBsYWNlQ2hpbGQ6
KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilvbGRDaGlsZDsKLS0gKERPTU5vZGUgKily
ZXBsYWNlQ2hpbGQ6KERPTU5vZGUgKiluZXdDaGlsZCBvbGRDaGlsZDooRE9NTm9kZSAqKW9sZENo
aWxkIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxk
OihET01Ob2RlICopb2xkQ2hpbGQ7Ci0tIChET01Ob2RlICopYXBwZW5kQ2hpbGQ6KERPTU5vZGUg
KiluZXdDaGlsZDsKLS0gKEJPT0wpaGFzQ2hpbGROb2RlczsKLS0gKERPTU5vZGUgKiljbG9uZU5v
ZGU6KEJPT0wpZGVlcDsKLS0gKHZvaWQpbm9ybWFsaXplOwotLSAoQk9PTClpc1N1cHBvcnRlZDoo
TlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uOwotLSAoQk9PTClpc1N1cHBv
cnRlZDooTlNTdHJpbmcgKilmZWF0dXJlIHZlcnNpb246KE5TU3RyaW5nICopdmVyc2lvbiBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKEJPT0wpaGFzQXR0cmlidXRlczsKLS0gKEJPT0wp
aXNTYW1lTm9kZTooRE9NTm9kZSAqKW90aGVyIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwot
LSAoQk9PTClpc0VxdWFsTm9kZTooRE9NTm9kZSAqKW90aGVyIFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOwotLSAoTlNTdHJpbmcgKilsb29rdXBQcmVmaXg6KE5TU3RyaW5nICopbmFtZXNwYWNl
VVJJIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAoQk9PTClpc0RlZmF1bHROYW1lc3Bh
Y2U6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwot
LSAoTlNTdHJpbmcgKilsb29rdXBOYW1lc3BhY2VVUkk6KE5TU3RyaW5nICopcHJlZml4IFdFQktJ
VF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAodW5zaWduZWQgc2hvcnQpY29tcGFyZURvY3VtZW50
UG9zaXRpb246KERPTU5vZGUgKilvdGhlciBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKLS0g
KEJPT0wpY29udGFpbnM6KERPTU5vZGUgKilvdGhlciBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81
KTsKLUBlbmQKLQotQGludGVyZmFjZSBET01Ob2RlTGlzdCA6IERPTU9iamVjdCAxMF80Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBsZW5ndGg7Ci0tIChET01Ob2RlICopaXRlbToodW5z
aWduZWQpaW5kZXg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
IDogRE9NQ2hhcmFjdGVyRGF0YSAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0
cmluZyAqdGFyZ2V0OwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01TdHlsZVNoZWV0
ICpzaGVldCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF80KTsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01UZXh0IDogRE9NQ2hhcmFjdGVyRGF0YSAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5
KSBOU1N0cmluZyAqd2hvbGVUZXh0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotLSAoRE9N
VGV4dCAqKXNwbGl0VGV4dDoodW5zaWduZWQpb2Zmc2V0OwotLSAoRE9NVGV4dCAqKXJlcGxhY2VX
aG9sZVRleHQ6KE5TU3RyaW5nICopY29udGVudCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MQW5jaG9yRWxlbWVudCA6IERPTUhUTUxFbGVtZW50
IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFjY2Vzc0tleSBXRUJLSVRfREVQUkVD
QVRFRF9NQUMoMTBfNCwgMTBfOCk7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjaGFyc2V0
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqY29vcmRzOwotQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqaHJlZjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmhyZWZsYW5nOwotQHBy
b3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcg
KnJlbDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnJldjsKLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKnNoYXBlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdGFyZ2V0OwotQHBy
b3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkp
IE5TVVJMICphYnNvbHV0ZUxpbmtVUkwgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqaGFzaE5hbWUgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqaG9zdCBX
RUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5T
U3RyaW5nICpob3N0bmFtZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAo
cmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpwYXRobmFtZSBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpwb3J0IFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcg
KnByb3RvY29sIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25s
eSwgY29weSkgTlNTdHJpbmcgKnNlYXJjaCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBw
cm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0ZXh0IFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxBcHBsZXRFbGVtZW50IDogRE9N
SFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWxpZ247Ci1AcHJv
cGVydHkgKGNvcHkpIE5TU3RyaW5nICphbHQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICph
cmNoaXZlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqY29kZTsKLUBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKmNvZGVCYXNlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaGVpZ2h0
OwotQHByb3BlcnR5IGludCBoc3BhY2U7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpuYW1l
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqb2JqZWN0OwotQHByb3BlcnR5IGludCB2c3Bh
Y2U7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp3aWR0aDsKLUBlbmQKLQotQGludGVyZmFj
ZSBET01IVE1MQXJlYUVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICphY2Nlc3NLZXkgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzgp
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWx0OwotQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqY29vcmRzOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaHJlZjsKLUBwcm9wZXJ0
eSBCT09MIG5vSHJlZjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNoYXBlOwotQHByb3Bl
cnR5IChjb3B5KSBOU1N0cmluZyAqdGFyZ2V0OwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkg
TlNVUkwgKmFic29sdXRlTGlua1VSTCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9w
ZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpoYXNoTmFtZSBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpob3N0IFdF
QktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNT
dHJpbmcgKmhvc3RuYW1lIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChy
ZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnBhdGhuYW1lIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEw
XzUpOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnBvcnQgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
cHJvdG9jb2wgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5
LCBjb3B5KSBOU1N0cmluZyAqc2VhcmNoIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUhUTUxCUkVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1A
cHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjbGVhcjsKLUBlbmQKLQotQGludGVyZmFjZSBET01I
VE1MQmFzZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICpocmVmOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdGFyZ2V0OwotQGVuZAot
Ci1AaW50ZXJmYWNlIERPTUhUTUxCYXNlRm9udEVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80
Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjb2xvcjsKLUBwcm9wZXJ0eSAoY29weSkgTlNT
dHJpbmcgKmZhY2U7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzaXplOwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxCb2R5RWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFMaW5rOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
YmFja2dyb3VuZDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmJnQ29sb3I7Ci1AcHJvcGVy
dHkgKGNvcHkpIE5TU3RyaW5nICpsaW5rOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdGV4
dDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnZMaW5rOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUhUTUxCdXR0b25FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChj
b3B5KSBOU1N0cmluZyAqYWNjZXNzS2V5IFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80LCAxMF84
KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NSFRNTEZvcm1FbGVtZW50ICpmb3Jt
OwotQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpu
YW1lOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKnZhbHVlOwotQHByb3BlcnR5IEJPT0wgYXV0b2ZvY3VzIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzYpOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCB3aWxsVmFsaWRhdGUgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci0tICh2b2lkKWNsaWNrIFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxDYW52YXNFbGVtZW50IDogRE9N
SFRNTEVsZW1lbnQgMTBfNQotQHByb3BlcnR5IGludCBoZWlnaHQ7Ci1AcHJvcGVydHkgaW50IHdp
ZHRoOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxDb2xsZWN0aW9uIDogRE9NT2JqZWN0IDEw
XzQKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIGxlbmd0aDsKLS0gKERPTU5vZGUgKilp
dGVtOih1bnNpZ25lZClpbmRleDsKLS0gKERPTU5vZGUgKiluYW1lZEl0ZW06KE5TU3RyaW5nICop
bmFtZTsKLS0gKERPTU5vZGVMaXN0ICopdGFnczooTlNTdHJpbmcgKiluYW1lIFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzYpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxETGlzdEVsZW1lbnQg
OiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgQk9PTCBjb21wYWN0OwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAot
QHByb3BlcnR5IEJPT0wgY29tcGFjdDsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MRGl2RWxl
bWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFs
aWduOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxEb2N1bWVudCA6IERPTURvY3VtZW50IDEw
XzQKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NSFRNTENvbGxlY3Rpb24gKmVtYmVk
cyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9u
ZykgRE9NSFRNTENvbGxlY3Rpb24gKnBsdWdpbnMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xsZWN0aW9uICpzY3JpcHRz
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IHdp
ZHRoIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50
IGhlaWdodCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAoY29weSkgTlNT
dHJpbmcgKmRpciBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKmRlc2lnbk1vZGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVy
dHkgKGNvcHkpIE5TU3RyaW5nICpiZ0NvbG9yIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZmdDb2xvciBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFsaW5rQ29sb3IgV0VCS0lUX0FWQUlM
QUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpsaW5rQ29sb3IgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp2bGlu
a0NvbG9yIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSwg
Y29weSkgTlNTdHJpbmcgKmNvbXBhdE1vZGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci0t
ICh2b2lkKWNhcHR1cmVFdmVudHMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lk
KXJlbGVhc2VFdmVudHMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKWNsZWFy
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotLSAodm9pZClvcGVuOwotLSAodm9pZCljbG9z
ZTsKLS0gKHZvaWQpd3JpdGU6KE5TU3RyaW5nICopdGV4dDsKLS0gKHZvaWQpd3JpdGVsbjooTlNT
dHJpbmcgKil0ZXh0OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxFbGVtZW50IDogRE9NRWxl
bWVudCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICphY2Nlc3NLZXkgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfOCk7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp0aXRsZTsKLUBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmlkTmFtZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJp
bmcgKmxhbmc7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpkaXI7Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICppbm5lclRleHQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpvdXRl
clRleHQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xsZWN0aW9uICpj
aGlsZHJlbjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNvbnRlbnRFZGl0YWJsZTsKLUBw
cm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNDb250ZW50RWRpdGFibGU7Ci1AcHJvcGVydHkgKHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqdGl0bGVEaXNwbGF5U3RyaW5nIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IGludCB0YWJJbmRleDsKLS0gKHZvaWQpY2xpY2sgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfOCk7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEVtYmVk
RWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcg
KmFsaWduOwotQHByb3BlcnR5IGludCBoZWlnaHQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5n
ICpuYW1lOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc3JjOwotQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0eSBpbnQgd2lkdGg7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTEZpZWxkU2V0RWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0
eSAocmVhZG9ubHksIHN0cm9uZykgRE9NSFRNTEZvcm1FbGVtZW50ICpmb3JtOwotQGVuZAotCi1A
aW50ZXJmYWNlIERPTUhUTUxGb250RWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNvbG9yOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
ZmFjZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNpemU7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NSFRNTEZvcm1FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChy
ZWFkb25seSwgc3Ryb25nKSBET01IVE1MQ29sbGVjdGlvbiAqZWxlbWVudHM7Ci1AcHJvcGVydHkg
KHJlYWRvbmx5KSBpbnQgbGVuZ3RoOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZTsK
LUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFjY2VwdENoYXJzZXQ7Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICphY3Rpb247Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICplbmN0eXBl
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbWV0aG9kOwotQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqdGFyZ2V0OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZW5jb2RpbmcgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKXN1Ym1pdDsKLS0gKHZvaWQpcmVzZXQ7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEZyYW1lRWxlbWVudCA6IERPTUhUTUxFbGVtZW50
IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmZyYW1lQm9yZGVyOwotQHByb3BlcnR5
IChjb3B5KSBOU1N0cmluZyAqbG9uZ0Rlc2M7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpt
YXJnaW5IZWlnaHQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICptYXJnaW5XaWR0aDsKLUBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5hbWU7Ci1AcHJvcGVydHkgQk9PTCBub1Jlc2l6ZTsK
LUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNjcm9sbGluZzsKLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKnNyYzsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRG9jdW1lbnQg
KmNvbnRlbnREb2N1bWVudDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQWJzdHJh
Y3RWaWV3ICpjb250ZW50V2luZG93IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3Bl
cnR5IChjb3B5KSBOU1N0cmluZyAqbG9jYXRpb24gV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgd2lkdGggV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgaGVpZ2h0IFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxGcmFtZVNldEVsZW1lbnQgOiBET01I
VE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjb2xzOwotQHByb3Bl
cnR5IChjb3B5KSBOU1N0cmluZyAqcm93czsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MSFJF
bGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
YWxpZ247Ci1AcHJvcGVydHkgQk9PTCBub1NoYWRlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmlu
ZyAqc2l6ZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKndpZHRoOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTUhUTUxIZWFkRWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0
eSAoY29weSkgTlNTdHJpbmcgKnByb2ZpbGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEhl
YWRpbmdFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqYWxpZ247Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEh0bWxFbGVtZW50IDogRE9N
SFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdmVyc2lvbjsKLUBl
bmQKLQotQGludGVyZmFjZSBET01IVE1MSUZyYW1lRWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEw
XzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFsaWduOwotQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqZnJhbWVCb3JkZXI7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpoZWlnaHQ7
Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpsb25nRGVzYzsKLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKm1hcmdpbkhlaWdodDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm1hcmdp
bldpZHRoOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZTsKLUBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKnNjcm9sbGluZzsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNyYzsK
LUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKndpZHRoOwotQHByb3BlcnR5IChyZWFkb25seSwg
c3Ryb25nKSBET01Eb2N1bWVudCAqY29udGVudERvY3VtZW50OwotQHByb3BlcnR5IChyZWFkb25s
eSwgc3Ryb25nKSBET01BYnN0cmFjdFZpZXcgKmNvbnRlbnRXaW5kb3cgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNik7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTEltYWdlRWxlbWVudCA6IERP
TUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5hbWU7Ci1AcHJv
cGVydHkgKGNvcHkpIE5TU3RyaW5nICphbGlnbjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcg
KmFsdDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmJvcmRlcjsKLUBwcm9wZXJ0eSBpbnQg
aGVpZ2h0OwotQHByb3BlcnR5IGludCBoc3BhY2U7Ci1AcHJvcGVydHkgQk9PTCBpc01hcDsKLUBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmxvbmdEZXNjOwotQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqc3JjOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdXNlTWFwOwotQHByb3BlcnR5
IGludCB2c3BhY2U7Ci1AcHJvcGVydHkgaW50IHdpZHRoOwotQHByb3BlcnR5IChyZWFkb25seSwg
Y29weSkgTlNTdHJpbmcgKmFsdERpc3BsYXlTdHJpbmcgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqYWJzb2x1dGVJbWFnZVVSTCBX
RUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY29t
cGxldGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3Ry
aW5nICpsb3dzcmMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5KSBpbnQgbmF0dXJhbEhlaWdodCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9w
ZXJ0eSAocmVhZG9ubHkpIGludCBuYXR1cmFsV2lkdGggV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81
KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUp
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxJbnB1dEVsZW1lbnQgOiBET01IVE1MRWxlbWVu
dCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpkZWZhdWx0VmFsdWU7Ci1AcHJvcGVy
dHkgQk9PTCBkZWZhdWx0Q2hlY2tlZDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
SFRNTEZvcm1FbGVtZW50ICpmb3JtOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWNjZXB0
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWNjZXNzS2V5IFdFQktJVF9ERVBSRUNBVEVE
X01BQygxMF80LCAxMF84KTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFsaWduOwotQHBy
b3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWx0OwotQHByb3BlcnR5IEJPT0wgY2hlY2tlZDsKLUBw
cm9wZXJ0eSBCT09MIGRpc2FibGVkOwotQHByb3BlcnR5IGludCBtYXhMZW5ndGg7Ci1AcHJvcGVy
dHkgKGNvcHkpIE5TU3RyaW5nICpuYW1lOwotQHByb3BlcnR5IEJPT0wgcmVhZE9ubHk7Ci1AcHJv
cGVydHkgKGNvcHkpIE5TU3RyaW5nICpzaXplOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
c3JjOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0eSAoY29weSkg
TlNTdHJpbmcgKnVzZU1hcDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnZhbHVlOwotQHBy
b3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmFsdERpc3BsYXlTdHJpbmcgV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAq
YWJzb2x1dGVJbWFnZVVSTCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSBC
T09MIGluZGV0ZXJtaW5hdGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkg
aW50IHNlbGVjdGlvblN0YXJ0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5
IGludCBzZWxlY3Rpb25FbmQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkg
Qk9PTCBhdXRvZm9jdXMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci1AcHJvcGVydHkgQk9P
TCBtdWx0aXBsZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKLUBwcm9wZXJ0eSAocmVhZG9u
bHkpIEJPT0wgd2lsbFZhbGlkYXRlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotQHByb3Bl
cnR5IChzdHJvbmcpIERPTUZpbGVMaXN0ICpmaWxlcyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82
KTsKLS0gKHZvaWQpc2VsZWN0OwotLSAodm9pZCljbGljazsKLS0gKHZvaWQpc2V0U2VsZWN0aW9u
UmFuZ2U6KGludClzdGFydCBlbmQ6KGludCllbmQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTExJRWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEw
XzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnR5cGU7Ci1AcHJvcGVydHkgaW50IHZhbHVl
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxMYWJlbEVsZW1lbnQgOiBET01IVE1MRWxlbWVu
dCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICphY2Nlc3NLZXkgV0VCS0lUX0RFUFJF
Q0FURURfTUFDKDEwXzQsIDEwXzgpOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01I
VE1MRm9ybUVsZW1lbnQgKmZvcm07Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpodG1sRm9y
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxMZWdlbmRFbGVtZW50IDogRE9NSFRNTEVsZW1l
bnQgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWNjZXNzS2V5IFdFQktJVF9ERVBS
RUNBVEVEX01BQygxMF80LCAxMF84KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
SFRNTEZvcm1FbGVtZW50ICpmb3JtOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWxpZ247
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTExpbmtFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQg
MTBfNAotQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5n
ICpjaGFyc2V0OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaHJlZjsKLUBwcm9wZXJ0eSAo
Y29weSkgTlNTdHJpbmcgKmhyZWZsYW5nOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbWVk
aWE7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpyZWw7Ci1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICpyZXY7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp0YXJnZXQ7Ci1AcHJvcGVy
dHkgKGNvcHkpIE5TU3RyaW5nICp0eXBlOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNV
UkwgKmFic29sdXRlTGlua1VSTCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0
eSAocmVhZG9ubHksIHN0cm9uZykgRE9NU3R5bGVTaGVldCAqc2hlZXQgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNCk7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTE1hcEVsZW1lbnQgOiBET01I
VE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xs
ZWN0aW9uICphcmVhczsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5hbWU7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NSFRNTE1hcnF1ZWVFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNQot
LSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3RvcDsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1M
TWVudUVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgQk9PTCBjb21wYWN0
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxNZXRhRWxlbWVudCA6IERPTUhUTUxFbGVtZW50
IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNvbnRlbnQ7Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICpodHRwRXF1aXY7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpuYW1l
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc2NoZW1lOwotQGVuZAotCi1AaW50ZXJmYWNl
IERPTUhUTUxNb2RFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqY2l0ZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmRhdGVUaW1lOwot
QGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxPTGlzdEVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAx
MF80Ci1AcHJvcGVydHkgQk9PTCBjb21wYWN0OwotQHByb3BlcnR5IGludCBzdGFydDsKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKnR5cGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTE9i
amVjdEVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBz
dHJvbmcpIERPTUhUTUxGb3JtRWxlbWVudCAqZm9ybTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJp
bmcgKmNvZGU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICphbGlnbjsKLUBwcm9wZXJ0eSAo
Y29weSkgTlNTdHJpbmcgKmFyY2hpdmU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpib3Jk
ZXI7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjb2RlQmFzZTsKLUBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKmNvZGVUeXBlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZGF0YTsK
LUBwcm9wZXJ0eSBCT09MIGRlY2xhcmU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpoZWln
aHQ7Ci1AcHJvcGVydHkgaW50IGhzcGFjZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5h
bWU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzdGFuZGJ5OwotQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnVzZU1hcDsKLUBw
cm9wZXJ0eSBpbnQgdnNwYWNlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqd2lkdGg7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTURvY3VtZW50ICpjb250ZW50RG9jdW1lbnQ7
Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqYWJzb2x1dGVJbWFnZVVSTCBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MT3B0R3Jv
dXBFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7
Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpsYWJlbDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01IVE1MT3B0aW9uRWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0eSAocmVh
ZG9ubHksIHN0cm9uZykgRE9NSFRNTEZvcm1FbGVtZW50ICpmb3JtOwotQHByb3BlcnR5IEJPT0wg
ZGVmYXVsdFNlbGVjdGVkOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnRl
eHQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgaW5kZXg7Ci1AcHJvcGVydHkgQk9PTCBkaXNh
YmxlZDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmxhYmVsOwotQHByb3BlcnR5IEJPT0wg
c2VsZWN0ZWQ7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp2YWx1ZTsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gOiBET01PYmplY3QgMTBfNAotQHByb3Bl
cnR5IHVuc2lnbmVkIGxlbmd0aDsKLUBwcm9wZXJ0eSBpbnQgc2VsZWN0ZWRJbmRleCBXRUJLSVRf
QVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsK
LS0gKERPTU5vZGUgKiluYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZTsKLS0gKHZvaWQpYWRkOihE
T01IVE1MT3B0aW9uRWxlbWVudCAqKW9wdGlvbiBpbmRleDoodW5zaWduZWQpaW5kZXggV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKXJlbW92ZToodW5zaWduZWQpaW5kZXggV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFBhcmFn
cmFwaEVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3Ry
aW5nICphbGlnbjsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MUGFyYW1FbGVtZW50IDogRE9N
SFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZTsKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKnR5cGU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp2
YWx1ZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnZhbHVlVHlwZTsKLUBlbmQKLQotQGlu
dGVyZmFjZSBET01IVE1MUHJlRWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0
eSBpbnQgd2lkdGg7Ci1AcHJvcGVydHkgQk9PTCB3cmFwIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEw
XzUpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxRdW90ZUVsZW1lbnQgOiBET01IVE1MRWxl
bWVudCAxMF80Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjaXRlOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTUhUTUxTY3JpcHRFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3Bl
cnR5IChjb3B5KSBOU1N0cmluZyAqdGV4dDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmh0
bWxGb3I7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpldmVudDsKLUBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKmNoYXJzZXQ7Ci1AcHJvcGVydHkgQk9PTCBkZWZlcjsKLUBwcm9wZXJ0eSAo
Y29weSkgTlNTdHJpbmcgKnNyYzsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnR5cGU7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFNlbGVjdEVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAx
MF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0
eSBpbnQgc2VsZWN0ZWRJbmRleDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnZhbHVlOwot
QHByb3BlcnR5IChyZWFkb25seSkgaW50IGxlbmd0aDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0
cm9uZykgRE9NSFRNTEZvcm1FbGVtZW50ICpmb3JtOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ry
b25nKSBET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gKm9wdGlvbnM7Ci1AcHJvcGVydHkgQk9PTCBk
aXNhYmxlZDsKLUBwcm9wZXJ0eSBCT09MIG11bHRpcGxlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqbmFtZTsKLUBwcm9wZXJ0eSBpbnQgc2l6ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgd2lsbFZhbGlkYXRlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotQHByb3BlcnR5IEJP
T0wgYXV0b2ZvY3VzIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotLSAodm9pZClhZGQ6KERP
TUhUTUxFbGVtZW50ICopZWxlbWVudCA6KERPTUhUTUxFbGVtZW50ICopYmVmb3JlOwotLSAodm9p
ZClhZGQ6KERPTUhUTUxFbGVtZW50ICopZWxlbWVudCBiZWZvcmU6KERPTUhUTUxFbGVtZW50ICop
YmVmb3JlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAodm9pZClyZW1vdmU6KGludClp
bmRleDsKLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleCBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF82KTsKLS0gKERPTU5vZGUgKiluYW1lZEl0ZW06KE5TU3RyaW5nICopbmFtZSBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF82KTsKLUBlbmQKLQotQGludGVyZmFjZSBET01IVE1MU3R5bGVF
bGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7Ci1A
cHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICptZWRpYTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJp
bmcgKnR5cGU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTVN0eWxlU2hlZXQgKnNo
ZWV0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzQpOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhU
TUxUYWJsZUNhcHRpb25FbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAotQHByb3BlcnR5IChj
b3B5KSBOU1N0cmluZyAqYWxpZ247Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQg
Y2VsbEluZGV4OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYWJicjsKLUBwcm9wZXJ0eSAo
Y29weSkgTlNTdHJpbmcgKmFsaWduOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYXhpczsK
LUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmJnQ29sb3I7Ci1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICpjaDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNoT2ZmOwotQHByb3BlcnR5
IGludCBjb2xTcGFuOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaGVhZGVyczsKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmhlaWdodDsKLUBwcm9wZXJ0eSBCT09MIG5vV3JhcDsKLUBw
cm9wZXJ0eSBpbnQgcm93U3BhbjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNjb3BlOwot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdkFsaWduOwotQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqd2lkdGg7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFRhYmxlQ29sRWxlbWVudCA6
IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFsaWduOwot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqY2g7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5n
ICpjaE9mZjsKLUBwcm9wZXJ0eSBpbnQgc3BhbjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcg
KnZBbGlnbjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKndpZHRoOwotQGVuZAotCi1AaW50
ZXJmYWNlIERPTUhUTUxUYWJsZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudCAxMF80Ci1AcHJvcGVy
dHkgKHN0cm9uZykgRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKmNhcHRpb247Ci1AcHJvcGVy
dHkgKHN0cm9uZykgRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgKnRIZWFkOwotQHByb3BlcnR5
IChzdHJvbmcpIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICp0Rm9vdDsKLUBwcm9wZXJ0eSAo
cmVhZG9ubHksIHN0cm9uZykgRE9NSFRNTENvbGxlY3Rpb24gKnJvd3M7Ci1AcHJvcGVydHkgKHJl
YWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xsZWN0aW9uICp0Qm9kaWVzOwotQHByb3BlcnR5IChj
b3B5KSBOU1N0cmluZyAqYWxpZ247Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpiZ0NvbG9y
OwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqYm9yZGVyOwotQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqY2VsbFBhZGRpbmc7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjZWxsU3Bh
Y2luZzsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmZyYW1lQm9yZGVyczsKLUBwcm9wZXJ0
eSAoY29weSkgTlNTdHJpbmcgKnJ1bGVzOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc3Vt
bWFyeTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKndpZHRoOwotLSAoRE9NSFRNTEVsZW1l
bnQgKiljcmVhdGVUSGVhZDsKLS0gKHZvaWQpZGVsZXRlVEhlYWQ7Ci0tIChET01IVE1MRWxlbWVu
dCAqKWNyZWF0ZVRGb290OwotLSAodm9pZClkZWxldGVURm9vdDsKLS0gKERPTUhUTUxFbGVtZW50
ICopY3JlYXRlQ2FwdGlvbjsKLS0gKHZvaWQpZGVsZXRlQ2FwdGlvbjsKLS0gKERPTUhUTUxFbGVt
ZW50ICopaW5zZXJ0Um93OihpbnQpaW5kZXg7Ci0tICh2b2lkKWRlbGV0ZVJvdzooaW50KWluZGV4
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUhUTUxUYWJsZVJvd0VsZW1lbnQgOiBET01IVE1MRWxl
bWVudCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgcm93SW5kZXg7Ci1AcHJvcGVydHkg
KHJlYWRvbmx5KSBpbnQgc2VjdGlvblJvd0luZGV4OwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ry
b25nKSBET01IVE1MQ29sbGVjdGlvbiAqY2VsbHM7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5n
ICphbGlnbjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmJnQ29sb3I7Ci1AcHJvcGVydHkg
KGNvcHkpIE5TU3RyaW5nICpjaDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNoT2ZmOwot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqdkFsaWduOwotLSAoRE9NSFRNTEVsZW1lbnQgKilp
bnNlcnRDZWxsOihpbnQpaW5kZXg7Ci0tICh2b2lkKWRlbGV0ZUNlbGw6KGludClpbmRleDsKLUBl
bmQKLQotQGludGVyZmFjZSBET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudCA6IERPTUhUTUxFbGVt
ZW50IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmFsaWduOwotQHByb3BlcnR5IChj
b3B5KSBOU1N0cmluZyAqY2g7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjaE9mZjsKLUBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnZBbGlnbjsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0
cm9uZykgRE9NSFRNTENvbGxlY3Rpb24gKnJvd3M7Ci0tIChET01IVE1MRWxlbWVudCAqKWluc2Vy
dFJvdzooaW50KWluZGV4OwotLSAodm9pZClkZWxldGVSb3c6KGludClpbmRleDsKLUBlbmQKLQot
QGludGVyZmFjZSBET01IVE1MVGV4dEFyZWFFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgMTBfNAot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZGVmYXVsdFZhbHVlOwotQHByb3BlcnR5IChyZWFk
b25seSwgc3Ryb25nKSBET01IVE1MRm9ybUVsZW1lbnQgKmZvcm07Ci1AcHJvcGVydHkgKGNvcHkp
IE5TU3RyaW5nICphY2Nlc3NLZXkgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzgpOwot
QHByb3BlcnR5IGludCBjb2xzOwotQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7Ci1AcHJvcGVydHkg
KGNvcHkpIE5TU3RyaW5nICpuYW1lOwotQHByb3BlcnR5IEJPT0wgcmVhZE9ubHk7Ci1AcHJvcGVy
dHkgaW50IHJvd3M7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqdHlwZTsK
LUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnZhbHVlOwotQHByb3BlcnR5IGludCBzZWxlY3Rp
b25TdGFydCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSBpbnQgc2VsZWN0
aW9uRW5kIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IEJPT0wgYXV0b2Zv
Y3VzIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9P
TCB3aWxsVmFsaWRhdGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci0tICh2b2lkKXNlbGVj
dDsKLS0gKHZvaWQpc2V0U2VsZWN0aW9uUmFuZ2U6KGludClzdGFydCBlbmQ6KGludCllbmQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFRpdGxl
RWxlbWVudCA6IERPTUhUTUxFbGVtZW50IDEwXzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcg
KnRleHQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NSFRNTFVMaXN0RWxlbWVudCA6IERPTUhUTUxF
bGVtZW50IDEwXzQKLUBwcm9wZXJ0eSBCT09MIGNvbXBhY3Q7Ci1AcHJvcGVydHkgKGNvcHkpIE5T
U3RyaW5nICp0eXBlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTVN0eWxlU2hlZXRMaXN0IDogRE9N
T2JqZWN0IDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIGxlbmd0aDsKLS0gKERP
TVN0eWxlU2hlZXQgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLUBlbmQKLQotQGludGVyZmFjZSBE
T01DU1NDaGFyc2V0UnVsZSA6IERPTUNTU1J1bGUgMTBfNAotQHByb3BlcnR5IChyZWFkb25seSwg
Y29weSkgTlNTdHJpbmcgKmVuY29kaW5nOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNTU0ZvbnRG
YWNlUnVsZSA6IERPTUNTU1J1bGUgMTBfNAotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBE
T01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01DU1NJ
bXBvcnRSdWxlIDogRE9NQ1NTUnVsZSAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBO
U1N0cmluZyAqaHJlZjsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTWVkaWFMaXN0
ICptZWRpYTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTU3R5bGVTaGVldCAq
c3R5bGVTaGVldDsKLUBlbmQKLQotQGludGVyZmFjZSBET01DU1NNZWRpYVJ1bGUgOiBET01DU1NS
dWxlIDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTWVkaWFMaXN0ICptZWRp
YTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTUnVsZUxpc3QgKmNzc1J1bGVz
OwotLSAodW5zaWduZWQpaW5zZXJ0UnVsZTooTlNTdHJpbmcgKilydWxlIDoodW5zaWduZWQpaW5k
ZXg7Ci0tICh1bnNpZ25lZClpbnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUgaW5kZXg6KHVuc2ln
bmVkKWluZGV4IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAodm9pZClkZWxldGVSdWxl
Oih1bnNpZ25lZClpbmRleDsKLUBlbmQKLQotQGludGVyZmFjZSBET01DU1NQYWdlUnVsZSA6IERP
TUNTU1J1bGUgMTBfNAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc2VsZWN0b3JUZXh0Owot
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHls
ZTsKLUBlbmQKLQotQGludGVyZmFjZSBET01DU1NQcmltaXRpdmVWYWx1ZSA6IERPTUNTU1ZhbHVl
IDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGU7
Ci0tICh2b2lkKXNldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBlIDooZmxvYXQp
ZmxvYXRWYWx1ZTsKLS0gKHZvaWQpc2V0RmxvYXRWYWx1ZToodW5zaWduZWQgc2hvcnQpdW5pdFR5
cGUgZmxvYXRWYWx1ZTooZmxvYXQpZmxvYXRWYWx1ZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81
KTsKLS0gKGZsb2F0KWdldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBlOwotLSAo
dm9pZClzZXRTdHJpbmdWYWx1ZToodW5zaWduZWQgc2hvcnQpc3RyaW5nVHlwZSA6KE5TU3RyaW5n
ICopc3RyaW5nVmFsdWU7Ci0tICh2b2lkKXNldFN0cmluZ1ZhbHVlOih1bnNpZ25lZCBzaG9ydClz
dHJpbmdUeXBlIHN0cmluZ1ZhbHVlOihOU1N0cmluZyAqKXN0cmluZ1ZhbHVlIFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOwotLSAoTlNTdHJpbmcgKilnZXRTdHJpbmdWYWx1ZTsKLS0gKERPTUNv
dW50ZXIgKilnZXRDb3VudGVyVmFsdWU7Ci0tIChET01SZWN0ICopZ2V0UmVjdFZhbHVlOwotLSAo
RE9NUkdCQ29sb3IgKilnZXRSR0JDb2xvclZhbHVlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTVJH
QkNvbG9yIDogRE9NT2JqZWN0IDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
Q1NTUHJpbWl0aXZlVmFsdWUgKnJlZDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
Q1NTUHJpbWl0aXZlVmFsdWUgKmdyZWVuOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBE
T01DU1NQcmltaXRpdmVWYWx1ZSAqYmx1ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykg
RE9NQ1NTUHJpbWl0aXZlVmFsdWUgKmFscGhhOwotI2lmIGRlZmluZWQoVEFSR0VUX09TX0lQSE9O
RSkgJiYgVEFSR0VUX09TX0lQSE9ORQotLSAoQ0dDb2xvclJlZiljb2xvcjsKLSNlbHNlCi1AcHJv
cGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU0NvbG9yICpjb2xvciBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKLSNlbmRpZgotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNTU1J1bGUgOiBET01PYmpl
Y3QgMTBfNAotQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWduZWQgc2hvcnQgdHlwZTsKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNzc1RleHQ7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJv
bmcpIERPTUNTU1N0eWxlU2hlZXQgKnBhcmVudFN0eWxlU2hlZXQ7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5LCBzdHJvbmcpIERPTUNTU1J1bGUgKnBhcmVudFJ1bGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NQ1NTUnVsZUxpc3QgOiBET01PYmplY3QgMTBfNAotQHByb3BlcnR5IChyZWFkb25seSkgdW5z
aWduZWQgbGVuZ3RoOwotLSAoRE9NQ1NTUnVsZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OwotQGVu
ZAotCi1AaW50ZXJmYWNlIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gOiBET01PYmplY3QgMTBfNAot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqY3NzVGV4dDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkp
IHVuc2lnbmVkIGxlbmd0aDsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTUnVs
ZSAqcGFyZW50UnVsZTsKLS0gKE5TU3RyaW5nICopZ2V0UHJvcGVydHlWYWx1ZTooTlNTdHJpbmcg
Kilwcm9wZXJ0eU5hbWU7Ci0tIChET01DU1NWYWx1ZSAqKWdldFByb3BlcnR5Q1NTVmFsdWU6KE5T
U3RyaW5nICopcHJvcGVydHlOYW1lOwotLSAoTlNTdHJpbmcgKilyZW1vdmVQcm9wZXJ0eTooTlNT
dHJpbmcgKilwcm9wZXJ0eU5hbWU7Ci0tIChOU1N0cmluZyAqKWdldFByb3BlcnR5UHJpb3JpdHk6
KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOwotLSAodm9pZClzZXRQcm9wZXJ0eTooTlNTdHJpbmcg
Kilwcm9wZXJ0eU5hbWUgOihOU1N0cmluZyAqKXZhbHVlIDooTlNTdHJpbmcgKilwcmlvcml0eTsK
LS0gKHZvaWQpc2V0UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lIHZhbHVlOihOU1N0
cmluZyAqKXZhbHVlIHByaW9yaXR5OihOU1N0cmluZyAqKXByaW9yaXR5IFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOwotLSAoTlNTdHJpbmcgKilpdGVtOih1bnNpZ25lZClpbmRleDsKLS0gKE5T
U3RyaW5nICopZ2V0UHJvcGVydHlTaG9ydGhhbmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lIFdF
QktJVF9ERVBSRUNBVEVEX01BQygxMF81LCAxMF81KTsKLS0gKEJPT0wpaXNQcm9wZXJ0eUltcGxp
Y2l0OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01DU1NTdHlsZVJ1bGUgOiBET01DU1NSdWxlIDEwXzQKLUBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnNlbGVjdG9yVGV4dDsKLUBwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGU7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NU3R5bGVTaGVldCA6IERPTU9iamVjdCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5
LCBjb3B5KSBOU1N0cmluZyAqdHlwZTsKLUBwcm9wZXJ0eSBCT09MIGRpc2FibGVkOwotQHByb3Bl
cnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpvd25lck5vZGU7Ci1AcHJvcGVydHkgKHJl
YWRvbmx5LCBzdHJvbmcpIERPTVN0eWxlU2hlZXQgKnBhcmVudFN0eWxlU2hlZXQ7Ci1AcHJvcGVy
dHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqaHJlZjsKLUBwcm9wZXJ0eSAocmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICp0aXRsZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
TWVkaWFMaXN0ICptZWRpYTsKLUBlbmQKLQotQGludGVyZmFjZSBET01DU1NTdHlsZVNoZWV0IDog
RE9NU3R5bGVTaGVldCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUNTU1J1
bGUgKm93bmVyUnVsZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTUnVsZUxp
c3QgKmNzc1J1bGVzOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01DU1NSdWxlTGlz
dCAqcnVsZXMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7Ci0tICh1bnNpZ25lZClpbnNlcnRS
dWxlOihOU1N0cmluZyAqKXJ1bGUgOih1bnNpZ25lZClpbmRleDsKLS0gKHVuc2lnbmVkKWluc2Vy
dFJ1bGU6KE5TU3RyaW5nICopcnVsZSBpbmRleDoodW5zaWduZWQpaW5kZXggV0VCS0lUX0FWQUlM
QUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKWRlbGV0ZVJ1bGU6KHVuc2lnbmVkKWluZGV4OwotLSAo
aW50KWFkZFJ1bGU6KE5TU3RyaW5nICopc2VsZWN0b3Igc3R5bGU6KE5TU3RyaW5nICopc3R5bGUg
aW5kZXg6KHVuc2lnbmVkKWluZGV4IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwotLSAodm9p
ZClyZW1vdmVSdWxlOih1bnNpZ25lZClpbmRleCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01DU1NWYWx1ZSA6IERPTU9iamVjdCAxMF80Ci1AcHJvcGVy
dHkgKGNvcHkpIE5TU3RyaW5nICpjc3NUZXh0OwotQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWdu
ZWQgc2hvcnQgY3NzVmFsdWVUeXBlOwotQGVuZAotCi1AaW50ZXJmYWNlIERPTUNTU1ZhbHVlTGlz
dCA6IERPTUNTU1ZhbHVlIDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIGxlbmd0
aDsKLS0gKERPTUNTU1ZhbHVlICopaXRlbToodW5zaWduZWQpaW5kZXg7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NQ1NTVW5rbm93blJ1bGUgOiBET01DU1NSdWxlIDEwXzQKLUBlbmQKLQotQGludGVy
ZmFjZSBET01Db3VudGVyIDogRE9NT2JqZWN0IDEwXzQKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNv
cHkpIE5TU3RyaW5nICppZGVudGlmaWVyOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNT
dHJpbmcgKmxpc3RTdHlsZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpz
ZXBhcmF0b3I7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NUmVjdCA6IERPTU9iamVjdCAxMF80Ci1A
cHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUNTU1ByaW1pdGl2ZVZhbHVlICp0b3A7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUNTU1ByaW1pdGl2ZVZhbHVlICpyaWdodDsK
LUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKmJvdHRv
bTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NQ1NTUHJpbWl0aXZlVmFsdWUgKmxl
ZnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NRXZlbnQgOiBET01PYmplY3QgMTBfNAotQHByb3Bl
cnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnR5cGU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5
LCBzdHJvbmcpIGlkIDxET01FdmVudFRhcmdldD4gdGFyZ2V0OwotQHByb3BlcnR5IChyZWFkb25s
eSwgc3Ryb25nKSBpZCA8RE9NRXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJnZXQ7Ci1AcHJvcGVydHkg
KHJlYWRvbmx5KSB1bnNpZ25lZCBzaG9ydCBldmVudFBoYXNlOwotQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBidWJibGVzOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5jZWxhYmxlOwot
QHByb3BlcnR5IChyZWFkb25seSkgRE9NVGltZVN0YW1wIHRpbWVTdGFtcDsKLUBwcm9wZXJ0eSAo
cmVhZG9ubHksIHN0cm9uZykgaWQgPERPTUV2ZW50VGFyZ2V0PiBzcmNFbGVtZW50IFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzYpOwotQHByb3BlcnR5IEJPT0wgcmV0dXJuVmFsdWUgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNik7Ci1AcHJvcGVydHkgQk9PTCBjYW5jZWxCdWJibGUgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNik7Ci0tICh2b2lkKXN0b3BQcm9wYWdhdGlvbjsKLS0gKHZvaWQpcHJl
dmVudERlZmF1bHQ7Ci0tICh2b2lkKWluaXRFdmVudDooTlNTdHJpbmcgKilldmVudFR5cGVBcmcg
Y2FuQnViYmxlQXJnOihCT09MKWNhbkJ1YmJsZUFyZyBjYW5jZWxhYmxlQXJnOihCT09MKWNhbmNl
bGFibGVBcmcgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKWluaXRFdmVudDoo
TlNTdHJpbmcgKilldmVudFR5cGVBcmcgOihCT09MKWNhbkJ1YmJsZUFyZyA6KEJPT0wpY2FuY2Vs
YWJsZUFyZzsKLUBlbmQKLQotQGludGVyZmFjZSBET01VSUV2ZW50IDogRE9NRXZlbnQgMTBfNAot
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01BYnN0cmFjdFZpZXcgKnZpZXc7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSBpbnQgZGV0YWlsOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IGtl
eUNvZGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBp
bnQgY2hhckNvZGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5KSBpbnQgbGF5ZXJYIFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF81LCAxMF81KTsKLUBwcm9w
ZXJ0eSAocmVhZG9ubHkpIGludCBsYXllclkgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzUsIDEw
XzUpOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IHBhZ2VYIFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IHBhZ2VZIFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IHdoaWNoIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOwotLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1
YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERP
TUFic3RyYWN0VmlldyAqKXZpZXcgZGV0YWlsOihpbnQpZGV0YWlsIFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOwotLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0eXBlIDooQk9PTClj
YW5CdWJibGUgOihCT09MKWNhbmNlbGFibGUgOihET01BYnN0cmFjdFZpZXcgKil2aWV3IDooaW50
KWRldGFpbDsKLUBlbmQKLQotQGludGVyZmFjZSBET01NdXRhdGlvbkV2ZW50IDogRE9NRXZlbnQg
MTBfNAotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpyZWxhdGVkTm9kZTsK
LUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpwcmV2VmFsdWU7Ci1AcHJvcGVy
dHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmV3VmFsdWU7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyAqYXR0ck5hbWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNp
Z25lZCBzaG9ydCBhdHRyQ2hhbmdlOwotLSAodm9pZClpbml0TXV0YXRpb25FdmVudDooTlNTdHJp
bmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5j
ZWxhYmxlIHJlbGF0ZWROb2RlOihET01Ob2RlICopcmVsYXRlZE5vZGUgcHJldlZhbHVlOihOU1N0
cmluZyAqKXByZXZWYWx1ZSBuZXdWYWx1ZTooTlNTdHJpbmcgKiluZXdWYWx1ZSBhdHRyTmFtZToo
TlNTdHJpbmcgKilhdHRyTmFtZSBhdHRyQ2hhbmdlOih1bnNpZ25lZCBzaG9ydClhdHRyQ2hhbmdl
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAodm9pZClpbml0TXV0YXRpb25FdmVudDoo
TlNTdHJpbmcgKil0eXBlIDooQk9PTCljYW5CdWJibGUgOihCT09MKWNhbmNlbGFibGUgOihET01O
b2RlICopcmVsYXRlZE5vZGUgOihOU1N0cmluZyAqKXByZXZWYWx1ZSA6KE5TU3RyaW5nICopbmV3
VmFsdWUgOihOU1N0cmluZyAqKWF0dHJOYW1lIDoodW5zaWduZWQgc2hvcnQpYXR0ckNoYW5nZTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01PdmVyZmxvd0V2ZW50IDogRE9NRXZlbnQgMTBfNQotQHBy
b3BlcnR5IChyZWFkb25seSkgdW5zaWduZWQgc2hvcnQgb3JpZW50OwotQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBob3Jpem9udGFsT3ZlcmZsb3c7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09M
IHZlcnRpY2FsT3ZlcmZsb3c7Ci0tICh2b2lkKWluaXRPdmVyZmxvd0V2ZW50Oih1bnNpZ25lZCBz
aG9ydClvcmllbnQgaG9yaXpvbnRhbE92ZXJmbG93OihCT09MKWhvcml6b250YWxPdmVyZmxvdyB2
ZXJ0aWNhbE92ZXJmbG93OihCT09MKXZlcnRpY2FsT3ZlcmZsb3c7Ci1AZW5kCi0KLUBpbnRlcmZh
Y2UgRE9NV2hlZWxFdmVudCA6IERPTU1vdXNlRXZlbnQgMTBfNQotQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBpc0hvcml6b250YWw7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgd2hlZWxEZWx0
YTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB3aGVlbERlbHRhWCBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB3aGVlbERlbHRhWSBXRUJLSVRf
QVZBSUxBQkxFX01BQygxMF81KTsKLS0gKHZvaWQpaW5pdFdoZWVsRXZlbnQ6KGludCl3aGVlbERl
bHRhWCB3aGVlbERlbHRhWTooaW50KXdoZWVsRGVsdGFZIHZpZXc6KERPTUFic3RyYWN0VmlldyAq
KXZpZXcgc2NyZWVuWDooaW50KXNjcmVlblggc2NyZWVuWTooaW50KXNjcmVlblkgY2xpZW50WDoo
aW50KWNsaWVudFggY2xpZW50WTooaW50KWNsaWVudFkgY3RybEtleTooQk9PTCljdHJsS2V5IGFs
dEtleTooQk9PTClhbHRLZXkgc2hpZnRLZXk6KEJPT0wpc2hpZnRLZXkgbWV0YUtleTooQk9PTClt
ZXRhS2V5IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotQGVuZAotCi1AaW50ZXJmYWNlIERP
TUtleWJvYXJkRXZlbnQgOiBET01VSUV2ZW50IDEwXzUKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNv
cHkpIE5TU3RyaW5nICprZXlJZGVudGlmaWVyOwotQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWdu
ZWQgbG9jYXRpb24gV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfOCk7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5KSB1bnNpZ25lZCBrZXlMb2NhdGlvbiBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNSwgMTBf
NSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGN0cmxLZXk7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5KSBCT09MIHNoaWZ0S2V5OwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBhbHRLZXk7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIG1ldGFLZXk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBp
bnQga2V5Q29kZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBjaGFyQ29kZTsKLUBwcm9wZXJ0
eSAocmVhZG9ubHkpIEJPT0wgYWx0R3JhcGhLZXkgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7
Ci0tIChCT09MKWdldE1vZGlmaWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllckFyZzsK
LS0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJP
T0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFj
dFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllciBrZXlM
b2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb24gY3RybEtleTooQk9PTCljdHJsS2V5IGFsdEtl
eTooQk9PTClhbHRLZXkgc2hpZnRLZXk6KEJPT0wpc2hpZnRLZXkgbWV0YUtleTooQk9PTCltZXRh
S2V5IGFsdEdyYXBoS2V5OihCT09MKWFsdEdyYXBoS2V5IFdFQktJVF9ERVBSRUNBVEVEX01BQygx
MF81LCAxMF81KTsKLS0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBj
YW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3
OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopa2V5SWRl
bnRpZmllciBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb24gY3RybEtleTooQk9PTClj
dHJsS2V5IGFsdEtleTooQk9PTClhbHRLZXkgc2hpZnRLZXk6KEJPT0wpc2hpZnRLZXkgbWV0YUtl
eTooQk9PTCltZXRhS2V5IFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF81LCAxMF81KTsKLS0gKHZv
aWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2Fu
QnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcg
Kil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllciBsb2NhdGlvbjoo
dW5zaWduZWQpbG9jYXRpb24gY3RybEtleTooQk9PTCljdHJsS2V5IGFsdEtleTooQk9PTClhbHRL
ZXkgc2hpZnRLZXk6KEJPT0wpc2hpZnRLZXkgbWV0YUtleTooQk9PTCltZXRhS2V5IGFsdEdyYXBo
S2V5OihCT09MKWFsdEdyYXBoS2V5IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzgpOwotLSAodm9p
ZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5C
dWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAq
KXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilrZXlJZGVudGlmaWVyIGxvY2F0aW9uOih1
bnNpZ25lZClsb2NhdGlvbiBjdHJsS2V5OihCT09MKWN0cmxLZXkgYWx0S2V5OihCT09MKWFsdEtl
eSBzaGlmdEtleTooQk9PTClzaGlmdEtleSBtZXRhS2V5OihCT09MKW1ldGFLZXkgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfOCk7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTW91c2VFdmVudCA6IERP
TVVJRXZlbnQgMTBfNAotQHByb3BlcnR5IChyZWFkb25seSkgaW50IHNjcmVlblg7Ci1AcHJvcGVy
dHkgKHJlYWRvbmx5KSBpbnQgc2NyZWVuWTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBjbGll
bnRYOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IGNsaWVudFk7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5KSBCT09MIGN0cmxLZXk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIHNoaWZ0S2V5Owot
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBhbHRLZXk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBC
T09MIG1ldGFLZXk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBzaG9ydCBidXR0b247
Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIGlkIDxET01FdmVudFRhcmdldD4gcmVsYXRl
ZFRhcmdldDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBvZmZzZXRYIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSkgaW50IG9mZnNldFkgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNSk7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeCBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5IFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpm
cm9tRWxlbWVudCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NTm9kZSAqdG9FbGVtZW50IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUp
OwotLSAodm9pZClpbml0TW91c2VFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9P
TCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0
VmlldyAqKXZpZXcgZGV0YWlsOihpbnQpZGV0YWlsIHNjcmVlblg6KGludClzY3JlZW5YIHNjcmVl
blk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGludCljbGllbnRZ
IGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0S2V5OihCT09M
KXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleSBidXR0b246KHVuc2lnbmVkIHNob3J0KWJ1
dHRvbiByZWxhdGVkVGFyZ2V0OihpZCA8RE9NRXZlbnRUYXJnZXQ+KXJlbGF0ZWRUYXJnZXQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmlu
ZyAqKXR5cGUgOihCT09MKWNhbkJ1YmJsZSA6KEJPT0wpY2FuY2VsYWJsZSA6KERPTUFic3RyYWN0
VmlldyAqKXZpZXcgOihpbnQpZGV0YWlsIDooaW50KXNjcmVlblggOihpbnQpc2NyZWVuWSA6KGlu
dCljbGllbnRYIDooaW50KWNsaWVudFkgOihCT09MKWN0cmxLZXkgOihCT09MKWFsdEtleSA6KEJP
T0wpc2hpZnRLZXkgOihCT09MKW1ldGFLZXkgOih1bnNpZ25lZCBzaG9ydClidXR0b24gOihpZCA8
RE9NRXZlbnRUYXJnZXQ+KXJlbGF0ZWRUYXJnZXQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NUmFu
Z2UgOiBET01PYmplY3QgMTBfNAotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2Rl
ICpzdGFydENvbnRhaW5lcjsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBzdGFydE9mZnNldDsK
LUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTm9kZSAqZW5kQ29udGFpbmVyOwotQHBy
b3BlcnR5IChyZWFkb25seSkgaW50IGVuZE9mZnNldDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgY29sbGFwc2VkOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpjb21t
b25BbmNlc3RvckNvbnRhaW5lcjsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5n
ICp0ZXh0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwotLSAodm9pZClzZXRTdGFydDooRE9N
Tm9kZSAqKXJlZk5vZGUgb2Zmc2V0OihpbnQpb2Zmc2V0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEw
XzUpOwotLSAodm9pZClzZXRTdGFydDooRE9NTm9kZSAqKXJlZk5vZGUgOihpbnQpb2Zmc2V0Owot
LSAodm9pZClzZXRFbmQ6KERPTU5vZGUgKilyZWZOb2RlIG9mZnNldDooaW50KW9mZnNldCBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKHZvaWQpc2V0RW5kOihET01Ob2RlICopcmVmTm9k
ZSA6KGludClvZmZzZXQ7Ci0tICh2b2lkKXNldFN0YXJ0QmVmb3JlOihET01Ob2RlICopcmVmTm9k
ZTsKLS0gKHZvaWQpc2V0U3RhcnRBZnRlcjooRE9NTm9kZSAqKXJlZk5vZGU7Ci0tICh2b2lkKXNl
dEVuZEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGU7Ci0tICh2b2lkKXNldEVuZEFmdGVyOihET01O
b2RlICopcmVmTm9kZTsKLS0gKHZvaWQpY29sbGFwc2U6KEJPT0wpdG9TdGFydDsKLS0gKHZvaWQp
c2VsZWN0Tm9kZTooRE9NTm9kZSAqKXJlZk5vZGU7Ci0tICh2b2lkKXNlbGVjdE5vZGVDb250ZW50
czooRE9NTm9kZSAqKXJlZk5vZGU7Ci0tIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2ludHM6KHVu
c2lnbmVkIHNob3J0KWhvdyBzb3VyY2VSYW5nZTooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZSBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKHNob3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoo
dW5zaWduZWQgc2hvcnQpaG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZTsKLS0gKHZvaWQpZGVs
ZXRlQ29udGVudHM7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopZXh0cmFjdENvbnRlbnRzOwot
LSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNsb25lQ29udGVudHM7Ci0tICh2b2lkKWluc2VydE5v
ZGU6KERPTU5vZGUgKiluZXdOb2RlOwotLSAodm9pZClzdXJyb3VuZENvbnRlbnRzOihET01Ob2Rl
ICopbmV3UGFyZW50OwotLSAoRE9NUmFuZ2UgKiljbG9uZVJhbmdlOwotLSAoTlNTdHJpbmcgKil0
b1N0cmluZzsKLS0gKHZvaWQpZGV0YWNoOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0
ZUNvbnRleHR1YWxGcmFnbWVudDooTlNTdHJpbmcgKilodG1sIFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOwotLSAoQk9PTClpbnRlcnNlY3RzTm9kZTooRE9NTm9kZSAqKXJlZk5vZGUgV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChzaG9ydCljb21wYXJlTm9kZTooRE9NTm9kZSAqKXJl
Zk5vZGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0tIChzaG9ydCljb21wYXJlUG9pbnQ6
KERPTU5vZGUgKilyZWZOb2RlIG9mZnNldDooaW50KW9mZnNldCBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKLS0gKEJPT0wpaXNQb2ludEluUmFuZ2U6KERPTU5vZGUgKilyZWZOb2RlIG9mZnNl
dDooaW50KW9mZnNldCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBlbmQKLQotQGludGVy
ZmFjZSBET01Ob2RlSXRlcmF0b3IgOiBET01PYmplY3QgMTBfNAotQHByb3BlcnR5IChyZWFkb25s
eSwgc3Ryb25nKSBET01Ob2RlICpyb290OwotQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWduZWQg
d2hhdFRvU2hvdzsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgaWQgPERPTU5vZGVGaWx0
ZXI+IGZpbHRlcjsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgZXhwYW5kRW50aXR5UmVmZXJl
bmNlczsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NTm9kZSAqcmVmZXJlbmNlTm9k
ZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wg
cG9pbnRlckJlZm9yZVJlZmVyZW5jZU5vZGUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Ci0t
IChET01Ob2RlICopbmV4dE5vZGU7Ci0tIChET01Ob2RlICopcHJldmlvdXNOb2RlOwotLSAodm9p
ZClkZXRhY2g7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NTWVkaWFMaXN0IDogRE9NT2JqZWN0IDEw
XzQKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm1lZGlhVGV4dDsKLUBwcm9wZXJ0eSAocmVh
ZG9ubHkpIHVuc2lnbmVkIGxlbmd0aDsKLS0gKE5TU3RyaW5nICopaXRlbToodW5zaWduZWQpaW5k
ZXg7Ci0tICh2b2lkKWRlbGV0ZU1lZGl1bTooTlNTdHJpbmcgKilvbGRNZWRpdW07Ci0tICh2b2lk
KWFwcGVuZE1lZGl1bTooTlNTdHJpbmcgKiluZXdNZWRpdW07Ci1AZW5kCi0KLUBpbnRlcmZhY2Ug
RE9NVHJlZVdhbGtlciA6IERPTU9iamVjdCAxMF80Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJv
bmcpIERPTU5vZGUgKnJvb3Q7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCB3aGF0VG9T
aG93OwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBpZCA8RE9NTm9kZUZpbHRlcj4gZmls
dGVyOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzOwot
QHByb3BlcnR5IChzdHJvbmcpIERPTU5vZGUgKmN1cnJlbnROb2RlOwotLSAoRE9NTm9kZSAqKXBh
cmVudE5vZGU7Ci0tIChET01Ob2RlICopZmlyc3RDaGlsZDsKLS0gKERPTU5vZGUgKilsYXN0Q2hp
bGQ7Ci0tIChET01Ob2RlICopcHJldmlvdXNTaWJsaW5nOwotLSAoRE9NTm9kZSAqKW5leHRTaWJs
aW5nOwotLSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZTsKLS0gKERPTU5vZGUgKiluZXh0Tm9kZTsK
LUBlbmQKLQotQGludGVyZmFjZSBET01YUGF0aFJlc3VsdCA6IERPTU9iamVjdCAxMF81Ci1AcHJv
cGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBzaG9ydCByZXN1bHRUeXBlOwotQHByb3BlcnR5IChy
ZWFkb25seSkgZG91YmxlIG51bWJlclZhbHVlOwotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKnN0cmluZ1ZhbHVlOwotQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBib29sZWFu
VmFsdWU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5vZGUgKnNpbmdsZU5vZGVW
YWx1ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaW52YWxpZEl0ZXJhdG9yU3RhdGU7Ci1A
cHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBzbmFwc2hvdExlbmd0aDsKLS0gKERPTU5vZGUg
KilpdGVyYXRlTmV4dDsKLS0gKERPTU5vZGUgKilzbmFwc2hvdEl0ZW06KHVuc2lnbmVkKWluZGV4
OwotQGVuZAotCi1AaW50ZXJmYWNlIERPTVhQYXRoRXhwcmVzc2lvbiA6IERPTU9iamVjdCAxMF81
Ci0tIChET01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihET01Ob2RlICopY29udGV4dE5vZGUgdHlw
ZToodW5zaWduZWQgc2hvcnQpdHlwZSBpblJlc3VsdDooRE9NWFBhdGhSZXN1bHQgKilpblJlc3Vs
dCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVh
dGU6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KHVuc2lnbmVkIHNob3J0KXR5cGUgOihET01YUGF0
aFJlc3VsdCAqKWluUmVzdWx0IFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF81LCAxMF81KTsKLUBl
bmQKLQotQGludGVyZmFjZSBET01Qcm9ncmVzc0V2ZW50IDogRE9NRXZlbnQgMTBfNgotQHByb3Bl
cnR5IChyZWFkb25seSkgQk9PTCBsZW5ndGhDb21wdXRhYmxlOwotQHByb3BlcnR5IChyZWFkb25s
eSkgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZDsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbDsKLUBlbmQKLQotLy8gUHJvdG9jb2xzCi0KLUBwcm90b2NvbCBE
T01FdmVudExpc3RlbmVyIDxOU09iamVjdD4gMTBfNAotLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudDsKLUBlbmQKLQotQHByb3RvY29sIERPTUV2ZW50VGFyZ2V0IDxOU09iamVj
dCwgTlNDb3B5aW5nPiAxMF80Ci0tICh2b2lkKWFkZEV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICop
dHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZTsK
LS0gKHZvaWQpcmVtb3ZlRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIDooaWQgPERPTUV2
ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1c2VDYXB0dXJlOwotLSAodm9pZClhZGRFdmVu
dExpc3RlbmVyOihOU1N0cmluZyAqKXR5cGUgbGlzdGVuZXI6KGlkIDxET01FdmVudExpc3RlbmVy
PilsaXN0ZW5lciB1c2VDYXB0dXJlOihCT09MKXVzZUNhcHR1cmUgV0VCS0lUX0FWQUlMQUJMRV9N
QUMoMTBfNSk7Ci0tICh2b2lkKXJlbW92ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSBs
aXN0ZW5lcjooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIHVzZUNhcHR1cmU6KEJPT0wp
dXNlQ2FwdHVyZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKLS0gKEJPT0wpZGlzcGF0Y2hF
dmVudDooRE9NRXZlbnQgKilldmVudDsKLUBlbmQKLQotQHByb3RvY29sIERPTU5vZGVGaWx0ZXIg
PE5TT2JqZWN0PiAxMF80Ci0tIChzaG9ydClhY2NlcHROb2RlOihET01Ob2RlICopbjsKLUBlbmQK
LQotQHByb3RvY29sIERPTVhQYXRoTlNSZXNvbHZlciA8TlNPYmplY3Q+IDEwXzUKLS0gKE5TU3Ry
aW5nICopbG9va3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeDsKLUBlbmQKLQotI2lm
IGRlZmluZWQoVVNFX0FQUExFX0lOVEVSTkFMX1NESykgJiYgVVNFX0FQUExFX0lOVEVSTkFMX1NE
SwotI2lmIGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9ORQotI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QdWJsaWNET01JbnRlcmZhY2VzSU9TLmg+Ci0jZW5kaWYK
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MzQ3MGZlYzJi
ZDY0OTUxNjMyMTM0M2E5NzVjNTA1ODVkMGM2NDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbQorKysgL2Rldi9udWxsCkBAIC0xLDE3ODkgKzAsMCBAQAotIyAKLSMg
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBt
YWMuY29tPiAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3
ZWJraXQub3JnPgotIyBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBA
d2Via2l0Lm9yZz4KLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA5IENh
bWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlkLmF1PgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4KLSMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0jIAotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jIAotIyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0j
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotIwotCi1wYWNrYWdlIENvZGVHZW5lcmF0b3JPYmpDOwotCi11c2UgY29uc3RhbnQgRmlsZU5h
bWVQcmVmaXggPT4gIkRPTSI7Ci11c2UgRmlsZTo6QmFzZW5hbWU7Ci11c2UgRmluZEJpbjsKLQot
c3ViIENvbmRpdGlvbmFsSXNFbmFibGVkKFwlJCk7Ci0KLSMgR2xvYmFsIFZhcmlhYmxlcwotbXkg
JHdyaXRlRGVwZW5kZW5jaWVzID0gMDsKLW15ICVwdWJsaWNJbnRlcmZhY2VzID0gKCk7Ci1teSAk
bmV3UHVibGljQ2xhc3MgPSAwOwotbXkgJGludGVyZmFjZUF2YWlsYWJpbGl0eVZlcnNpb24gPSAi
IjsKLW15ICRpc1Byb3RvY29sID0gMDsKLW15ICRub0ltcGwgPSAwOwotCi1teSBAaGVhZGVyQ29u
dGVudEhlYWRlciA9ICgpOwotbXkgQGhlYWRlckNvbnRlbnQgPSAoKTsKLW15ICVoZWFkZXJGb3J3
YXJkRGVjbGFyYXRpb25zID0gKCk7Ci1teSAlaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclBy
b3RvY29scyA9ICgpOwotCi1teSBAcHJpdmF0ZUhlYWRlckNvbnRlbnRIZWFkZXIgPSAoKTsKLW15
IEBwcml2YXRlSGVhZGVyQ29udGVudCA9ICgpOwotbXkgJXByaXZhdGVIZWFkZXJGb3J3YXJkRGVj
bGFyYXRpb25zID0gKCk7Ci1teSAlcHJpdmF0ZUhlYWRlckZvcndhcmREZWNsYXJhdGlvbnNGb3JQ
cm90b2NvbHMgPSAoKTsKLQotbXkgQGludGVybmFsSGVhZGVyQ29udGVudCA9ICgpOwotCi1teSBA
aW1wbENvbmRpdGlvbmFsSW5jbHVkZXMgPSAoKTsKLW15IEBpbXBsQ29udGVudEhlYWRlciA9ICgp
OwotbXkgQGltcGxDb250ZW50ID0gKCk7Ci1teSAlaW1wbEluY2x1ZGVzID0gKCk7Ci1teSBAZGVw
c0NvbnRlbnQgPSAoKTsKLQotbXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyA9
IDw8RU5EOwotLy8gLS0tLS0tLSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0tLS0tLQotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCBieSBBcHBsZSB0byB1c2UgdGhpcyBmaWxlIHRvIHRo
ZSBleHRlbnQKLSAqIG5lY2Vzc2FyeSB0byByZWxpbmsgd2l0aCBMR1BMIFdlYktpdCBmaWxlcy4K
LSAqCi0gKiBObyBsaWNlbnNlIG9yIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBBcHBsZSBleHByZXNz
bHkgb3IgYnkKLSAqIGltcGxpY2F0aW9uLCBlc3RvcHBlbCwgb3Igb3RoZXJ3aXNlLCB0byBBcHBs
ZSBwYXRlbnRzIGFuZAotICogdHJhZGVtYXJrcy4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHksIG5v
IGxpY2Vuc2Ugb3IgcmlnaHRzIGFyZQotICogZ3JhbnRlZCBieSBBcHBsZSBleHByZXNzbHkgb3Ig
YnkgaW1wbGljYXRpb24sIGVzdG9wcGVsLCBvciBvdGhlcndpc2UsCi0gKiB1bmRlciBhbnkgQXBw
bGUgcGF0ZW50cywgY29weXJpZ2h0cyBhbmQgdHJhZGVtYXJrcyB0byB1bmRlcmx5aW5nCi0gKiBp
bXBsZW1lbnRhdGlvbnMgb2YgYW55IGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIGludGVyZmFjZXMg
KEFQSXMpCi0gKiBvciB0byBhbnkgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIGludm9rZWQgYnkgY2Fs
bGluZyBhbnkgQVBJLgotICovCi0KLUVORAotbXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JTb3Vy
Y2VGaWxlcyA9IDw8RU5EOwotLy8gLS0tLS0tLSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0tLS0t
LQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIE5vIGxpY2Vuc2Ugb3IgcmlnaHRzIGFyZSBncmFudGVkIGJ5IEFwcGxlIGV4
cHJlc3NseSBvciBieSBpbXBsaWNhdGlvbiwKLSAqIGVzdG9wcGVsLCBvciBvdGhlcndpc2UsIHRv
IEFwcGxlIGNvcHlyaWdodHMsIHBhdGVudHMsIHRyYWRlbWFya3MsIHRyYWRlCi0gKiBzZWNyZXRz
IG9yIG90aGVyIHJpZ2h0cy4KLSAqLwotCi1FTkQKLW15ICRlbmRBcHBsZUNvcHlyaWdodCAgID0g
PDxFTkQ7Ci0vLyAtLS0tLS0tIEVuZCBBcHBsZSBDb3B5cmlnaHQgICAtLS0tLS0tCi0KLUVORAot
Ci0jIEhhc2hlcwotbXkgJXByb3RvY29sVHlwZUhhc2ggPSAoIlhQYXRoTlNSZXNvbHZlciIgPT4g
MSwgIkV2ZW50TGlzdGVuZXIiID0+IDEsICJFdmVudFRhcmdldCIgPT4gMSwgIk5vZGVGaWx0ZXIi
ID0+IDEpOwotbXkgJW5hdGl2ZU9iakNUeXBlSGFzaCA9ICgiVVJMIiA9PiAxLCAiQ29sb3IiID0+
IDEpOwotCi0jIEZJWE1FOiB0aGlzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgZnVuY3Rpb24g
dGhhdCByZWN1cnNlcyB1cCB0aGUgdHJlZQotIyB0byBmaW5kIHRoZSBhY3R1YWwgYmFzZSB0eXBl
LgotbXkgJWJhc2VUeXBlSGFzaCA9ICgiT2JqZWN0IiA9PiAxLCAiTm9kZSIgPT4gMSwgIk5vZGVM
aXN0IiA9PiAxLCAiTmFtZWROb2RlTWFwIiA9PiAxLCAiRE9NSW1wbGVtZW50YXRpb24iID0+IDEs
Ci0gICAgICAgICAgICAgICAgICAgICJFdmVudCIgPT4gMSwgIkNTU1J1bGUiID0+IDEsICJDU1NW
YWx1ZSIgPT4gMSwgIlN0eWxlU2hlZXQiID0+IDEsICJNZWRpYUxpc3QiID0+IDEsCi0gICAgICAg
ICAgICAgICAgICAgICJDb3VudGVyIiA9PiAxLCAiUmVjdCIgPT4gMSwgIlJHQkNvbG9yIiA9PiAx
LCAiWFBhdGhFeHByZXNzaW9uIiA9PiAxLCAiWFBhdGhSZXN1bHQiID0+IDEsCi0gICAgICAgICAg
ICAgICAgICAgICJOb2RlSXRlcmF0b3IiID0+IDEsICJUcmVlV2Fsa2VyIiA9PiAxLCAiQWJzdHJh
Y3RWaWV3IiA9PiAxLCAiQmxvYiIgPT4gMSk7Ci0KLSMgQ29uc3RhbnRzCi1teSAkc2hvdWxkVXNl
Q0dDb2xvciA9IGRlZmluZWQgJEVOVntQTEFURk9STV9OQU1FfSAmJiAkRU5We1BMQVRGT1JNX05B
TUV9IG5lICJtYWNvc3giOwotbXkgJGV4Y2VwdGlvbkluaXQgPSAiV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7IjsKLW15ICRqc0NvbnRleHRTZXR0ZXIgPSAiV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOyI7Ci1teSAkZXhjZXB0aW9uUmFpc2VPbkVycm9yID0gIldlYkNv
cmU6OnJhaXNlT25ET01FcnJvcihlYyk7IjsKLW15ICR0aHJlYWRWaW9sYXRpb25DaGVjayA9ICJX
ZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOyI7Ci0KLW15ICVjb25mbGljdE1l
dGhvZCA9ICgKLSAgICAjIEZJWE1FOiBBZGQgQyBsYW5ndWFnZSBrZXl3b3Jkcz8KLSAgICAjIEZJ
WE1FOiBBZGQgb3RoZXIgcHJlZGVmaW5lZCB0eXBlcyBsaWtlICJpZCI/Ci0KLSAgICAiY2FsbFdl
YlNjcmlwdE1ldGhvZDp3aXRoQXJndW1lbnRzOiIgPT4gIldlYlNjcmlwdE9iamVjdCIsCi0gICAg
ImV2YWx1YXRlV2ViU2NyaXB0OiIgPT4gIldlYlNjcmlwdE9iamVjdCIsCi0gICAgInJlbW92ZVdl
YlNjcmlwdEtleToiID0+ICJXZWJTY3JpcHRPYmplY3QiLAotICAgICJzZXRFeGNlcHRpb246IiA9
PiAiV2ViU2NyaXB0T2JqZWN0IiwKLSAgICAic2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4OnZhbHVl
OiIgPT4gIldlYlNjcmlwdE9iamVjdCIsCi0gICAgInN0cmluZ1JlcHJlc2VudGF0aW9uIiA9PiAi
V2ViU2NyaXB0T2JqZWN0IiwKLSAgICAid2ViU2NyaXB0VmFsdWVBdEluZGV4OiIgPT4gIldlYlNj
cmlwdE9iamVjdCIsCi0KLSAgICAiYXV0b3JlbGVhc2UiID0+ICJOU09iamVjdCIsCi0gICAgImF3
YWtlQWZ0ZXJVc2luZ0NvZGVyOiIgPT4gIk5TT2JqZWN0IiwKLSAgICAiY2xhc3MiID0+ICJOU09i
amVjdCIsCi0gICAgImNsYXNzRm9yQ29kZXIiID0+ICJOU09iamVjdCIsCi0gICAgImNvbmZvcm1z
VG9Qcm90b2NvbDoiID0+ICJOU09iamVjdCIsCi0gICAgImNvcHkiID0+ICJOU09iamVjdCIsCi0g
ICAgImNvcHlXaXRoWm9uZToiID0+ICJOU09iamVjdCIsCi0gICAgImRlYWxsb2MiID0+ICJOU09i
amVjdCIsCi0gICAgImRlc2NyaXB0aW9uIiA9PiAiTlNPYmplY3QiLAotICAgICJkb2VzTm90UmVj
b2duaXplU2VsZWN0b3I6IiA9PiAiTlNPYmplY3QiLAotICAgICJlbmNvZGVXaXRoQ29kZXI6IiA9
PiAiTlNPYmplY3QiLAotICAgICJmb3J3YXJkSW52b2NhdGlvbjoiID0+ICJOU09iamVjdCIsCi0g
ICAgImhhc2giID0+ICJOU09iamVjdCIsCi0gICAgImluaXQiID0+ICJOU09iamVjdCIsCi0gICAg
ImluaXRXaXRoQ29kZXI6IiA9PiAiTlNPYmplY3QiLAotICAgICJpc0VxdWFsOiIgPT4gIk5TT2Jq
ZWN0IiwKLSAgICAiaXNLaW5kT2ZDbGFzczoiID0+ICJOU09iamVjdCIsCi0gICAgImlzTWVtYmVy
T2ZDbGFzczoiID0+ICJOU09iamVjdCIsCi0gICAgImlzUHJveHkiID0+ICJOU09iamVjdCIsCi0g
ICAgIm1ldGhvZEZvclNlbGVjdG9yOiIgPT4gIk5TT2JqZWN0IiwKLSAgICAibWV0aG9kU2lnbmF0
dXJlRm9yU2VsZWN0b3I6IiA9PiAiTlNPYmplY3QiLAotICAgICJtdXRhYmxlQ29weSIgPT4gIk5T
T2JqZWN0IiwKLSAgICAibXV0YWJsZUNvcHlXaXRoWm9uZToiID0+ICJOU09iamVjdCIsCi0gICAg
InBlcmZvcm1TZWxlY3RvcjoiID0+ICJOU09iamVjdCIsCi0gICAgInJlbGVhc2UiID0+ICJOU09i
amVjdCIsCi0gICAgInJlcGxhY2VtZW50T2JqZWN0Rm9yQ29kZXI6IiA9PiAiTlNPYmplY3QiLAot
ICAgICJyZXNwb25kc1RvU2VsZWN0b3I6IiA9PiAiTlNPYmplY3QiLAotICAgICJyZXRhaW4iID0+
ICJOU09iamVjdCIsCi0gICAgInJldGFpbkNvdW50IiA9PiAiTlNPYmplY3QiLAotICAgICJzZWxm
IiA9PiAiTlNPYmplY3QiLAotICAgICJzdXBlcmNsYXNzIiA9PiAiTlNPYmplY3QiLAotICAgICJ6
b25lIiA9PiAiTlNPYmplY3QiLAotKTsKLQotbXkgJGZhdGFsRXJyb3IgPSAwOwotCi0jIERlZmF1
bHQgTGljZW5zZSBUZW1wbGF0ZXMKLW15ICRoZWFkZXJMaWNlbnNlVGVtcGxhdGUgPSA8PCAiRU9G
IjsKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdcQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi1FT0YKLQotbXkgJGltcGxlbWVudGF0aW9uTGljZW5z
ZVRlbXBsYXRlID0gPDwgIkVPRiI7Ci0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi1FT0YKLQotbXkgJFRCREF2YWlsYWJpbGl0eVZl
cnNpb24gPSAiOTg3Nl81IjsKLQotIyBEZWZhdWx0IGNvbnN0cnVjdG9yCi1zdWIgbmV3Ci17Ci0g
ICAgbXkgJG9iamVjdCA9IHNoaWZ0OwotICAgIG15ICRyZWZlcmVuY2UgPSB7IH07Ci0KLSAgICAk
Y29kZUdlbmVyYXRvciA9IHNoaWZ0OwotICAgICR3cml0ZURlcGVuZGVuY2llcyA9IHNoaWZ0Owot
Ci0gICAgYmxlc3MoJHJlZmVyZW5jZSwgJG9iamVjdCk7Ci0gICAgcmV0dXJuICRyZWZlcmVuY2U7
Ci19Ci0KLXN1YiBSZWFkUHVibGljSW50ZXJmYWNlcwotewotICAgIG15ICRjbGFzcyA9IHNoaWZ0
OwotICAgIG15ICRzdXBlckNsYXNzID0gc2hpZnQ7Ci0gICAgbXkgJGRlZmluZXMgPSBzaGlmdDsK
LSAgICBteSAkaXNQcm90b2NvbCA9IHNoaWZ0OwotCi0gICAgbXkgJGZvdW5kID0gMDsKLSAgICBt
eSAkYWN0dWFsU3VwZXJDbGFzczsKLSAgICAlcHVibGljSW50ZXJmYWNlcyA9ICgpOwotCi0gICAg
bXkgQGFyZ3MgPSBxdygtRSAtUCAteCBvYmplY3RpdmUtYyk7Ci0KLSAgICBwdXNoKEBhcmdzLCAi
LUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlm
ICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsKLSAgICBwdXNoKEBhcmdzLCAiLWlzeXNyb290Iiwg
JEVOVntTREtST09UfSkgaWYgJEVOVntTREtST09UfTsKLQotICAgIG15ICRiaW5kaW5nc0RpciA9
IGRpcm5hbWUoJEZpbmRCaW46OkJpbik7Ci0gICAgbXkgJGZpbGVOYW1lID0gIiRiaW5kaW5nc0Rp
ci9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaCI7Ci0gICAgbXkgJGdjY0xvY2F0aW9uID0gIiI7
Ci0gICAgaWYgKCRFTlZ7Q0N9KSB7Ci0gICAgICAgICRnY2NMb2NhdGlvbiA9ICRFTlZ7Q0N9Owot
ICAgIH0gZWxzaWYgKCgkQ29uZmlnOjpDb25maWd7J29zbmFtZSd9KSA9fiAvc29sYXJpcy9pKSB7
Ci0gICAgICAgICRnY2NMb2NhdGlvbiA9ICIvdXNyL3Nmdy9iaW4vZ2NjIjsKLSAgICB9IGVsc2lm
ICgteCAiL3Vzci9iaW4vY2xhbmciKSB7Ci0gICAgICAgICRnY2NMb2NhdGlvbiA9ICIvdXNyL2Jp
bi9jbGFuZyI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgJGdjY0xvY2F0aW9uID0gIi91c3IvYmlu
L2djYyI7Ci0gICAgfQotCi0gICAgb3BlbiBGSUxFLCAiLXwiLCAkZ2NjTG9jYXRpb24sIEBhcmdz
LAotICAgICAgICAobWFwIHsgIi1EJF8iIH0gc3BsaXQoLyArLywgJGRlZmluZXMpKSwgIi1ET0JK
Q19DT0RFX0dFTkVSQVRJT04iLCAkZmlsZU5hbWUgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkZmls
ZU5hbWUiOwotICAgIG15IEBkb2N1bWVudENvbnRlbnQgPSA8RklMRT47Ci0gICAgY2xvc2UgRklM
RTsKLQotICAgIGZvcmVhY2ggJGxpbmUgKEBkb2N1bWVudENvbnRlbnQpIHsKLSAgICAgICAgaWYg
KCEkaXNQcm90b2NvbCAmJiAkbGluZSA9fiAvXlxzKlxAaW50ZXJmYWNlXHMqJGNsYXNzXHMqOlxz
KihcdyspXHMqKFtBLVowLTlfXSopLykgewotICAgICAgICAgICAgaWYgKCRzdXBlckNsYXNzIG5l
ICQxKSB7Ci0gICAgICAgICAgICAgICAgd2FybiAiUHVibGljIEFQSSBjaGFuZ2UuIFN1cGVyY2xh
c3MgZm9yIFwiJGNsYXNzXCIgZGlmZmVycyAoJDEgIT0gJHN1cGVyQ2xhc3MpIjsKLSAgICAgICAg
ICAgICAgICAkZmF0YWxFcnJvciA9IDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICRp
bnRlcmZhY2VBdmFpbGFiaWxpdHlWZXJzaW9uID0gJDIgaWYgZGVmaW5lZCAkMjsKLSAgICAgICAg
ICAgICRmb3VuZCA9IDE7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9IGVsc2lmICgkaXNQ
cm90b2NvbCAmJiAkbGluZSA9fiAvXlxzKlxAcHJvdG9jb2wgJGNsYXNzXHMqPFtePl0rPlxzKihb
QS1aMC05XygpXSopLykgewotICAgICAgICAgICAgJGludGVyZmFjZUF2YWlsYWJpbGl0eVZlcnNp
b24gPSAkMSBpZiBkZWZpbmVkICQxOwotICAgICAgICAgICAgJGZvdW5kID0gMTsKLSAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBsYXN0IGlmICRmb3VuZCBhbmQgJGxpbmUg
PX4gL15ccz9cQGVuZFxzPyQvOwotCi0gICAgICAgIGlmICgkZm91bmQpIHsKLSAgICAgICAgICAg
ICMgdHJpbSB3aGl0c3BhY2UKLSAgICAgICAgICAgICRsaW5lID1+IHMvXlxzKy8vOwotICAgICAg
ICAgICAgJGxpbmUgPX4gcy9ccyskLy87Ci0KLSAgICAgICAgICAgIG15ICRhdmFpbGFiaWxpdHlN
YWNybyA9ICIiOwotICAgICAgICAgICAgJGxpbmUgPX4gcy9ccyhbQS1aMC05XygpLCBdKylccyo7
JC87LzsKLSAgICAgICAgICAgICRhdmFpbGFiaWxpdHlNYWNybyA9ICQxIGlmIGRlZmluZWQgJDE7
Ci0KLSAgICAgICAgICAgICRwdWJsaWNJbnRlcmZhY2VzeyRsaW5lfSA9ICRhdmFpbGFiaWxpdHlN
YWNybyBpZiBsZW5ndGggJGxpbmU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIElmIHRoaXMg
Y2xhc3Mgd2FzIG5vdCBmb3VuZCBpbiBQdWJsaWNET01JbnRlcmZhY2VzLmggdGhlbiBpdCBzaG91
bGQgYmUgY29uc2lkZXJlZCBhcyBhbiBlbnRpcmVseSBuZXcgcHVibGljIGNsYXNzLgotICAgICRu
ZXdQdWJsaWNDbGFzcyA9ICEkZm91bmQ7Ci0gICAgJGludGVyZmFjZUF2YWlsYWJpbGl0eVZlcnNp
b24gPSAkVEJEQXZhaWxhYmlsaXR5VmVyc2lvbiBpZiAkbmV3UHVibGljQ2xhc3M7Ci19Ci0KLXN1
YiBBZGRNZXRob2RzQ29uc3RhbnRzQW5kQXR0cmlidXRlc0Zyb21QYXJlbnRJbnRlcmZhY2VzCi17
Ci0gICAgIyBBZGQgdG8gJGludGVyZmFjZSBhbGwgb2YgaXRzIGluaGVyaXRlZCBpbnRlcmZhY2Ug
bWVtYmVycywgZXhjZXB0IGZvciB0aG9zZQotICAgICMgaW5oZXJpdGVkIHRocm91Z2ggJGludGVy
ZmFjZSdzIGZpcnN0IGxpc3RlZCBwYXJlbnQuICBJZiBhbiBhcnJheSByZWZlcmVuY2UKLSAgICAj
IGlzIHBhc3NlZCBpbiBhcyAkcGFyZW50cywgdGhlIG5hbWVzIG9mIGFsbCBhbmNlc3RvciBpbnRl
cmZhY2VzIHZpc2l0ZWQKLSAgICAjIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGFycmF5LiAgSWYg
JGNvbGxlY3REaXJlY3RQYXJlbnRzIGlzIHRydWUsIHRoZW4KLSAgICAjIGV2ZW4gdGhlIG5hbWVz
IG9mICRpbnRlcmZhY2UncyBmaXJzdCBsaXN0ZWQgcGFyZW50IGFuZCBpdHMgYW5jZXN0b3JzIHdp
bGwKLSAgICAjIGJlIGFwcGVuZGVkIHRvICRwYXJlbnRzLgotCi0gICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwotICAgIG15ICRwYXJlbnRzID0gc2hpZnQ7Ci0gICAgbXkgJGNvbGxlY3REaXJlY3RQ
YXJlbnRzID0gc2hpZnQ7Ci0KLSAgICBteSAkZmlyc3QgPSAxOwotCi0gICAgJGNvZGVHZW5lcmF0
b3ItPkZvckFsbFBhcmVudHMoJGludGVyZmFjZSwgc3ViIHsKLSAgICAgICAgbXkgJGN1cnJlbnRJ
bnRlcmZhY2UgPSBzaGlmdDsKLQotICAgICAgICBpZiAoJGZpcnN0KSB7Ci0gICAgICAgICAgICAj
IElnbm9yZSBmaXJzdCBwYXJlbnQgY2xhc3MsIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgZ2VuZXJh
dGlvbiBpdHNlbGYuCi0gICAgICAgICAgICAkZmlyc3QgPSAwOwotCi0gICAgICAgICAgICBpZiAo
JGNvbGxlY3REaXJlY3RQYXJlbnRzKSB7Ci0gICAgICAgICAgICAgICAgIyBKdXN0IGNvbGxlY3Qg
dGhlIG5hbWVzIG9mIHRoZSBkaXJlY3QgYW5jZXN0b3IgaW50ZXJmYWNlcywKLSAgICAgICAgICAg
ICAgICAjIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICBwdXNoKEAkcGFyZW50cywgJGN1
cnJlbnRJbnRlcmZhY2UtPm5hbWUpOwotICAgICAgICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5G
b3JBbGxQYXJlbnRzKCRjdXJyZW50SW50ZXJmYWNlLCBzdWIgewotICAgICAgICAgICAgICAgICAg
ICBteSAkY3VycmVudEludGVyZmFjZSA9IHNoaWZ0OwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEAkcGFyZW50cywgJGN1cnJlbnRJbnRlcmZhY2UtPm5hbWUpOwotICAgICAgICAgICAgICAgIH0s
IHVuZGVmKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBQcnVuZSB0aGUgcmVjdXJz
aW9uIGhlcmUuCi0gICAgICAgICAgICByZXR1cm4gJ3BydW5lJzsKLSAgICAgICAgfQotCi0gICAg
ICAgICMgQ29sbGVjdCB0aGUgbmFtZSBvZiB0aGlzIGFkZGl0aW9uYWwgcGFyZW50LgotICAgICAg
ICBwdXNoKEAkcGFyZW50cywgJGN1cnJlbnRJbnRlcmZhY2UtPm5hbWUpIGlmICRwYXJlbnRzOwot
Ci0gICAgICAgIHByaW50ICIgIHwgIHw+ICAtPiBJbmhlcml0aW5nICIKLSAgICAgICAgICAgIC4g
QHskY3VycmVudEludGVyZmFjZS0+Y29uc3RhbnRzfSAuICIgY29uc3RhbnRzLCAiCi0gICAgICAg
ICAgICAuIEB7JGN1cnJlbnRJbnRlcmZhY2UtPmZ1bmN0aW9uc30gLiAiIGZ1bmN0aW9ucywgIgot
ICAgICAgICAgICAgLiBAeyRjdXJyZW50SW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSAuICIgYXR0cmli
dXRlcy4uLlxuICB8ICB8PlxuIiBpZiAkdmVyYm9zZTsKLQotICAgICAgICAjIEFkZCB0aGlzIHBh
cmVudCdzIG1lbWJlcnMgdG8gJGludGVyZmFjZS4KLSAgICAgICAgcHVzaChAeyRpbnRlcmZhY2Ut
PmNvbnN0YW50c30sIEB7JGN1cnJlbnRJbnRlcmZhY2UtPmNvbnN0YW50c30pOwotICAgICAgICBw
dXNoKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgQHskY3VycmVudEludGVyZmFjZS0+ZnVuY3Rp
b25zfSk7Ci0gICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSwgQHskY3VycmVu
dEludGVyZmFjZS0+YXR0cmlidXRlc30pOwotICAgIH0pOwotfQotCi1zdWIgR2VuZXJhdGVJbnRl
cmZhY2UKLXsKLSAgICBteSAkb2JqZWN0ID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OwotICAgIG15ICRkZWZpbmVzID0gc2hpZnQ7Ci0KLSAgICAkZmF0YWxFcnJvciA9IDA7Ci0K
LSAgICBteSAkbmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7Ci0KLSAgICAjIE9iakMgYmluZGluZ3Mg
b25seSBzdXBwb3J0IEV2ZW50VGFyZ2V0IGFzIGJhc2UgY2xhc3MgZm9yIE5vZGUuCi0gICAgJGlu
dGVyZmFjZS0+cGFyZW50cyhbZ3JlcCghL0V2ZW50VGFyZ2V0LywgQHskaW50ZXJmYWNlLT5wYXJl
bnRzfSldKSBpZiAkbmFtZSBuZSAiTm9kZSI7Ci0KLSAgICBteSAkY2xhc3NOYW1lID0gR2V0Q2xh
c3NOYW1lKCRuYW1lKTsKLSAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gIkRPTSIgLiBHZXRQYXJl
bnRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwotICAgICRpc1Byb3RvY29sID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57T2JqQ1Byb3RvY29sfTsKLSAgICAkbm9JbXBsID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57T2JqQ0N1c3RvbUltcGxlbWVudGF0aW9ufSB8
fCAkaXNQcm90b2NvbDsKLQotICAgIFJlYWRQdWJsaWNJbnRlcmZhY2VzKCRjbGFzc05hbWUsICRw
YXJlbnRDbGFzc05hbWUsICRkZWZpbmVzLCAkaXNQcm90b2NvbCk7Ci0KLSAgICAjIFN0YXJ0IGFj
dHVhbCBnZW5lcmF0aW9uLi4KLSAgICAkb2JqZWN0LT5HZW5lcmF0ZUhlYWRlcigkaW50ZXJmYWNl
LCAkZGVmaW5lcyk7Ci0gICAgJG9iamVjdC0+R2VuZXJhdGVJbXBsZW1lbnRhdGlvbigkaW50ZXJm
YWNlKSB1bmxlc3MgJG5vSW1wbDsKLQotICAgICMgQ2hlY2sgZm9yIG1pc3NpbmcgcHVibGljIEFQ
SQotICAgIGlmIChrZXlzICVwdWJsaWNJbnRlcmZhY2VzID4gMCkgewotICAgICAgICBteSAkbWlz
c2luZyA9IGpvaW4oIlxuIiwga2V5cyAlcHVibGljSW50ZXJmYWNlcyk7Ci0gICAgICAgIHdhcm4g
IlB1YmxpYyBBUEkgY2hhbmdlLiBUaGVyZSBhcmUgbWlzc2luZyBwdWJsaWMgcHJvcGVydGllcyBh
bmQvb3IgbWV0aG9kcyBmcm9tIHRoZSBcIiRjbGFzc05hbWVcIiBjbGFzcy5cbiRtaXNzaW5nXG4i
OwotICAgICAgICAkZmF0YWxFcnJvciA9IDE7Ci0gICAgfQotCi0gICAgIyBGSVhNRTogVGhpcyBz
aG91bGQgbm90IG5lZWQgdG8gYmUgYW4gZXhjZXB0aW9uLgotICAgICMgT2JqQ0N1c3RvbUltcGxl
bWVudGF0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIENNYWtlIHJpZ2h0IG5vdy4KLSAgICAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU4NjAKLSAgICBkaWUgaWYgJGZh
dGFsRXJyb3IgJiYgJGNsYXNzTmFtZSBuZSAiRE9NQWJzdHJhY3RWaWV3IjsKLX0KLQotc3ViIEdl
dENsYXNzTmFtZQotewotICAgIG15ICRuYW1lID0gc2hpZnQ7Ci0KLSAgICAjIHNwZWNpYWwgY2Fz
ZXMKLSAgICByZXR1cm4gIk5TU3RyaW5nIiBpZiAkbmFtZSBlcSAiRE9NU3RyaW5nIiBvciAkbmFt
ZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKLSAgICByZXR1cm4gIkNHQ29sb3JSZWYiIGlm
ICRuYW1lIGVxICJDb2xvciIgYW5kICRzaG91bGRVc2VDR0NvbG9yOwotICAgIHJldHVybiAiTlMk
bmFtZSIgaWYgSXNOYXRpdmVPYmpDVHlwZSgkbmFtZSk7Ci0gICAgcmV0dXJuICJCT09MIiBpZiAk
bmFtZSBlcSAiYm9vbGVhbiI7Ci0gICAgcmV0dXJuICJ1bnNpZ25lZCBjaGFyIiBpZiAkbmFtZSBl
cSAib2N0ZXQiOwotICAgIHJldHVybiAiY2hhciIgaWYgJG5hbWUgZXEgImJ5dGUiOwotICAgIHJl
dHVybiAidW5zaWduZWQiIGlmICRuYW1lIGVxICJ1bnNpZ25lZCBsb25nIjsKLSAgICByZXR1cm4g
ImludCIgaWYgJG5hbWUgZXEgImxvbmciOwotICAgIHJldHVybiAiTlNUaW1lSW50ZXJ2YWwiIGlm
ICRuYW1lIGVxICJEYXRlIjsKLSAgICByZXR1cm4gIkRPTUFic3RyYWN0VmlldyIgaWYgJG5hbWUg
ZXEgIkRPTVdpbmRvdyI7Ci0gICAgcmV0dXJuICRuYW1lIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1By
aW1pdGl2ZVR5cGUoJG5hbWUpIG9yICRuYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbiIgb3IgJG5h
bWUgZXEgIkRPTVRpbWVTdGFtcCI7Ci0KLSAgICAjIERlZmF1bHQsIGFzc3VtZSBPYmplY3RpdmUt
QyB0eXBlIGhhcyB0aGUgc2FtZSB0eXBlIG5hbWUgYXMKLSAgICAjIGlkbCB0eXBlIHByZWZpeGVk
IHdpdGggIkRPTSIuCi0gICAgcmV0dXJuICJET00kbmFtZSI7Ci19Ci0KLXN1YiBHZXRDbGFzc0hl
YWRlck5hbWUKLXsKLSAgICBteSAkbmFtZSA9IHNoaWZ0OwotCi0gICAgcmV0dXJuICJET01ET01J
bXBsZW1lbnRhdGlvbiIgaWYgJG5hbWUgZXEgIkRPTUltcGxlbWVudGF0aW9uIjsKLSAgICByZXR1
cm4gJG5hbWU7Ci19Ci0KLXN1YiBHZXRJbXBsQ2xhc3NOYW1lCi17Ci0gICAgbXkgJG5hbWUgPSBz
aGlmdDsKLQotICAgIHJldHVybiAiTmF0aXZlTm9kZUZpbHRlciIgaWYgJG5hbWUgZXEgIk5vZGVG
aWx0ZXIiOwotICAgIHJldHVybiAiRE9NV2luZG93IiBpZiAkbmFtZSBlcSAiQWJzdHJhY3RWaWV3
IjsKLSAgICByZXR1cm4gJG5hbWU7Ci19Ci0KLXN1YiBHZXRQYXJlbnRJbXBsQ2xhc3NOYW1lCi17
Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotCi0gICAgcmV0dXJuICJPYmplY3QiIGlmIEB7
JGludGVyZmFjZS0+cGFyZW50c30gZXEgMDsKLQotICAgIG15ICRwYXJlbnQgPSAkaW50ZXJmYWNl
LT5wYXJlbnRzKDApOwotCi0gICAgIyBzcGVjaWFsIGNhc2VzCi0gICAgcmV0dXJuICJPYmplY3Qi
IGlmICRwYXJlbnQgZXEgIkhUTUxDb2xsZWN0aW9uIjsKLQotICAgIHJldHVybiAkcGFyZW50Owot
fQotCi1zdWIgR2V0UGFyZW50QW5kUHJvdG9jb2xzCi17Ci0gICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OwotICAgIG15ICRudW1QYXJlbnRzID0gQHskaW50ZXJmYWNlLT5wYXJlbnRzfTsKLQotICAg
IG15ICRwYXJlbnQgPSAiIjsKLSAgICBteSBAcHJvdG9jb2xzID0gKCk7Ci0gICAgaWYgKCRudW1Q
YXJlbnRzIGVxIDApIHsKLSAgICAgICAgaWYgKCRpc1Byb3RvY29sKSB7Ci0gICAgICAgICAgICBw
dXNoKEBwcm90b2NvbHMsICJOU09iamVjdCIpOwotICAgICAgICAgICAgcHVzaChAcHJvdG9jb2xz
LCAiTlNDb3B5aW5nIikgaWYgJGludGVyZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgJHBhcmVudCA9ICJET01PYmplY3QiOwotICAgICAg
ICB9Ci0gICAgfSBlbHNpZiAoJG51bVBhcmVudHMgZXEgMSkgewotICAgICAgICBteSAkcGFyZW50
TmFtZSA9ICRpbnRlcmZhY2UtPnBhcmVudHMoMCk7Ci0gICAgICAgIGlmICgkaXNQcm90b2NvbCkg
ewotICAgICAgICAgICAgZGllICJQYXJlbnRzIG9mIHByb3RvY29scyBtdXN0IGFsc28gYmUgcHJv
dG9jb2xzLiIgdW5sZXNzIElzUHJvdG9jb2xUeXBlKCRwYXJlbnROYW1lKTsKLSAgICAgICAgICAg
IHB1c2goQHByb3RvY29scywgIkRPTSIgLiAkcGFyZW50TmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoSXNQcm90b2NvbFR5cGUoJHBhcmVudE5hbWUpKSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAcHJvdG9jb2xzLCAiRE9NIiAuICRwYXJlbnROYW1lKTsKLSAgICAgICAg
ICAgIH0gZWxzaWYgKCRwYXJlbnROYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIpIHsKLSAgICAgICAg
ICAgICAgICAkcGFyZW50ID0gIkRPTU9iamVjdCI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICRwYXJlbnQgPSAiRE9NIiAuICRwYXJlbnROYW1lOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbXkgQHBhcmVudHMgPSBAeyRpbnRl
cmZhY2UtPnBhcmVudHN9OwotICAgICAgICBteSAkZmlyc3RQYXJlbnQgPSBzaGlmdChAcGFyZW50
cyk7Ci0gICAgICAgIGlmIChJc1Byb3RvY29sVHlwZSgkZmlyc3RQYXJlbnQpKSB7Ci0gICAgICAg
ICAgICBwdXNoKEBwcm90b2NvbHMsICJET00iIC4gJGZpcnN0UGFyZW50KTsKLSAgICAgICAgICAg
IGlmICghJGlzUHJvdG9jb2wpIHsKLSAgICAgICAgICAgICAgICAkcGFyZW50ID0gIkRPTU9iamVj
dCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkcGFyZW50
ID0gIkRPTSIgLiAkZmlyc3RQYXJlbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoIG15
ICRwYXJlbnROYW1lIChAcGFyZW50cykgewotICAgICAgICAgICAgZGllICJFdmVyeXRoaW5nIHBh
c3QgdGhlIGZpcnN0IGNsYXNzIHNob3VsZCBiZSBhIHByb3RvY29sISIgdW5sZXNzIElzUHJvdG9j
b2xUeXBlKCRwYXJlbnROYW1lKTsKLQotICAgICAgICAgICAgcHVzaChAcHJvdG9jb2xzLCAiRE9N
IiAuICRwYXJlbnROYW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAoJHBhcmVu
dCwgQHByb3RvY29scyk7Ci19Ci0KLXN1YiBHZXRCYXNlQ2xhc3MKLXsKLSAgICAkcGFyZW50ID0g
c2hpZnQ7Ci0KLSAgICByZXR1cm4gJHBhcmVudCBpZiAkcGFyZW50IGVxICJPYmplY3QiIG9yIElz
QmFzZVR5cGUoJHBhcmVudCk7Ci0gICAgcmV0dXJuICJFdmVudCIgaWYgJHBhcmVudCBlcSAiVUlF
dmVudCIgb3IgJHBhcmVudCBlcSAiTW91c2VFdmVudCI7Ci0gICAgcmV0dXJuICJDU1NWYWx1ZSIg
aWYgJHBhcmVudCBlcSAiQ1NTVmFsdWVMaXN0IjsKLSAgICByZXR1cm4gIk5vZGUiOwotfQotCi1z
dWIgSXNCYXNlVHlwZQotewotICAgIG15ICR0eXBlID0gc2hpZnQ7Ci0KLSAgICByZXR1cm4gMSBp
ZiAkYmFzZVR5cGVIYXNoeyR0eXBlfTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3ViIElzUHJvdG9j
b2xUeXBlCi17Ci0gICAgbXkgJHR5cGUgPSBzaGlmdDsKLQotICAgIHJldHVybiAxIGlmICRwcm90
b2NvbFR5cGVIYXNoeyR0eXBlfTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3ViIElzTmF0aXZlT2Jq
Q1R5cGUKLXsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OwotCi0gICAgcmV0dXJuIDEgaWYgJG5hdGl2
ZU9iakNUeXBlSGFzaHskdHlwZX07Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN1YiBJc0NvcmVGb3Vu
ZGF0aW9uVHlwZQotewotICAgIG15ICR0eXBlID0gc2hpZnQ7Ci0KLSAgICByZXR1cm4gMSBpZiAk
dHlwZSA9fiAvXihDRnxDRylbQS1aYS16XStSZWYkLzsKLSAgICByZXR1cm4gMDsKLX0KLQotc3Vi
IFNraXBGdW5jdGlvbgotewotICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwotCi0gICAgcmV0dXJu
IDEgaWYgJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+dHlwZSk7Ci0gICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7Ci0KLSAgICByZXR1cm4gMSBpZiAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZSBlcSAiUHJvbWlzZSI7Ci0gICAgcmV0dXJuIDEgaWYgJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPnR5cGUgZXEgIlN5bWJvbCI7Ci0KLSAgICBmb3JlYWNoIG15ICRwYXJhbSAo
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIHJldHVybiAxIGlmICRjb2RlR2Vu
ZXJhdG9yLT5HZXRTZXF1ZW5jZVR5cGUoJHBhcmFtLT50eXBlKTsKLSAgICAgICAgcmV0dXJuIDEg
aWYgJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgkcGFyYW0tPnR5cGUpOwotICAgICAgICBy
ZXR1cm4gMSBpZiAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9OwotICAgICAg
ICByZXR1cm4gMSBpZiAkcGFyYW0tPmlzVmFyaWFkaWM7Ci0gICAgfQotCi0gICAgcmV0dXJuIDEg
aWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQcml2YXRlSWRl
bnRpZmllciJ9IGFuZCBub3QgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJQdWJsaWNJZGVudGlmaWVyIn07Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3ViIFNraXBB
dHRyaWJ1dGUKLXsKLSAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7Ci0gICAgbXkgJHR5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7Ci0KLSAgICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0
Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+
R2V0QXJyYXlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNU
eXBlZEFycmF5VHlwZSgkdHlwZSk7Ci0gICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklz
RW51bVR5cGUoJHR5cGUpOwotICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJFdmVudEhhbmRsZXIi
OwotICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJTeW1ib2wiOwotICAgIHJldHVybiAxIGlmICRh
dHRyaWJ1dGUtPmlzU3RhdGljOwotCi0gICAgIyBUaGlzIGlzIGZvciBEeW5hbWljc0NvbXByZXNz
b3JOb2RlLmlkbC4KLSAgICAjIEZJWE1FOiBOb3JtYWxseSB3ZSB3b3VsZCByZW5hbWUgcmF0aGVy
IHRoYW4ganVzdCBza2lwcGluZyBmb3IgYSBjYXNlIGxpa2UgdGhpcy4KLSAgICByZXR1cm4gMSBp
ZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgInJlbGVhc2UiOwotCi0gICAgcmV0dXJu
IDA7Ci19Ci0KLXN1YiBHZXRPYmpDVHlwZQotewotICAgIG15ICR0eXBlID0gc2hpZnQ7Ci0gICAg
bXkgJG5hbWUgPSBHZXRDbGFzc05hbWUoJHR5cGUpOwotCi0gICAgcmV0dXJuICJkb3VibGUiIGlm
ICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjsKLSAgICByZXR1cm4gImZsb2F0IiBpZiAk
dHlwZSBlcSAidW5yZXN0cmljdGVkIGZsb2F0IjsKLSAgICByZXR1cm4gImlkIDwkbmFtZT4iIGlm
IElzUHJvdG9jb2xUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gJG5hbWUgaWYgJGNvZGVHZW5lcmF0
b3ItPklzUHJpbWl0aXZlVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIkRPTVRpbWVTdGFtcCI7Ci0g
ICAgcmV0dXJuICRuYW1lIGlmIElzQ29yZUZvdW5kYXRpb25UeXBlKCRuYW1lKTsKLSAgICByZXR1
cm4gIiRuYW1lICoiOwotfQotCi1zdWIgR2V0UHJvcGVydHlBdHRyaWJ1dGVzCi17Ci0gICAgbXkg
JHR5cGUgPSBzaGlmdDsKLSAgICBteSAkcmVhZE9ubHkgPSBzaGlmdDsKLQotICAgIG15IEBhdHRy
aWJ1dGVzID0gKCk7Ci0KLSAgICBwdXNoKEBhdHRyaWJ1dGVzLCAicmVhZG9ubHkiKSBpZiAkcmVh
ZE9ubHk7Ci0KLSAgICAjIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNTA0OTkzND4gQ29uc2lkZXIg
dXNpbmcgJ25vbmF0b21pYycgb24gdGhlIERPTSBAcHJvcGVydHkgZGVjbGFyYXRpb25zLgotICAg
IGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nIiB8fCBJc05hdGl2ZU9iakNUeXBlKCR0eXBlKSkgewot
ICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAiY29weSIpOwotICAgIH0gZWxzaWYgKCR0eXBlIG5l
ICJET01TdHJpbmciICYmICEkY29kZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSAm
JiAkdHlwZSBuZSAiRE9NVGltZVN0YW1wIikgewotICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAi
c3Ryb25nIik7Ci0gICAgfQotCi0gICAgcmV0dXJuICIiIHVubGVzcyBAYXR0cmlidXRlcyA+IDA7
Ci0gICAgcmV0dXJuICIgKCIgLiBqb2luKCIsICIsIEBhdHRyaWJ1dGVzKSAuICIpIjsKLX0KLQot
c3ViIENvbnZlcnNpb25OZWVkZWQKLXsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OwotCi0gICAgcmV0
dXJuICEkY29kZUdlbmVyYXRvci0+SXNOb25Qb2ludGVyVHlwZSgkdHlwZSkgJiYgJHR5cGUgbmUg
IkRPTVN0cmluZyIgJiYgIUlzTmF0aXZlT2JqQ1R5cGUoJHR5cGUpOwotfQotCi1zdWIgR2V0T2Jq
Q1R5cGVHZXR0ZXIKLXsKLSAgICBteSAkYXJnTmFtZSA9IHNoaWZ0OwotICAgIG15ICR0eXBlID0g
c2hpZnQ7Ci0KLSAgICByZXR1cm4gJGFyZ05hbWUgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0
aXZlVHlwZSgkdHlwZSkgb3IgJHR5cGUgZXEgIkRPTVN0cmluZyIgb3IgSXNOYXRpdmVPYmpDVHlw
ZSgkdHlwZSk7Ci0gICAgcmV0dXJuICRhcmdOYW1lIC4gIk5vZGUiIGlmICR0eXBlIGVxICJFdmVu
dFRhcmdldCI7Ci0gICAgcmV0dXJuICJXVEY6OmdldFB0cihuYXRpdmVFdmVudExpc3RlbmVyKSIg
aWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOwotICAgIHJldHVybiAiV1RGOjpnZXRQdHIobmF0
aXZlTm9kZUZpbHRlcikiIGlmICR0eXBlIGVxICJOb2RlRmlsdGVyIjsKLSAgICByZXR1cm4gIldU
Rjo6Z2V0UHRyKG5hdGl2ZVJlc29sdmVyKSIgaWYgJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciI7
Ci0gICAgCi0gICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7Ci0gICAg
ICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0gPSAxOwotICAgICAg
ICByZXR1cm4gIldlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFdURjo6U3Ry
aW5nKCRhcmdOYW1lKSkiOwotICAgIH0KLSAgICByZXR1cm4gImNvcmUoJGFyZ05hbWUpIjsKLX0K
LQotc3ViIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlCi17Ci0gICAgbXkgJHR5cGUgPSBz
aGlmdDsKLSAgICBteSAkcHVibGljID0gc2hpZnQ7Ci0KLSAgICByZXR1cm4gaWYgJGNvZGVHZW5l
cmF0b3ItPklzTm9uUG9pbnRlclR5cGUoJHR5cGUpOwotICAgIHJldHVybiBpZiAkY29kZUdlbmVy
YXRvci0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0
b3ItPkdldEFycmF5VHlwZSgkdHlwZSk7Ci0KLSAgICBteSAkY2xhc3MgPSBHZXRDbGFzc05hbWUo
JHR5cGUpOwotCi0gICAgaWYgKElzUHJvdG9jb2xUeXBlKCR0eXBlKSkgewotICAgICAgICAkaGVh
ZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29sc3skY2xhc3N9ID0gMSBpZiAkcHVibGlj
OwotICAgICAgICAkcHJpdmF0ZUhlYWRlckZvcndhcmREZWNsYXJhdGlvbnNGb3JQcm90b2NvbHN7
JGNsYXNzfSA9IDEgaWYgISRwdWJsaWMgYW5kICEkaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0Zv
clByb3RvY29sc3skY2xhc3N9OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgJGhlYWRl
ckZvcndhcmREZWNsYXJhdGlvbnN7JGNsYXNzfSA9IDEgaWYgJHB1YmxpYzsKLQotICAgICMgUHJp
dmF0ZSBoZWFkZXJzIGluY2x1ZGUgdGhlIHB1YmxpYyBoZWFkZXIsIHNvIG9ubHkgYWRkIGEgZm9y
d2FyZCBkZWNsYXJhdGlvbiB0byB0aGUgcHJpdmF0ZSBoZWFkZXIKLSAgICAjIGlmIHRoZSBwdWJs
aWMgaGVhZGVyIGRvZXMgbm90IGFscmVhZHkgaGF2ZSB0aGUgc2FtZSBmb3J3YXJkIGRlY2xhcmF0
aW9uLgotICAgICRwcml2YXRlSGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc3skY2xhc3N9ID0gMSBp
ZiAhJHB1YmxpYyBhbmQgISRoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zeyRjbGFzc307Ci19Ci0K
LXN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKLXsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OwotCi0gICAg
cmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc05vblBvaW50ZXJUeXBlKCR0eXBlKTsKLSAgICBy
ZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSk7Ci0gICAgcmV0
dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOwotCi0gICAgaWYgKElz
TmF0aXZlT2JqQ1R5cGUoJHR5cGUpKSB7Ci0gICAgICAgIGlmICgkdHlwZSBlcSAiQ29sb3IiKSB7
Ci0gICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3IpIHsKLSAgICAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJDb2xvclNwYWNlLmgifSA9IDE7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkNvbG9yTWFjLmgifSA9IDE7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgkdHlw
ZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgkdHlwZSBlcSAiRE9NV2luZG93Iikg
ewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIn0gPSAx
OwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01XaW5kb3cuaCJ9ID0gMTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICgkdHlwZSBlcSAiRXZlbnRUYXJnZXQiKSB7Ci0gICAgICAg
ICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siRE9N
RXZlbnRUYXJnZXQuaCJ9ID0gMTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgk
dHlwZSA9fiAvKFx3KykoQWJzfFJlbCkkLykgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyIkMS5o
In0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJET00ke3R5cGV9SW50ZXJuYWwuaCJ9ID0g
MTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgkdHlwZSBlcSAiTm9kZUZpbHRl
ciIpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siTmF0aXZlTm9kZUZpbHRlci5oIn0gPSAxOwot
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIn0gPSAxOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCR0eXBlIGVxICJFdmVudExpc3RlbmVy
IikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0gICAg
ICAgICRpbXBsSW5jbHVkZXN7Ik9iakNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKLSAg
ICAgICAgJGltcGxJbmNsdWRlc3siRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7Ci0g
ICAgICAgICRpbXBsSW5jbHVkZXN7IlhQYXRoTlNSZXNvbHZlci5oIn0gPSAxOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUi
KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0gPSAx
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgIyBGSVhNRTogd29uJ3QgY29tcGlsZSB3
aXRob3V0IHRoZXNlCi0gICAgJGltcGxJbmNsdWRlc3siQ1NTSW1wb3J0UnVsZS5oIn0gPSAxIGlm
ICR0eXBlIGVxICJDU1NSdWxlIjsKLSAgICAkaW1wbEluY2x1ZGVzeyJTdHlsZVByb3BlcnRpZXMu
aCJ9ID0gMSBpZiAkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiI7Ci0gICAgJGltcGxJbmNs
dWRlc3siTmFtZU5vZGVMaXN0LmgifSA9IDEgaWYgJHR5cGUgZXEgIk5vZGVMaXN0IjsKLQotICAg
ICMgRGVmYXVsdCwgaW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlICh0aGUgaW1wbGVtZW50YXRp
b24pIGFuZCB0aGUgc2FtZSBuYW1lIHByZWZpeGVkIHdpdGggIkRPTSIuIAotICAgICRpbXBsSW5j
bHVkZXN7IiR0eXBlLmgifSA9IDEgaWYgbm90ICRjb2RlR2VuZXJhdG9yLT5Ta2lwSW5jbHVkZUhl
YWRlcigkdHlwZSk7Ci0gICAgJGltcGxJbmNsdWRlc3siRE9NJHt0eXBlfUludGVybmFsLmgifSA9
IDE7Ci19Ci0KLXN1YiBDb25kaXRpb25hbElzRW5hYmxlZChcJSQpCi17Ci0gICAgbXkgJGRlZmlu
ZXMgPSBzaGlmdDsKLSAgICBteSAkY29uZGl0aW9uYWwgPSBzaGlmdDsKLQotICAgIHJldHVybiAx
IGlmICEkY29uZGl0aW9uYWw7Ci0KLSAgICBteSAkb3BlcmF0b3IgPSAoJGNvbmRpdGlvbmFsID1+
IC8mLyA/ICcmJyA6ICgkY29uZGl0aW9uYWwgPX4gL1x8LyA/ICd8JyA6ICcnKSk7Ci0gICAgaWYg
KCEkb3BlcmF0b3IpIHsKLSAgICAgICAgcmV0dXJuIGV4aXN0cygkZGVmaW5lcy0+eyJFTkFCTEVf
IiAuICRjb25kaXRpb25hbH0pOwotICAgIH0KLQotICAgIG15IEBjb25kaXRpb25zID0gc3BsaXQo
L1xRJG9wZXJhdG9yXEUvLCAkY29uZGl0aW9uYWwpOwotICAgIGZvcmVhY2ggKEBjb25kaXRpb25z
KSB7Ci0gICAgICAgIG15ICRlbmFibGUgPSAiRU5BQkxFXyIgLiAkXzsKLSAgICAgICAgcmV0dXJu
IDAgaWYgKCRvcGVyYXRvciBlcSAnJicpIGFuZCAhZXhpc3RzKCRkZWZpbmVzLT57JGVuYWJsZX0p
OwotICAgICAgICByZXR1cm4gMSBpZiAoJG9wZXJhdG9yIGVxICd8JykgYW5kIGV4aXN0cygkZGVm
aW5lcy0+eyRlbmFibGV9KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gJG9wZXJhdG9yIGVxICcmJzsK
LX0KLQotc3ViIEdlbmVyYXRlSGVhZGVyCi17Ci0gICAgbXkgJG9iamVjdCA9IHNoaWZ0OwotICAg
IG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZGVmaW5lcyA9IHNoaWZ0OwotCi0gICAg
bXkgJWRlZmluZXNSZWYgPSBtYXAgeyAkXyA9PiAxIH0gc3BsaXQoL1xzKy8sICRkZWZpbmVzKTsK
LQotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKLSAgICBteSAkY2xh
c3NOYW1lID0gR2V0Q2xhc3NOYW1lKCRpbnRlcmZhY2VOYW1lKTsKLQotICAgIG15ICRwYXJlbnRO
YW1lID0gIiI7Ci0gICAgbXkgQHByb3RvY29sc1RvSW1wbGVtZW50ID0gKCk7Ci0gICAgKCRwYXJl
bnROYW1lLCBAcHJvdG9jb2xzVG9JbXBsZW1lbnQpID0gR2V0UGFyZW50QW5kUHJvdG9jb2xzKCRp
bnRlcmZhY2UpOwotCi0gICAgbXkgJG51bUNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3Rh
bnRzfTsKLSAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc307
Ci0gICAgbXkgJG51bUZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfTsKLQotICAg
ICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsKLSAgICAgICAgQGhlYWRlckNv
bnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZp
bGVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0
KCJcciIsICRoZWFkZXJMaWNlbnNlVGVtcGxhdGUpOwotICAgIH0KLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50SGVhZGVyLCAiXG4iKTsKLQotICAgICMgLSBJTkNMVURFUyAtCi0gICAgbXkgJGluY2x1
ZGVkV2ViS2l0QXZhaWxhYmlsaXR5SGVhZGVyID0gMDsKLSAgICB1bmxlc3MgKCRpc1Byb3RvY29s
KSB7Ci0gICAgICAgIG15ICRwYXJlbnRIZWFkZXJOYW1lID0gR2V0Q2xhc3NIZWFkZXJOYW1lKCRw
YXJlbnROYW1lKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgIiNpbXBvcnQg
PFdlYkNvcmUvJHBhcmVudEhlYWRlck5hbWUuaD5cbiIpOwotICAgICAgICAkaW5jbHVkZWRXZWJL
aXRBdmFpbGFiaWxpdHlIZWFkZXIgPSAxOwotICAgIH0KLQotICAgIGZvcmVhY2ggbXkgJHBhcmVu
dFByb3RvY29sIChAcHJvdG9jb2xzVG9JbXBsZW1lbnQpIHsKLSAgICAgICAgbmV4dCBpZiAkcGFy
ZW50UHJvdG9jb2wgPX4gL15OUy87IAotICAgICAgICAkcGFyZW50UHJvdG9jb2wgPSBHZXRDbGFz
c0hlYWRlck5hbWUoJHBhcmVudFByb3RvY29sKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dEhlYWRlciwgIiNpbXBvcnQgPFdlYkNvcmUvJHBhcmVudFByb3RvY29sLmg+XG4iKTsKLSAgICAg
ICAgJGluY2x1ZGVkV2ViS2l0QXZhaWxhYmlsaXR5SGVhZGVyID0gMTsKLSAgICB9Ci0KLSAgICAj
IFNwZWNpYWwgY2FzZSBuZWVkZWQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIERPTVJhbmdlCi0gICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJSYW5nZSIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudEhlYWRlciwgIiNpbXBvcnQgPFdlYkNvcmUvRE9NQ29yZS5oPlxuIik7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnRIZWFkZXIsICIjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50Lmg+
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgIiNpbXBvcnQgPFdlYkNv
cmUvRE9NUmFuZ2VFeGNlcHRpb24uaD5cbiIpOwotICAgICAgICAkaW5jbHVkZWRXZWJLaXRBdmFp
bGFiaWxpdHlIZWFkZXIgPSAxOwotICAgIH0KLQotICAgIHB1c2goQGhlYWRlckNvbnRlbnRIZWFk
ZXIsICIjaW1wb3J0IDxXZWJDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oPlxuIikgdW5sZXNzICRp
bmNsdWRlZFdlYktpdEF2YWlsYWJpbGl0eUhlYWRlcjsKLQotICAgIHB1c2goQGhlYWRlckNvbnRl
bnRIZWFkZXIsICJcbiIpOwotCi0gICAgIyAtIEFkZCBjb25zdGFudHMuCi0gICAgaWYgKCRudW1D
b25zdGFudHMgPiAwKSB7Ci0gICAgICAgIG15IEBoZWFkZXJDb25zdGFudHMgPSAoKTsKLSAgICAg
ICAgbXkgQGNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKLSAgICAgICAgbXkg
JGNvbWJpbmVkQ29uc3RhbnRzID0gIiI7Ci0KLSAgICAgICAgIyBGSVhNRTogd2UgbmVlZCBhIHdh
eSB0byBpbmNsdWRlIG11bHRpcGxlIGVudW1zLgotICAgICAgICBmb3JlYWNoIG15ICRjb25zdGFu
dCAoQGNvbnN0YW50cykgewotICAgICAgICAgICAgbXkgJGNvbnN0YW50TmFtZSA9ICRjb25zdGFu
dC0+bmFtZTsKLSAgICAgICAgICAgIG15ICRjb25zdGFudFZhbHVlID0gJGNvbnN0YW50LT52YWx1
ZTsKLSAgICAgICAgICAgIG15ICRub3RMYXN0ID0gJGNvbnN0YW50IG5lICRjb25zdGFudHNbLTFd
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoQ29uZGl0aW9uYWxJc0VuYWJsZWQoJWRl
ZmluZXNSZWYsICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0p
KSB7Ci0gICAgICAgICAgICAgICAgJGNvbWJpbmVkQ29uc3RhbnRzIC49ICIgICAgRE9NXyRjb25z
dGFudE5hbWUgPSAkY29uc3RhbnRWYWx1ZSI7Ci0gICAgICAgICAgICAgICAgJGNvbWJpbmVkQ29u
c3RhbnRzIC49ICIsIiBpZiAkbm90TGFzdDsKLSAgICAgICAgICAgICAgICBpZiAoJG5vdExhc3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgJGNvbWJpbmVkQ29uc3RhbnRzIC49ICJcbiI7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgIyBGSVhN
RTogdGhlIGZvcm1hdHRpbmcgb2YgdGhlIGVudW1zIHNob3VsZCBsaW5lIHVwIHRoZSBlcXVhbCBz
aWducy4KLSAgICAgICAgIyBGSVhNRTogZW51bXMgYXJlIHVuY29uZGl0aW9uYWxseSBwbGFjZWQg
aW4gdGhlIHB1YmxpYyBoZWFkZXIuCi0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJlbnVt
IHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkY29tYmluZWRDb25zdGFudHMp
OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG59Iik7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgV0VCS0lUX0VOVU1fQVZBSUxBQkxFX01BQygkaW50ZXJmYWNlQXZhaWxh
YmlsaXR5VmVyc2lvbikiKSBpZiBsZW5ndGggJGludGVyZmFjZUF2YWlsYWJpbGl0eVZlcnNpb247
Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICI7XG5cbiIpOwotICAgIH0KLQotICAgICMg
LSBCZWdpbiBAaW50ZXJmYWNlIG9yIEBwcm90b2NvbAotICAgIG15ICRpbnRlcmZhY2VEZWNsYXJh
dGlvbiA9ICgkaXNQcm90b2NvbCA/ICJcQHByb3RvY29sICRjbGFzc05hbWUiIDogIldFQkNPUkVf
RVhQT1JUIFxAaW50ZXJmYWNlICRjbGFzc05hbWUgOiAkcGFyZW50TmFtZSIpOwotICAgICRpbnRl
cmZhY2VEZWNsYXJhdGlvbiAuPSAiIDwiIC4gam9pbigiLCAiLCBAcHJvdG9jb2xzVG9JbXBsZW1l
bnQpIC4gIj4iIGlmIEBwcm90b2NvbHNUb0ltcGxlbWVudCA+IDA7Ci0gICAgJGludGVyZmFjZURl
Y2xhcmF0aW9uIC49ICJcbiI7Ci0KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiV0VCS0lUX0NM
QVNTX0FWQUlMQUJMRV9NQUMoJGludGVyZmFjZUF2YWlsYWJpbGl0eVZlcnNpb24pXG4iKSBpZiBs
ZW5ndGggJGludGVyZmFjZUF2YWlsYWJpbGl0eVZlcnNpb247Ci0gICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgJGludGVyZmFjZURlY2xhcmF0aW9uKTsKLQotICAgIG15IEBoZWFkZXJBdHRyaWJ1dGVz
ID0gKCk7Ci0gICAgbXkgQHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzID0gKCk7Ci0KLSAgICAjIC0g
QWRkIGF0dHJpYnV0ZSBnZXR0ZXJzL3NldHRlcnMuCi0gICAgaWYgKCRudW1BdHRyaWJ1dGVzID4g
MCkgewotICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmli
dXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgU2tpcEF0dHJpYnV0ZSgkYXR0cmlidXRlKTsK
LSAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOwotCi0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZU5hbWUgZXEgImlkIiBvciAkYXR0cmli
dXRlTmFtZSBlcSAiaGFzaCIgb3IgJGF0dHJpYnV0ZU5hbWUgZXEgImRlc2NyaXB0aW9uIikgewot
ICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIHNvbWUgYXR0cmlidXRlcyAobGlrZSBpZCBh
bmQgaGFzaCkgdG8gaGF2ZSBhICJOYW1lIiBzdWZmaXggdG8gYXZvaWQgT2JqQyBuYW1pbmcgY29u
ZmxpY3RzLgotICAgICAgICAgICAgICAgICRhdHRyaWJ1dGVOYW1lIC49ICJOYW1lIjsKLSAgICAg
ICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVOYW1lIGVxICJmcmFtZSIpIHsKLSAgICAgICAgICAg
ICAgICAjIFNwZWNpYWwgY2FzZSBhdHRyaWJ1dGUgZnJhbWUgdG8gYmUgZnJhbWVCb3JkZXJzLgot
ICAgICAgICAgICAgICAgICRhdHRyaWJ1dGVOYW1lIC49ICJCb3JkZXJzIjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSBHZXRPYmpDVHlwZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAgICAgbXkgJHByb3BlcnR5ID0gIlxAcHJv
cGVydHkiIC4gR2V0UHJvcGVydHlBdHRyaWJ1dGVzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSwgJGF0dHJpYnV0ZS0+aXNSZWFkT25seSk7Ci0KLSAgICAgICAgICAgICRwcm9wZXJ0eSAuPSAi
ICIgLiAkYXR0cmlidXRlVHlwZSAuICgkYXR0cmlidXRlVHlwZSA9fiAvXCokLyA/ICIiIDogIiAi
KSAuICRhdHRyaWJ1dGVOYW1lOwotCi0gICAgICAgICAgICBteSAkcHVibGljSW50ZXJmYWNlS2V5
ID0gJHByb3BlcnR5IC4gIjsiOwotCi0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIG9ubHkgd29y
a3MgZm9yIHRoZSBnZXR0ZXIsIGJ1dCBub3QgdGhlIHNldHRlci4gIE5lZWQgdG8gcmVmYWN0b3Ig
dGhpcyBjb2RlLgotICAgICAgICAgICAgaWYgKElzQ29yZUZvdW5kYXRpb25UeXBlKCRhdHRyaWJ1
dGVUeXBlKSkgewotICAgICAgICAgICAgICAgICRwdWJsaWNJbnRlcmZhY2VLZXkgPSAiLSAoIiAu
ICRhdHRyaWJ1dGVUeXBlIC4gIikiIC4gJGF0dHJpYnV0ZU5hbWUgLiAiOyI7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIG15ICRhdmFpbGFiaWxpdHlNYWNybyA9ICIiOwotICAgICAgICAg
ICAgaWYgKGRlZmluZWQgJHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX0gYW5k
IGxlbmd0aCAkcHVibGljSW50ZXJmYWNlc3skcHVibGljSW50ZXJmYWNlS2V5fSkgewotICAgICAg
ICAgICAgICAgICRhdmFpbGFiaWxpdHlNYWNybyA9ICRwdWJsaWNJbnRlcmZhY2VzeyRwdWJsaWNJ
bnRlcmZhY2VLZXl9OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAkZGVjbGFyYXRp
b25TdWZmaXggPSAiO1xuIjsKLSAgICAgICAgICAgICRkZWNsYXJhdGlvblN1ZmZpeCA9ICIgJGF2
YWlsYWJpbGl0eU1hY3JvO1xuIiBpZiBsZW5ndGggJGF2YWlsYWJpbGl0eU1hY3JvOwotCi0gICAg
ICAgICAgICBteSAkcHVibGljID0gKGRlZmluZWQgJHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0lu
dGVyZmFjZUtleX0gb3IgJG5ld1B1YmxpY0NsYXNzKTsKLSAgICAgICAgICAgIGRlbGV0ZSAkcHVi
bGljSW50ZXJmYWNlc3skcHVibGljSW50ZXJmYWNlS2V5fTsKLQotICAgICAgICAgICAgQWRkRm9y
d2FyZERlY2xhcmF0aW9uc0ZvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlLCAkcHVi
bGljKTsKLQotICAgICAgICAgICAgbXkgJHNldHRlck5hbWUgPSAic2V0IiAuIHVjZmlyc3QoJGF0
dHJpYnV0ZU5hbWUpIC4gIjoiOwotCi0gICAgICAgICAgICBteSAkY29uZmxpY3QgPSAkY29uZmxp
Y3RNZXRob2R7JGF0dHJpYnV0ZU5hbWV9OwotICAgICAgICAgICAgaWYgKCRjb25mbGljdCkgewot
ICAgICAgICAgICAgICAgIHdhcm4gIiRjbGFzc05hbWUgY29uZmxpY3RzIHdpdGggJGNvbmZsaWN0
IG1ldGhvZCAkYXR0cmlidXRlTmFtZVxuIjsKLSAgICAgICAgICAgICAgICAkZmF0YWxFcnJvciA9
IDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICRjb25mbGljdCA9ICRjb25mbGljdE1l
dGhvZHskc2V0dGVyTmFtZX07Ci0gICAgICAgICAgICBpZiAoJGNvbmZsaWN0KSB7Ci0gICAgICAg
ICAgICAgICAgd2FybiAiJGNsYXNzTmFtZSBjb25mbGljdHMgd2l0aCAkY29uZmxpY3QgbWV0aG9k
ICRzZXR0ZXJOYW1lXG4iOwotICAgICAgICAgICAgICAgICRmYXRhbEVycm9yID0gMTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFJc0NvcmVGb3VuZGF0aW9uVHlwZSgkYXR0cmli
dXRlVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkg
YWxzbyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSB0eXBlIGlzIGFuIE9iamVjdGl2ZS1DIHR5cGUu
Ci0gICAgICAgICAgICAgICAgbXkgJG5lZWRzUmV0dXJuc1JldGFpbmVkQW5ub3RhdGlvbiA9ICRh
dHRyaWJ1dGVOYW1lID1+IC9uZXcoW0EtWl0uKik/LzsKLQotICAgICAgICAgICAgICAgICRwcm9w
ZXJ0eSAuPSAkZGVjbGFyYXRpb25TdWZmaXg7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVy
QXR0cmlidXRlcywgJHByb3BlcnR5KSBpZiAkcHVibGljOwotICAgICAgICAgICAgICAgIHB1c2go
QHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzLCAkcHJvcGVydHkpIHVubGVzcyAkcHVibGljOwotICAg
ICAgICAgICAgICAgIGlmICgkbmVlZHNSZXR1cm5zUmV0YWluZWRBbm5vdGF0aW9uKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICMgLSBHRVRURVIKLSAgICAgICAgICAgICAgICAgICAgbXkgJGdldHRl
ciA9ICItICgiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFtZSAuICIgTlNf
UkVUVVJOU19OT1RfUkVUQUlORUQiIC4gJGRlY2xhcmF0aW9uU3VmZml4OwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVyKSBpZiAkcHVibGljOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcywgJGdldHRlcikg
dW5sZXNzICRwdWJsaWM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9IGVsc2lm
IChDb25kaXRpb25hbElzRW5hYmxlZCglZGVmaW5lc1JlZiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkpIHsKLSAgICAgICAgICAgICAg
ICAjIC0gR0VUVEVSCi0gICAgICAgICAgICAgICAgbXkgJGdldHRlciA9ICItICgiIC4gJGF0dHJp
YnV0ZVR5cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFtZSAuICRkZWNsYXJhdGlvblN1ZmZpeDsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVyKSBpZiAkcHVibGlj
OwotICAgICAgICAgICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzLCAkZ2V0dGVy
KSB1bmxlc3MgJHB1YmxpYzsKLSAKLSAgICAgICAgICAgICAgICAjIC0gU0VUVEVSCi0gICAgICAg
ICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1JlYWRPbmx5KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG15ICRzZXR0ZXIgPSAiLSAodm9pZCkkc2V0dGVyTmFtZSgiIC4gJGF0dHJpYnV0ZVR5cGUg
LiAiKW5ldyIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKSAuICRkZWNsYXJhdGlvblN1ZmZpeDsK
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0cmlidXRlcywgJHNldHRlcikgaWYg
JHB1YmxpYzsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckF0dHJpYnV0
ZXMsICRzZXR0ZXIpIHVubGVzcyAkcHVibGljOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEBoZWFkZXJB
dHRyaWJ1dGVzKSBpZiBAaGVhZGVyQXR0cmlidXRlcyA+IDA7Ci0gICAgfQotCi0gICAgbXkgQGhl
YWRlckZ1bmN0aW9ucyA9ICgpOwotICAgIG15IEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zID0gKCk7
Ci0gICAgbXkgQGRlcHJlY2F0ZWRIZWFkZXJGdW5jdGlvbnMgPSAoKTsKLQotICAgICMgLSBBZGQg
ZnVuY3Rpb25zLgotICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewotICAgICAgICBteSAlaW5B
cHBsZUNvcHlyaWdodCA9IChwdWJsaWMgPT4gMCwgcHJpdmF0ZSA9PiAwKTsKLSAgICAgICAgZm9y
ZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAg
ICAgbmV4dCBpZiBTa2lwRnVuY3Rpb24oJGZ1bmN0aW9uKTsKLSAgICAgICAgICAgIG5leHQgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJzZXQiIGFuZCAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KTsKLSAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKLQotICAgICAgICAgICAgbXkgJHJl
dHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAg
ICAgICAgICBteSAkbmVlZHNEZXByZWNhdGVkVmVyc2lvbiA9IChAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc30gPiAxIGFuZCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik9iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycyJ9KTsKLSAgICAgICAgICAgIG15ICRuZWVkc0Fw
cGxlQ29weXJpZ2h0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJBcHBsZUNvcHlyaWdodCJ9OwotICAgICAgICAgICAgbXkgJG51bWJlck9mUGFyYW1ldGVycyA9
IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIG15ICV0eXBlc1RvRm9yd2Fy
ZERlY2xhcmUgPSAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgPT4gMSk7Ci0KLSAgICAgICAg
ICAgIG15ICRwYXJhbWV0ZXJJbmRleCA9IDA7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25TaWcg
PSAiLSAoJHJldHVyblR5cGUpJGZ1bmN0aW9uTmFtZSI7Ci0gICAgICAgICAgICBteSAkbWV0aG9k
TmFtZSA9ICRmdW5jdGlvbk5hbWU7Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9
ICRwYXJhbS0+bmFtZTsKLSAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0T2JqQ1R5
cGUoJHBhcmFtLT50eXBlKTsKLQotICAgICAgICAgICAgICAgICR0eXBlc1RvRm9yd2FyZERlY2xh
cmV7JHBhcmFtLT50eXBlfSA9IDE7Ci0KLSAgICAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlcklu
ZGV4ID49IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICIgJHBhcmFt
TmFtZSI7Ci0gICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1lIC49ICRwYXJhbU5hbWU7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICI6KCRw
YXJhbVR5cGUpJHBhcmFtTmFtZSI7Ci0gICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgLj0gIjoi
OwotCi0gICAgICAgICAgICAgICAgJHBhcmFtZXRlckluZGV4Kys7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIG15ICRwdWJsaWNJbnRlcmZhY2VLZXkgPSAkZnVuY3Rpb25TaWcgLiAiOyI7
Ci0KLSAgICAgICAgICAgIG15ICRjb25mbGljdCA9ICRjb25mbGljdE1ldGhvZHskbWV0aG9kTmFt
ZX07Ci0gICAgICAgICAgICBpZiAoJGNvbmZsaWN0KSB7Ci0gICAgICAgICAgICAgICAgd2FybiAi
JGNsYXNzTmFtZSBjb25mbGljdHMgd2l0aCAkY29uZmxpY3QgbWV0aG9kICRtZXRob2ROYW1lXG4i
OwotICAgICAgICAgICAgICAgICRmYXRhbEVycm9yID0gMTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCRpc1Byb3RvY29sICYmICEkbmV3UHVibGljQ2xhc3MgJiYgIWRlZmluZWQg
JHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX0pIHsKLSAgICAgICAgICAgICAg
ICB3YXJuICJQcm90b2NvbCBtZXRob2QgJHB1YmxpY0ludGVyZmFjZUtleSBpcyBub3QgaW4gUHVi
bGljRE9NSW50ZXJmYWNlcy5oLiBQcm90b2NvbHMgcmVxdWlyZSBhbGwgbWV0aG9kcyB0byBiZSBw
dWJsaWMiOwotICAgICAgICAgICAgICAgICRmYXRhbEVycm9yID0gMTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgbXkgJGF2YWlsYWJpbGl0eU1hY3JvID0gIiI7Ci0gICAgICAgICAgICBp
ZiAoZGVmaW5lZCAkcHVibGljSW50ZXJmYWNlc3skcHVibGljSW50ZXJmYWNlS2V5fSBhbmQgbGVu
Z3RoICRwdWJsaWNJbnRlcmZhY2VzeyRwdWJsaWNJbnRlcmZhY2VLZXl9KSB7Ci0gICAgICAgICAg
ICAgICAgJGF2YWlsYWJpbGl0eU1hY3JvID0gJHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0ludGVy
ZmFjZUtleX07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG15ICRmdW5jdGlvbkRlY2xh
cmF0aW9uID0gJGZ1bmN0aW9uU2lnOwotICAgICAgICAgICAgJGZ1bmN0aW9uRGVjbGFyYXRpb24g
Lj0gIiAiIC4gJGF2YWlsYWJpbGl0eU1hY3JvIGlmIGxlbmd0aCAkYXZhaWxhYmlsaXR5TWFjcm87
Ci0gICAgICAgICAgICAkZnVuY3Rpb25EZWNsYXJhdGlvbiAuPSAiO1xuIjsKLQotICAgICAgICAg
ICAgbXkgJHB1YmxpYyA9IChkZWZpbmVkICRwdWJsaWNJbnRlcmZhY2VzeyRwdWJsaWNJbnRlcmZh
Y2VLZXl9IG9yICRuZXdQdWJsaWNDbGFzcyk7Ci0gICAgICAgICAgICBkZWxldGUgJHB1YmxpY0lu
dGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX07Ci0KLSAgICAgICAgICAgIGZvcmVhY2ggbXkg
JHR5cGUgKGtleXMgJXR5cGVzVG9Gb3J3YXJkRGVjbGFyZSkgewotICAgICAgICAgICAgICAgICMg
YWRkIGFueSBmb3J3YXJkIGRlY2xhcmF0aW9ucyB0byB0aGUgcHVibGljIGhlYWRlciBpZiBhIGRl
cHJlY2F0ZWQgdmVyc2lvbiB3aWxsIGJlIGdlbmVyYXRlZAotICAgICAgICAgICAgICAgIEFkZEZv
cndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCR0eXBlLCAxKSBpZiAkbmVlZHNEZXByZWNhdGVkVmVy
c2lvbjsKLSAgICAgICAgICAgICAgICBBZGRGb3J3YXJkRGVjbGFyYXRpb25zRm9yVHlwZSgkdHlw
ZSwgJHB1YmxpYykgdW5sZXNzICRwdWJsaWMgYW5kICRuZWVkc0RlcHJlY2F0ZWRWZXJzaW9uOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0eyRwdWJsaWMgPyAicHVibGlj
IiA6ICJwcml2YXRlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rp
b25zLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKSBpZiAkcHVibGljOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zLCAkYmVnaW5BcHBs
ZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKSB1bmxlc3MgJHB1YmxpYzsKLSAgICAgICAgICAgICAg
ICAgICAgJGluQXBwbGVDb3B5cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUifSA9
IDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5
cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUifSkgewotICAgICAgICAgICAgICAg
IHB1c2goQGhlYWRlckZ1bmN0aW9ucywgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkcHVibGljOwot
ICAgICAgICAgICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMsICRlbmRBcHBsZUNv
cHlyaWdodCkgdW5sZXNzICRwdWJsaWM7Ci0gICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmln
aHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUifSA9IDA7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChDb25kaXRpb25hbElzRW5hYmxlZCglZGVmaW5l
c1JlZiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRp
b25hbCJ9KSkgewotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckZ1bmN0aW9ucywgJGZ1bmN0
aW9uRGVjbGFyYXRpb24pIGlmICRwdWJsaWM7Ci0gICAgICAgICAgICAgICAgcHVzaChAcHJpdmF0
ZUhlYWRlckZ1bmN0aW9ucywgJGZ1bmN0aW9uRGVjbGFyYXRpb24pIHVubGVzcyAkcHVibGljOwot
Ci0gICAgICAgICAgICAgICAgIyBnZW5lcmF0ZSB0aGUgb2xkIHN0eWxlIG1ldGhvZCBuYW1lcyB3
aXRoIHVuLW5hbWVkIHBhcmFtZXRlcnMsIHRoZXNlIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQKLSAg
ICAgICAgICAgICAgICBpZiAoJG5lZWRzRGVwcmVjYXRlZFZlcnNpb24pIHsKLSAgICAgICAgICAg
ICAgICAgICAgbXkgJGRlcHJlY2F0ZWRGdW5jdGlvblNpZyA9ICRmdW5jdGlvblNpZzsKLSAgICAg
ICAgICAgICAgICAgICAgJGRlcHJlY2F0ZWRGdW5jdGlvblNpZyA9fiBzL1xzXHcrOi8gOi9nOyAj
IHJlbW92ZSBwYXJhbWV0ZXIgbmFtZXMKLQotICAgICAgICAgICAgICAgICAgICAkcHVibGljSW50
ZXJmYWNlS2V5ID0gJGRlcHJlY2F0ZWRGdW5jdGlvblNpZyAuICI7IjsKLQotICAgICAgICAgICAg
ICAgICAgICBteSAkYXZhaWxhYmlsaXR5TWFjcm8gPSAiV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEw
XzQsIDEwXzUpIjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmluZWQgJHB1YmxpY0ludGVy
ZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX0gYW5kIGxlbmd0aCAkcHVibGljSW50ZXJmYWNlc3sk
cHVibGljSW50ZXJmYWNlS2V5fSkgewotICAgICAgICAgICAgICAgICAgICAgICAgJGF2YWlsYWJp
bGl0eU1hY3JvID0gJHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX07Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25EZWNsYXJh
dGlvbiA9ICIkZGVwcmVjYXRlZEZ1bmN0aW9uU2lnICRhdmFpbGFiaWxpdHlNYWNybztcbiI7Ci0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAZGVwcmVjYXRlZEhlYWRlckZ1bmN0aW9ucywgJGZ1
bmN0aW9uRGVjbGFyYXRpb24pOwotCi0gICAgICAgICAgICAgICAgICAgIHVubGVzcyAoZGVmaW5l
ZCAkcHVibGljSW50ZXJmYWNlc3skcHVibGljSW50ZXJmYWNlS2V5fSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgd2FybiAiRGVwcmVjYXRlZCBtZXRob2QgJHB1YmxpY0ludGVyZmFjZUtleSBp
cyBub3QgaW4gUHVibGljRE9NSW50ZXJmYWNlcy5oLiBBbGwgZGVwcmVjYXRlZCBtZXRob2RzIG5l
ZWQgdG8gYmUgcHVibGljLCBvciBzaG91bGQgaGF2ZSB0aGUgT2JqQ0xlZ2FjeVVubmFtZWRQYXJh
bWV0ZXJzIElETCBhdHRyaWJ1dGUgcmVtb3ZlZCI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
ZmF0YWxFcnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBkZWxldGUgJHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX07Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVzaChA
aGVhZGVyRnVuY3Rpb25zLCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0
eyJwdWJsaWMifTsKLSAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckZ1bmN0aW9ucywgJGVuZEFw
cGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodHsicHJpdmF0ZSJ9OwotCi0gICAgICAg
IGlmIChAaGVhZGVyRnVuY3Rpb25zID4gMCkgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIlxuIikgaWYgQGhlYWRlckF0dHJpYnV0ZXMgPiAwOwotICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgQGhlYWRlckZ1bmN0aW9ucyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoQGRlcHJlY2F0ZWRIZWFkZXJGdW5jdGlvbnMgPiAwICYmICRpc1Byb3RvY29sKSB7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEBkZXByZWNhdGVkSGVhZGVyRnVuY3Rpb25zKTsK
LSAgICB9Ci0KLSAgICAjIC0gRW5kIEBpbnRlcmZhY2Ugb3IgQHByb3RvY29sCi0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIlxAZW5kXG4iKTsKLQotICAgIGlmIChAZGVwcmVjYXRlZEhlYWRlckZ1
bmN0aW9ucyA+IDAgJiYgISRpc1Byb3RvY29sKSB7Ci0gICAgICAgICMgLSBEZXByZWNhdGVkIGNh
dGVnb3J5IEBpbnRlcmZhY2UgCi0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcblxAaW50
ZXJmYWNlICRjbGFzc05hbWUgKCIgLiAkY2xhc3NOYW1lIC4gIkRlcHJlY2F0ZWQpXG4iKTsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgQGRlcHJlY2F0ZWRIZWFkZXJGdW5jdGlvbnMpOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXEBlbmRcbiIpOwotICAgIH0KLQotICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmln
aHQpKTsKLSAgICB9Ci0KLSAgICBteSAlYWx3YXlzR2VuZXJhdGUgPSBtYXAgeyAkXyA9PiAxIH0g
cXcoRE9NSFRNTEVtYmVkRWxlbWVudCBET01IVE1MT2JqZWN0RWxlbWVudCk7Ci0KLSAgICBpZiAo
QHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzID4gMCBvciBAcHJpdmF0ZUhlYWRlckZ1bmN0aW9ucyA+
IDAgb3IgZXhpc3RzICRhbHdheXNHZW5lcmF0ZXskY2xhc3NOYW1lfSkgewotICAgICAgICAjIC0g
UHJpdmF0ZSBjYXRlZ29yeSBAaW50ZXJmYWNlCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgewotICAgICAgICAgICAgQHByaXZh
dGVIZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRG
b3JIZWFkZXJGaWxlcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBAcHJpdmF0ZUhl
YWRlckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGljZW5zZVRlbXBsYXRlKTsK
LSAgICAgICAgfQotICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQ29udGVudEhlYWRlciwgIlxu
Iik7Ci0KLSAgICAgICAgbXkgJGNsYXNzSGVhZGVyTmFtZSA9IEdldENsYXNzSGVhZGVyTmFtZSgk
Y2xhc3NOYW1lKTsKLSAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckNvbnRlbnRIZWFkZXIsICIj
aW1wb3J0IDxXZWJDb3JlLyRjbGFzc0hlYWRlck5hbWUuaD5cblxuIik7Ci0KLSAgICAgICAgQHBy
aXZhdGVIZWFkZXJDb250ZW50ID0gKCk7Ci0gICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJDb250
ZW50LCAiXEBpbnRlcmZhY2UgJGNsYXNzTmFtZSAoIiAuICRjbGFzc05hbWUgLiAiUHJpdmF0ZSlc
biIpOwotICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQ29udGVudCwgQHByaXZhdGVIZWFkZXJB
dHRyaWJ1dGVzKSBpZiBAcHJpdmF0ZUhlYWRlckF0dHJpYnV0ZXMgPiAwOwotICAgICAgICBwdXNo
KEBwcml2YXRlSGVhZGVyQ29udGVudCwgIlxuIikgaWYgQHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVz
ID4gMCBhbmQgQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMgPiAwOwotICAgICAgICBwdXNoKEBwcml2
YXRlSGVhZGVyQ29udGVudCwgQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMpIGlmIEBwcml2YXRlSGVh
ZGVyRnVuY3Rpb25zID4gMDsKLSAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckNvbnRlbnQsICJc
QGVuZFxuIik7Ci0KLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJBcHBsZUNvcHlyaWdodCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQ29u
dGVudCwgc3BsaXQoIlxyIiwgJGVuZEFwcGxlQ29weXJpZ2h0KSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICB1bmxlc3MgKCRpc1Byb3RvY29sKSB7Ci0gICAgICAgICMgR2VuZXJhdGUgaW50ZXJu
YWwgaW50ZXJmYWNlcwotICAgICAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05h
bWUoJGludGVyZmFjZU5hbWUpOwotICAgICAgICBteSAkaW1wbENsYXNzTmFtZVdpdGhOYW1lc3Bh
Y2UgPSAiV2ViQ29yZTo6IiAuICRpbXBsQ2xhc3NOYW1lOwotCi0gICAgICAgIG15ICRpbXBsVHlw
ZSA9ICRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZTsKLQotICAgICAgICAjIEdlbmVyYXRlIGlu
dGVyZmFjZSBkZWZpbml0aW9ucy4gCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgewotICAgICAgICAgICAgQGludGVybmFsSGVh
ZGVyQ29udGVudCA9IHNwbGl0KCJcciIsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmls
ZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQGludGVybmFsSGVhZGVyQ29udGVu
dCA9IHNwbGl0KCJcciIsICRpbXBsZW1lbnRhdGlvbkxpY2Vuc2VUZW1wbGF0ZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBteSAkY2xhc3NIZWFkZXJOYW1lID0gR2V0Q2xhc3NIZWFkZXJOYW1lKCRj
bGFzc05hbWUpOwotICAgICAgICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICJcbiNpbXBv
cnQgPFdlYkNvcmUvJGNsYXNzSGVhZGVyTmFtZS5oPlxuXG4iKTsKLQotICAgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIk5vZGUiKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbnRlcm5hbEhlYWRl
ckNvbnRlbnQsICJcQHByb3RvY29sIERPTUV2ZW50VGFyZ2V0O1xuXG4iKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIG15ICRzdGFydGVkTmFtZXNwYWNlID0gMDsKLQotICAgICAgICBwdXNoKEBpbnRl
cm5hbEhlYWRlckNvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4iKTsKLSAgICAgICAgJHN0
YXJ0ZWROYW1lc3BhY2UgPSAxOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGUi
KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICJjbGFzcyBFdmVu
dFRhcmdldDtcbiAgICBjbGFzcyBOb2RlO1xuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICJjbGFzcyAkaW1wbENsYXNzTmFtZTtc
biIpOwotICAgICAgICB9Ci0gICAgICAgIHB1c2goQGludGVybmFsSGVhZGVyQ29udGVudCwgIn1c
blxuIik7Ci0KLSAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAiV0VCQ09SRV9F
WFBPUlQgJGltcGxUeXBlKiBjb3JlKCRjbGFzc05hbWUgKik7XG4iKTsKLSAgICAgICAgcHVzaChA
aW50ZXJuYWxIZWFkZXJDb250ZW50LCAiV0VCQ09SRV9FWFBPUlQgJGNsYXNzTmFtZSAqa2l0KCRp
bXBsVHlwZSopO1xuIik7Ci0KLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJPYmpDUG9seW1vcnBoaWMifSkgewotICAgICAgICAgICAgcHVzaChAaW50ZXJuYWxI
ZWFkZXJDb250ZW50LCAiQ2xhc3Mga2l0Q2xhc3MoJGltcGxUeXBlKik7XG4iKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKLSAgICAgICAgICAg
IHB1c2goQGludGVybmFsSGVhZGVyQ29udGVudCwgImlkIDxET01FdmVudFRhcmdldD4ga2l0KFdl
YkNvcmU6OkV2ZW50VGFyZ2V0Kik7XG4iKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KLXsKLSAgICBteSAkb2JqZWN0ID0gc2hpZnQ7Ci0gICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OwotCi0gICAgbXkgQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMgPSAo
KTsKLQotICAgIGlmIChAeyRpbnRlcmZhY2UtPnBhcmVudHN9ID4gMSkgewotICAgICAgICBBZGRN
ZXRob2RzQ29uc3RhbnRzQW5kQXR0cmlidXRlc0Zyb21QYXJlbnRJbnRlcmZhY2VzKCRpbnRlcmZh
Y2UsIFxAYW5jZXN0b3JJbnRlcmZhY2VOYW1lcyk7Ci0gICAgfQotCi0gICAgbXkgJGludGVyZmFj
ZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRjbGFzc05hbWUgPSBHZXRDbGFzc05h
bWUoJGludGVyZmFjZU5hbWUpOwotICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNz
TmFtZSgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgbXkgJHBhcmVudEltcGxDbGFzc05hbWUgPSBHZXRQ
YXJlbnRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwotICAgIG15ICRpbXBsQ2xhc3NOYW1lV2l0
aE5hbWVzcGFjZSA9ICJXZWJDb3JlOjoiIC4gJGltcGxDbGFzc05hbWU7Ci0gICAgbXkgJGJhc2VD
bGFzcyA9IEdldEJhc2VDbGFzcygkcGFyZW50SW1wbENsYXNzTmFtZSk7Ci0gICAgbXkgJGNsYXNz
SGVhZGVyTmFtZSA9IEdldENsYXNzSGVhZGVyTmFtZSgkY2xhc3NOYW1lKTsKLQotICAgIG15ICRu
dW1BdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKLSAgICBteSAkbnVtRnVu
Y3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwotICAgIG15ICRpbXBsVHlwZSA9ICRp
bXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZTsKLQotICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIg
dGVtcGxhdGUuCi0gICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBs
ZUNvcHlyaWdodCJ9KSB7Ci0gICAgICAgIEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIs
ICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9yU291cmNlRmlsZXMpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRpbXBsZW1lbnRhdGlvbkxpY2Vu
c2VUZW1wbGF0ZSk7Ci0gICAgfQotCi0gICAgIyAtIElOQ0xVREVTIC0KLSAgICBwdXNoKEBpbXBs
Q29udGVudEhlYWRlciwgIlxuI2ltcG9ydCBcImNvbmZpZy5oXCJcbiIpOwotCi0gICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJGludGVyZmFjZSk7Ci0gICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICJcbiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0KLSAgICBwdXNo
KEBpbXBsQ29udGVudEhlYWRlciwgIiNpbXBvcnQgXCJET01JbnRlcm5hbC5oXCJcblxuIik7Ci0g
ICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICIjaW1wb3J0IFwiJGNsYXNzSGVhZGVyTmFtZS5o
XCJcblxuIik7Ci0KLSAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25IYW5kbGVycy5oIn0gPSAx
OwotICAgICRpbXBsSW5jbHVkZXN7IlRocmVhZENoZWNrLmgifSA9IDE7Ci0gICAgJGltcGxJbmNs
dWRlc3siSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgifSA9IDE7Ci0gICAgJGltcGxJbmNsdWRlc3si
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIn0gPSAxOwotICAgICRpbXBsSW5jbHVkZXN7JGNsYXNz
SGVhZGVyTmFtZSAuICJJbnRlcm5hbC5oIn0gPSAxOwotICAgICRpbXBsSW5jbHVkZXN7IkRPTU5v
ZGVJbnRlcm5hbC5oIn0gPSAxOwotCi0gICAgJGltcGxJbmNsdWRlc3siRE9NQmxvYkludGVybmFs
LmgifSA9IDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkZpbGUiOwotICAgICRpbXBsSW5jbHVkZXN7
IkRPTUNTU1J1bGVJbnRlcm5hbC5oIn0gPSAxIGlmICRpbnRlcmZhY2VOYW1lID1+IC8uKkNTUy4q
UnVsZS87Ci0gICAgJGltcGxJbmNsdWRlc3siRE9NQ1NTVmFsdWVJbnRlcm5hbC5oIn0gPSAxIGlm
ICRpbnRlcmZhY2VOYW1lID1+IC8uKkNTUy4qVmFsdWUvOwotICAgICRpbXBsSW5jbHVkZXN7IkRP
TUV2ZW50SW50ZXJuYWwuaCJ9ID0gMSBpZiAkaW50ZXJmYWNlTmFtZSA9fiAvLipFdmVudC87Ci0g
ICAgJGltcGxJbmNsdWRlc3siRE9NU3R5bGVTaGVldEludGVybmFsLmgifSA9IDEgaWYgJGludGVy
ZmFjZU5hbWUgZXEgIkNTU1N0eWxlU2hlZXQiOwotCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+
IC8oXHcrKShBYnN8UmVsKSQvKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IiQxLmgifSA9IDE7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCEkY29kZUdlbmVyYXRvci0+U2tpcEluY2x1ZGVI
ZWFkZXIoJGltcGxDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIkaW1w
bENsYXNzTmFtZS5oIn0gPSAxIDsKLSAgICAgICAgfQotICAgIH0gCi0KLSAgICBAaW1wbENvbnRl
bnQgPSAoKTsKLQotICAgIHB1c2goQGltcGxDb250ZW50LCAiI2ltcG9ydCA8d3RmL0dldFB0ci5o
PlxuXG4iKTsKLQotICAgICMgYWRkIGltcGxlbWVudGF0aW9uIGFjY2Vzc29yCi0gICAgaWYgKCRw
YXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3QiKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8JGltcGxUeXBlKj4oX2ludGVybmFs
KVxuXG4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICBteSAkYmFzZUNsYXNzV2l0aE5hbWVzcGFj
ZSA9ICJXZWJDb3JlOjokYmFzZUNsYXNzIjsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWVXaXRoTmFtZXNwYWNlKj4ocmVp
bnRlcnByZXRfY2FzdDwkYmFzZUNsYXNzV2l0aE5hbWVzcGFjZSo+KF9pbnRlcm5hbCkpXG5cbiIp
OwotICAgIH0KLQotICAgICMgU1RBUlQgaW1wbGVtZW50YXRpb24KLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxAaW1wbGVtZW50YXRpb24gJGNsYXNzTmFtZVxuXG4iKTsKLQotICAgICMgT25seSBn
ZW5lcmF0ZSAnZGVhbGxvYycgZm9yIGRpcmVjdCBzdWJjbGFzc2VzIG9mIERPTU9iamVjdC4KLSAg
ICBpZiAoJHBhcmVudEltcGxDbGFzc05hbWUgZXEgIk9iamVjdCIpIHsKLSAgICAgICAgJGltcGxJ
bmNsdWRlc3siV2ViQ29yZU9iakNFeHRyYXMuaCJ9ID0gMTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICItICh2b2lkKWRlYWxsb2NcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoV2ViQ29yZU9iakNT
Y2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoWyRjbGFzc05hbWUgY2xhc3NdLCBzZWxmKSlc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJOb2RlSXRlcmF0b3IiKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoX2ludGVybmFsKSB7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBbc2VsZiBkZXRhY2hdO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgSU1QTC0+ZGVyZWYoKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKF9pbnRlcm5hbClcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIElNUEwtPmRlcmVmKCk7XG4iKTsKLSAgICAgICAgfQot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBbc3VwZXIgZGVhbGxvY107XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0KLQotICAgICVhdHRyaWJ1
dGVOYW1lcyA9ICgpOwotCi0gICAgIyAtIEF0dHJpYnV0ZXMKLSAgICBpZiAoJG51bUF0dHJpYnV0
ZXMgPiAwKSB7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCBpZiBTa2lwQXR0cmlidXRlKCRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSk7Ci0KLSAgICAgICAgICAgIG15ICRpZGxUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlOwotCi0gICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gR2V0T2Jq
Q1R5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAgICAgIG15ICRhdHRy
aWJ1dGVDbGFzc05hbWUgPSBHZXRDbGFzc05hbWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
KTsKLQotICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUgPSAkYXR0cmlidXRl
TmFtZTsKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlTmFtZSBlcSAiaWQiIG9yICRhdHRyaWJ1
dGVOYW1lIGVxICJoYXNoIiBvciAkYXR0cmlidXRlTmFtZSBlcSAiZGVzY3JpcHRpb24iKSB7Ci0g
ICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2Ugc29tZSBhdHRyaWJ1dGVzIChsaWtlIGlkIGFu
ZCBoYXNoKSB0byBoYXZlIGEgIk5hbWUiIHN1ZmZpeCB0byBhdm9pZCBPYmpDIG5hbWluZyBjb25m
bGljdHMuCi0gICAgICAgICAgICAgICAgJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUgLj0gIk5hbWUi
OwotICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZU5hbWUgZXEgImZyYW1lIikgewotICAg
ICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGF0dHJpYnV0ZSBmcmFtZSB0byBiZSBmcmFtZUJv
cmRlcnMuCi0gICAgICAgICAgICAgICAgJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUgLj0gIkJvcmRl
cnMiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkYXR0cmlidXRlTmFtZXN7JGF0dHJp
YnV0ZUludGVyZmFjZU5hbWV9ID0gMTsKLQotICAgICAgICAgICAgIyAtIEdFVFRFUgotICAgICAg
ICAgICAgbXkgJGdldHRlclNpZyA9ICItICgkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlSW50ZXJm
YWNlTmFtZVxuIjsKLQotICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMp
ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRl
cmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLQotICAgICAgICAgICAgIyBUbyBhdm9pZCBibG9hdGlu
ZyBPYmotQyBiaW5kaW5ncywgd2UgdXNlIGdldEF0dHJpYnV0ZSgpIGluc3RlYWQgb2YgYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbigpLgotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbk5h
bWUgZXEgImF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24iKSB7Ci0gICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRBdHRyaWJ1dGUiOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvblByZWZpeCA9ICIkZnVuY3Rpb25OYW1lKCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpOwotCi0gICAgICAgICAgICAjIEZJWE1FOiBTcGVjaWFsIGNh
c2UgYXR0cmlidXRlIG93bmVyRG9jdW1lbnQgdG8gY2FsbCBkb2N1bWVudC4gVGhpcyBtYWtlcyBp
dCByZXR1cm4gdGhlCi0gICAgICAgICAgICAjIGRvY3VtZW50IHdoZW4gY2FsbGVkIG9uIHRoZSBk
b2N1bWVudCBpdHNlbGYuIExlZ2FjeSBiZWhhdmlvciwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4ODk+LgotICAgICAgICAgICAgJGdldHRlckV4cHJlc3Np
b25QcmVmaXggPX4gcy9cYm93bmVyRG9jdW1lbnRcYi9kb2N1bWVudC87Ci0KLSAgICAgICAgICAg
IG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJHZXR0ZXJSYWlzZXNFeGNlcHRpb24ifTsKLSAgICAgICAgICAgIG15ICRn
ZXR0ZXJDb250ZW50SGVhZDsKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKLSAgICAgICAgICAgICAg
ICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnRIZWFkID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7Z2V0dGVyRXhwcmVzc2lvblBy
ZWZpeH0qSU1QTCI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50SGVhZCA9ICJJTVBMLT4kZ2V0dGVyRXhwcmVzc2lvblByZWZpeCI7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50VGFpbCA9ICIpIjsKLQotICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZVR5cGVTYW5zUHRyID0gJGF0dHJpYnV0ZVR5cGU7Ci0gICAg
ICAgICAgICAkYXR0cmlidXRlVHlwZVNhbnNQdHIgPX4gcy8gXCokLy87ICMgUmVtb3ZlIHRyYWls
aW5nICIgKiIgZnJvbSBwb2ludGVyIHR5cGVzLgotCi0gICAgICAgICAgICAjIHNwZWNpYWwgY2Fz
ZSBmb3IgRXZlbnRUYXJnZXQgcHJvdG9jb2wKLSAgICAgICAgICAgICRhdHRyaWJ1dGVUeXBlU2Fu
c1B0ciA9ICJET01Ob2RlIiBpZiAkaWRsVHlwZSBlcSAiRXZlbnRUYXJnZXQiOwotCi0gICAgICAg
ICAgICAjIFNwZWNpYWwgY2FzZXMKLSAgICAgICAgICAgIG15IEBjdXN0b21HZXR0ZXJDb250ZW50
ID0gKCk7IAotICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVOYW1lID1+IC8oXHcrKURpc3BsYXlT
dHJpbmckLykgewotICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUb0Rpc3BsYXkgPSAkMTsK
LSAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiV2ViQ29yZTo6ZGlzcGxheVN0
cmluZyhJTVBMLT4kYXR0cmlidXRlVG9EaXNwbGF5KCksIGNvcmUoc2VsZikiOwotICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkhpdFRlc3RSZXN1bHQuaCJ9ID0gMTsKLSAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGVOYW1lID1+IC9eYWJzb2x1dGUoXHcrKVVSTCQvKSB7Ci0gICAg
ICAgICAgICAgICAgbXkgJHR5cGVPZlVSTCA9ICQxOwotICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50SGVhZCA9ICJbc2VsZiBfZ2V0VVJMQXR0cmlidXRlOiI7Ci0gICAgICAgICAgICAgICAg
aWYgKCR0eXBlT2ZVUkwgZXEgIkxpbmsiKSB7Ci0gICAgICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50VGFpbCA9ICJcQFwiaHJlZlwiXSI7Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5
cGVPZlVSTCBlcSAiSW1hZ2UiKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiSFRNTE9iamVjdEVsZW1lbnQiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
Z2V0dGVyQ29udGVudFRhaWwgPSAiXEBcImRhdGFcIl0iOwotICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsID0gIlxA
XCJzcmNcIl0iOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHVu
bGVzcyAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxJbWFnZUVsZW1lbnQiKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBjdXN0b21HZXR0ZXJDb250ZW50LCAiICAgIGlmICghSU1QTC0+
cmVuZGVyZXIoKSB8fCAhSU1QTC0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKVxuIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBjdXN0b21HZXR0ZXJDb250ZW50LCAiICAgICAgICByZXR1
cm4gbmlsO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJSZW5k
ZXJFbGVtZW50LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NUHJpdmF0ZS5oIn0gPSAxOwot
ICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiT2JqQ0ltcGxlbWVudGVkQXNVbnNpZ25lZExvbmcifSkgewotICAgICAgICAgICAg
ICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJXVEY6OlN0cmluZzo6bnVtYmVyKCIgLiAkZ2V0dGVy
Q29udGVudEhlYWQ7Ci0gICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsK
LSAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxUeXBlIGVxICJEYXRlIikgewotICAgICAgICAgICAg
ICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJraXQoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAg
ICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwotICAgICAgICAgICAgfSBlbHNp
ZiAoSXNQcm90b2NvbFR5cGUoJGlkbFR5cGUpIGFuZCAkaWRsVHlwZSBuZSAiRXZlbnRUYXJnZXQi
KSB7Ci0gICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gImtpdCgkZ2V0dGVyQ29u
dGVudEhlYWQiOwotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiKSI7Ci0g
ICAgICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBlcSAiQ29sb3IiKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCRzaG91bGRVc2VDR0NvbG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50SGVhZCA9ICJXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKCRnZXR0ZXJDb250ZW50SGVhZCI7
Ci0gICAgICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiKSI7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFk
ID0gIldlYkNvcmU6Om5zQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAg
ICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSIpIHsKLSAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
JGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwg
Lj0gIi0+dG9TdHJpbmcoKSI7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNpZiAo
Q29udmVyc2lvbk5lZWRlZCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpKSB7Ci0gICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gImtpdChXVEY6OmdldFB0cigkZ2V0dGVyQ29u
dGVudEhlYWQiOwotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiKSkiOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEl0IHdvdWxkIGJlIGVhc3kgdG8gYWRkIG51
bGxhYmxlIHN1cHBvcnQgaGVyZSBpZiB3ZSBldmVyIG5lZWQgaXQsIGJ1dCB3ZSBwcm9iYWJseSBu
ZXZlcgotICAgICAgICAgICAgIyB3aWxsIHNpbmNlIHdlIGFyZSB1bmxpa2VseSB0byBhZGQgT2Jq
ZWN0aXZlLUMgYmluZGluZ3MgdGhhdCByZXF1aXJlIGl0IGluIHRoZSBmdXR1cmUuCi0gICAgICAg
ICAgICAjIEluIHBhcnRpY3VsYXIsIHdlJ2QgaGF2ZSB0byBkZWNpZGUgd2hhdCByZXR1cm4gdHlw
ZSB0byB1c2UgZm9yICJudW1iZXIgb3IgbnVsbCIuCi0KLSAgICAgICAgICAgIG15ICRnZXR0ZXJD
b250ZW50OwotICAgICAgICAgICAgaWYgKCRoYXNHZXR0ZXJFeGNlcHRpb24pIHsKLSAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudCA9ICRnZXR0ZXJDb250ZW50SGVhZDsKLSAgICAgICAgICAg
ICAgICBteSAkZ2V0dGVyV2l0aG91dEF0dHJpYnV0ZXMgPSAkZ2V0dGVyQ29udGVudEhlYWQgPX4g
L1woJHwsICQvID8gImVjIiA6ICIsIGVjIjsKLSAgICAgICAgICAgICAgICBpZiAoJGhhc0dldHRl
ckV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCAuPSAkZ2V0
dGVyV2l0aG91dEF0dHJpYnV0ZXMgPyAiZWMiIDogIiwgZWMiOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudCAuPSAkZ2V0dGVyQ29udGVudFRhaWw7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50ID0gJGdl
dHRlckNvbnRlbnRIZWFkIC4gJGdldHRlckNvbnRlbnRUYWlsOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHthdHRyaWJ1dGVDb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAkZ2V0dGVyU2lnKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkanNDb250
ZXh0U2V0dGVyXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAY3VzdG9tR2V0
dGVyQ29udGVudCk7Ci0KLSAgICAgICAgICAgIGlmICgkaGFzR2V0dGVyRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgIyBEaWZmZXJlbnRpYXRlZCBiZXR3ZWVuIHdoZW4gdGhlIHJldHVybiB0
eXBlIGlzIGEgcG9pbnRlciBhbmQKLSAgICAgICAgICAgICAgICAjIG5vdCBmb3Igd2hpdGUgc3Bh
Y2UgaXNzdWUgKGllLiBGb28gKnJlc3VsdCB2cy4gaW50IHJlc3VsdCkuCi0gICAgICAgICAgICAg
ICAgaWYgKCRhdHRyaWJ1dGVUeXBlID1+IC9cKiQvKSB7Ci0gICAgICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50ID0gJGF0dHJpYnV0ZVR5cGUgLiAicmVzdWx0ID0gIiAuICRnZXR0ZXJDb250
ZW50OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50ID0gJGF0dHJpYnV0ZVR5cGUgLiAiIHJlc3VsdCA9ICIgLiAkZ2V0dGVyQ29udGVu
dDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGdldHRlckNvbnRlbnQ7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKTsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiAkZ2V0dGVyQ29udGVudDtcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG4iKTsKLQotICAgICAgICAgICAgIyAtIFNFVFRFUgotICAgICAg
ICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1JlYWRPbmx5KSB7Ci0gICAgICAgICAgICAgICAgIyBF
eGNlcHRpb24gaGFuZGxpbmcKLSAgICAgICAgICAgICAgICBteSAkaGFzU2V0dGVyRXhjZXB0aW9u
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU2V0dGVyUmFp
c2VzRXhjZXB0aW9uIn07Ci0KLSAgICAgICAgICAgICAgICBteSAkY29yZVNldHRlck5hbWUgPSAi
c2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKTsKLSAgICAg
ICAgICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICJzZXQiIC4gdWNmaXJzdCgkYXR0cmlidXRlSW50
ZXJmYWNlTmFtZSk7Ci0gICAgICAgICAgICAgICAgbXkgJGFyZ05hbWUgPSAibmV3IiAuIHVjZmly
c3QoJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUpOwotICAgICAgICAgICAgICAgIG15ICRhcmcgPSBH
ZXRPYmpDVHlwZUdldHRlcigkYXJnTmFtZSwgJGlkbFR5cGUpOwotCi0gICAgICAgICAgICAgICAg
IyBUaGUgZGVmaW5pdGlvbiBvZiBPYmpDSW1wbGVtZW50ZWRBc1Vuc2lnbmVkTG9uZyBpcyBmbGlw
cGVkIGZvciB0aGUgc2V0dGVyCi0gICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNJbXBsZW1lbnRlZEFzVW5zaWduZWRMb25n
In0pIHsKLSAgICAgICAgICAgICAgICAgICAgJGFyZyA9ICJXVEY6OlN0cmluZygkYXJnKS50b0lu
dCgpIjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyU2ln
ID0gIi0gKHZvaWQpJHNldHRlck5hbWU6KCRhdHRyaWJ1dGVUeXBlKSRhcmdOYW1lXG4iOwotCi0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkc2V0dGVyU2lnKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICRqc0NvbnRleHRTZXR0ZXJcbiIpOwotCi0gICAgICAgICAgICAgICAgdW5sZXNzICgkY29k
ZUdlbmVyYXRvci0+SXNQcmltaXRpdmVUeXBlKCRpZGxUeXBlKSBvciAkaWRsVHlwZSBlcSAiRE9N
U3RyaW5nIikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlQoJGFyZ05hbWUpO1xuXG4iKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoJGlkbFR5cGUgZXEgIkRhdGUiKSB7Ci0gICAgICAgICAgICAgICAgICAgICRhcmcg
PSAiY29yZSgiIC4gJGFyZyAuICIpIjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPlNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISRhcmcpXG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhj
ZXB0aW9uKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgJGFyZyA9ICIqJGFyZyI7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1
bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMs
ICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBhcmd1
bWVudHMsICRhcmcpOwotICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYg
JGhhc1NldHRlckV4Y2VwdGlvbjsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkZXhjZXB0aW9uSW5pdFxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKLSAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRCeSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50
ZWRCeSJ9OwotICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVk
Qnl9LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgIipJ
TVBMIik7Ci0gICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtp
bXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIklNUEwtPiR7ZnVuY3Rpb25O
YW1lfSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIp
O1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlv
blJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKLQotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9u
YWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAjIC0gRnVuY3Rpb25zCi0gICAgaWYgKCRudW1GdW5jdGlvbnMgPiAw
KSB7Ci0gICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKLSAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgbmV4
dCBpZiBTa2lwRnVuY3Rpb24oJGZ1bmN0aW9uKTsKLSAgICAgICAgICAgIG5leHQgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJzZXQiIGFuZCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KTsKLSAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlw
ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7Ci0KLSAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAgICAgIG15ICRyZXR1
cm5UeXBlID0gR2V0T2JqQ1R5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAg
ICAgICAgbXkgJG5lZWRzQXBwbGVDb3B5cmlnaHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In07Ci0gICAgICAgICAgICBteSAkaGFz
UGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIG15ICRy
YWlzZXNFeGNlcHRpb25zID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJSYWlzZXNFeGNlcHRpb24ifTsKLQotICAgICAgICAgICAgbXkgQHBhcmFtZXRlck5hbWVz
ID0gKCk7Ci0gICAgICAgICAgICBteSAlbmVlZHNDdXN0b20gPSAoKTsKLQotICAgICAgICAgICAg
bXkgJHBhcmFtZXRlckluZGV4ID0gMDsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvblNpZyA9ICIt
ICgkcmV0dXJuVHlwZSkkZnVuY3Rpb25OYW1lIjsKLSAgICAgICAgICAgIG15IEBmdW5jdGlvbkNv
bnRlbnQgPSAoKTsKLQotICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfSkgewotICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0t
Pm5hbWU7Ci0gICAgICAgICAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdldE9iakNUeXBlKCRwYXJh
bS0+dHlwZSk7Ci0KLSAgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgcGFyYW1ldGVyIG5hbWUg
aWYgdGhlIG9yaWdpbmFsIGNvbmZsaWN0cyB3aXRoIGEgcHJvcGVydHkgbmFtZQotICAgICAgICAg
ICAgICAgICRwYXJhbU5hbWUgPSAiaW4iIC4gdWNmaXJzdCgkcGFyYW1OYW1lKSBpZiAkYXR0cmli
dXRlTmFtZXN7JHBhcmFtTmFtZX07Ci0KLSAgICAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5
cGUoJHBhcmFtLT50eXBlKTsKLQotICAgICAgICAgICAgICAgIG15ICRpZGxUeXBlID0gJHBhcmFt
LT50eXBlOwotICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyOwotICAgICAgICAgICAgICAg
IGlmICgkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDRXhwbGljaXRBdG9taWNTdHJp
bmcifSkgewotICAgICAgICAgICAgICAgICAgICAkaW1wbEdldHRlciA9ICJBdG9taWNTdHJpbmco
JHBhcmFtTmFtZSkiCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgJGltcGxHZXR0ZXIgPSBHZXRPYmpDVHlwZUdldHRlcigkcGFyYW1OYW1lLCAkaWRsVHlwZSk7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbSwgJGludGVyZmFjZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgJGltcGxHZXR0ZXIgPSAiKiRpbXBsR2V0dGVyIjsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIGlmICghJHBhcmFtTmFtZSlc
biIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAg
IFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7XG4iKTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgJGltcGxHZXR0ZXIp
OwotICAgICAgICAgICAgICAgICRuZWVkc0N1c3RvbXsiWFBhdGhOU1Jlc29sdmVyIn0gPSAkcGFy
YW1OYW1lIGlmICRpZGxUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgICAgICAgICAgICAg
ICRuZWVkc0N1c3RvbXsiTm9kZUZpbHRlciJ9ID0gJHBhcmFtTmFtZSBpZiAkaWRsVHlwZSBlcSAi
Tm9kZUZpbHRlciI7Ci0gICAgICAgICAgICAgICAgJG5lZWRzQ3VzdG9teyJFdmVudExpc3RlbmVy
In0gPSAkcGFyYW1OYW1lIGlmICRpZGxUeXBlIGVxICJFdmVudExpc3RlbmVyIjsKLSAgICAgICAg
ICAgICAgICAkbmVlZHNDdXN0b217IkV2ZW50VGFyZ2V0In0gPSAkcGFyYW1OYW1lIGlmICRpZGxU
eXBlIGVxICJFdmVudFRhcmdldCI7Ci0gICAgICAgICAgICAgICAgJG5lZWRzQ3VzdG9teyJOb2Rl
VG9SZXR1cm4ifSA9ICRwYXJhbU5hbWUgaWYgJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tUmV0dXJuIn07Ci0KLSAgICAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlckluZGV4ID49
IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnIC49ICIgIiAuICRwYXJhbS0+
bmFtZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25TaWcg
Lj0gIjooJHBhcmFtVHlwZSkkcGFyYW1OYW1lIjsKLQotICAgICAgICAgICAgICAgICRwYXJhbWV0
ZXJJbmRleCsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAkY2FsbGVyID0gIklN
UEwiOwotCi0gICAgICAgICAgICAjIHNwZWNpYWwgY2FzZSB0aGUgWFBhdGhOU1Jlc29sdmVyCi0g
ICAgICAgICAgICBpZiAoZGVmaW5lZCAkbmVlZHNDdXN0b217IlhQYXRoTlNSZXNvbHZlciJ9KSB7
Ci0gICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRuZWVkc0N1c3RvbXsiWFBhdGhOU1Jl
c29sdmVyIn07Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIFdl
YkNvcmU6OlhQYXRoTlNSZXNvbHZlciogbmF0aXZlUmVzb2x2ZXIgPSAwO1xuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIFJlZlB0cjxXZWJDb3JlOjpYUGF0
aE5TUmVzb2x2ZXI+IGN1c3RvbVJlc29sdmVyO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb25Db250ZW50LCAiICAgIGlmICgkcGFyYW1OYW1lKSB7XG4iKTsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAgIGlmIChbJHBhcmFtTmFtZSBpc01l
bWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKVxuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICAgICAgICAgbmF0aXZlUmVz
b2x2ZXIgPSBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqPigkcGFy
YW1OYW1lKSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIg
ICAgICAgIGVsc2Uge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50
LCAiICAgICAgICAgICAgY3VzdG9tUmVzb2x2ZXIgPSBXZWJDb3JlOjpET01DdXN0b21YUGF0aE5T
UmVzb2x2ZXI6OmNyZWF0ZSgkcGFyYW1OYW1lKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGZ1bmN0aW9uQ29udGVudCwgIiAgICAgICAgICAgIG5hdGl2ZVJlc29sdmVyID0gV1RGOjpnZXRQ
dHIoY3VzdG9tUmVzb2x2ZXIpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25D
b250ZW50LCAiICAgICAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNv
bnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgc3BlY2lh
bCBjYXNlIHRoZSBFdmVudFRhcmdldAotICAgICAgICAgICAgaWYgKGRlZmluZWQgJG5lZWRzQ3Vz
dG9teyJFdmVudFRhcmdldCJ9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRu
ZWVkc0N1c3RvbXsiRXZlbnRUYXJnZXQifTsKLSAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlv
bkNvbnRlbnQsICIgICAgRE9NTm9kZSogJHtwYXJhbU5hbWV9T2JqQyA9ICRwYXJhbU5hbWU7XG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgV2ViQ29yZTo6
Tm9kZSogJHtwYXJhbU5hbWV9Tm9kZSA9IGNvcmUoJHtwYXJhbU5hbWV9T2JqQyk7XG4iKTsKLSAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01Ob2RlLmgifSA9IDE7Ci0gICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0gPSAxOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJP
YmpDVXNlRGVmYXVsdFZpZXcifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29u
dGVudCwgIiAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gJGNhbGxlci0+ZGVmYXVsdFZpZXco
KTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICBpZiAo
IWR2KVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICAg
ICByZXR1cm4gbmlsO1xuIik7Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NV2lu
ZG93LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgJGNhbGxlciA9ICJkdiI7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIHRoZSBFdmVudExpc3RlbmVyCi0gICAg
ICAgICAgICBpZiAoZGVmaW5lZCAkbmVlZHNDdXN0b217IkV2ZW50TGlzdGVuZXIifSkgewotICAg
ICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkbmVlZHNDdXN0b217IkV2ZW50TGlzdGVuZXIi
fTsKLSAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgUmVmUHRyPFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXI+IG5hdGl2ZUV2ZW50TGlzdGVuZXIgPSBXZWJDb3JlOjpPYmpD
RXZlbnRMaXN0ZW5lcjo6d3JhcCgkcGFyYW1OYW1lKTtcbiIpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIHNwZWNpYWwgY2FzZSB0aGUgTm9kZUZpbHRlcgotICAgICAgICAgICAgaWYg
KGRlZmluZWQgJG5lZWRzQ3VzdG9teyJOb2RlRmlsdGVyIn0pIHsKLSAgICAgICAgICAgICAgICBt
eSAkcGFyYW1OYW1lID0gJG5lZWRzQ3VzdG9teyJOb2RlRmlsdGVyIn07Ci0gICAgICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVy
PiBuYXRpdmVOb2RlRmlsdGVyO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25D
b250ZW50LCAiICAgIGlmICgkcGFyYW1OYW1lKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb25Db250ZW50LCAiICAgICAgICBuYXRpdmVOb2RlRmlsdGVyID0gV2ViQ29yZTo6TmF0
aXZlTm9kZUZpbHRlcjo6Y3JlYXRlKFdlYkNvcmU6Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjpj
cmVhdGUoJHBhcmFtTmFtZSkpO1xuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1
c2goQHBhcmFtZXRlck5hbWVzLCAiZWMiKSBpZiAkcmFpc2VzRXhjZXB0aW9uczsKLQotICAgICAg
ICAgICAgbXkgJGNvbnRlbnQ7Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKLSAgICAgICAgICAgICAg
ICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwotICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICB1bnNoaWZ0KEBwYXJh
bWV0ZXJOYW1lcywgIioiIC4gJGNhbGxlcik7Ci0gICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAi
V2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRmdW5jdGlvbk5hbWUpIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIiki
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25JbXBs
ZW1lbnRhdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQXMifSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rp
b25OYW1lKTsKLSAgICAgICAgICAgICAgICAkY29udGVudCA9ICIkY2FsbGVyLT4iIC4gJGZ1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMp
IC4gIikiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJHJldHVyblR5cGUgZXEg
InZvaWQiKSB7Ci0gICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgJ3ZvaWQnIHJldHVybiB0
eXBlLgotICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIp
OwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGNvbnRl
bnQ7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAg
ICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudDtc
biIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzaWYgKGRlZmluZWQgJG5l
ZWRzQ3VzdG9teyJOb2RlVG9SZXR1cm4ifSkgewotICAgICAgICAgICAgICAgICMgU3BlY2lhbCBj
YXNlIHRoZSBpbnNlcnRCZWZvcmUsIHJlcGxhY2VDaGlsZCwgcmVtb3ZlQ2hpbGQgCi0gICAgICAg
ICAgICAgICAgIyBhbmQgYXBwZW5kQ2hpbGQgZnVuY3Rpb25zIGZyb20gRE9NTm9kZSAKLSAgICAg
ICAgICAgICAgICBteSAkdG9SZXR1cm4gPSAkbmVlZHNDdXN0b217Ik5vZGVUb1JldHVybiJ9Owot
ICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgewotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgaWYgKCRjb250ZW50
KVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuICR0b1JldHVybjtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBmdW5j
dGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gbmlsO1xuIik7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rp
b25Db250ZW50LCAiICAgIGlmICgkY29udGVudClcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAgIHJldHVybiAkdG9SZXR1cm47XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIHJldHVybiBuaWw7
XG4iKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkcmV0dXJuVHlw
ZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewotICAgICAgICAgICAgICAgICRjb250ZW50
ID0gImZvbyI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChDb252
ZXJzaW9uTmVlZGVkKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSkgewotICAgICAgICAgICAg
ICAgICAgICAkY29udGVudCA9ICJraXQoV1RGOjpnZXRQdHIoJGNvbnRlbnQpKSI7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICMgRGlmZmVyZW50aWF0ZWQgYmV0d2VlbiB3aGVuIHRoZSByZXR1
cm4gdHlwZSBpcyBhIHBvaW50ZXIgYW5kCi0gICAgICAgICAgICAgICAgICAgICMgbm90IGZvciB3
aGl0ZSBzcGFjZSBpc3N1ZSAoaWUuIEZvbyAqcmVzdWx0IHZzLiBpbnQgcmVzdWx0KS4KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlID1+IC9cKiQvKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkY29udGVudCA9ICRyZXR1cm5UeXBlIC4gInJlc3VsdCA9ICIgLiAkY29udGVu
dDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICRjb250ZW50ID0gJHJldHVyblR5cGUgLiAiIHJlc3VsdCA9ICIgLiAkY29udGVudDsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29u
dGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGZ1bmN0aW9uQ29udGVudCwgIiAgICAkY29udGVudDtcbiIpOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4g
cmVzdWx0O1xuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIHJldHVybiAkY29udGVudDtcbiIpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCRuZWVkc0Fw
cGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkg
ewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5
cmlnaHRGb3JTb3VyY2VGaWxlcyk7Ci0gICAgICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJp
Z2h0ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBs
ZUNvcHlyaWdodCkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZW5kQXBw
bGVDb3B5cmlnaHQpOwotICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotCi0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiRmdW5jdGlvblNpZ1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGpzQ29udGV4
dFNldHRlclxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgQGZ1bmN0aW9uQ29u
dGVudCk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0KLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLQotICAgICAgICAgICAgIyBnZW5lcmF0ZSB0aGUgb2xkIHN0eWxlIG1ldGhvZCBuYW1l
cyB3aXRoIHVuLW5hbWVkIHBhcmFtZXRlcnMsIHRoZXNlIG1ldGhvZHMgYXJlIGRlcHJlY2F0ZWQK
LSAgICAgICAgICAgIGlmIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30gPiAxIGFuZCAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNMZWdhY3lVbm5hbWVkUGFy
YW1ldGVycyJ9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJGRlcHJlY2F0ZWRGdW5jdGlvblNpZyA9
ICRmdW5jdGlvblNpZzsKLSAgICAgICAgICAgICAgICAkZGVwcmVjYXRlZEZ1bmN0aW9uU2lnID1+
IHMvXHNcdys6LyA6L2c7ICMgcmVtb3ZlIHBhcmFtZXRlciBuYW1lcwotCi0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIkZGVwcmVjYXRlZEZ1bmN0aW9uU2lnXG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRqc0NvbnRleHRTZXR0ZXJcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBAZnVuY3Rpb25Db250ZW50KTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICMgQ2xlYXIgdGhlIGhhc2gKLSAgICAgICAgICAgICVuZWVkc0N1c3RvbSA9ICgpOwotICAg
ICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlm
ICRpbkFwcGxlQ29weXJpZ2h0OwotICAgIH0KLQotICAgICMgRU5EIGltcGxlbWVudGF0aW9uCi0g
ICAgcHVzaChAaW1wbENvbnRlbnQsICJcQGVuZFxuIik7Ci0KLSAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIHNwbGl0KCJcciIsICRlbmRBcHBsZUNvcHlyaWdodCkpOwotICAgIH0KLQot
ICAgICMgR2VuZXJhdGUgaW50ZXJuYWwgaW50ZXJmYWNlcwotICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4kaW1wbFR5cGUqIGNvcmUoJGNsYXNzTmFtZSAqd3JhcHBlcilcbiIpOwotICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PCRpbXBsVHlwZSo+KHdyYXBwZXItPl9pbnRlcm5h
bCkgOiAwO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotCi0gICAgaWYg
KCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3QiKSB7ICAgICAgICAKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIkY2xhc3NOYW1lICpraXQoJGltcGxUeXBlKiB2YWx1ZSlcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkdGhyZWFkVmlvbGF0aW9uQ2hlY2tcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIXZhbHVlKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gbmlsO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICgkY2xhc3NOYW1lICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpXG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0
YWluXSBhdXRvcmVsZWFzZV07XG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJPYmpDUG9seW1vcnBoaWMifSkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSAqd3JhcHBlciA9IFtba2l0Q2xhc3ModmFsdWUpIGFs
bG9jXSBfaW5pdF07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
ICghd3JhcHBlcilcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiBuaWw7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRjbGFzc05hbWUgKndyYXBwZXIgPSBbWyRjbGFzc05hbWUgYWxsb2Nd
IF9pbml0XTtcbiIpOwotICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwq
Pih2YWx1ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmFsdWUtPnJl
ZigpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFkZERPTVdyYXBwZXIo
d3JhcHBlciwgdmFsdWUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRj
bGFzc05hbWUgKmtpdCgkaW1wbFR5cGUqIHZhbHVlKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR0aHJlYWRW
aW9sYXRpb25DaGVja1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6OiRiYXNl
Q2xhc3MqPih2YWx1ZSkpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIp
OwotICAgIH0KLQotICAgICMgLSBFbmQgdGhlIGlmZGVmIGNvbmRpdGlvbmFsIGlmIG5lY2Vzc2Fy
eQotICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLQotICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgc3BsaXQoIlxyIiwgJGVuZEFwcGxlQ29weXJpZ2h0KSk7Ci0gICAgfQotCi0gICAg
IyAtIEdlbmVyYXRlIGRlcGVuZGVuY2llcy4KLSAgICBpZiAoJHdyaXRlRGVwZW5kZW5jaWVzICYm
IEBhbmNlc3RvckludGVyZmFjZU5hbWVzKSB7Ci0gICAgICAgIHB1c2goQGRlcHNDb250ZW50LCAi
JGNsYXNzTmFtZS5oIDogIiwgam9pbigiICIsIG1hcCB7ICIkXy5pZGwiIH0gQGFuY2VzdG9ySW50
ZXJmYWNlTmFtZXMpLCAiXG4iKTsKLSAgICAgICAgcHVzaChAZGVwc0NvbnRlbnQsIG1hcCB7ICIk
Xy5pZGwgOlxuIiB9IEBhbmNlc3RvckludGVyZmFjZU5hbWVzKTsgCi0gICAgfQotfQotCi0jIElu
dGVybmFsIGhlbHBlcgotc3ViIFdyaXRlRGF0YQotewotICAgIG15ICRvYmplY3QgPSBzaGlmdDsK
LSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJG91dHB1dERpciA9IHNoaWZ0Owot
Ci0gICAgIyBPcGVuIGZpbGVzIGZvciB3cml0aW5nLi4uCi0gICAgbXkgJG5hbWUgPSAkaW50ZXJm
YWNlLT5uYW1lOwotICAgIG15ICRwcmVmaXggPSBGaWxlTmFtZVByZWZpeDsKLSAgICBteSAkaGVh
ZGVyRmlsZU5hbWUgPSAiJG91dHB1dERpci8kcHJlZml4JG5hbWUuaCI7Ci0gICAgbXkgJHByaXZh
dGVIZWFkZXJGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyRwcmVmaXgke25hbWV9UHJpdmF0ZS5oIjsK
LSAgICBteSAkaW1wbEZpbGVOYW1lID0gIiRvdXRwdXREaXIvJHByZWZpeCRuYW1lLm1tIjsKLSAg
ICBteSAkaW50ZXJuYWxIZWFkZXJGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyRwcmVmaXgke25hbWV9
SW50ZXJuYWwuaCI7Ci0gICAgbXkgJGRlcHNGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyRwcmVmaXgk
bmFtZS5kZXAiOwotCi0gICAgIyBXcml0ZSBwdWJsaWMgaGVhZGVyLgotICAgIG15ICRjb250ZW50
cyA9IGpvaW4gIiIsIEBoZWFkZXJDb250ZW50SGVhZGVyOwotICAgIG1hcCB7ICRjb250ZW50cyAu
PSAoSXNDb3JlRm91bmRhdGlvblR5cGUoJF8pID8gInR5cGVkZWYgc3RydWN0ICIgLiBzdWJzdHIo
JF8sIDAsIC0zKSAuICIqICRfO1xuIiA6ICJcQGNsYXNzICRfO1xuIikgfSBzb3J0IGtleXMoJWhl
YWRlckZvcndhcmREZWNsYXJhdGlvbnMpOwotICAgIG1hcCB7ICRjb250ZW50cyAuPSAiXEBwcm90
b2NvbCAkXztcbiIgfSBzb3J0IGtleXMoJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnNGb3JQcm90
b2NvbHMpOwotCi0gICAgbXkgJGhhc0ZvcndhcmREZWNsYXJhdGlvbnMgPSBrZXlzKCVoZWFkZXJG
b3J3YXJkRGVjbGFyYXRpb25zKSArIGtleXMoJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnNGb3JQ
cm90b2NvbHMpOwotICAgICRjb250ZW50cyAuPSAiXG4iIGlmICRoYXNGb3J3YXJkRGVjbGFyYXRp
b25zOwotICAgICRjb250ZW50cyAuPSBqb2luICIiLCBAaGVhZGVyQ29udGVudDsKLSAgICAkY29k
ZUdlbmVyYXRvci0+VXBkYXRlRmlsZSgkaGVhZGVyRmlsZU5hbWUsICRjb250ZW50cyk7Ci0KLSAg
ICBAaGVhZGVyQ29udGVudEhlYWRlciA9ICgpOwotICAgIEBoZWFkZXJDb250ZW50ID0gKCk7Ci0g
ICAgJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnMgPSAoKTsKLSAgICAlaGVhZGVyRm9yd2FyZERl
Y2xhcmF0aW9uc0ZvclByb3RvY29scyA9ICgpOwotCi0gICAgaWYgKEBwcml2YXRlSGVhZGVyQ29u
dGVudCA+IDApIHsKLSAgICAgICAgJGNvbnRlbnRzID0gam9pbiAiIiwgQHByaXZhdGVIZWFkZXJD
b250ZW50SGVhZGVyOwotICAgICAgICBtYXAgeyAkY29udGVudHMgLj0gIlxAY2xhc3MgJF87XG4i
IH0gc29ydCBrZXlzKCVwcml2YXRlSGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyk7Ci0gICAgICAg
IG1hcCB7ICRjb250ZW50cyAuPSAiXEBwcm90b2NvbCAkXztcbiIgfSBzb3J0IGtleXMoJXByaXZh
dGVIZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zRm9yUHJvdG9jb2xzKTsKLQotICAgICAgICAkaGFz
Rm9yd2FyZERlY2xhcmF0aW9ucyA9IGtleXMoJXByaXZhdGVIZWFkZXJGb3J3YXJkRGVjbGFyYXRp
b25zKSArIGtleXMoJXByaXZhdGVIZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zRm9yUHJvdG9jb2xz
KTsKLSAgICAgICAgJGNvbnRlbnRzIC49ICJcbiIgaWYgJGhhc0ZvcndhcmREZWNsYXJhdGlvbnM7
Ci0gICAgICAgICRjb250ZW50cyAuPSBqb2luICIiLCBAcHJpdmF0ZUhlYWRlckNvbnRlbnQ7Ci0g
ICAgICAgICRjb2RlR2VuZXJhdG9yLT5VcGRhdGVGaWxlKCRwcml2YXRlSGVhZGVyRmlsZU5hbWUs
ICRjb250ZW50cyk7Ci0KLSAgICAgICAgQHByaXZhdGVIZWFkZXJDb250ZW50SGVhZGVyID0gKCk7
Ci0gICAgICAgIEBwcml2YXRlSGVhZGVyQ29udGVudCA9ICgpOwotICAgICAgICAlcHJpdmF0ZUhl
YWRlckZvcndhcmREZWNsYXJhdGlvbnMgPSAoKTsKLSAgICAgICAgJXByaXZhdGVIZWFkZXJGb3J3
YXJkRGVjbGFyYXRpb25zRm9yUHJvdG9jb2xzID0gKCk7Ci0gICAgfQotCi0gICAgIyBXcml0ZSBp
bXBsZW1lbnRhdGlvbiBmaWxlLgotICAgIHVubGVzcyAoJG5vSW1wbCkgewotICAgICAgICAkY29u
dGVudHMgPSBqb2luICIiLCBAaW1wbENvbnRlbnRIZWFkZXI7Ci0gICAgICAgIG1hcCB7ICRjb250
ZW50cyAuPSAiI2ltcG9ydCBcIiRfXCJcbiIgfSBzb3J0IGtleXMoJWltcGxJbmNsdWRlcyk7Ci0g
ICAgICAgICRjb250ZW50cyAuPSBqb2luICIiLCBAaW1wbENvbnRlbnQ7Ci0gICAgICAgICRjb2Rl
R2VuZXJhdG9yLT5VcGRhdGVGaWxlKCRpbXBsRmlsZU5hbWUsICRjb250ZW50cyk7Ci0KLSAgICAg
ICAgQGltcGxDb250ZW50SGVhZGVyID0gKCk7Ci0gICAgICAgIEBpbXBsQ29udGVudCA9ICgpOwot
ICAgICAgICAlaW1wbEluY2x1ZGVzID0gKCk7Ci0gICAgfQotCi0gICAgaWYgKEBpbnRlcm5hbEhl
YWRlckNvbnRlbnQgPiAwKSB7Ci0gICAgICAgICRjb250ZW50cyA9IGpvaW4gIiIsIEBpbnRlcm5h
bEhlYWRlckNvbnRlbnQ7Ci0gICAgICAgICRjb2RlR2VuZXJhdG9yLT5VcGRhdGVGaWxlKCRpbnRl
cm5hbEhlYWRlckZpbGVOYW1lLCAkY29udGVudHMpOwotCi0gICAgICAgIEBpbnRlcm5hbEhlYWRl
ckNvbnRlbnQgPSAoKTsKLSAgICB9Ci0KLSAgICAjIFdyaXRlIGRlcGVuZGVuY3kgZmlsZS4KLSAg
ICBpZiAoQGRlcHNDb250ZW50KSB7Ci0gICAgICAgICRjb250ZW50cyA9IGpvaW4gIiIsIEBkZXBz
Q29udGVudDsKLSAgICAgICAgJGNvZGVHZW5lcmF0b3ItPlVwZGF0ZUZpbGUoJGRlcHNGaWxlTmFt
ZSwgJGNvbnRlbnRzKTsKLQotICAgICAgICBAZGVwc0NvbnRlbnQgPSAoKTsKLSAgICB9Ci19Ci0K
LTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTUZsb2F0NjRBcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
YTBmNDhhYTVkNWY5NzliNWJiNGM3ZTU5YzM3ZDY2Y2Q0ZjQ2MWY1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTUZsb2F0NjRBcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUFycmF5
QnVmZmVyVmlldy5oPgotCi0jaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gV0VCS0lU
X1ZFUlNJT05fTEFURVNUCi0KLUBjbGFzcyBET01GbG9hdDMyQXJyYXk7Ci1AY2xhc3MgRE9NSW50
MzJBcnJheTsKLQotV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01GbG9hdDY0QXJyYXkgOiBE
T01BcnJheUJ1ZmZlclZpZXcKLS0gKERPTUludDMyQXJyYXkgKilmb286KERPTUZsb2F0MzJBcnJh
eSAqKWFycmF5OwotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUZsb2F0NjRBcnJheS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUZsb2F0NjRBcnJheS5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI4NDQzOThiYWE1NmU4MzQzZjkxM2YwNmJiYzQyYTlk
NzhhNGMwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01GbG9hdDY0QXJyYXku
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NRmxvYXQ2NEFycmF5
LmgiCi0KLSNpbXBvcnQgIkRPTUJsb2JJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NQ1NTUnVsZUlu
dGVybmFsLmgiCi0jaW1wb3J0ICJET01DU1NWYWx1ZUludGVybmFsLmgiCi0jaW1wb3J0ICJET01F
dmVudEludGVybmFsLmgiCi0jaW1wb3J0ICJET01GbG9hdDMyQXJyYXlJbnRlcm5hbC5oIgotI2lt
cG9ydCAiRE9NRmxvYXQ2NEFycmF5SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUludDMyQXJyYXlJ
bnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJET01TdHls
ZVNoZWV0SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1w
b3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0K
LSNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGbG9hdDY0QXJyYXkqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQotCi1AaW1wbGVtZW50YXRpb24g
RE9NRmxvYXQ2NEFycmF5Ci0KLS0gKERPTUludDMyQXJyYXkgKilmb286KERPTUZsb2F0MzJBcnJh
eSAqKWFycmF5Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Zm9vKGNvcmUoYXJyYXkpKSkpOwotfQot
Ci1AZW5kCi0KLVdlYkNvcmU6OkZsb2F0NjRBcnJheSogY29yZShET01GbG9hdDY0QXJyYXkgKndy
YXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkZsb2F0NjRBcnJheSo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwotfQotCi1ET01GbG9hdDY0
QXJyYXkgKmtpdChXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIHZhbHVlKQotewotICAgIFdlYkNvcmVU
aHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERP
TUZsb2F0NjRBcnJheSo+KGtpdChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb2RlKj4odmFsdWUpKSk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01GbG9hdDY0QXJyYXlJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NRmxvYXQ2NEFycmF5SW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmQzMmUzMmY4NTNjNjY5NThlMTYyMzAxMDI5ZGQ0MTVlZWYyN2JmMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01GbG9hdDY0QXJyYXlJbnRlcm5hbC5o
CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3Jl
L0RPTUZsb2F0NjRBcnJheS5oPgotCi0jaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0g
V0VCS0lUX1ZFUlNJT05fTEFURVNUCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEZsb2F0
NjRBcnJheTsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXQ2NEFycmF5KiBjb3Jl
KERPTUZsb2F0NjRBcnJheSAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTUZsb2F0NjRBcnJheSAqa2l0
KFdlYkNvcmU6OkZsb2F0NjRBcnJheSopOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyMDg0ZGI5NDUxYjNmNWYwNjQxNTA3
YTdiMDJmNGUxODE0Mjg5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01JbnRl
cmZhY2VOYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+Ci0KLVdFQktJVF9DTEFTU19B
VkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NSW50ZXJm
YWNlTmFtZSA6IERPTU9iamVjdAotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNlTmFtZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWUubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMDZhZDhiYmMyYTM2N2U3MmQyOWRiZjFlYjk2MzM4
YzA4Mzg1Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NSW50ZXJmYWNlTmFt
ZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgotCi0jaW1wb3J0ICJET01JbnRlcmZhY2VO
YW1lLmgiCi0KLSNpbXBvcnQgIkRPTUludGVyZmFjZU5hbWVJbnRlcm5hbC5oIgotI2ltcG9ydCAi
RE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9y
dCAiSW50ZXJmYWNlTmFtZS5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0j
aW1wb3J0ICJUaHJlYWRDaGVjay5oIgotI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKLSNp
bXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
LQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW50ZXJmYWNlTmFtZSo+
KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTUludGVyZmFjZU5hbWUKLQotLSAodm9p
ZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWlu
VGhyZWFkKFtET01JbnRlcmZhY2VOYW1lIGNsYXNzXSwgc2VsZikpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi1AZW5kCi0KLVdlYkNvcmU6OkludGVyZmFjZU5hbWUqIGNvcmUoRE9N
SW50ZXJmYWNlTmFtZSAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6SW50ZXJmYWNlTmFtZSo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAw
OwotfQotCi1ET01JbnRlcmZhY2VOYW1lICpraXQoV2ViQ29yZTo6SW50ZXJmYWNlTmFtZSogdmFs
dWUpCi17Ci0gICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKLSAgICBp
ZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmIChET01JbnRlcmZhY2VOYW1l
ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBw
ZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NSW50ZXJmYWNlTmFtZSAqd3JhcHBlciA9
IFtbRE9NSW50ZXJmYWNlTmFtZSBhbGxvY10gX2luaXRdOwotICAgIHdyYXBwZXItPl9pbnRlcm5h
bCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7Ci0gICAgdmFs
dWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVy
biBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01JbnRlcmZhY2VOYW1lSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUludGVyZmFjZU5hbWVJ
bnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGU1ZTc2MzExMjRiZjc5
N2YzZjIxYTRiY2QwZTgxYzgyY2EyNDI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTUludGVyZmFjZU5hbWVJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBA
QAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTUludGVyZmFjZU5hbWUuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgSW50ZXJmYWNlTmFtZTsKLX0KLQotV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6SW50ZXJmYWNlTmFtZSogY29yZShET01JbnRlcmZhY2VOYW1lICopOwotV0VCQ09S
RV9FWFBPUlQgRE9NSW50ZXJmYWNlTmFtZSAqa2l0KFdlYkNvcmU6OkludGVyZmFjZU5hbWUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGJlM2M1Y2U4YmZkYjRmOWZlODc1MzJmOTIzODYzZjQ3YzE5MGQ4MS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
PFdlYkNvcmUvRE9NT2JqZWN0Lmg+Ci0KLUBjbGFzcyBET01Ob2RlOwotQGNsYXNzIE5TU3RyaW5n
OwotCi1XRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBA
aW50ZXJmYWNlIERPTVRlc3RBY3RpdmVET01PYmplY3QgOiBET01PYmplY3QKLUBwcm9wZXJ0eSAo
cmVhZG9ubHkpIGludCBleGNpdGluZ0F0dHI7Ci0KLS0gKHZvaWQpZXhjaXRpbmdGdW5jdGlvbjoo
RE9NTm9kZSAqKW5leHRDaGlsZDsKLS0gKHZvaWQpcG9zdE1lc3NhZ2U6KE5TU3RyaW5nICopbWVz
c2FnZTsKLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2JqZWN0Lm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzNiMWYyYWQ2NzJkZGFlYjkwZGMyNDhhZjZjMWQxM2Vl
MmYyYTQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01P
YmplY3QubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NVGVzdEFj
dGl2ZURPTU9iamVjdC5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQg
IkRPTVRlc3RBY3RpdmVET01PYmplY3RJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFu
ZGxlcnMuaCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiTm9k
ZS5oIgotI2ltcG9ydCAiVGVzdEFjdGl2ZURPTU9iamVjdC5oIgotI2ltcG9ydCAiVGhyZWFkQ2hl
Y2suaCIKLSNpbXBvcnQgIlVSTC5oIgotI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKLSNp
bXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
LQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9i
amVjdCo+KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RBY3RpdmVET01PYmpl
Y3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFs
bG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0QWN0aXZlRE9NT2JqZWN0IGNsYXNzXSwgc2VsZikp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRl
cmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChpbnQpZXhjaXRpbmdBdHRyCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJ
TVBMLT5leGNpdGluZ0F0dHIoKTsKLX0KLQotLSAodm9pZClleGNpdGluZ0Z1bmN0aW9uOihET01O
b2RlICopbmV4dENoaWxkCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGlmICghbmV4dENoaWxkKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJv
ckV4Y2VwdGlvbigpOwotICAgIElNUEwtPmV4Y2l0aW5nRnVuY3Rpb24oKmNvcmUobmV4dENoaWxk
KSk7Ci19Ci0KLS0gKHZvaWQpcG9zdE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5wb3N0TWVz
c2FnZShtZXNzYWdlKTsKLX0KLQotQGVuZAotCi1XZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0
KiBjb3JlKERPTVRlc3RBY3RpdmVET01PYmplY3QgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdy
YXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqPih3
cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKLX0KLQotRE9NVGVzdEFjdGl2ZURPTU9iamVjdCAqa2l0
KFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJl
YWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdEFjdGl2ZURPTU9iamVjdCAqd3JhcHBlciA9IGdldERP
TVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwotICAgIERPTVRlc3RBY3RpdmVET01PYmplY3QgKndyYXBwZXIgPSBbW0RPTVRlc3RB
Y3RpdmVET01PYmplY3QgYWxsb2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSBy
ZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5y
ZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dy
YXBwZXIgYXV0b3JlbGVhc2VdOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdEludGVybmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9N
T2JqZWN0SW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxOTQ5ZGY4
YjRmZTg3YWI2NDBmNTY5NTEyMjU0Zjg4NjVmZmEyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2JqZWN0SW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0QWN0aXZlRE9N
T2JqZWN0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RBY3RpdmVET01PYmpl
Y3Q7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqIGNv
cmUoRE9NVGVzdEFjdGl2ZURPTU9iamVjdCAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTVRlc3RBY3Rp
dmVET01PYmplY3QgKmtpdChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2Fs
bGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDYWxsYmFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzA5ZDI5OGY0NjM3
MDg4YzMwYmI4MmU1ODZiMGZkMzdkZDk3OGEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RDYWxsYmFjay5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgotCi1AY2xh
c3MgRE9NQ2xhc3M1OwotQGNsYXNzIERPTUNsYXNzNjsKLUBjbGFzcyBET01ET01TdHJpbmdMaXN0
OwotQGNsYXNzIERPTUZsb2F0MzJBcnJheTsKLUBjbGFzcyBET01UZXN0Tm9kZTsKLUBjbGFzcyBO
U1N0cmluZzsKLQotZW51bSB7Ci0gICAgRE9NX0NPTlNUQU5UMSA9IDEsCi0gICAgRE9NX0NPTlNU
QU5UMiA9IDIKLX0gV0VCS0lUX0VOVU1fQVZBSUxBQkxFX01BQyg5ODc2XzUpOwotCi1XRUJLSVRf
Q0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERP
TVRlc3RDYWxsYmFjayA6IERPTU9iamVjdAotLSAoQk9PTCljYWxsYmFja1dpdGhOb1BhcmFtOwot
LSAoQk9PTCljYWxsYmFja1dpdGhBcnJheVBhcmFtOihET01GbG9hdDMyQXJyYXkgKilhcnJheVBh
cmFtOwotLSAoQk9PTCljYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbTooTlNT
dHJpbmcgKilzcnpQYXJhbSBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnOwotLSAoaW50KWNhbGxi
YWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlOihOU1N0cmluZyAqKXN0ckFyZzsKLS0gKGludCljdXN0
b21DYWxsYmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFyYW0gY2xhc3M2UGFyYW06KERPTUNsYXNz
NiAqKWNsYXNzNlBhcmFtOwotLSAoQk9PTCljYWxsYmFja1dpdGhTdHJpbmdMaXN0OihET01ET01T
dHJpbmdMaXN0ICopbGlzdFBhcmFtOwotLSAoQk9PTCljYWxsYmFja1dpdGhCb29sZWFuOihCT09M
KWJvb2xQYXJhbTsKLS0gKEJPT0wpY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3M6KGludClsb25n
UGFyYW0gdGVzdE5vZGVQYXJhbTooRE9NVGVzdE5vZGUgKil0ZXN0Tm9kZVBhcmFtOwotQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdENhbGxiYWNrLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdENhbGxiYWNrLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2Y2
Y2Y0YzNiZmRmOWIzNTY2NjAyNmQyMGIzNTQyMzcwYTEwMGFlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE0OSAr
MCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCi0KLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTVRlc3RD
YWxsYmFjay5oIgotCi0jaW1wb3J0ICJDbGFzczUuaCIKLSNpbXBvcnQgIkNsYXNzNi5oIgotI2lt
cG9ydCAiRE9NQ2xhc3M1SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUNsYXNzNkludGVybmFsLmgi
Ci0jaW1wb3J0ICJET01ET01TdHJpbmdMaXN0SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUZsb2F0
MzJBcnJheUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQg
IkRPTVN0cmluZ0xpc3QuaCIKLSNpbXBvcnQgIkRPTVRlc3RDYWxsYmFja0ludGVybmFsLmgiCi0j
aW1wb3J0ICJET01UZXN0Tm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLSNpbXBvcnQgIlRlc3RDYWxsYmFjay5oIgotI2ltcG9ydCAiVGVz
dE5vZGUuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJVUkwuaCIKLSNpbXBv
cnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRl
LmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9j
YXN0PFdlYkNvcmU6OlRlc3RDYWxsYmFjayo+KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9u
IERPTVRlc3RDYWxsYmFjawotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoV2ViQ29yZU9i
akNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RDYWxsYmFjayBjbGFzc10s
IHNlbGYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJ
TVBMLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoQk9PTCljYWxsYmFj
a1dpdGhOb1BhcmFtCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhOb1BhcmFtKCk7Ci19Ci0KLS0gKEJPT0wp
Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbTooRE9NRmxvYXQzMkFycmF5ICopYXJyYXlQYXJhbQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBpZiAoIWFycmF5
UGFyYW0pCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAg
cmV0dXJuIElNUEwtPmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oKmNvcmUoYXJyYXlQYXJhbSkpOwot
fQotCi0tIChCT09MKWNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtOihOU1N0
cmluZyAqKXNyelBhcmFtIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmNhbGxiYWNr
V2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKFdURjo6U3RyaW5nKHNyelBhcmFtKSksIHN0ckFyZyk7Ci19Ci0KLS0gKGlu
dCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZTooTlNTdHJpbmcgKilzdHJBcmcKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwt
PmNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKHN0ckFyZyk7Ci19Ci0KLS0gKGludCljdXN0
b21DYWxsYmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFyYW0gY2xhc3M2UGFyYW06KERPTUNsYXNz
NiAqKWNsYXNzNlBhcmFtCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGlmICghY2xhc3M1UGFyYW0pCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVy
cm9yRXhjZXB0aW9uKCk7Ci0gICAgaWYgKCFjbGFzczZQYXJhbSkKLSAgICAgICAgV2ViQ29yZTo6
cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICByZXR1cm4gSU1QTC0+Y3VzdG9tQ2FsbGJh
Y2soKmNvcmUoY2xhc3M1UGFyYW0pLCAqY29yZShjbGFzczZQYXJhbSkpOwotfQotCi0tIChCT09M
KWNhbGxiYWNrV2l0aFN0cmluZ0xpc3Q6KERPTURPTVN0cmluZ0xpc3QgKilsaXN0UGFyYW0KLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFsaXN0
UGFyYW0pCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAg
cmV0dXJuIElNUEwtPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoKmNvcmUobGlzdFBhcmFtKSk7Ci19
Ci0KLS0gKEJPT0wpY2FsbGJhY2tXaXRoQm9vbGVhbjooQk9PTClib29sUGFyYW0KLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmNh
bGxiYWNrV2l0aEJvb2xlYW4oYm9vbFBhcmFtKTsKLX0KLQotLSAoQk9PTCljYWxsYmFja1JlcXVp
cmVzVGhpc1RvUGFzczooaW50KWxvbmdQYXJhbSB0ZXN0Tm9kZVBhcmFtOihET01UZXN0Tm9kZSAq
KXRlc3ROb2RlUGFyYW0KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgaWYgKCF0ZXN0Tm9kZVBhcmFtKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVF
cnJvckV4Y2VwdGlvbigpOwotICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1JlcXVpcmVzVGhpc1Rv
UGFzcyhsb25nUGFyYW0sICpjb3JlKHRlc3ROb2RlUGFyYW0pKTsKLX0KLQotQGVuZAotCi1XZWJD
b3JlOjpUZXN0Q2FsbGJhY2sqIGNvcmUoRE9NVGVzdENhbGxiYWNrICp3cmFwcGVyKQotewotICAg
IHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJhY2sq
Pih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKLX0KLQotRE9NVGVzdENhbGxiYWNrICpraXQoV2Vi
Q29yZTo6VGVzdENhbGxiYWNrKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9u
Q2hlY2tSb3VuZE9uZSgpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgaWYgKERPTVRlc3RDYWxsYmFjayAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQot
ICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVRl
c3RDYWxsYmFjayAqd3JhcHBlciA9IFtbRE9NVGVzdENhbGxiYWNrIGFsbG9jXSBfaW5pdF07Ci0g
ICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMmEzMjRmYTZmZmI3ZTkx
ZjQyMjEyMTA5ZjhhNWZlNDBjYzIwNDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQot
QGNsYXNzIERPTUNsYXNzNTsKLUBjbGFzcyBET01DbGFzczY7Ci1AY2xhc3MgRE9NRE9NU3RyaW5n
TGlzdDsKLUBjbGFzcyBET01GbG9hdDMyQXJyYXk7Ci1AY2xhc3MgRE9NVGVzdE5vZGU7Ci1AY2xh
c3MgTlNTdHJpbmc7Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNP
UkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gOiBET01PYmplY3QK
LS0gKEJPT0wpY2FsbGJhY2tXaXRoTm9QYXJhbTsKLS0gKEJPT0wpY2FsbGJhY2tXaXRoQXJyYXlQ
YXJhbTooRE9NRmxvYXQzMkFycmF5ICopYXJyYXlQYXJhbTsKLS0gKEJPT0wpY2FsbGJhY2tXaXRo
U2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW06KE5TU3RyaW5nICopc3J6UGFyYW0gc3RyQXJnOihO
U1N0cmluZyAqKXN0ckFyZzsKLS0gKGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZToo
TlNTdHJpbmcgKilzdHJBcmc7Ci0tIChpbnQpY3VzdG9tQ2FsbGJhY2s6KERPTUNsYXNzNSAqKWNs
YXNzNVBhcmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQYXJhbTsKLS0gKEJPT0wp
Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdDooRE9NRE9NU3RyaW5nTGlzdCAqKWxpc3RQYXJhbTsKLS0g
KEJPT0wpY2FsbGJhY2tXaXRoQm9vbGVhbjooQk9PTClib29sUGFyYW07Ci0tIChCT09MKWNhbGxi
YWNrUmVxdWlyZXNUaGlzVG9QYXNzOihpbnQpbG9uZ1BhcmFtIHRlc3ROb2RlUGFyYW06KERPTVRl
c3ROb2RlICopdGVzdE5vZGVQYXJhbTsKLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNr
RnVuY3Rpb24ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTZhMGY4NjVlYTk1
YTZjNDdkODQwMjQ4MDcwMzY4NGFiNmU0ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAs
MCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQotCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgotCi0jaW1wb3J0ICJET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvbi5oIgotCi0jaW1wb3J0ICJDbGFzczUuaCIKLSNpbXBvcnQgIkNsYXNzNi5o
IgotI2ltcG9ydCAiRE9NQ2xhc3M1SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTUNsYXNzNkludGVy
bmFsLmgiCi0jaW1wb3J0ICJET01ET01TdHJpbmdMaXN0SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRP
TUZsb2F0MzJBcnJheUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNp
bXBvcnQgIkRPTVN0cmluZ0xpc3QuaCIKLSNpbXBvcnQgIkRPTVRlc3RDYWxsYmFja0Z1bmN0aW9u
SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3ROb2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNp
bXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2ltcG9ydCAiVGVzdENhbGxiYWNrRnVu
Y3Rpb24uaCIKLSNpbXBvcnQgIlRlc3ROb2RlLmgiCi0jaW1wb3J0ICJUaHJlYWRDaGVjay5oIgot
I2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAi
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVm
aW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbio+
KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uCi0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0
ZU9uTWFpblRocmVhZChbRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gY2xhc3NdLCBzZWxmKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYo
KTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKEJPT0wpY2FsbGJhY2tXaXRoTm9QYXJh
bQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4gSU1QTC0+Y2FsbGJhY2tXaXRoTm9QYXJhbSgpOwotfQotCi0tIChCT09MKWNhbGxiYWNrV2l0
aEFycmF5UGFyYW06KERPTUZsb2F0MzJBcnJheSAqKWFycmF5UGFyYW0KLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFhcnJheVBhcmFtKQotICAg
ICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIHJldHVybiBJTVBM
LT5jYWxsYmFja1dpdGhBcnJheVBhcmFtKCpjb3JlKGFycmF5UGFyYW0pKTsKLX0KLQotLSAoQk9P
TCljYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbTooTlNTdHJpbmcgKilzcnpQ
YXJhbSBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhTZXJpYWxp
emVkU2NyaXB0VmFsdWVQYXJhbShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShXVEY6OlN0cmluZyhzcnpQYXJhbSkpLCBzdHJBcmcpOwotfQotCi0tIChpbnQpY2FsbGJhY2tX
aXRoTm9uQm9vbFJldHVyblR5cGU6KE5TU3RyaW5nICopc3RyQXJnCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dp
dGhOb25Cb29sUmV0dXJuVHlwZShzdHJBcmcpOwotfQotCi0tIChpbnQpY3VzdG9tQ2FsbGJhY2s6
KERPTUNsYXNzNSAqKWNsYXNzNVBhcmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQ
YXJhbQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBp
ZiAoIWNsYXNzNVBhcmFtKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOwotICAgIGlmICghY2xhc3M2UGFyYW0pCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVy
cm9yRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIElNUEwtPmN1c3RvbUNhbGxiYWNrKCpjb3JlKGNs
YXNzNVBhcmFtKSwgKmNvcmUoY2xhc3M2UGFyYW0pKTsKLX0KLQotLSAoQk9PTCljYWxsYmFja1dp
dGhTdHJpbmdMaXN0OihET01ET01TdHJpbmdMaXN0ICopbGlzdFBhcmFtCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICghbGlzdFBhcmFtKQotICAg
ICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIHJldHVybiBJTVBM
LT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KCpjb3JlKGxpc3RQYXJhbSkpOwotfQotCi0tIChCT09M
KWNhbGxiYWNrV2l0aEJvb2xlYW46KEJPT0wpYm9vbFBhcmFtCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhC
b29sZWFuKGJvb2xQYXJhbSk7Ci19Ci0KLS0gKEJPT0wpY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3M6KGludClsb25nUGFyYW0gdGVzdE5vZGVQYXJhbTooRE9NVGVzdE5vZGUgKil0ZXN0Tm9kZVBh
cmFtCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlm
ICghdGVzdE5vZGVQYXJhbSkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRp
b24oKTsKLSAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MobG9uZ1Bh
cmFtLCAqY29yZSh0ZXN0Tm9kZVBhcmFtKSk7Ci19Ci0KLUBlbmQKLQotV2ViQ29yZTo6VGVzdENh
bGxiYWNrRnVuY3Rpb24qIGNvcmUoRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gKndyYXBwZXIpCi17
Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RDYWxs
YmFja0Z1bmN0aW9uKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Ci19Ci0KLURPTVRlc3RDYWxs
YmFja0Z1bmN0aW9uICpraXQoV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIHZhbHVlKQot
ewotICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdENhbGxiYWNrRnVuY3Rp
b24gKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiAq
d3JhcHBlciA9IFtbRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gYWxsb2NdIF9pbml0XTsKLSAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbkludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJh
Y2tGdW5jdGlvbkludGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MzBh
OTBkYmZlOTZhZDhjNzFjNDQ4NDkzZDE4NzRjYTQzOGE3ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25JbnRlcm5hbC5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RDYWxs
YmFja0Z1bmN0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RDYWxsYmFj
a0Z1bmN0aW9uOwotfQotCi1XRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5j
dGlvbiogY29yZShET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiAqKTsKLVdFQkNPUkVfRVhQT1JUIERP
TVRlc3RDYWxsYmFja0Z1bmN0aW9uICpraXQoV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDYWxsYmFja0ludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4MDUyOGVkMmUzODUzODgxZTAxMWQ2ZTlkNjI5MWRlNjAyOTU1OTMyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0ludGVybmFsLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUv
RE9NVGVzdENhbGxiYWNrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RDYWxs
YmFjazsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlKERP
TVRlc3RDYWxsYmFjayAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTVRlc3RDYWxsYmFjayAqa2l0KFdl
YkNvcmU6OlRlc3RDYWxsYmFjayopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTNkNDJiM2VmZWEwNzkwYmM2ZWJjZDU4M2VmYjQ1OTgwYjJkZWRkYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdA
Z21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9N
QUMoOTg3Nl81KQotV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01UZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IgOiBET01PYmplY3QKLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGVmMWEyZTczNDNhNTcyMTdhYTIxOWI1Nzk5ZjFkNGUzNmM1Nzc4
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAi
RE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCi0KLSNpbXBvcnQgIkRPTU5v
ZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9ySW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0ICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5oIgotI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKLSNpbXBvcnQgIldlYkNvcmVP
YmpDRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0
IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KF9pbnRlcm5hbCkKLQotQGltcGxl
bWVudGF0aW9uIERPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvcgotCi0tICh2b2lk
KWRlYWxsb2MKLXsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5U
aHJlYWQoW0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciBjbGFzc10sIHNlbGYp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5k
ZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCi1XZWJDb3JlOjpUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IqIGNvcmUoRE9NVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yICp3cmFwcGVyKQotewotICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IqPih3
cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKLX0KLQotRE9NVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yICpraXQoV2ViQ29yZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
KiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwot
ICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKERPTVRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUp
KQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERP
TVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciAqd3JhcHBlciA9IFtbRE9NVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIGFsbG9jXSBfaW5pdF07Ci0gICAgd3JhcHBlci0+
X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsK
LSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0g
ICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JJbnRlcm5hbC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjNmZDczODQ2YTc3OGU1ZGE0MWM4NWQ4
M2IxYmMxZmJlNjZkY2JhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwzNCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvcjsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29y
ZTo6VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjb3JlKERPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvciAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvciAqa2l0KFdlYkNvcmU6OlRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2Q2YzU1NjYxZjgxNTE3YzEyMjFhMzQ4NjRkOTgzNTAxMWQ2MjI2MC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotV0VC
S0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoOTg3Nl81KQotV0VCQ09SRV9FWFBPUlQgQGludGVyZmFj
ZSBET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QgOiBET01PYmpl
Y3QKLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGFiM2VkOTQ5MDFjYzJkMWMxZjU0OTI1M2ZkOGMyZTU2ZDEzODg2My4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAi
RE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgiCi0KLSNpbXBv
cnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRs
ZXJzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oIgotI2ltcG9ydCAiVGhyZWFk
Q2hlY2suaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1Q
TCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdCo+KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdAotCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCBjbGFzc10sIHNlbGYpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJl
ZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCi1XZWJDb3JlOjpUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIGNvcmUoRE9NVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0ICp3cmFwcGVyKQotewotICAgIHJldHVybiB3
cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKLX0KLQotRE9N
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0ICpraXQoV2ViQ29yZTo6
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiB2YWx1ZSkKLXsKLSAg
ICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwotICAgIGlmICghdmFsdWUp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKERPTVRlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdCAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAg
ICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVRlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCAqd3JhcHBlciA9IFtbRE9NVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0IGFsbG9jXSBfaW5pdF07Ci0g
ICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhYmE1NDcyNDBlMDdiZjI1YjVjNzc1ZDNmZWU5YTZhOWZhNDY0ZDA1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdEludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgot
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29y
ZTo6VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBjb3JlKERPTVRl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCAqKTsKLVdFQkNPUkVfRVhQ
T1JUIERPTVRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCAqa2l0KFdl
YkNvcmU6OlRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTk2YTJmMGE0ZDA4M2U0OWQ3MzBmMWU0ZTczZTUxMzA3NjQwZDA4MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwu
Y29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9y
dCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotQGNsYXNzIE5TU3RyaW5nOwotCi1XRUJLSVRfQ0xB
U1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRl
c3RDdXN0b21OYW1lZEdldHRlciA6IERPTU9iamVjdAotLSAodm9pZClhbm90aGVyRnVuY3Rpb246
KE5TU3RyaW5nICopc3RyOwotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjg1MWY4YTg3MDhjZDU0MjVh
YzE2YjljMmU1YWE1NGM2ZjZlNGNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RDdXN0b21OYW1lZEdldHRlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAK
LS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgotCi0j
aW1wb3J0ICJET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCIKLQotI2ltcG9ydCAiRE9NTm9kZUlu
dGVybmFsLmgiCi0jaW1wb3J0ICJET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJJbnRlcm5hbC5oIgot
I2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIgotI2ltcG9ydCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCi0jaW1wb3J0ICJUaHJl
YWRDaGVjay5oIgotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5o
IgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgotCi0jZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2No
ZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgY2xh
c3NdLCBzZWxmKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAg
ICAgSU1QTC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpYW5v
dGhlckZ1bmN0aW9uOihOU1N0cmluZyAqKXN0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5hbm90aGVyRnVuY3Rpb24oc3RyKTsKLX0KLQot
QGVuZAotCi1XZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNvcmUoRE9NVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyICp3cmFwcGVyKQotewotICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih3cmFwcGVyLT5faW50ZXJu
YWwpIDogMDsKLX0KLQotRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyICpraXQoV2ViQ29yZTo6VGVz
dEN1c3RvbU5hbWVkR2V0dGVyKiB2YWx1ZSkKLXsKLSAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9u
Q2hlY2tSb3VuZE9uZSgpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgaWYgKERPTVRlc3RDdXN0b21OYW1lZEdldHRlciAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIo
dmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIERPTVRlc3RDdXN0b21OYW1lZEdldHRlciAqd3JhcHBlciA9IFtbRE9NVGVzdEN1c3RvbU5h
bWVkR2V0dGVyIGFsbG9jXSBfaW5pdF07Ci0gICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRl
cnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7
Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVy
IGF1dG9yZWxlYXNlXTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdldHRlckludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzhlNWE5ODcx
YThjMWZlZjNlZjNkOGJiN2IzYTNmMWYzYjNmYmQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdldHRlckludGVybmFsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RDdXN0b21OYW1l
ZEdldHRlcjsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBjb3JlKERPTVRlc3RDdXN0b21OYW1lZEdldHRlciAqKTsKLVdFQkNPUkVfRVhQT1JUIERP
TVRlc3RDdXN0b21OYW1lZEdldHRlciAqa2l0KFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRl
ciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGMxYmZlYTQ2MjNmYjVkMWU4NDkwYmJmMDk3NTY2NDMwNTU1ZmI4MGQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdA
Z21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotQGNsYXNzIE5TU3RyaW5nOwotCi1XRUJL
SVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IERPTVRlc3RFdmVudENvbnN0cnVjdG9yIDogRE9NT2JqZWN0Ci1AcHJvcGVydHkgKHJlYWRvbmx5
LCBjb3B5KSBOU1N0cmluZyAqYXR0cjE7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0
cmluZyAqYXR0cjI7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqYXR0cjM7
Ci1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVjdG9yLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzYjlhMTg4ODljODU2ODQ4YWMzZGRkZjRmMGQxODI1MDkxYjFm
Zjg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVj
dG9yLm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTVRlc3RFdmVu
dENvbnN0cnVjdG9yLmgiCi0KLSNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQg
IkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRl
cm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgIkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKLSNpbXBv
cnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJVUkwuaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpD
RXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3
dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRl
c3RFdmVudENvbnN0cnVjdG9yKj4oX2ludGVybmFsKQotCi1AaW1wbGVtZW50YXRpb24gRE9NVGVz
dEV2ZW50Q29uc3RydWN0b3IKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVP
YmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0RXZlbnRDb25zdHJ1Y3Rv
ciBjbGFzc10sIHNlbGYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQot
ICAgICAgICBJTVBMLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNT
dHJpbmcgKilhdHRyMQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4gSU1QTC0+YXR0cjEoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilhdHRyMgot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4g
SU1QTC0+YXR0cjIoKTsKLX0KLQotI2lmIEVOQUJMRShTUEVDSUFMX0VWRU5UKQotLSAoTlNTdHJp
bmcgKilhdHRyMwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICByZXR1cm4gSU1QTC0+YXR0cjMoKTsKLX0KLSNlbmRpZgotCi1AZW5kCi0KLVdlYkNvcmU6
OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlKERPTVRlc3RFdmVudENvbnN0cnVjdG9yICp3cmFw
cGVyKQotewotICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwotfQotCi1ET01U
ZXN0RXZlbnRDb25zdHJ1Y3RvciAqa2l0KFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiB2
YWx1ZSkKLXsKLSAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwotICAg
IGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKERPTVRlc3RFdmVudENv
bnN0cnVjdG9yICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVGVzdEV2ZW50Q29uc3Ry
dWN0b3IgKndyYXBwZXIgPSBbW0RPTVRlc3RFdmVudENvbnN0cnVjdG9yIGFsbG9jXSBfaW5pdF07
Ci0gICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRl
cm5hbCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFw
cGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RF
dmVudENvbnN0cnVjdG9ySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVjdG9ySW50ZXJuYWwuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMThiMjkxOWMzZWQxNTkxNWEzODgwMmQ2ZjI4NTVmNTBmMjBj
ZTRjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1
Y3RvckludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bXBvcnQgPFdlYkNvcmUvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgVGVzdEV2ZW50Q29uc3RydWN0b3I7Ci19Ci0KLVdFQkNPUkVfRVhQT1JU
IFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlKERPTVRlc3RFdmVudENvbnN0cnVj
dG9yICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IgKmtpdChXZWJD
b3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY1NGU5OWU3MmNhZmEwNzgzMjkxMTQ3NjRi
MzZlZDMzMGYxZDZjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZl
bnRUYXJnZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotQGNsYXNzIERPTU5vZGU7
Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgRE9NVGVzdEV2ZW50VGFyZ2V0IDogRE9NT2JqZWN0Ci0tIChET01Ob2RlICopaXRl
bToodW5zaWduZWQpaW5kZXg7Ci1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NjA1MjgwMGU3OWJiMzMxN2VlN2NkNWYzODMz
ZWM1OTQxNWZmODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50
VGFyZ2V0Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTVRlc3RF
dmVudFRhcmdldC5oIgotCi0jaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCi0jaW1wb3J0ICJE
T01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3RFdmVudFRhcmdldEludGVybmFsLmgi
Ci0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgiCi0jaW1wb3J0ICJOb2RlLmgiCi0jaW1wb3J0ICJUZXN0RXZlbnRUYXJnZXQuaCIK
LSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgot
I2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgotCi0jZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRUYXJn
ZXQqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXN0RXZlbnRUYXJnZXQKLQot
LSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRl
T25NYWluVGhyZWFkKFtET01UZXN0RXZlbnRUYXJnZXQgY2xhc3NdLCBzZWxmKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYoKTsKLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRl
eAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPml0ZW0oaW5kZXgpKSk7Ci19Ci0KLUBlbmQKLQotV2Vi
Q29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBjb3JlKERPTVRlc3RFdmVudFRhcmdldCAqd3JhcHBlcikK
LXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEV2
ZW50VGFyZ2V0Kj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Ci19Ci0KLURPTVRlc3RFdmVudFRh
cmdldCAqa2l0KFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogdmFsdWUpCi17Ci0gICAgV2ViQ29y
ZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIGlmIChET01UZXN0RXZlbnRUYXJnZXQgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLSAgICBET01UZXN0RXZlbnRUYXJnZXQgKndyYXBwZXIgPSBbW0RPTVRlc3RFdmVu
dFRhcmdldCBhbGxvY10gX2luaXRdOwotICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7Ci0gICAgdmFsdWUtPnJlZigpOwot
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBh
dXRvcmVsZWFzZV07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXRJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0SW50ZXJuYWwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYyNjJmYmQyZjkxNjBkZDg5MWE3OWRj
NGI3NDEyMTFhZTUwZTA2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
RXZlbnRUYXJnZXRJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoK
LSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
LSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwu
IERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RFdmVudFRhcmdldC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBUZXN0RXZlbnRUYXJnZXQ7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIFdl
YkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZShET01UZXN0RXZlbnRUYXJnZXQgKik7Ci1XRUJD
T1JFX0VYUE9SVCBET01UZXN0RXZlbnRUYXJnZXQgKmtpdChXZWJDb3JlOjpUZXN0RXZlbnRUYXJn
ZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTRkYWMyMGJkZDlmZTc2YmNlZTliMWUyZWI1NTE1OGUzZjg5NGQyOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9N
T2JqZWN0Lmg+Ci0KLUBjbGFzcyBOU1N0cmluZzsKLQotV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9N
QUMoOTg3Nl81KQotV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01UZXN0RXhjZXB0aW9uIDog
RE9NT2JqZWN0Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKLUBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RFeGNlcHRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxNTI2ZDA5ZTRjZmY2Y2RkMDg0MWQxNmMyNmY0MTNjMWNjMTgyYmZmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRpb24ubW0KKysrIC9kZXYvbnVsbApAQCAt
MSw4MiArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NVGVzdEV4Y2VwdGlvbi5oIgotCi0jaW1wb3J0ICJET01O
b2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3RFeGNlcHRpb25JbnRlcm5hbC5oIgotI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgotI2ltcG9ydCAiVGVzdEV4Y2VwdGlvbi5oIgotI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIK
LSNpbXBvcnQgIlVSTC5oIgotI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKLSNpbXBvcnQg
IldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQotI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbio+KF9pbnRl
cm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RFeGNlcHRpb24KLQotLSAodm9pZClkZWFs
bG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFk
KFtET01UZXN0RXhjZXB0aW9uIGNsYXNzXSwgc2VsZikpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tIChOU1N0cmluZyAqKW5hbWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPm5hbWUoKTsKLX0KLQotQGVuZAot
Ci1XZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlKERPTVRlc3RFeGNlcHRpb24gKndyYXBwZXIp
Ci17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RF
eGNlcHRpb24qPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKLX0KLQotRE9NVGVzdEV4Y2VwdGlv
biAqa2l0KFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJl
YWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdEV4Y2VwdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBw
ZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgIERPTVRlc3RFeGNlcHRpb24gKndyYXBwZXIgPSBbW0RPTVRlc3RFeGNlcHRpb24gYWxs
b2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERP
TU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2Vd
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEV4Y2VwdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTRhZmI5MzljMmU0Zjg2MWFkMGQyZjI2MGI0ZmI4YzhjODY4M2Jk
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uSW50ZXJu
YWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2Vi
Q29yZS9ET01UZXN0RXhjZXB0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRl
c3RFeGNlcHRpb247Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlRlc3RFeGNlcHRpb24q
IGNvcmUoRE9NVGVzdEV4Y2VwdGlvbiAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTVRlc3RFeGNlcHRp
b24gKmtpdChXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhOGY1
ZTJkODI0YjYxMjhjNWI4ODhlYTg1M2YxNzc1OThiZDBkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RP
TU9iamVjdC5oPgotCi1XRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JF
X0VYUE9SVCBAaW50ZXJmYWNlIERPTVRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIDogRE9NT2JqZWN0
Ci1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjA4YzkxYjhjMmYwYjJkMGMyYmE2MjkzMTc3YTJi
MWFkOTM4ZGQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRP
TVRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgiCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5o
IgotI2ltcG9ydCAiRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVJbnRlcm5hbC5oIgotI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
IgotI2ltcG9ydCAiVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaCIKLSNpbXBvcnQgIlRocmVhZENo
ZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAiV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVmaW5lIElNUEwg
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KF9pbnRl
cm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlCi0KLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9u
TWFpblRocmVhZChbRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgY2xhc3NdLCBzZWxmKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYo
KTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLUBlbmQKLQotV2ViQ29yZTo6VGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUqIGNvcmUoRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgKndyYXBwZXIp
Ci17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Ci19Ci0KLURPTVRl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlICpraXQoV2ViQ29yZTo6VGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUqIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSAqd3JhcHBlciA9IFtbRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUg
YWxsb2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0
PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRE
T01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVh
c2VdOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVJ
bnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjg5Y2IyYjg3YzYyMzUy
YTMyMWYwYjkwODAwZTdiNTkzNWVmMjc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlSW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZTsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUqIGNvcmUoRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgKik7Ci1XRUJDT1JFX0VYUE9S
VCBET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSAqa2l0KFdlYkNvcmU6OlRlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0R2xvYmFsT2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVjMTc3OWJhNDY0ODYxNzVmYWVmOTZmODNhZGNiNzBjZjlkOTU5MTcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdsb2JhbE9iamVjdC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgotCi1AY2xhc3MgTlNTdHJpbmc7Ci0KLVdFQktJVF9D
TEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9N
VGVzdEdsb2JhbE9iamVjdCA6IERPTU9iamVjdAotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
cmVndWxhckF0dHJpYnV0ZTsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnB1YmxpY0FuZFBy
aXZhdGVBdHRyaWJ1dGU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpwdWJsaWNBbmRQcml2
YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGU7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICplbmFi
bGVkQXRSdW50aW1lQXR0cmlidXRlOwotCi0tICh2b2lkKXJlZ3VsYXJPcGVyYXRpb246KE5TU3Ry
aW5nICopdGVzdFBhcmFtOwotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9iYWxPYmplY3QubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZjk0ZjU2NWQ2OWEzZjA4MzYzY2U2NjQ1ZWIz
NWE3MmE5YzdjYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdsb2Jh
bE9iamVjdC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKgotICogVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NVGVz
dEdsb2JhbE9iamVjdC5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQg
IkRPTVRlc3RHbG9iYWxPYmplY3RJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiVGVzdEds
b2JhbE9iamVjdC5oIgotI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKLSNpbXBvcnQgIlVSTC5oIgot
I2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaCIKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEdsb2JhbE9iamVjdCo+KF9pbnRlcm5hbCkKLQotQGltcGxl
bWVudGF0aW9uIERPTVRlc3RHbG9iYWxPYmplY3QKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
aWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0R2xv
YmFsT2JqZWN0IGNsYXNzXSwgc2VsZikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfaW50
ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
Ci0tIChOU1N0cmluZyAqKXJlZ3VsYXJBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPnJlZ3VsYXJBdHRyaWJ1dGUo
KTsKLX0KLQotLSAodm9pZClzZXRSZWd1bGFyQXR0cmlidXRlOihOU1N0cmluZyAqKW5ld1JlZ3Vs
YXJBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgSU1QTC0+c2V0UmVndWxhckF0dHJpYnV0ZShuZXdSZWd1bGFyQXR0cmlidXRlKTsKLX0K
LQotLSAoTlNTdHJpbmcgKilwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5wdWJsaWNB
bmRQcml2YXRlQXR0cmlidXRlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0UHVibGljQW5kUHJpdmF0ZUF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluZXdQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldFB1Ymxp
Y0FuZFByaXZhdGVBdHRyaWJ1dGUobmV3UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSk7Ci19Ci0K
LSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotLSAoTlNTdHJpbmcgKilwdWJsaWNBbmRQcml2YXRl
Q29uZGl0aW9uYWxBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPnB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0
dHJpYnV0ZSgpOwotfQotCi0tICh2b2lkKXNldFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0
dHJpYnV0ZTooTlNTdHJpbmcgKiluZXdQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1
dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1Q
TC0+c2V0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKG5ld1B1YmxpY0FuZFBy
aXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCi0tIChOU1N0cmluZyAqKWVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwt
PmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlOihOU1N0cmluZyAqKW5ld0VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+
c2V0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShuZXdFbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
KTsKLX0KLSNlbmRpZgotCi0tICh2b2lkKXJlZ3VsYXJPcGVyYXRpb246KE5TU3RyaW5nICopdGVz
dFBhcmFtCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPnJlZ3VsYXJPcGVyYXRpb24odGVzdFBhcmFtKTsKLX0KLQotCi0jaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLS0gKHZvaWQpZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjooTlNTdHJpbmcg
Kil0ZXN0UGFyYW0KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgSU1QTC0+ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbih0ZXN0UGFyYW0pOwotfQotCi0j
ZW5kaWYKLQotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLS0gKHZvaWQpZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbjooaW50KXRlc3RQYXJhbQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKHRl
c3RQYXJhbSk7Ci19Ci0KLSNlbmRpZgotCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotLSAo
dm9pZCl0ZXN0SlNCdWlsdGluRnVuY3Rpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+dGVzdEpTQnVpbHRpbkZ1bmN0aW9uKCk7Ci19Ci0K
LSNlbmRpZgotCi1AZW5kCi0KLVdlYkNvcmU6OlRlc3RHbG9iYWxPYmplY3QqIGNvcmUoRE9NVGVz
dEdsb2JhbE9iamVjdCAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEdsb2JhbE9iamVjdCo+KHdyYXBwZXItPl9pbnRlcm5hbCkg
OiAwOwotfQotCi1ET01UZXN0R2xvYmFsT2JqZWN0ICpraXQoV2ViQ29yZTo6VGVzdEdsb2JhbE9i
amVjdCogdmFsdWUpCi17Ci0gICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUo
KTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmIChET01UZXN0
R2xvYmFsT2JqZWN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVGVzdEdsb2JhbE9i
amVjdCAqd3JhcHBlciA9IFtbRE9NVGVzdEdsb2JhbE9iamVjdCBhbGxvY10gX2luaXRdOwotICAg
IHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwq
Pih2YWx1ZSk7Ci0gICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwg
dmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0R2xvYmFs
T2JqZWN0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RHbG9iYWxPYmplY3RJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1MzU5MWVhN2E5YjNjMzFhMzI1ZGIzYzU3M2I0NzhkZTQxNzBmZmRjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9iYWxPYmplY3RJbnRlcm5hbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RP
TVRlc3RHbG9iYWxPYmplY3QuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVGVzdEds
b2JhbE9iamVjdDsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdEdsb2JhbE9iamVj
dCogY29yZShET01UZXN0R2xvYmFsT2JqZWN0ICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdEds
b2JhbE9iamVjdCAqa2l0KFdlYkNvcmU6OlRlc3RHbG9iYWxPYmplY3QqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbXBsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbXBsZW1lbnRzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhMWVhNjU3
MDk3NDc0ODMwZGI0YTM5ZThmMGI0NDc3ZDAwY2FhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SW1wbGVtZW50cy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAg
QEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2Ny
aXB0cyB0aGF0IERPTVRlc3RJbXBsZW1lbnRzLmggYW5kCi0gICAgRE9NVGVzdEltcGxlbWVudHMu
Y3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0SW1wbGVtZW50cy5pZGwsIGFuZCB0aHVzCi0gICAgcHJl
dmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBET01UZXN0SW1w
bGVtZW50cy5oIGFuZAotICAgIERPTVRlc3RJbXBsZW1lbnRzLmNwcCBhdCBldmVyeSBidWlsZC4g
VGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCi0qLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEltcGxlbWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJ
bXBsZW1lbnRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViYTFlYTY1NzA5NzQ3
NDgzMGRiNGEzOWU4ZjBiNDQ3N2QwMGNhYTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEltcGxlbWVudHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotLyoK
LSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRo
YXQgRE9NVGVzdEltcGxlbWVudHMuaCBhbmQKLSAgICBET01UZXN0SW1wbGVtZW50cy5jcHAgYXJl
IGNyZWF0ZWQgZm9yIFRlc3RJbXBsZW1lbnRzLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRo
ZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIERPTVRlc3RJbXBsZW1lbnRz
LmggYW5kCi0gICAgRE9NVGVzdEltcGxlbWVudHMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZp
bGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiYTgyNjAyYjZkM2Q0ZDg3Njk3ZGVi
OWNmMjcxMmJlNzU0ZGYxNzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8
c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgotCi1AY2xhc3MgRE9NTm9k
ZTsKLUBjbGFzcyBET01UZXN0T2JqOwotQGNsYXNzIE5TU3RyaW5nOwotCi1lbnVtIHsKLQotfSBX
RUJLSVRfRU5VTV9BVkFJTEFCTEVfTUFDKDk4NzZfNSk7Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFC
TEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdEludGVyZmFj
ZSA6IERPTU9iamVjdAotQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmltcGxl
bWVudHNTdHIxOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaW1wbGVtZW50c1N0cjI7Ci1A
cHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICppbXBsZW1lbnRzU3RyMzsKLUBwcm9wZXJ0eSAoc3Ry
b25nKSBET01Ob2RlICppbXBsZW1lbnRzTm9kZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkp
IE5TU3RyaW5nICpzdXBwbGVtZW50YWxTdHIxOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
c3VwcGxlbWVudGFsU3RyMjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnN1cHBsZW1lbnRh
bFN0cjM7Ci1AcHJvcGVydHkgKHN0cm9uZykgRE9NTm9kZSAqc3VwcGxlbWVudGFsTm9kZTsKLUBw
cm9wZXJ0eSB1bnNpZ25lZCBzaG9ydCBidWlsdGluQXR0cmlidXRlOwotQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVy
ZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbnRlcmZhY2UubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZDI0NzE0MTFi
ZTExNDZiMjk4OWQ2MjQ2Mzg5MmU0MTk5ODVkOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDMwNyArMCwwIEBA
Ci0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8
IEVOQUJMRShDb25kaXRpb24yKQotCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgotCi0jaW1wb3J0
ICJET01UZXN0SW50ZXJmYWNlLmgiCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2lt
cG9ydCAiRE9NVGVzdEludGVyZmFjZUludGVybmFsLmgiCi0jaW1wb3J0ICJET01UZXN0T2JqSW50
ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIk5vZGUuaCIKLSNpbXBvcnQgIlRlc3RJbnRlcmZh
Y2UuaCIKLSNpbXBvcnQgIlRlc3RPYmouaCIKLSNpbXBvcnQgIlRlc3RTdXBwbGVtZW50YWwuaCIK
LSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJVUkwuaCIKLSNpbXBvcnQgIldlYkNv
cmVPYmpDRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1w
b3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXN0
SW50ZXJmYWNlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVk
dWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdEludGVyZmFjZSBjbGFzc10sIHNlbGYp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5k
ZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotLSAoTlNTdHJpbmcgKilpbXBsZW1lbnRzU3RyMQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4g
SU1QTC0+aW1wbGVtZW50c1N0cjEoKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0tIChOU1N0cmluZyAqKWltcGxlbWVudHNTdHIy
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVy
biBJTVBMLT5pbXBsZW1lbnRzU3RyMigpOwotfQotCi0tICh2b2lkKXNldEltcGxlbWVudHNTdHIy
OihOU1N0cmluZyAqKW5ld0ltcGxlbWVudHNTdHIyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldEltcGxlbWVudHNTdHIyKG5ld0ltcGxl
bWVudHNTdHIyKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi0tIChOU1N0cmluZyAqKWltcGxlbWVudHNTdHIzCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5pbXBs
ZW1lbnRzU3RyMygpOwotfQotCi0tICh2b2lkKXNldEltcGxlbWVudHNTdHIzOihOU1N0cmluZyAq
KW5ld0ltcGxlbWVudHNTdHIzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIElNUEwtPnNldEltcGxlbWVudHNTdHIzKG5ld0ltcGxlbWVudHNTdHIzKTsK
LX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0tIChET01Ob2RlICopaW1wbGVtZW50c05vZGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5p
bXBsZW1lbnRzTm9kZSgpKSk7Ci19Ci0KLS0gKHZvaWQpc2V0SW1wbGVtZW50c05vZGU6KERPTU5v
ZGUgKiluZXdJbXBsZW1lbnRzTm9kZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBBU1NFUlQobmV3SW1wbGVtZW50c05vZGUpOwotCi0gICAgaWYgKCFj
b3JlKG5ld0ltcGxlbWVudHNOb2RlKSkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JF
eGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRJbXBsZW1lbnRzTm9kZSgqY29yZShuZXdJbXBsZW1l
bnRzTm9kZSkpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKLS0gKE5TU3RyaW5nICopc3VwcGxlbWVudGFsU3RyMQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMSgqSU1QTCk7Ci19Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotLSAoTlNTdHJp
bmcgKilzdXBwbGVtZW50YWxTdHIyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxTdHIyKCpJTVBMKTsKLX0KLQotLSAodm9pZClzZXRTdXBwbGVtZW50YWxTdHIyOihOU1N0
cmluZyAqKW5ld1N1cHBsZW1lbnRhbFN0cjIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxl
bWVudGFsU3RyMigqSU1QTCwgbmV3U3VwcGxlbWVudGFsU3RyMik7Ci19Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotLSAoTlNTdHJpbmcg
KilzdXBwbGVtZW50YWxTdHIzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIHJldHVybiBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxTdHIzKCpJTVBMKTsKLX0KLQotLSAodm9pZClzZXRTdXBwbGVtZW50YWxTdHIzOihOU1N0cmlu
ZyAqKW5ld1N1cHBsZW1lbnRhbFN0cjMKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVu
dGFsU3RyMygqSU1QTCwgbmV3U3VwcGxlbWVudGFsU3RyMyk7Ci19Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotLSAoRE9NTm9kZSAqKXN1
cHBsZW1lbnRhbE5vZGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxOb2RlKCpJTVBMKSkpOwotfQotCi0tICh2b2lkKXNldFN1cHBsZW1lbnRh
bE5vZGU6KERPTU5vZGUgKiluZXdTdXBwbGVtZW50YWxOb2RlCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIEFTU0VSVChuZXdTdXBwbGVtZW50YWxOb2Rl
KTsKLQotICAgIGlmICghY29yZShuZXdTdXBwbGVtZW50YWxOb2RlKSkKLSAgICAgICAgV2ViQ29y
ZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVu
dGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKCpJTVBMLCAqY29yZShuZXdTdXBwbGVtZW50YWxOb2Rl
KSk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQotLSAodW5zaWduZWQgc2hvcnQpYnVpbHRpbkF0dHJpYnV0ZQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6YnVpbHRpbkF0dHJpYnV0ZSgqSU1QTCk7Ci19Ci0KLS0gKHZvaWQpc2V0
QnVpbHRpbkF0dHJpYnV0ZToodW5zaWduZWQgc2hvcnQpbmV3QnVpbHRpbkF0dHJpYnV0ZQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzZXRCdWlsdGluQXR0cmlidXRlKCpJTVBMLCBuZXdCdWlsdGluQXR0
cmlidXRlKTsKLX0KLSNlbmRpZgotCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLS0gKHZvaWQpaW1wbGVtZW50c01ldGhvZDEKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW1wbGVtZW50c01ldGhv
ZDEoKTsKLX0KLQotI2VuZGlmCi0KLQotI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotLSAoRE9NVGVzdE9iaiAqKWltcGxlbWVudHNNZXRob2QyOihOU1N0cmlu
ZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFvYmpBcmcpCi0gICAgICAgIFdl
YkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgRE9NVGVzdE9iaiAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElN
UEwtPmltcGxlbWVudHNNZXRob2QyKHN0ckFyZywgKmNvcmUob2JqQXJnKSwgZWMpKSk7Ci0gICAg
V2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0j
ZW5kaWYKLQotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci0tICh2b2lkKWltcGxlbWVudHNNZXRob2QzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmltcGxlbWVudHNNZXRob2QzKCk7Ci19Ci0KLSNl
bmRpZgotCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LS0gKHZvaWQpaW1wbGVtZW50c01ldGhvZDQKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW1wbGVtZW50c01ldGhvZDQoKTsKLX0KLQotI2Vu
ZGlmCi0KLQotI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQot
LSAodm9pZClzdXBwbGVtZW50YWxNZXRob2QxCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbE1ldGhvZDEoKklNUEwpOwotfQotCi0jZW5kaWYKLQotCi0jaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0tIChET01UZXN0T2JqICopc3VwcGxlbWVudGFs
TWV0aG9kMjooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICghb2Jq
QXJnKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVRlc3RPYmogKnJlc3VsdCA9IGtp
dChXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRo
b2QyKCpJTVBMLCBzdHJBcmcsICpjb3JlKG9iakFyZyksIGVjKSkpOwotICAgIFdlYkNvcmU6OnJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2VuZGlmCi0KLQot
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotLSAodm9pZClz
dXBwbGVtZW50YWxNZXRob2QzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhv
ZDMoKklNUEwpOwotfQotCi0jZW5kaWYKLQotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCi0tICh2b2lkKXN1cHBsZW1lbnRhbE1ldGhvZDQKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdFN1
cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgqSU1QTCk7Ci19Ci0KLSNlbmRpZgotCi0K
LSNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLS0gKHZvaWQp
YnVpbHRpbkZ1bmN0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OmJ1aWx0aW5GdW5jdGlvbigqSU1Q
TCk7Ci19Ci0KLSNlbmRpZgotCi1AZW5kCi0KLVdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUo
RE9NVGVzdEludGVyZmFjZSAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEludGVyZmFjZSo+KHdyYXBwZXItPl9pbnRlcm5hbCkg
OiAwOwotfQotCi1ET01UZXN0SW50ZXJmYWNlICpraXQoV2ViQ29yZTo6VGVzdEludGVyZmFjZSog
dmFsdWUpCi17Ci0gICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKLSAg
ICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmIChET01UZXN0SW50ZXJm
YWNlICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dy
YXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVGVzdEludGVyZmFjZSAqd3JhcHBl
ciA9IFtbRE9NVGVzdEludGVyZmFjZSBhbGxvY10gX2luaXRdOwotICAgIHdyYXBwZXItPl9pbnRl
cm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7Ci0gICAg
dmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJl
dHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0
aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJ
bnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjI5MmRhYjEzYjQzZjk5
ZDI2M2EwMjYwMmNjZGRlMGEwYjljNjNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RJbnRlcmZhY2VJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBA
QAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RJbnRlcmZhY2UuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgVGVzdEludGVyZmFjZTsKLX0KLQotV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZShET01UZXN0SW50ZXJmYWNlICopOwotV0VCQ09S
RV9FWFBPUlQgRE9NVGVzdEludGVyZmFjZSAqa2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJdGVyYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEl0ZXJhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNzIx
ZDY4MWNmNDFkZGYzMmRjMTMwOGM0YjczMjllYWM0MjE0ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEl0ZXJhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+
Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgRE9NVGVzdEl0ZXJhYmxlIDogRE9NT2JqZWN0Ci1AZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SXRlcmFibGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SXRl
cmFibGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0YzI4OTU5ZjBjZjkwODY5
NjY5MWQ1OGZiMDRhODJlNDg2MjQ5ZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdEl0ZXJhYmxlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAq
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAq
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQg
IkRPTVRlc3RJdGVyYWJsZS5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBv
cnQgIkRPTVRlc3RJdGVyYWJsZUludGVybmFsLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJUZXN0SXRl
cmFibGUuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4
dHJhcy5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgotCi0jZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0
SXRlcmFibGUqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01UZXN0SXRlcmFibGUK
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9j
YXRlT25NYWluVGhyZWFkKFtET01UZXN0SXRlcmFibGUgY2xhc3NdLCBzZWxmKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYoKTsKLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLUBlbmQKLQotV2ViQ29yZTo6VGVzdEl0ZXJhYmxlKiBj
b3JlKERPTVRlc3RJdGVyYWJsZSAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEl0ZXJhYmxlKj4od3JhcHBlci0+X2ludGVybmFs
KSA6IDA7Ci19Ci0KLURPTVRlc3RJdGVyYWJsZSAqa2l0KFdlYkNvcmU6OlRlc3RJdGVyYWJsZSog
dmFsdWUpCi17Ci0gICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKLSAg
ICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmIChET01UZXN0SXRlcmFi
bGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UZXN0SXRlcmFibGUgKndyYXBwZXIg
PSBbW0RPTVRlc3RJdGVyYWJsZSBhbGxvY10gX2luaXRdOwotICAgIHdyYXBwZXItPl9pbnRlcm5h
bCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7Ci0gICAgdmFs
dWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVy
biBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SXRlcmFibGVJbnRlcm5hbC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEl0ZXJhYmxlSW50
ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I3MDdmMDY1N2Q4MGRmODEw
YjZmMzJkNzAzNTEyNzc4OWQ4OGY0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0SXRlcmFibGVJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAot
LyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RJdGVyYWJsZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBUZXN0SXRlcmFibGU7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIFdlYkNv
cmU6OlRlc3RJdGVyYWJsZSogY29yZShET01UZXN0SXRlcmFibGUgKik7Ci1XRUJDT1JFX0VYUE9S
VCBET01UZXN0SXRlcmFibGUgKmtpdChXZWJDb3JlOjpUZXN0SXRlcmFibGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM5NGY4OTgxZjkwNThjNTAxOGVjZGFkNzQzYjdmMWM3ZWY4ZDJhNDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFD
KDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yIDogRE9NT2JqZWN0Ci1AcHJvcGVydHkgQk9PTCB0ZXN0QXR0cmlidXRlOwotQHByb3Bl
cnR5IChyZWFkb25seSkgQk9PTCB0ZXN0QXR0cmlidXRlQ3VzdG9tOwotQHByb3BlcnR5IEJPT0wg
dGVzdEF0dHJpYnV0ZVJXQ3VzdG9tOwotCi0tICh2b2lkKXRlc3RGdW5jdGlvbjsKLS0gKHZvaWQp
dGVzdEN1c3RvbUZ1bmN0aW9uOwotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzQxOGIwYzdj
MzdlMzU3M2I3ZjAzYzE1MzJlOGUwMTRjZjZhNDE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDExNyArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCi0KLSNp
bXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9ySW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5oIgotI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpDRXh0
cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3dGYv
R2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcio+KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvcgotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoV2Vi
Q29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvciBjbGFzc10sIHNlbGYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2lu
dGVybmFsKQotICAgICAgICBJTVBMLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0K
LQotLSAoQk9PTCl0ZXN0QXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT50ZXN0QXR0cmlidXRlKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0VGVzdEF0dHJpYnV0ZTooQk9PTCluZXdUZXN0QXR0cmlidXRlCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldFRlc3RBdHRy
aWJ1dGUobmV3VGVzdEF0dHJpYnV0ZSk7Ci19Ci0KLS0gKEJPT0wpdGVzdEF0dHJpYnV0ZUN1c3Rv
bQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4gSU1QTC0+dGVzdEF0dHJpYnV0ZUN1c3RvbSgpOwotfQotCi0tIChCT09MKXRlc3RBdHRyaWJ1
dGVSV0N1c3RvbQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICByZXR1cm4gSU1QTC0+dGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKCk7Ci19Ci0KLS0gKHZvaWQp
c2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tOihCT09MKW5ld1Rlc3RBdHRyaWJ1dGVSV0N1c3RvbQot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5z
ZXRUZXN0QXR0cmlidXRlUldDdXN0b20obmV3VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKTsKLX0KLQot
LSAodm9pZCl0ZXN0RnVuY3Rpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgSU1QTC0+dGVzdEZ1bmN0aW9uKCk7Ci19Ci0KLS0gKHZvaWQpdGVzdEN1
c3RvbUZ1bmN0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPnRlc3RDdXN0b21GdW5jdGlvbigpOwotfQotCi1AZW5kCi0KLVdlYkNvcmU6
OlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogY29yZShET01UZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAw
OwotfQotCi1ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgKmtpdChXZWJDb3JlOjpUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25D
aGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBpZiAoRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBl
cih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0gICAgRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yICp3cmFwcGVyID0gW1tET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IgYWxsb2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwg
PSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVl
LT5yZWYoKTsKLSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4g
W3dyYXBwZXIgYXV0b3JlbGVhc2VdOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9ySW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckludGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDgwMDhhZTAwOGJjMmM1NDZmZGUwMGNiNmQ2ODNjN2RlMTIzNWIwNDAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9ySW50ZXJuYWwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29y
ZS9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOwotfQotCi1XRUJDT1JFX0VYUE9SVCBXZWJD
b3JlOjpUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNvcmUoRE9NVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yICpr
aXQoV2ViQ29yZTo6VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmQ5M2E5YzU2ZDUzZWNjNjgxNmMxMDA2OTg2ZjRkODhmYWI3YjYyZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgotCi1AY2xhc3MgRE9NTWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjsKLQotV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoOTg3Nl81KQotV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA6IERPTU9iamVjdAot
LSAodm9pZCltZXRob2Q6KERPTU1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKilsaXN0ZW5lcjsKLUBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NTE5NGViMWI2YTA1MGMwYzgxMmEzMmZlMzA0
OTA0NDhhNGE2ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgot
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9y
dCAiRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKLQotI2ltcG9ydCAiRE9NTWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIK
LSNpbXBvcnQgIkRPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWwuaCIKLSNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKLSNpbXBvcnQgIk1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKLSNpbXBvcnQgIlRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmgiCi0jaW1wb3J0ICJUaHJlYWRDaGVjay5oIgotI2ltcG9ydCAi
V2ViQ29yZU9iakNFeHRyYXMuaCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIK
LSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihfaW50ZXJuYWwpCi0KLUBpbXBs
ZW1lbnRhdGlvbiBET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcgotCi0tICh2b2lkKWRlYWxs
b2MKLXsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQo
W0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIGNsYXNzXSwgc2VsZikpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7Ci0gICAg
W3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKW1ldGhvZDooRE9NTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lciAqKWxpc3RlbmVyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIGlmICghbGlzdGVuZXIpCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVy
cm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1QTC0+bWV0aG9kKCpjb3JlKGxpc3RlbmVyKSk7Ci19Ci0K
LUBlbmQKLQotV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNvcmUoRE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIg
PyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4o
d3JhcHBlci0+X2ludGVybmFsKSA6IDA7Ci19Ci0KLURPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyICpraXQoV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHZhbHVlKQotewot
ICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtb
d3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lciAqd3JhcHBlciA9IFtbRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgYWxsb2Nd
IF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9i
amVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJJ
bnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTEzNjUwNTRiM2FiOTc1
MWM5ZDM0MGVhZjIwM2ZjNDJiNDk3MDRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqIGNvcmUoRE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgKik7
Ci1XRUJDT1JFX0VYUE9SVCBET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciAqa2l0KFdlYkNv
cmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5hbWVk
Q29uc3RydWN0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI2MDc0ZDA1Zjhk
NGRhMjhiNDE2NGViYWZhZDYyMWExN2I2Yzg0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5o
PgotCi1XRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBA
aW50ZXJmYWNlIERPTVRlc3ROYW1lZENvbnN0cnVjdG9yIDogRE9NT2JqZWN0Ci1AZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
TmFtZWRDb25zdHJ1Y3Rvci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3ROYW1lZENvbnN0cnVjdG9yLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YjlhYTE3OGZmNDYwMjZkODE2N2NmMzNhMDRlY2VjZjkwYWE5YWZhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROYW1lZENvbnN0cnVjdG9yLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTVRlc3ROYW1lZENvbnN0cnVjdG9y
LmgiCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVzdE5hbWVk
Q29uc3RydWN0b3JJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKLSNp
bXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4
dHJhcy5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgotCi0jZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0
TmFtZWRDb25zdHJ1Y3Rvcio+KF9pbnRlcm5hbCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RO
YW1lZENvbnN0cnVjdG9yCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChXZWJDb3JlT2Jq
Q1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdE5hbWVkQ29uc3RydWN0b3Ig
Y2xhc3NdLCBzZWxmKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAg
ICAgICAgSU1QTC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLUBlbmQKLQot
V2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3IqIGNvcmUoRE9NVGVzdE5hbWVkQ29uc3RydWN0
b3IgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Ci19
Ci0KLURPTVRlc3ROYW1lZENvbnN0cnVjdG9yICpraXQoV2ViQ29yZTo6VGVzdE5hbWVkQ29uc3Ry
dWN0b3IqIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25l
KCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVz
dE5hbWVkQ29uc3RydWN0b3IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICBET01UZXN0TmFt
ZWRDb25zdHJ1Y3RvciAqd3JhcHBlciA9IFtbRE9NVGVzdE5hbWVkQ29uc3RydWN0b3IgYWxsb2Nd
IF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9i
amVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01XcmFw
cGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE5hbWVkQ29uc3RydWN0b3JJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5hbWVkQ29uc3RydWN0b3JJbnRlcm5hbC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2U5ZjI2MDQ3YjAyMGJhZGYyNmY1ZDYyYWFj
ZTVmOTE3YTdiMzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROYW1l
ZENvbnN0cnVjdG9ySW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8q
Ci0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
Ci0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXN0TmFtZWRDb25zdHJ1Y3RvcjsKLX0KLQotV0VCQ09S
RV9FWFBPUlQgV2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3IqIGNvcmUoRE9NVGVzdE5hbWVk
Q29uc3RydWN0b3IgKik7Ci1XRUJDT1JFX0VYUE9SVCBET01UZXN0TmFtZWRDb25zdHJ1Y3RvciAq
a2l0KFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vZGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU0OWJkNWMwYzE3OWQxODRiZDA0NjMxMTdiOGFkM2M3
YWU1MTlmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KLQotQGNsYXNzIE5TU3RyaW5nOwotCi1XRUJLSVRfQ0xB
U1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRl
c3ROb2RlIDogRE9NTm9kZQotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZTsKLUBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3ROb2RlLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE5vZGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZTE0NGIxMzUx
MTY2NDg1NTg4ODk5MmIxOTMzNzg2N2E1NzE3NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE5vZGUubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgot
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0Lgot
ICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9y
dCAiRE9NVGVzdE5vZGUuaCIKLQotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0
ICJET01UZXN0Tm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgot
I2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJUZXN0Tm9kZS5oIgot
I2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKLSNpbXBvcnQgIlVSTC5oIgotI2ltcG9ydCAiV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5vZGUqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQotCi1AaW1wbGVtZW50YXRpb24gRE9NVGVzdE5vZGUKLQot
LSAoTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5uYW1lKCk7Ci19Ci0KLS0gKHZvaWQpc2V0TmFtZToo
TlNTdHJpbmcgKiluZXdOYW1lCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIElNUEwtPnNldE5hbWUobmV3TmFtZSk7Ci19Ci0KLUBlbmQKLQotV2ViQ29y
ZTo6VGVzdE5vZGUqIGNvcmUoRE9NVGVzdE5vZGUgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdy
YXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4od3JhcHBlci0+X2lu
dGVybmFsKSA6IDA7Ci19Ci0KLURPTVRlc3ROb2RlICpraXQoV2ViQ29yZTo6VGVzdE5vZGUqIHZh
bHVlKQotewotICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERPTVRlc3ROb2RlKj4oa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok5vZGUqPih2YWx1ZSkpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb2RlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb2RlSW50ZXJuYWwuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VlNzA2ZTAyZGYyYTdlYjFkZGNlMDdhYzg0OTBlOGRm
OTMzM2NiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZUludGVy
bmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdl
YkNvcmUvRE9NVGVzdE5vZGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVGVzdE5v
ZGU7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlRlc3ROb2RlKiBjb3JlKERPTVRlc3RO
b2RlICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdE5vZGUgKmtpdChXZWJDb3JlOjpUZXN0Tm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE5vbmRldGVybWluaXN0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb25kZXRlcm1pbmlzdGljLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA1YWJkOTQ5MmY0ZmNkNDZlZmYxNDQ5MTM0YjUzZTU5MWU2NjUyNDMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vbmRldGVybWluaXN0aWMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdA
Z21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotQGNsYXNzIE5TU3RyaW5nOwotCi1XRUJL
SVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IERPTVRlc3ROb25kZXRlcm1pbmlzdGljIDogRE9NT2JqZWN0Ci1AcHJvcGVydHkgKHJlYWRvbmx5
KSBpbnQgbm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cjsKLUBwcm9wZXJ0eSAoY29weSkgTlNT
dHJpbmcgKm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyOwotQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqbm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHI7Ci1AcHJvcGVydHkgKGNvcHkp
IE5TU3RyaW5nICpub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cjsKLUBwcm9wZXJ0
eSAoY29weSkgTlNTdHJpbmcgKm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyOwot
Ci0tIChCT09MKW5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb247Ci1AZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9u
ZGV0ZXJtaW5pc3RpYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3ROb25kZXRlcm1pbmlzdGljLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0ZWUyNWE0YWE3MjZiMGE2YjY5MDE4MGQ1N2M3ZGRhMjQ2OTZkNjMyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb25kZXRlcm1pbmlzdGljLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJET01JbnRlcm5hbC5oIgotCi0jaW1wb3J0ICJET01UZXN0Tm9uZGV0ZXJtaW5pc3RpYy5o
IgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3ROb25kZXRl
cm1pbmlzdGljSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1w
b3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRlc3ROb25kZXRlcm1pbmlz
dGljLmgiCi0jaW1wb3J0ICJUaHJlYWRDaGVjay5oIgotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0
ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
IgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KF9pbnRlcm5hbCkKLQotQGltcGxlbWVu
dGF0aW9uIERPTVRlc3ROb25kZXRlcm1pbmlzdGljCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAg
IGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdE5v
bmRldGVybWluaXN0aWMgY2xhc3NdLCBzZWxmKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107
Ci19Ci0KLS0gKGludClub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5ub25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm9uZGV0ZXJtaW5p
c3RpY1dyaXRlYWJsZUF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKCk7
Ci19Ci0KLS0gKHZvaWQpc2V0Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHI6KE5TU3RyaW5n
ICopbmV3Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0Tm9uZGV0ZXJtaW5pc3RpY1dy
aXRlYWJsZUF0dHIobmV3Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOwotfQotCi0tIChO
U1N0cmluZyAqKW5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5ub25kZXRlcm1p
bmlzdGljRXhjZXB0aW9uQXR0cigpOwotfQotCi0tICh2b2lkKXNldE5vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyOihOU1N0cmluZyAqKW5ld05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRy
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwt
PnNldE5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKG5ld05vbmRldGVybWluaXN0aWNFeGNl
cHRpb25BdHRyKTsKLX0KLQotLSAoTlNTdHJpbmcgKilub25kZXRlcm1pbmlzdGljR2V0dGVyRXhj
ZXB0aW9uQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOU1N0cmluZyAqcmVzdWx0
ID0gSU1QTC0+bm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoZWMpOwotICAgIFdl
YkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAo
dm9pZClzZXROb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cjooTlNTdHJpbmcgKilu
ZXdOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cgotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXROb25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0cihuZXdOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0
cik7Ci19Ci0KLS0gKE5TU3RyaW5nICopbm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0
dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0
dXJuIElNUEwtPm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHI6KE5TU3RyaW5nICop
bmV3Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgSU1QTC0+c2V0Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIo
bmV3Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIsIGVjKTsKLSAgICBXZWJDb3Jl
OjpyYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChCT09MKW5vbmRldGVybWluaXN0aWNaZXJv
QXJnRnVuY3Rpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgcmV0dXJuIElNUEwtPm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oKTsKLX0K
LQotQGVuZAotCi1XZWJDb3JlOjpUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY29yZShET01UZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE5vbmRldGVybWluaXN0aWMqPih3cmFwcGVyLT5faW50ZXJu
YWwpIDogMDsKLX0KLQotRE9NVGVzdE5vbmRldGVybWluaXN0aWMgKmtpdChXZWJDb3JlOjpUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyogdmFsdWUpCi17Ci0gICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNo
ZWNrUm91bmRPbmUoKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IGlmIChET01UZXN0Tm9uZGV0ZXJtaW5pc3RpYyAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFs
dWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAg
IERPTVRlc3ROb25kZXRlcm1pbmlzdGljICp3cmFwcGVyID0gW1tET01UZXN0Tm9uZGV0ZXJtaW5p
c3RpYyBhbGxvY10gX2luaXRdOwotICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7Ci0gICAgdmFsdWUtPnJlZigpOwotICAg
IGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRv
cmVsZWFzZV07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0Tm9uZGV0ZXJtaW5pc3RpY0ludGVybmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9uZGV0ZXJtaW5pc3RpY0lu
dGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmYzJlYTVkNWZmMGRmNDJi
ODllNmFkNWVkNDllNGFhNjcxZDI3Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE5vbmRldGVybWluaXN0aWNJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3ROb25kZXRlcm1pbmlzdGlj
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3ROb25kZXRlcm1pbmlzdGljOwot
fQotCi1XRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY29yZShE
T01UZXN0Tm9uZGV0ZXJtaW5pc3RpYyAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTVRlc3ROb25kZXRl
cm1pbmlzdGljICpraXQoV2ViQ29yZTo6VGVzdE5vbmRldGVybWluaXN0aWMqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJkMDQxNDBmYTgwMzE5OWEwYzFjYzgz
MTg4YTAwYmMyMDYyNDJlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgotCi1AY2xhc3MgRE9NRGljdGlvbmFy
eTsKLUBjbGFzcyBET01Eb2N1bWVudDsKLUBjbGFzcyBET01TVkdEb2N1bWVudDsKLUBjbGFzcyBE
T01TVkdQb2ludDsKLUBjbGFzcyBET01UZXN0RGljdGlvbmFyeTsKLUBjbGFzcyBET01UZXN0RW51
bVR5cGU7Ci1AY2xhc3MgRE9NVGVzdE5vZGU7Ci1AY2xhc3MgRE9NVGVzdE9iajsKLUBjbGFzcyBE
T01UZXN0T2JqZWN0QUNvbnN0cnVjdG9yOwotQGNsYXNzIERPTVRlc3RPYmplY3RCQ29uc3RydWN0
b3I7Ci1AY2xhc3MgRE9NVGVzdE9iamVjdENDb25zdHJ1Y3RvcjsKLUBjbGFzcyBET01UZXN0U3Vi
T2JqQ29uc3RydWN0b3I7Ci1AY2xhc3MgRE9NYW55OwotQGNsYXNzIE5TU3RyaW5nOwotQHByb3Rv
Y29sIERPTUV2ZW50TGlzdGVuZXI7Ci1AcHJvdG9jb2wgRE9NWFBhdGhOU1Jlc29sdmVyOwotCi1l
bnVtIHsKLSAgICBET01fQ09OU1RfVkFMVUVfMCA9IDAsCi0gICAgRE9NX0NPTlNUX1ZBTFVFXzEg
PSAxLAotICAgIERPTV9DT05TVF9WQUxVRV8yID0gMiwKLSAgICBET01fQ09OU1RfVkFMVUVfNCA9
IDQsCi0gICAgRE9NX0NPTlNUX1ZBTFVFXzggPSA4LAotICAgIERPTV9DT05TVF9WQUxVRV85ID0g
LTEsCi0gICAgRE9NX0NPTlNUX1ZBTFVFXzExID0gMHhmZmZmZmZmZiwKLSAgICBET01fQ09OU1Rf
VkFMVUVfMTIgPSAweDAxLAotICAgIERPTV9DT05TVF9WQUxVRV8xMyA9IDBYMjAsCi0gICAgRE9N
X0NPTlNUX1ZBTFVFXzE0ID0gMHgxYWJjLAotICAgIERPTV9DT05TVF9KQVZBU0NSSVBUID0gMTUs
Ci0gICAgRE9NX3JlYWRvbmx5ID0gMAotfSBXRUJLSVRfRU5VTV9BVkFJTEFCTEVfTUFDKDk4NzZf
NSk7Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JU
IEBpbnRlcmZhY2UgRE9NVGVzdE9iaiA6IERPTU9iamVjdAotQHByb3BlcnR5IChyZWFkb25seSkg
aW50IHJlYWRPbmx5TG9uZ0F0dHI7Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqcmVhZE9ubHlTdHJpbmdBdHRyOwotQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01U
ZXN0T2JqICpyZWFkT25seVRlc3RPYmpBdHRyOwotQHByb3BlcnR5IChzdHJvbmcpIERPTVRlc3RT
dWJPYmpDb25zdHJ1Y3RvciAqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmc7Ci1AcHJvcGVydHkg
Y2hhciBieXRlQXR0cjsKLUBwcm9wZXJ0eSB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cjsKLUBwcm9w
ZXJ0eSBzaG9ydCBzaG9ydEF0dHI7Ci1AcHJvcGVydHkgc2hvcnQgY2xhbXBlZFNob3J0QXR0cjsK
LUBwcm9wZXJ0eSBzaG9ydCBlbmZvcmNlUmFuZ2VTaG9ydEF0dHI7Ci1AcHJvcGVydHkgdW5zaWdu
ZWQgc2hvcnQgdW5zaWduZWRTaG9ydEF0dHI7Ci1AcHJvcGVydHkgaW50IGxvbmdBdHRyOwotQHBy
b3BlcnR5IGxvbmcgbG9uZyBsb25nTG9uZ0F0dHI7Ci1AcHJvcGVydHkgdW5zaWduZWQgbG9uZyBs
b25nIHVuc2lnbmVkTG9uZ0xvbmdBdHRyOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc3Ry
aW5nQXR0cjsKLUBwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICp0ZXN0T2JqQXR0cjsKLUBw
cm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICp0ZXN0TnVsbGFibGVPYmpBdHRyOwotQHByb3Bl
cnR5IChzdHJvbmcpIERPTVRlc3RPYmogKmxlbmllbnRUZXN0T2JqQXR0cjsKLUBwcm9wZXJ0eSAo
cmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp1bmZvcmdlYWJsZUF0dHI7Ci1AcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICpzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZzsKLUBwcm9w
ZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICpYTUxPYmpBdHRyOwotQHByb3BlcnR5IEJPT0wgY3Jl
YXRlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqcmVmbGVjdGVkU3RyaW5nQXR0cjsKLUBw
cm9wZXJ0eSBpbnQgcmVmbGVjdGVkSW50ZWdyYWxBdHRyOwotQHByb3BlcnR5IHVuc2lnbmVkIHJl
ZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyOwotQHByb3BlcnR5IEJPT0wgcmVmbGVjdGVkQm9v
bGVhbkF0dHI7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpyZWZsZWN0ZWRVUkxBdHRyOwot
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqcmVmbGVjdGVkU3RyaW5nQXR0cjsKLUBwcm9wZXJ0
eSBpbnQgcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyOwotQHByb3BlcnR5IEJPT0wgcmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHI7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpyZWZsZWN0
ZWRDdXN0b21VUkxBdHRyOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZW5hYmxlZEF0UnVu
dGltZUF0dHJpYnV0ZTsKLUBwcm9wZXJ0eSBpbnQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb247Ci1A
cHJvcGVydHkgaW50IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2U7Ci1AcHJvcGVy
dHkgaW50IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOwotQHByb3BlcnR5IGludCBhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb247Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbjsKLUBwcm9wZXJ0eSBpbnQgY3VzdG9tQXR0cjsK
LUBwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICpqc0J1aWx0aW5BdHRyaWJ1dGU7Ci1AcHJv
cGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTVRlc3RPYmogKmpzQnVpbHRpblJlYWRPbmx5QXR0
cmlidXRlOwotQHByb3BlcnR5IGludCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGU7Ci1AcHJvcGVy
dHkgaW50IHdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlOwotQHByb3BlcnR5
IChzdHJvbmcpIERPTVRlc3RPYmogKndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
OwotQHByb3BlcnR5IChzdHJvbmcpIERPTVRlc3RPYmogKndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlczsKLUBwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczsKLUBwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2Jq
ICp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlOwotQHBy
b3BlcnR5IChzdHJvbmcpIERPTVRlc3RPYmogKndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM7Ci1AcHJvcGVydHkgKHN0cm9uZykgRE9NVGVzdE9i
aiAqd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGU7Ci1AcHJvcGVydHkgKHN0cm9uZykgRE9NVGVzdE9iaiAqd2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZTsKLUBwcm9wZXJ0eSBpbnQgY29uZGl0aW9uYWxBdHRyMTsK
LUBwcm9wZXJ0eSBpbnQgY29uZGl0aW9uYWxBdHRyMjsKLUBwcm9wZXJ0eSBpbnQgY29uZGl0aW9u
YWxBdHRyMzsKLUBwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqZWN0QUNvbnN0cnVjdG9yICpj
b25kaXRpb25hbEF0dHI0OwotQHByb3BlcnR5IChzdHJvbmcpIERPTVRlc3RPYmplY3RCQ29uc3Ry
dWN0b3IgKmNvbmRpdGlvbmFsQXR0cjU7Ci1AcHJvcGVydHkgKHN0cm9uZykgRE9NVGVzdE9iamVj
dENDb25zdHJ1Y3RvciAqY29uZGl0aW9uYWxBdHRyNjsKLUBwcm9wZXJ0eSAoc3Ryb25nKSBET01h
bnkgKmFueUF0dHJpYnV0ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRG9jdW1l
bnQgKmNvbnRlbnREb2N1bWVudDsKLUBwcm9wZXJ0eSAoc3Ryb25nKSBET01TVkdQb2ludCAqbXV0
YWJsZVBvaW50OwotQHByb3BlcnR5IChzdHJvbmcpIERPTVNWR1BvaW50ICppbW11dGFibGVQb2lu
dDsKLUBwcm9wZXJ0eSBpbnQgc3RyYXdiZXJyeTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBk
ZXNjcmlwdGlvbk5hbWU7Ci1AcHJvcGVydHkgaW50IGlkTmFtZTsKLUBwcm9wZXJ0eSAocmVhZG9u
bHksIGNvcHkpIE5TU3RyaW5nICpoYXNoTmFtZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBy
ZXBsYWNlYWJsZUF0dHJpYnV0ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGRvdWJsZSBudWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBudWxsYWJsZUxvbmdB
dHRyaWJ1dGU7Ci1AcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIG51bGxhYmxlQm9vbGVhbkF0dHJp
YnV0ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpudWxsYWJsZVN0cmlu
Z0F0dHJpYnV0ZTsKLUBwcm9wZXJ0eSBpbnQgbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU7
Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmli
dXRlOwotQHByb3BlcnR5IGludCBudWxsYWJsZVN0cmluZ1ZhbHVlOwotQHByb3BlcnR5IChyZWFk
b25seSwgY29weSkgTlNTdHJpbmcgKmF0dHJpYnV0ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0
cm9uZykgRE9NVGVzdE5vZGUgKnB1dEZvcndhcmRzQXR0cmlidXRlOwotQHByb3BlcnR5IChyZWFk
b25seSwgc3Ryb25nKSBET01UZXN0Tm9kZSAqcHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZTsK
LQotLSAodm9pZCl2b2lkTWV0aG9kOwotLSAodm9pZCl2b2lkTWV0aG9kV2l0aEFyZ3M6KGludCls
b25nQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2Jq
QXJnOwotLSAoY2hhcilieXRlTWV0aG9kOwotLSAoY2hhcilieXRlTWV0aG9kV2l0aEFyZ3M6KGNo
YXIpYnl0ZUFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAq
KW9iakFyZzsKLS0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2Q7Ci0tICh1bnNpZ25lZCBjaGFy
KW9jdGV0TWV0aG9kV2l0aEFyZ3M6KHVuc2lnbmVkIGNoYXIpb2N0ZXRBcmcgc3RyQXJnOihOU1N0
cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7Ci0tIChpbnQpbG9uZ01l
dGhvZDsKLS0gKGludClsb25nTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNT
dHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwotLSAoRE9NVGVzdE9i
aiAqKW9iak1ldGhvZDsKLS0gKERPTVRlc3RPYmogKilvYmpNZXRob2RXaXRoQXJnczooaW50KWxv
bmdBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpB
cmc7Ci0tIChpbnQpdW5mb3JnZWFibGVNZXRob2Q7Ci0tICh2b2lkKW1ldGhvZFdpdGhBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nOihOU1N0cmluZyAqKWFyZzsKLS0gKHZvaWQpbWV0aG9kV2l0
aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcjooaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pcmVzb2x2
ZXI7Ci0tIChOU1N0cmluZyAqKW51bGxhYmxlU3RyaW5nTWV0aG9kOwotLSAoTlNTdHJpbmcgKilu
dWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZDsKLS0gKE5TU3RyaW5nICopbnVsbGFibGVTdHJpbmdT
cGVjaWFsTWV0aG9kOih1bnNpZ25lZClpbmRleDsKLS0gKHZvaWQpbWV0aG9kV2l0aEVudW1Bcmc6
KERPTVRlc3RFbnVtVHlwZSAqKWVudW1Bcmc7Ci0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEVu
dW1Bcmc6KERPTVRlc3RFbnVtVHlwZSAqKWVudW1Bcmc7Ci0tICh2b2lkKW1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWU6KERPTVRlc3RFbnVtVHlwZSAqKWVudW1Bcmc7Ci0t
IChET01UZXN0T2JqICopbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93czooTlNTdHJp
bmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwotLSAodm9pZClzZXJpYWxp
emVkVmFsdWU6KE5TU3RyaW5nICopc2VyaWFsaXplZEFyZzsKLS0gKHZvaWQpb3B0aW9uc09iamVj
dDooRE9NRGljdGlvbmFyeSAqKW9vIG9vbzooRE9NRGljdGlvbmFyeSAqKW9vbzsKLS0gKHZvaWQp
bWV0aG9kV2l0aEV4Y2VwdGlvbjsKLS0gKHZvaWQpbWV0aG9kV2l0aEV4Y2VwdGlvbldpdGhNZXNz
YWdlOwotLSAodm9pZCljdXN0b21NZXRob2Q7Ci0tICh2b2lkKWN1c3RvbU1ldGhvZFdpdGhBcmdz
OihpbnQpbG9uZ0FyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9i
aiAqKW9iakFyZzsKLS0gKE5TU3RyaW5nICopcHVibGljQW5kUHJpdmF0ZU1ldGhvZDooTlNTdHJp
bmcgKilhcmd1bWVudDsKLS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBl
IGxpc3RlbmVyOihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgdXNlQ2FwdHVyZTooQk9P
TCl1c2VDYXB0dXJlOwotLSAodm9pZClyZW1vdmVFdmVudExpc3RlbmVyOihOU1N0cmluZyAqKXR5
cGUgbGlzdGVuZXI6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0ZW5lciB1c2VDYXB0dXJlOihC
T09MKXVzZUNhcHR1cmU7Ci0tICh2b2lkKXdpdGhTY3JpcHRTdGF0ZVZvaWQ7Ci0tIChET01UZXN0
T2JqICopd2l0aFNjcmlwdFN0YXRlT2JqOwotLSAodm9pZCl3aXRoU2NyaXB0U3RhdGVWb2lkRXhj
ZXB0aW9uOwotLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbjsKLS0g
KHZvaWQpd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0tICh2b2lkKXdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGU7Ci0tIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbjsKLS0gKERPTVRlc3RPYmog
Kil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlczsKLS0g
KHZvaWQpd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjazsKLS0gKHZvaWQpd2l0aERvY3Vt
ZW50QXJndW1lbnQ7Ci0tICh2b2lkKXdpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50OwotLSAodm9p
ZCl3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQ7Ci0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEFy
ZzooaW50KW9wdDsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVl
OihpbnQpb3B0OwotLSAodm9pZCltZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFy
ZzooaW50KW5vbk9wdCBvcHQ6KGludClvcHQ7Ci0tICh2b2lkKW1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJnczooaW50KW5vbk9wdCBvcHQxOihpbnQpb3B0MSBvcHQyOihp
bnQpb3B0MjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nOihOU1N0cmluZyAqKXN0
cjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nOihOU1N0cmluZyAqKXN0
cjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlOihOU1N0
cmluZyAqKXN0cjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVm
YXVsdFZhbHVlOihOU1N0cmluZyAqKXN0cjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNOdWxsOihOU1N0cmluZyAqKXN0cjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNVbmRlZmluZWQ6KE5TU3RyaW5nICopc3RyOwotLSAodm9pZCltZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc051bGw6KE5TU3RyaW5nICopc3RyOwotLSAodm9pZCltZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nOihOU1N0cmluZyAqKXN0cjsKLS0gKHZvaWQpbWV0
aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZzooTlNTdHJpbmcgKilzdHI7
Ci0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOOihkb3VibGUpbnVtYmVyOwot
LSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOOihmbG9hdCludW1iZXI7Ci0tICh2
b2lkKW1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nOihsb25nIGxvbmcpbnVtYmVyOwotLSAodm9p
ZCltZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybzoobG9uZyBsb25nKW51bWJlcjsKLS0g
KHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZzoodW5zaWduZWQgbG9uZyBs
b25nKW51bWJlcjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lz
WmVybzoodW5zaWduZWQgbG9uZyBsb25nKW51bWJlcjsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlv
bmFsQm9vbGVhbjooQk9PTCliOwotLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNG
YWxzZTooQk9PTCliOwotLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxBbnk6KERPTWFueSAqKWE7
Ci0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcjooRE9NVGVzdE9iaiAq
KW9iajsKLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsOihE
T01UZXN0T2JqICopb2JqOwotLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2
ZXI6KGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KXJlc29sdmVyOwotLSAodm9pZCljbGFzc01ldGhv
ZDsKLS0gKGludCljbGFzc01ldGhvZFdpdGhPcHRpb25hbDooaW50KWFyZzsKLS0gKHZvaWQpY2xh
c3NNZXRob2QyOihpbnQpYXJnOwotLSAodm9pZCljbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2U6
KHVuc2lnbmVkIHNob3J0KW9iakFyZ3NTaG9ydCBvYmpBcmdzTG9uZzoodW5zaWduZWQpb2JqQXJn
c0xvbmc7Ci0tIChET01TVkdEb2N1bWVudCAqKWdldFNWR0RvY3VtZW50OwotLSAodm9pZCljb252
ZXJ0MTooRE9NVGVzdE5vZGUgKil2YWx1ZTsKLS0gKHZvaWQpY29udmVydDI6KERPTVRlc3ROb2Rl
ICopdmFsdWU7Ci0tICh2b2lkKWNvbnZlcnQzOihOU1N0cmluZyAqKXZhbHVlOwotLSAodm9pZClj
b252ZXJ0NDooTlNTdHJpbmcgKil2YWx1ZTsKLS0gKERPTVNWR1BvaW50ICopbXV0YWJsZVBvaW50
RnVuY3Rpb247Ci0tIChET01TVkdQb2ludCAqKWltbXV0YWJsZVBvaW50RnVuY3Rpb247Ci0tICh2
b2lkKW9yYW5nZTsKLS0gKHZvaWQpYW55OihmbG9hdClhIGI6KGludCliOwotLSAodm9pZClhdHRh
Y2hTaGFkb3dSb290OihET01UZXN0RGljdGlvbmFyeSAqKWluaXQ7Ci1AZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1t
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E4NDc3NGU3NmFmNTFlNDIyNTkwODBi
ZTIzZDYyYWUyYmQ5MjZmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTYzNyArMCwwIEBACi0vKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NVGVzdE9i
ai5oIgotCi0jaW1wb3J0ICJET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKLSNpbXBvcnQgIkRP
TURpY3Rpb25hcnlJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NRG9jdW1lbnRJbnRlcm5hbC5oIgot
I2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJET01TVkdEb2N1bWVudEludGVy
bmFsLmgiCi0jaW1wb3J0ICJET01TVkdQb2ludEludGVybmFsLmgiCi0jaW1wb3J0ICJET01UZXN0
RGljdGlvbmFyeUludGVybmFsLmgiCi0jaW1wb3J0ICJET01UZXN0RW51bVR5cGVJbnRlcm5hbC5o
IgotI2ltcG9ydCAiRE9NVGVzdE5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVzdE9iaklu
dGVybmFsLmgiCi0jaW1wb3J0ICJET01UZXN0T2JqZWN0QUNvbnN0cnVjdG9ySW50ZXJuYWwuaCIK
LSNpbXBvcnQgIkRPTVRlc3RPYmplY3RCQ29uc3RydWN0b3JJbnRlcm5hbC5oIgotI2ltcG9ydCAi
RE9NVGVzdE9iamVjdENDb25zdHJ1Y3RvckludGVybmFsLmgiCi0jaW1wb3J0ICJET01UZXN0U3Vi
T2JqQ29uc3RydWN0b3JJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NYW55SW50ZXJuYWwuaCIKLSNp
bXBvcnQgIkRpY3Rpb25hcnkuaCIKLSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJFdmVu
dExpc3RlbmVyLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCAiSFRN
TE5hbWVzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIk9i
akNFdmVudExpc3RlbmVyLmgiCi0jaW1wb3J0ICJTVkdEb2N1bWVudC5oIgotI2ltcG9ydCAiU1ZH
UG9pbnQuaCIKLSNpbXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2ltcG9ydCAiVGVz
dERpY3Rpb25hcnkuaCIKLSNpbXBvcnQgIlRlc3RFbnVtVHlwZS5oIgotI2ltcG9ydCAiVGVzdE5v
ZGUuaCIKLSNpbXBvcnQgIlRlc3RPYmouaCIKLSNpbXBvcnQgIlRlc3RPYmplY3RBQ29uc3RydWN0
b3IuaCIKLSNpbXBvcnQgIlRlc3RPYmplY3RCQ29uc3RydWN0b3IuaCIKLSNpbXBvcnQgIlRlc3RP
YmplY3RDQ29uc3RydWN0b3IuaCIKLSNpbXBvcnQgIlRlc3RTdWJPYmpDb25zdHJ1Y3Rvci5oIgot
I2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKLSNpbXBvcnQgIlVSTC5oIgotI2ltcG9ydCAiV2ViQ29y
ZU9iakNFeHRyYXMuaCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBv
cnQgIlhQYXRoTlNSZXNvbHZlci5oIgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0T2JqKj4oX2ludGVybmFsKQotCi1A
aW1wbGVtZW50YXRpb24gRE9NVGVzdE9iagotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAo
V2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RPYmogY2xh
c3NdLCBzZWxmKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAg
ICAgSU1QTC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKGludClyZWFk
T25seUxvbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBJTVBMLT5yZWFkT25seUxvbmdBdHRyKCk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopcmVhZE9ubHlTdHJpbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5yZWFkT25seVN0cmluZ0F0dHIoKTsKLX0KLQot
LSAoRE9NVGVzdE9iaiAqKXJlYWRPbmx5VGVzdE9iakF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT5yZWFkT25seVRlc3RPYmpBdHRyKCkpKTsKLX0KLQotLSAoRE9NVGVzdFN1Yk9iakNvbnN0cnVj
dG9yICopVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT50
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZygpKSk7Ci19Ci0KLS0gKHZvaWQpc2V0VGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmc6KERPTVRlc3RTdWJPYmpDb25zdHJ1Y3RvciAqKW5ld1Rlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIEFTU0VSVChuZXdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyk7Ci0KLSAg
ICBpZiAoIWNvcmUobmV3VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcpKQotICAgICAgICBXZWJD
b3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIElNUEwtPnNldFRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nKCpjb3JlKG5ld1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKSk7Ci19
Ci0KLS0gKGNoYXIpYnl0ZUF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmJ5dGVBdHRyKCk7Ci19Ci0KLS0gKHZvaWQpc2V0
Qnl0ZUF0dHI6KGNoYXIpbmV3Qnl0ZUF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0Qnl0ZUF0dHIobmV3Qnl0ZUF0dHIpOwotfQot
Ci0tICh1bnNpZ25lZCBjaGFyKW9jdGV0QXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+b2N0ZXRBdHRyKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0T2N0ZXRBdHRyOih1bnNpZ25lZCBjaGFyKW5ld09jdGV0QXR0cgotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRPY3RldEF0
dHIobmV3T2N0ZXRBdHRyKTsKLX0KLQotLSAoc2hvcnQpc2hvcnRBdHRyCi17Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5zaG9ydEF0
dHIoKTsKLX0KLQotLSAodm9pZClzZXRTaG9ydEF0dHI6KHNob3J0KW5ld1Nob3J0QXR0cgotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRT
aG9ydEF0dHIobmV3U2hvcnRBdHRyKTsKLX0KLQotLSAoc2hvcnQpY2xhbXBlZFNob3J0QXR0cgot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4g
SU1QTC0+Y2xhbXBlZFNob3J0QXR0cigpOwotfQotCi0tICh2b2lkKXNldENsYW1wZWRTaG9ydEF0
dHI6KHNob3J0KW5ld0NsYW1wZWRTaG9ydEF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0Q2xhbXBlZFNob3J0QXR0cihuZXdDbGFt
cGVkU2hvcnRBdHRyKTsKLX0KLQotLSAoc2hvcnQpZW5mb3JjZVJhbmdlU2hvcnRBdHRyCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBM
LT5lbmZvcmNlUmFuZ2VTaG9ydEF0dHIoKTsKLX0KLQotLSAodm9pZClzZXRFbmZvcmNlUmFuZ2VT
aG9ydEF0dHI6KHNob3J0KW5ld0VuZm9yY2VSYW5nZVNob3J0QXR0cgotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRFbmZvcmNlUmFuZ2VT
aG9ydEF0dHIobmV3RW5mb3JjZVJhbmdlU2hvcnRBdHRyKTsKLX0KLQotLSAodW5zaWduZWQgc2hv
cnQpdW5zaWduZWRTaG9ydEF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPnVuc2lnbmVkU2hvcnRBdHRyKCk7Ci19Ci0KLS0g
KHZvaWQpc2V0VW5zaWduZWRTaG9ydEF0dHI6KHVuc2lnbmVkIHNob3J0KW5ld1Vuc2lnbmVkU2hv
cnRBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPnNldFVuc2lnbmVkU2hvcnRBdHRyKG5ld1Vuc2lnbmVkU2hvcnRBdHRyKTsKLX0KLQot
LSAoaW50KWxvbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIHJldHVybiBJTVBMLT5sb25nQXR0cigpOwotfQotCi0tICh2b2lkKXNldExvbmdB
dHRyOihpbnQpbmV3TG9uZ0F0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0TG9uZ0F0dHIobmV3TG9uZ0F0dHIpOwotfQotCi0tIChs
b25nIGxvbmcpbG9uZ0xvbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5sb25nTG9uZ0F0dHIoKTsKLX0KLQotLSAodm9p
ZClzZXRMb25nTG9uZ0F0dHI6KGxvbmcgbG9uZyluZXdMb25nTG9uZ0F0dHIKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0TG9uZ0xvbmdB
dHRyKG5ld0xvbmdMb25nQXR0cik7Ci19Ci0KLS0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1bnNpZ25l
ZExvbmdMb25nQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4gSU1QTC0+dW5zaWduZWRMb25nTG9uZ0F0dHIoKTsKLX0KLQotLSAodm9p
ZClzZXRVbnNpZ25lZExvbmdMb25nQXR0cjoodW5zaWduZWQgbG9uZyBsb25nKW5ld1Vuc2lnbmVk
TG9uZ0xvbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKG5ld1Vuc2lnbmVkTG9uZ0xvbmdB
dHRyKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzdHJpbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5zdHJpbmdBdHRyKCk7
Ci19Ci0KLS0gKHZvaWQpc2V0U3RyaW5nQXR0cjooTlNTdHJpbmcgKiluZXdTdHJpbmdBdHRyCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNl
dFN0cmluZ0F0dHIobmV3U3RyaW5nQXR0cik7Ci19Ci0KLS0gKERPTVRlc3RPYmogKil0ZXN0T2Jq
QXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBy
ZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnRlc3RPYmpBdHRyKCkpKTsKLX0KLQotLSAodm9p
ZClzZXRUZXN0T2JqQXR0cjooRE9NVGVzdE9iaiAqKW5ld1Rlc3RPYmpBdHRyCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIEFTU0VSVChuZXdUZXN0T2Jq
QXR0cik7Ci0KLSAgICBpZiAoIWNvcmUobmV3VGVzdE9iakF0dHIpKQotICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIElNUEwtPnNldFRlc3RPYmpBdHRyKCpj
b3JlKG5ld1Rlc3RPYmpBdHRyKSk7Ci19Ci0KLS0gKERPTVRlc3RPYmogKil0ZXN0TnVsbGFibGVP
YmpBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+dGVzdE51bGxhYmxlT2JqQXR0cigpKSk7Ci19
Ci0KLS0gKHZvaWQpc2V0VGVzdE51bGxhYmxlT2JqQXR0cjooRE9NVGVzdE9iaiAqKW5ld1Rlc3RO
dWxsYWJsZU9iakF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgQVNTRVJUKG5ld1Rlc3ROdWxsYWJsZU9iakF0dHIpOwotCi0gICAgSU1QTC0+c2V0
VGVzdE51bGxhYmxlT2JqQXR0cihjb3JlKG5ld1Rlc3ROdWxsYWJsZU9iakF0dHIpKTsKLX0KLQot
LSAoRE9NVGVzdE9iaiAqKWxlbmllbnRUZXN0T2JqQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmxlbmllbnRUZXN0T2JqQXR0cigpKSk7Ci19Ci0KLS0gKHZvaWQpc2V0TGVuaWVudFRlc3RPYmpB
dHRyOihET01UZXN0T2JqICopbmV3TGVuaWVudFRlc3RPYmpBdHRyCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIEFTU0VSVChuZXdMZW5pZW50VGVzdE9i
akF0dHIpOwotCi0gICAgaWYgKCFjb3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikpCi0gICAgICAg
IFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1QTC0+c2V0TGVuaWVu
dFRlc3RPYmpBdHRyKCpjb3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikpOwotfQotCi0tIChOU1N0
cmluZyAqKXVuZm9yZ2VhYmxlQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+dW5mb3JnZWFibGVBdHRyKCk7Ci19Ci0KLS0g
KE5TU3RyaW5nICopc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPnN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCk7Ci19Ci0KLS0gKHZvaWQpc2V0U3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc6KE5TU3RyaW5nICopbmV3U3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0U3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcobmV3U3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOwotfQotCi0t
IChET01UZXN0T2JqICopWE1MT2JqQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnhtbE9iakF0
dHIoKSkpOwotfQotCi0tICh2b2lkKXNldFhNTE9iakF0dHI6KERPTVRlc3RPYmogKiluZXdYTUxP
YmpBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IEFTU0VSVChuZXdYTUxPYmpBdHRyKTsKLQotICAgIGlmICghY29yZShuZXdYTUxPYmpBdHRyKSkK
LSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5z
ZXRYTUxPYmpBdHRyKCpjb3JlKG5ld1hNTE9iakF0dHIpKTsKLX0KLQotLSAoQk9PTCljcmVhdGUK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IElNUEwtPmlzQ3JlYXRlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0Q3JlYXRlOihCT09MKW5ld0NyZWF0
ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5zZXRDcmVhdGUobmV3Q3JlYXRlKTsKLX0KLQotLSAoTlNTdHJpbmcgKilyZWZsZWN0ZWRTdHJp
bmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBJTVBMLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRz
dHJpbmdhdHRyQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0UmVmbGVjdGVkU3RyaW5nQXR0cjooTlNT
dHJpbmcgKiluZXdSZWZsZWN0ZWRTdHJpbmdBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0ciwgbmV3
UmVmbGVjdGVkU3RyaW5nQXR0cik7Ci19Ci0KLS0gKGludClyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IElNUEwtPmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVk
aW50ZWdyYWxhdHRyQXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0UmVmbGVjdGVkSW50ZWdyYWxBdHRy
OihpbnQpbmV3UmVmbGVjdGVkSW50ZWdyYWxBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgbmV3UmVmbGVjdGVkSW50
ZWdyYWxBdHRyKTsKLX0KLQotLSAodW5zaWduZWQpcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0
dXJuIElNUEwtPmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpOwotfQotCi0tICh2b2lkKXNldFJl
ZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyOih1bnNpZ25lZCluZXdSZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBJTVBMLT5zZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyLCBuZXdSZWZsZWN0ZWRVbnNp
Z25lZEludGVncmFsQXR0cik7Ci19Ci0KLS0gKEJPT0wpcmVmbGVjdGVkQm9vbGVhbkF0dHIKLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElN
UEwtPmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpOwotfQotCi0tICh2b2lkKXNldFJlZmxlY3RlZEJv
b2xlYW5BdHRyOihCT09MKW5ld1JlZmxlY3RlZEJvb2xlYW5BdHRyCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldEJvb2xlYW5BdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIsIG5ld1JlZmxl
Y3RlZEJvb2xlYW5BdHRyKTsKLX0KLQotLSAoTlNTdHJpbmcgKilyZWZsZWN0ZWRVUkxBdHRyCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJ
TVBMLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRy
QXR0cik7Ci19Ci0KLS0gKHZvaWQpc2V0UmVmbGVjdGVkVVJMQXR0cjooTlNTdHJpbmcgKiluZXdS
ZWZsZWN0ZWRVUkxBdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIElNUEwtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgbmV3UmVmbGVjdGVkVVJMQXR0cik7
Ci19Ci0KLS0gKE5TU3RyaW5nICopcmVmbGVjdGVkU3RyaW5nQXR0cgotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+Z2V0QXR0cmli
dXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKTsKLX0K
LQotLSAodm9pZClzZXRSZWZsZWN0ZWRTdHJpbmdBdHRyOihOU1N0cmluZyAqKW5ld1JlZmxlY3Rl
ZFN0cmluZ0F0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgSU1QTC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciwgbmV3UmVmbGVjdGVkU3RyaW5n
QXR0cik7Ci19Ci0KLS0gKGludClyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmdl
dEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVn
cmFsQXR0ckF0dHIpOwotfQotCi0tICh2b2lkKXNldFJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
cjooaW50KW5ld1JlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cgotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRJbnRlZ3JhbEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyLCBuZXdS
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOwotfQotCi0tIChCT09MKXJlZmxlY3RlZEN1c3Rv
bUJvb2xlYW5BdHRyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBJTVBMLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cik7Ci19Ci0KLS0g
KHZvaWQpc2V0UmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHI6KEJPT0wpbmV3UmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgSU1QTC0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1
c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIG5ld1JlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
KTsKLX0KLQotLSAoTlNTdHJpbmcgKilyZWZsZWN0ZWRDdXN0b21VUkxBdHRyCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5nZXRV
UkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIp
OwotfQotCi0tICh2b2lkKXNldFJlZmxlY3RlZEN1c3RvbVVSTEF0dHI6KE5TU3RyaW5nICopbmV3
UmVmbGVjdGVkQ3VzdG9tVVJMQXR0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBuZXdSZWZsZWN0
ZWRDdXN0b21VUkxBdHRyKTsKLX0KLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0tIChOU1N0
cmluZyAqKWVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGUoKTsKLX0KLQotLSAodm9pZClzZXRFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlOihO
U1N0cmluZyAqKW5ld0VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0RW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZShuZXdFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKTsKLX0KLSNlbmRpZgotCi0t
IChpbnQpYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaW50IHJlc3VsdCA9IElNUEwtPmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKLSAgICBX
ZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0g
KHZvaWQpc2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb246KGludCluZXdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBJTVBMLT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihuZXdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbik7Ci19Ci0KLS0gKGludClhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJ
TVBMLT5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKCk7Ci19Ci0KLS0gKHZvaWQp
c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZTooaW50KW5ld0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVz
c2FnZShuZXdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKTsKLX0KLQotLSAoaW50
KWF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigp
OwotfQotCi0tICh2b2lkKXNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOihpbnQpbmV3QXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24obmV3QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24sIGVjKTsK
LSAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChpbnQpYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZSgpOwotfQotCi0tICh2b2lkKXNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2U6KGludCluZXdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldEF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UobmV3QXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25XaXRoTWVzc2FnZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3RyaW5nQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9
IElNUEwtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKLSAgICBXZWJDb3JlOjpy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZvaWQpc2V0
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb246KE5TU3RyaW5nICopbmV3U3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgSU1QTC0+c2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmV3U3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOwotfQotCi0tIChOU1N0cmluZyAqKXN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bigpOwotfQotCi0tICh2b2lkKXNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOihOU1N0
cmluZyAqKW5ld1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIElNUEwtPnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5ld1N0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uLCBlYyk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRP
TUVycm9yKGVjKTsKLX0KLQotLSAoaW50KWN1c3RvbUF0dHIKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmN1c3RvbUF0dHIoKTsK
LX0KLQotLSAodm9pZClzZXRDdXN0b21BdHRyOihpbnQpbmV3Q3VzdG9tQXR0cgotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRDdXN0b21B
dHRyKG5ld0N1c3RvbUF0dHIpOwotfQotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjQpCi0tIChET01U
ZXN0T2JqICopanNCdWlsdGluQXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+anNCdWls
dGluQXR0cmlidXRlKCkpKTsKLX0KLQotLSAodm9pZClzZXRKc0J1aWx0aW5BdHRyaWJ1dGU6KERP
TVRlc3RPYmogKiluZXdKc0J1aWx0aW5BdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgQVNTRVJUKG5ld0pzQnVpbHRpbkF0dHJpYnV0ZSk7
Ci0KLSAgICBpZiAoIWNvcmUobmV3SnNCdWlsdGluQXR0cmlidXRlKSkKLSAgICAgICAgV2ViQ29y
ZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRKc0J1aWx0aW5BdHRy
aWJ1dGUoKmNvcmUobmV3SnNCdWlsdGluQXR0cmlidXRlKSk7Ci19Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShDb25kaXRpb240KQotLSAoRE9NVGVzdE9iaiAqKWpzQnVpbHRpblJlYWRPbmx5QXR0cmli
dXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJl
dHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+anNCdWlsdGluUmVhZE9ubHlBdHRyaWJ1dGUoKSkp
OwotfQotI2VuZGlmCi0KLS0gKGludCl3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPndp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpOwotfQotCi0tICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZTooaW50KW5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGUobmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKTsKLX0KLQotLSAoaW50
KXdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT53aXRoQ2FsbFdp
dGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSgpOwotfQotCi0tICh2b2lkKXNldFdpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlOihpbnQpbmV3V2l0aENhbGxXaXRoQW5kU2V0
dGVyQ2FsbFdpdGhBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRy
aWJ1dGUobmV3V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOwotfQotCi0t
IChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgpKSk7
Ci19Ci0KLS0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6KERP
TVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBBU1NFUlQobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwotCi0gICAgaWYgKCFjb3JlKG5ld1dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKSkKLSAgICAgICAgV2ViQ29yZTo6cmFp
c2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSgqY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZSkpOwotfQotCi0tIChET01UZXN0T2JqICopd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVRlc3RPYmogKnJlc3VsdCA9IGtp
dChXVEY6OmdldFB0cihJTVBMLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpKSk7
Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi0tICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9i
aiAqKW5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcwotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBBU1NFUlQobmV3V2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKTsKLQotICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigp
OwotICAgIElNUEwtPnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqY29yZShuZXdX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpKTsKLX0KLQotLSAoRE9NVGVzdE9iaiAqKXdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTVRlc3RPYmogKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhlYykpKTsKLSAgICBXZWJD
b3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKHZv
aWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RP
YmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcwotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBBU1NFUlQobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOwotCi0gICAgaWYgKCFjb3Jl
KG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKSkKLSAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykpOwotfQotCi0tIChET01UZXN0T2JqICopd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoKSkpOwotfQotCi0tICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKTsKLQotICAgIGlmICghY29yZShuZXdXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKSkKLSAgICAgICAgV2Vi
Q29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpjb3JlKG5ld1dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpKTsKLX0KLQotLSAoRE9N
VGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NVGVzdE9iaiAqcmVzdWx0
ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKXNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmog
KiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIEFT
U0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKTsKLQotICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSkKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBl
RXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpKTsKLX0KLQotLSAoRE9NVGVz
dE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKSkpOwotfQotCi0tICh2b2lkKXNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKTsKLQotICAgIGlmICghY29yZShuZXdXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkp
Ci0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1QTC0+
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUpKTsKLX0KLQotLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53aXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKLX0KLQotLSAodm9pZClzZXRX
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlOihET01UZXN0T2JqICopbmV3
V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZQotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBBU1NFUlQobmV3V2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk7Ci0KLSAgICBpZiAoIWNvcmUobmV3V2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSkpCi0gICAgICAgIFdlYkNvcmU6OnJh
aXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgqY29yZShuZXdXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlKSk7Ci19Ci0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLS0gKGludClj
b25kaXRpb25hbEF0dHIxCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIHJldHVybiBJTVBMLT5jb25kaXRpb25hbEF0dHIxKCk7Ci19Ci0KLS0gKHZvaWQp
c2V0Q29uZGl0aW9uYWxBdHRyMTooaW50KW5ld0NvbmRpdGlvbmFsQXR0cjEKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0Q29uZGl0aW9u
YWxBdHRyMShuZXdDb25kaXRpb25hbEF0dHIxKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKENv
bmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQotLSAoaW50KWNvbmRpdGlvbmFsQXR0cjIK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IElNUEwtPmNvbmRpdGlvbmFsQXR0cjIoKTsKLX0KLQotLSAodm9pZClzZXRDb25kaXRpb25hbEF0
dHIyOihpbnQpbmV3Q29uZGl0aW9uYWxBdHRyMgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRDb25kaXRpb25hbEF0dHIyKG5ld0NvbmRp
dGlvbmFsQXR0cjIpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpCi0tIChpbnQpY29uZGl0aW9uYWxBdHRyMwotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+Y29uZGl0aW9u
YWxBdHRyMygpOwotfQotCi0tICh2b2lkKXNldENvbmRpdGlvbmFsQXR0cjM6KGludCluZXdDb25k
aXRpb25hbEF0dHIzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjMobmV3Q29uZGl0aW9uYWxBdHRyMyk7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDb25kaXRpb24xKQotLSAoRE9NVGVzdE9iamVjdEFDb25z
dHJ1Y3RvciAqKWNvbmRpdGlvbmFsQXR0cjQKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jb25kaXRp
b25hbEF0dHI0KCkpKTsKLX0KLQotLSAodm9pZClzZXRDb25kaXRpb25hbEF0dHI0OihET01UZXN0
T2JqZWN0QUNvbnN0cnVjdG9yICopbmV3Q29uZGl0aW9uYWxBdHRyNAotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBBU1NFUlQobmV3Q29uZGl0aW9uYWxB
dHRyNCk7Ci0KLSAgICBpZiAoIWNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNCkpCi0gICAgICAgIFdl
YkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1QTC0+c2V0Q29uZGl0aW9u
YWxBdHRyNCgqY29yZShuZXdDb25kaXRpb25hbEF0dHI0KSk7Ci19Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLS0gKERPTVRlc3RPYmplY3RC
Q29uc3RydWN0b3IgKiljb25kaXRpb25hbEF0dHI1Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29u
ZGl0aW9uYWxBdHRyNSgpKSk7Ci19Ci0KLS0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNTooRE9N
VGVzdE9iamVjdEJDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjUKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgQVNTRVJUKG5ld0NvbmRpdGlv
bmFsQXR0cjUpOwotCi0gICAgaWYgKCFjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjUpKQotICAgICAg
ICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIElNUEwtPnNldENvbmRp
dGlvbmFsQXR0cjUoKmNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNSkpOwotfQotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0tIChET01UZXN0T2Jq
ZWN0Q0NvbnN0cnVjdG9yICopY29uZGl0aW9uYWxBdHRyNgotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmNvbmRpdGlvbmFsQXR0cjYoKSkpOwotfQotCi0tICh2b2lkKXNldENvbmRpdGlvbmFsQXR0cjY6
KERPTVRlc3RPYmplY3RDQ29uc3RydWN0b3IgKiluZXdDb25kaXRpb25hbEF0dHI2Ci17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIEFTU0VSVChuZXdDb25k
aXRpb25hbEF0dHI2KTsKLQotICAgIGlmICghY29yZShuZXdDb25kaXRpb25hbEF0dHI2KSkKLSAg
ICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBJTVBMLT5zZXRD
b25kaXRpb25hbEF0dHI2KCpjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjYpKTsKLX0KLSNlbmRpZgot
Ci0tIChET01hbnkgKilhbnlBdHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5hbnlBdHRy
aWJ1dGUoKSkpOwotfQotCi0tICh2b2lkKXNldEFueUF0dHJpYnV0ZTooRE9NYW55ICopbmV3QW55
QXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIEFTU0VSVChuZXdBbnlBdHRyaWJ1dGUpOwotCi0gICAgSU1QTC0+c2V0QW55QXR0cmlidXRl
KGNvcmUobmV3QW55QXR0cmlidXRlKSk7Ci19Ci0KLS0gKERPTURvY3VtZW50ICopY29udGVudERv
Y3VtZW50Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudERvY3VtZW50KCkpKTsKLX0KLQot
LSAoRE9NU1ZHUG9pbnQgKiltdXRhYmxlUG9pbnQKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5tdXRh
YmxlUG9pbnQoKSkpOwotfQotCi0tICh2b2lkKXNldE11dGFibGVQb2ludDooRE9NU1ZHUG9pbnQg
KiluZXdNdXRhYmxlUG9pbnQKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgQVNTRVJUKG5ld011dGFibGVQb2ludCk7Ci0KLSAgICBJTVBMLT5zZXRNdXRh
YmxlUG9pbnQoY29yZShuZXdNdXRhYmxlUG9pbnQpKTsKLX0KLQotLSAoRE9NU1ZHUG9pbnQgKilp
bW11dGFibGVQb2ludAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmltbXV0YWJsZVBvaW50KCkpKTsK
LX0KLQotLSAodm9pZClzZXRJbW11dGFibGVQb2ludDooRE9NU1ZHUG9pbnQgKiluZXdJbW11dGFi
bGVQb2ludAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBBU1NFUlQobmV3SW1tdXRhYmxlUG9pbnQpOwotCi0gICAgSU1QTC0+c2V0SW1tdXRhYmxlUG9p
bnQoY29yZShuZXdJbW11dGFibGVQb2ludCkpOwotfQotCi0tIChpbnQpc3RyYXdiZXJyeQotewot
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1Q
TC0+Ymx1ZWJlcnJ5KCk7Ci19Ci0KLS0gKHZvaWQpc2V0U3RyYXdiZXJyeTooaW50KW5ld1N0cmF3
YmVycnkKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
SU1QTC0+c2V0Qmx1ZWJlcnJ5KG5ld1N0cmF3YmVycnkpOwotfQotCi0tIChpbnQpZGVzY3JpcHRp
b25OYW1lCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBJTVBMLT5kZXNjcmlwdGlvbigpOwotfQotCi0tIChpbnQpaWROYW1lCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5p
ZCgpOwotfQotCi0tICh2b2lkKXNldElkTmFtZTooaW50KW5ld0lkTmFtZQotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXRJZChuZXdJZE5h
bWUpOwotfQotCi0tIChOU1N0cmluZyAqKWhhc2hOYW1lCi17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5oYXNoKCk7Ci19Ci0KLS0g
KGludClyZXBsYWNlYWJsZUF0dHJpYnV0ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+cmVwbGFjZWFibGVBdHRyaWJ1dGUoKTsK
LX0KLQotLSAoZG91YmxlKW51bGxhYmxlRG91YmxlQXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5udWxsYWJsZURv
dWJsZUF0dHJpYnV0ZSgpOwotfQotCi0tIChpbnQpbnVsbGFibGVMb25nQXR0cmlidXRlCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBM
LT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoKTsKLX0KLQotLSAoQk9PTCludWxsYWJsZUJvb2xlYW5B
dHRyaWJ1dGUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgcmV0dXJuIElNUEwtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSgpOwotfQotCi0tIChOU1N0
cmluZyAqKW51bGxhYmxlU3RyaW5nQXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5udWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZSgpOwotfQotCi0tIChpbnQpbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwt
Pm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKCk7Ci19Ci0KLS0gKHZvaWQpc2V0TnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGU6KGludCluZXdOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJ
TVBMLT5zZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShuZXdOdWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbnVsbGFibGVTdHJpbmdTZXR0YWJs
ZUF0dHJpYnV0ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICByZXR1cm4gSU1QTC0+bnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSgpOwotfQot
Ci0tICh2b2lkKXNldE51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGU6KE5TU3RyaW5nICop
bmV3TnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5zZXROdWxsYWJsZVN0cmluZ1NldHRh
YmxlQXR0cmlidXRlKG5ld051bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUpOwotfQotCi0t
IChpbnQpbnVsbGFibGVTdHJpbmdWYWx1ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
bnQgcmVzdWx0ID0gSU1QTC0+bnVsbGFibGVTdHJpbmdWYWx1ZShlYyk7Ci0gICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKXNl
dE51bGxhYmxlU3RyaW5nVmFsdWU6KGludCluZXdOdWxsYWJsZVN0cmluZ1ZhbHVlCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldE51bGxh
YmxlU3RyaW5nVmFsdWUobmV3TnVsbGFibGVTdHJpbmdWYWx1ZSk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopYXR0cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBJTVBMLT5hdHRyaWJ1dGUoKTsKLX0KLQotLSAoRE9NVGVzdE5vZGUgKilw
dXRGb3J3YXJkc0F0dHJpYnV0ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnB1dEZvcndhcmRzQXR0
cmlidXRlKCkpKTsKLX0KLQotLSAoRE9NVGVzdE5vZGUgKilwdXRGb3J3YXJkc051bGxhYmxlQXR0
cmlidXRlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0
ZSgpKSk7Ci19Ci0KLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0tICh2b2lkKWVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb246KE5TU3RyaW5nICopdGVzdFBhcmFtCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24odGVzdFBhcmFtKTsKLX0KLQotI2VuZGlmCi0KLQotI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCi0tICh2b2lkKWVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb246KGludCl0ZXN0UGFyYW0K
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbih0ZXN0UGFyYW0pOwotfQotCi0jZW5kaWYKLQotLSAo
dm9pZCl2b2lkTWV0aG9kCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIElNUEwtPnZvaWRNZXRob2QoKTsKLX0KLQotLSAodm9pZCl2b2lkTWV0aG9kV2l0
aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01U
ZXN0T2JqICopb2JqQXJnCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIGlmICghb2JqQXJnKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4
Y2VwdGlvbigpOwotICAgIElNUEwtPnZvaWRNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcs
ICpjb3JlKG9iakFyZykpOwotfQotCi0tIChjaGFyKWJ5dGVNZXRob2QKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmJ5dGVNZXRo
b2QoKTsKLX0KLQotLSAoY2hhcilieXRlTWV0aG9kV2l0aEFyZ3M6KGNoYXIpYnl0ZUFyZyBzdHJB
cmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZwotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBpZiAoIW9iakFyZykK
LSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICByZXR1cm4g
SU1QTC0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIHN0ckFyZywgKmNvcmUob2JqQXJnKSk7
Ci19Ci0KLS0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2QKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPm9jdGV0TWV0aG9kKCk7
Ci19Ci0KLS0gKHVuc2lnbmVkIGNoYXIpb2N0ZXRNZXRob2RXaXRoQXJnczoodW5zaWduZWQgY2hh
cilvY3RldEFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAq
KW9iakFyZwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBpZiAoIW9iakFyZykKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24o
KTsKLSAgICByZXR1cm4gSU1QTC0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldEFyZywgc3RyQXJn
LCAqY29yZShvYmpBcmcpKTsKLX0KLQotLSAoaW50KWxvbmdNZXRob2QKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmxvbmdNZXRo
b2QoKTsKLX0KLQotLSAoaW50KWxvbmdNZXRob2RXaXRoQXJnczooaW50KWxvbmdBcmcgc3RyQXJn
OihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFvYmpBcmcpCi0g
ICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgcmV0dXJuIElN
UEwtPmxvbmdNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsICpjb3JlKG9iakFyZykpOwot
fQotCi0tIChET01UZXN0T2JqICopb2JqTWV0aG9kCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+b2Jq
TWV0aG9kKCkpKTsKLX0KLQotLSAoRE9NVGVzdE9iaiAqKW9iak1ldGhvZFdpdGhBcmdzOihpbnQp
bG9uZ0FyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9i
akFyZwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBp
ZiAoIW9iakFyZykKLSAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsK
LSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPm9iak1ldGhvZFdpdGhBcmdzKGxvbmdB
cmcsIHN0ckFyZywgKmNvcmUob2JqQXJnKSkpKTsKLX0KLQotLSAoaW50KXVuZm9yZ2VhYmxlTWV0
aG9kCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJl
dHVybiBJTVBMLT51bmZvcmdlYWJsZU1ldGhvZCgpOwotfQotCi0tICh2b2lkKW1ldGhvZFdpdGhB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOihOU1N0cmluZyAqKWFyZwotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRoQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhhcmcpOwotfQotCi0tICh2b2lkKW1ldGhvZFdpdGhY
UGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXI6KGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KXJlc29sdmVy
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICgh
cmVzb2x2ZXIpCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0g
ICAgV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBuYXRpdmVSZXNvbHZlciA9IDA7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2ZXI7Ci0gICAgaWYgKHJl
c29sdmVyKSB7Ci0gICAgICAgIGlmIChbcmVzb2x2ZXIgaXNNZW1iZXJPZkNsYXNzOltET01OYXRp
dmVYUGF0aE5TUmVzb2x2ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgIG5hdGl2ZVJlc29sdmVyID0g
Y29yZShzdGF0aWNfY2FzdDxET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKj4ocmVzb2x2ZXIpKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjdXN0b21SZXNvbHZlciA9IFdlYkNvcmU6OkRP
TUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHJlc29sdmVyKTsKLSAgICAgICAgICAgIG5h
dGl2ZVJlc29sdmVyID0gV1RGOjpnZXRQdHIoY3VzdG9tUmVzb2x2ZXIpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIElNUEwtPm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKldURjo6
Z2V0UHRyKG5hdGl2ZVJlc29sdmVyKSk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbnVsbGFibGVTdHJp
bmdNZXRob2QKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgcmV0dXJuIElNUEwtPm51bGxhYmxlU3RyaW5nTWV0aG9kKCk7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopbnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPm51bGxhYmxlU3RyaW5nU3RhdGlj
TWV0aG9kKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopbnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9k
Oih1bnNpZ25lZClpbmRleAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+bnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKGluZGV4
KTsKLX0KLQotLSAodm9pZCltZXRob2RXaXRoRW51bUFyZzooRE9NVGVzdEVudW1UeXBlICopZW51
bUFyZwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJ
TVBMLT5tZXRob2RXaXRoRW51bUFyZyhjb3JlKGVudW1BcmcpKTsKLX0KLQotLSAodm9pZCltZXRo
b2RXaXRoT3B0aW9uYWxFbnVtQXJnOihET01UZXN0RW51bVR5cGUgKillbnVtQXJnCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmcoY29yZShlbnVtQXJnKSk7Ci19Ci0KLS0gKHZvaWQpbWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZTooRE9NVGVzdEVudW1UeXBlICopZW51bUFy
ZwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKGNvcmUoZW51bUFyZykp
OwotfQotCi0tIChET01UZXN0T2JqICopbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
czooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICghb2JqQXJnKQot
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVRlc3RPYmogKnJlc3VsdCA9IGtpdChXVEY6
OmdldFB0cihJTVBMLT5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKHN0ckFyZywg
KmNvcmUob2JqQXJnKSwgZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKXNlcmlhbGl6ZWRWYWx1ZTooTlNTdHJp
bmcgKilzZXJpYWxpemVkQXJnCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIElNUEwtPnNlcmlhbGl6ZWRWYWx1ZShXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShXVEY6OlN0cmluZyhzZXJpYWxpemVkQXJnKSkpOwotfQotCi0tICh2
b2lkKW9wdGlvbnNPYmplY3Q6KERPTURpY3Rpb25hcnkgKilvbyBvb286KERPTURpY3Rpb25hcnkg
Kilvb28KLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
SU1QTC0+b3B0aW9uc09iamVjdChjb3JlKG9vKSwgY29yZShvb28pKTsKLX0KLQotLSAodm9pZClt
ZXRob2RXaXRoRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPm1l
dGhvZFdpdGhFeGNlcHRpb24oZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7
Ci19Ci0KLS0gKHZvaWQpbWV0aG9kV2l0aEV4Y2VwdGlvbldpdGhNZXNzYWdlCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPm1ldGhvZFdpdGhF
eGNlcHRpb25XaXRoTWVzc2FnZSgpOwotfQotCi0tICh2b2lkKWN1c3RvbU1ldGhvZAotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5jdXN0b21N
ZXRob2QoKTsKLX0KLQotLSAodm9pZCljdXN0b21NZXRob2RXaXRoQXJnczooaW50KWxvbmdBcmcg
c3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFvYmpB
cmcpCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1Q
TC0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCAqY29yZShvYmpBcmcpKTsK
LX0KLQotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjMpCi0tICh2b2lkKWpzQnVpbHRpbk1ldGhvZAot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5q
c0J1aWx0aW5NZXRob2QoKTsKLX0KLQotI2VuZGlmCi0KLQotI2lmIEVOQUJMRShDb25kaXRpb24z
KQotLSAodm9pZClqc0J1aWx0aW5NZXRob2RXaXRoQXJnczooaW50KWxvbmdBcmcgc3RyQXJnOihO
U1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgaWYgKCFvYmpBcmcpCi0gICAg
ICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgSU1QTC0+anNCdWls
dGluTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCAqY29yZShvYmpBcmcpKTsKLX0KLQot
I2VuZGlmCi0KLS0gKE5TU3RyaW5nICopcHVibGljQW5kUHJpdmF0ZU1ldGhvZDooTlNTdHJpbmcg
Kilhcmd1bWVudAotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICByZXR1cm4gSU1QTC0+cHVibGljQW5kUHJpdmF0ZU1ldGhvZChhcmd1bWVudCk7Ci19Ci0K
LS0gKHZvaWQpYWRkRXZlbnRMaXN0ZW5lcjooTlNTdHJpbmcgKil0eXBlIGxpc3RlbmVyOihpZCA8
RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgdXNlQ2FwdHVyZTooQk9PTCl1c2VDYXB0dXJlCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGlmICghbGlz
dGVuZXIpCi0gICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI+IG5hdGl2ZUV2ZW50TGlzdGVuZXIgPSBXZWJD
b3JlOjpPYmpDRXZlbnRMaXN0ZW5lcjo6d3JhcChsaXN0ZW5lcik7Ci0gICAgSU1QTC0+YWRkRXZl
bnRMaXN0ZW5lcih0eXBlLCAqV1RGOjpnZXRQdHIobmF0aXZlRXZlbnRMaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwotfQotCi0tICh2b2lkKXJlbW92ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlw
ZSBsaXN0ZW5lcjooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIHVzZUNhcHR1cmU6KEJP
T0wpdXNlQ2FwdHVyZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBpZiAoIWxpc3RlbmVyKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4
Y2VwdGlvbigpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpFdmVudExpc3RlbmVyPiBuYXRpdmVFdmVu
dExpc3RlbmVyID0gV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6OndyYXAobGlzdGVuZXIpOwot
ICAgIElNUEwtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgKldURjo6Z2V0UHRyKG5hdGl2ZUV2
ZW50TGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKLX0KLQotLSAodm9pZCl3aXRoU2NyaXB0U3RhdGVW
b2lkCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPndpdGhTY3JpcHRTdGF0ZVZvaWQoKTsKLX0KLQotLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3Jp
cHRTdGF0ZU9iagotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRTdGF0ZU9iaigpKSk7
Ci19Ci0KLS0gKHZvaWQpd2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbgotewotICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBJTVBMLT53aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKGVjKTsK
LSAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChET01UZXN0T2JqICop
d2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IERPTVRlc3RPYmogKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT53aXRoU2NyaXB0U3Rh
dGVPYmpFeGNlcHRpb24oZWMpKSk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKXdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KLS0gKHZvaWQpd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlKCk7Ci19Ci0KLS0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIERPTVRlc3RPYmogKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGVjKSkpOwot
ICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKSkpOwotfQotCi0tICh2b2lkKXdpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2sKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjaygp
OwotfQotCi0tICh2b2lkKXdpdGhEb2N1bWVudEFyZ3VtZW50Ci17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPndpdGhEb2N1bWVudEFyZ3VtZW50
KCk7Ci19Ci0KLS0gKHZvaWQpd2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+d2l0aENhbGxlckRv
Y3VtZW50QXJndW1lbnQoKTsKLX0KLQotLSAodm9pZCl3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQK
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+
d2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KCk7Ci19Ci0KLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlv
bmFsQXJnOihpbnQpb3B0Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOwotfQotCi0tICh2b2lk
KW1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZTooaW50KW9wdAotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRo
T3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUob3B0KTsKLX0KLQotLSAodm9pZCltZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZzooaW50KW5vbk9wdCBvcHQ6KGludClvcHQKLXsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+bWV0
aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcobm9uT3B0LCBvcHQpOwotfQotCi0t
ICh2b2lkKW1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnczooaW50KW5v
bk9wdCBvcHQxOihpbnQpb3B0MSBvcHQyOihpbnQpb3B0MgotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0LCBvcHQxLCBvcHQyKTsKLX0KLQotLSAodm9pZClt
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmc6KE5TU3RyaW5nICopc3RyCi17Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPm1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZyhzdHIpOwotfQotCi0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
ZzooTlNTdHJpbmcgKilzdHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgSU1QTC0+bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nKHN0cik7Ci19
Ci0KLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlOihOU1N0
cmluZyAqKXN0cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBJTVBMLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoc3RyKTsK
LX0KLQotLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFs
dWU6KE5TU3RyaW5nICopc3RyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1
bHRWYWx1ZShzdHIpOwotfQotCi0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVs
bDooTlNTdHJpbmcgKilzdHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgSU1QTC0+bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKHN0cik7Ci19
Ci0KLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQ6KE5TU3RyaW5n
ICopc3RyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKHN0cik7Ci19Ci0KLS0g
KHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsOihOU1N0cmluZyAqKXN0
cgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5tZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGwoc3RyKTsKLX0KLQotLSAodm9p
ZCltZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nOihOU1N0cmluZyAqKXN0cgot
ewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5t
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKHN0cik7Ci19Ci0KLS0gKHZvaWQp
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZzooTlNTdHJpbmcgKilz
dHIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1Q
TC0+bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyhzdHIpOwotfQot
Ci0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOOihkb3VibGUpbnVtYmVyCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPm1l
dGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKG51bWJlcik7Ci19Ci0KLS0gKHZvaWQpbWV0aG9k
V2l0aE9wdGlvbmFsRmxvYXRJc05hTjooZmxvYXQpbnVtYmVyCi17Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbEZs
b2F0SXNOYU4obnVtYmVyKTsKLX0KLQotLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxMb25nTG9u
ZzoobG9uZyBsb25nKW51bWJlcgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyhudW1iZXIpOwot
fQotCi0tICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvOihsb25nIGxvbmcp
bnVtYmVyCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKG51bWJlcik7Ci19Ci0KLS0g
KHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZzoodW5zaWduZWQgbG9uZyBs
b25nKW51bWJlcgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBJTVBMLT5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKG51bWJlcik7Ci19
Ci0KLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybzoodW5z
aWduZWQgbG9uZyBsb25nKW51bWJlcgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25n
SXNaZXJvKG51bWJlcik7Ci19Ci0KLS0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbjoo
Qk9PTCliCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oYik7Ci19Ci0KLS0gKHZvaWQpbWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2U6KEJPT0wpYgotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRoT3B0aW9uYWxCb29s
ZWFuSXNGYWxzZShiKTsKLX0KLQotLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxBbnk6KERPTWFu
eSAqKWEKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
SU1QTC0+bWV0aG9kV2l0aE9wdGlvbmFsQW55KGNvcmUoYSkpOwotfQotCi0tICh2b2lkKW1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcjooRE9NVGVzdE9iaiAqKW9iagotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5tZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoY29yZShvYmopKTsKLX0KLQotLSAodm9pZCltZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGw6KERPTVRlc3RPYmogKilvYmoKLXsKLSAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+bWV0aG9k
V2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKGNvcmUob2JqKSk7Ci19Ci0KLS0gKHZv
aWQpbWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyOihpZCA8RE9NWFBhdGhOU1Jlc29s
dmVyPilyZXNvbHZlcgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIG5hdGl2ZVJlc29sdmVyID0gMDsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjdXN0b21SZXNvbHZlcjsKLSAgICBp
ZiAocmVzb2x2ZXIpIHsKLSAgICAgICAgaWYgKFtyZXNvbHZlciBpc01lbWJlck9mQ2xhc3M6W0RP
TU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKQotICAgICAgICAgICAgbmF0aXZlUmVzb2x2
ZXIgPSBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqPihyZXNvbHZl
cikpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGN1c3RvbVJlc29sdmVyID0gV2ViQ29y
ZTo6RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUocmVzb2x2ZXIpOwotICAgICAgICAg
ICAgbmF0aXZlUmVzb2x2ZXIgPSBXVEY6OmdldFB0cihjdXN0b21SZXNvbHZlcik7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgSU1QTC0+bWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKFdU
Rjo6Z2V0UHRyKG5hdGl2ZVJlc29sdmVyKSk7Ci19Ci0KLQotI2lmIEVOQUJMRShDb25kaXRpb24x
KQotLSAoTlNTdHJpbmcgKiljb25kaXRpb25hbE1ldGhvZDEKLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmNvbmRpdGlvbmFsTWV0
aG9kMSgpOwotfQotCi0jZW5kaWYKLQotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQotLSAodm9pZCljb25kaXRpb25hbE1ldGhvZDIKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+Y29uZGl0aW9uYWxNZXRo
b2QyKCk7Ci19Ci0KLSNlbmRpZgotCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCi0tICh2b2lkKWNvbmRpdGlvbmFsTWV0aG9kMwotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5jb25kaXRpb25hbE1ldGhv
ZDMoKTsKLX0KLQotI2VuZGlmCi0KLS0gKHZvaWQpY2xhc3NNZXRob2QKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+Y2xhc3NNZXRob2QoKTsK
LX0KLQotLSAoaW50KWNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsOihpbnQpYXJnCi17Ci0gICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5jbGFz
c01ldGhvZFdpdGhPcHRpb25hbChhcmcpOwotfQotCi0tICh2b2lkKWNsYXNzTWV0aG9kMjooaW50
KWFyZwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJ
TVBMLT5jbGFzc01ldGhvZDIoYXJnKTsKLX0KLQotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjEpCi0t
ICh2b2lkKW92ZXJsb2FkZWRNZXRob2QxOihpbnQpYXJnCi17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPm92ZXJsb2FkZWRNZXRob2QxKGFyZyk7
Ci19Ci0KLSNlbmRpZgotCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLS0gKHZvaWQpb3Zlcmxv
YWRlZE1ldGhvZDE6KE5TU3RyaW5nICopdHlwZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5vdmVybG9hZGVkTWV0aG9kMSh0eXBlKTsKLX0K
LQotI2VuZGlmCi0KLS0gKHZvaWQpY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlOih1bnNpZ25l
ZCBzaG9ydClvYmpBcmdzU2hvcnQgb2JqQXJnc0xvbmc6KHVuc2lnbmVkKW9iakFyZ3NMb25nCi17
Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmNs
YXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShvYmpBcmdzU2hvcnQsIG9iakFyZ3NMb25nKTsKLX0K
LQotLSAoRE9NU1ZHRG9jdW1lbnQgKilnZXRTVkdEb2N1bWVudAotewotICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBET01TVkdEb2N1bWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmdldFNWR0RvY3VtZW50KGVjKSkpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZCljb252ZXJ0MTooRE9NVGVzdE5vZGUg
Kil2YWx1ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBpZiAoIXZhbHVlKQotICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigp
OwotICAgIElNUEwtPmNvbnZlcnQxKCpjb3JlKHZhbHVlKSk7Ci19Ci0KLS0gKHZvaWQpY29udmVy
dDI6KERPTVRlc3ROb2RlICopdmFsdWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+Y29udmVydDIoY29yZSh2YWx1ZSkpOwotfQotCi0tICh2
b2lkKWNvbnZlcnQzOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmNvbnZlcnQzKHZhbHVlKTsKLX0KLQotLSAo
dm9pZCljb252ZXJ0NDooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5jb252ZXJ0NCh2YWx1ZSk7Ci19Ci0KLS0g
KERPTVNWR1BvaW50ICopbXV0YWJsZVBvaW50RnVuY3Rpb24KLXsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSk7Ci19Ci0KLS0gKERPTVNWR1BvaW50ICopaW1tdXRh
YmxlUG9pbnRGdW5jdGlvbgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmltbXV0YWJsZVBvaW50RnVu
Y3Rpb24oKSkpOwotfQotCi0tICh2b2lkKW9yYW5nZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5iYW5hbmEoKTsKLX0KLQotLSAodm9pZClh
bnk6KGZsb2F0KWEgYjooaW50KWIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgSU1QTC0+YW55KGEsIGIpOwotfQotCi0tICh2b2lkKWF0dGFjaFNoYWRv
d1Jvb3Q6KERPTVRlc3REaWN0aW9uYXJ5ICopaW5pdAotewotICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5hdHRhY2hTaGFkb3dSb290KGNvcmUoaW5p
dCkpOwotfQotCi1AZW5kCi0KLVdlYkNvcmU6OlRlc3RPYmoqIGNvcmUoRE9NVGVzdE9iaiAqd3Jh
cHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
VGVzdE9iaio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwotfQotCi1ET01UZXN0T2JqICpraXQo
V2ViQ29yZTo6VGVzdE9iaiogdmFsdWUpCi17Ci0gICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNo
ZWNrUm91bmRPbmUoKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IGlmIChET01UZXN0T2JqICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAg
IHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NVGVzdE9iaiAq
d3JhcHBlciA9IFtbRE9NVGVzdE9iaiBhbGxvY10gX2luaXRdOwotICAgIHdyYXBwZXItPl9pbnRl
cm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7Ci0gICAg
dmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOwotICAgIHJl
dHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmpJbnRlcm5hbC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGViOWU1NDVlNGUzNWFiNDE1NGI2ODMz
YTg2OGM5MDdiY2UxZThmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmpJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTVRlc3RPYmouaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
VGVzdE9iajsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdE9iaiogY29yZShET01U
ZXN0T2JqICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdE9iaiAqa2l0KFdlYkNvcmU6OlRlc3RP
YmoqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmRkNWY1N2M0NzE5NDJlY2QwNGUzN2YyY2Zm
ZmVkMzIwOTczODY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+Ci0KLVdFQktJ
VF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2Ug
RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgOiBET01PYmplY3QKLUBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMyMDY2NzkzZDYxMTA1ZWZlYzMxNmE1OTM2YWQ5OTllNTAyMDkwZTcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAiRE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKLQotI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0j
aW1wb3J0ICJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgiCi0jaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
Ci0jaW1wb3J0ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgotI2ltcG9ydCAiVGhyZWFk
Q2hlY2suaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1Q
TCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
X2ludGVybmFsKQotCi1AaW1wbGVtZW50YXRpb24gRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMKLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFs
bG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBjbGFzc10s
IHNlbGYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJ
TVBMLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCi1XZWJDb3Jl
OjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogY29yZShET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyAqd3JhcHBlcikKLXsKLSAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih3cmFwcGVyLT5faW50ZXJu
YWwpIDogMDsKLX0KLQotRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgKmtpdChXZWJDb3Jl
OjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdmFsdWUpCi17Ci0gICAgV2ViQ29yZVRocmVh
ZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIGlmIChET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqd3JhcHBlciA9
IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotICAgIERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICp3cmFwcGVy
ID0gW1tET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBhbGxvY10gX2luaXRdOwotICAgIHdy
YXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2
YWx1ZSk7Ci0gICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFs
dWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0ludGVybmFsLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzM2VhMGQzMmI2MmJmZjBjYjBjZWQyZmY3MjNmYjdh
N2JiNGVmZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAot
LyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OwotfQotCi1XRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogY29yZShET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyAqKTsKLVdFQkNPUkVfRVhQT1JU
IERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzICpraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVycmlkZUJ1aWx0aW5zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T3ZlcnJpZGVCdWlsdGlucy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjdhMTc5MjE0ODM2MWE1NzhmNzZlNDE1NTY5
NzliZDFlNGI3YWFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+Ci0KLUBjbGFzcyBET01O
b2RlOwotQGNsYXNzIE5TU3RyaW5nOwotCi1XRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2
XzUpCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRlc3RPdmVycmlkZUJ1aWx0aW5zIDog
RE9NT2JqZWN0Ci0tIChET01Ob2RlICopbmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWU7Ci1AZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T3ZlcnJpZGVCdWlsdGlucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVycmlkZUJ1aWx0aW5zLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwN2ZhOTVmODZlMzgwZjI5ZmEyYjE5NTMxYTU3YTYwNDQ3ZDFiNTllLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPdmVycmlkZUJ1aWx0aW5zLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTVRlc3RPdmVycmlkZUJ1
aWx0aW5zLmgiCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NVGVz
dE92ZXJyaWRlQnVpbHRpbnNJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMu
aCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiTm9kZS5oIgot
I2ltcG9ydCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCi0jaW1wb3J0
ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNk
ZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RPdmVycmlkZUJ1aWx0aW5z
Kj4oX2ludGVybmFsKQotCi1AaW1wbGVtZW50YXRpb24gRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMK
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9j
YXRlT25NYWluVGhyZWFkKFtET01UZXN0T3ZlcnJpZGVCdWlsdGlucyBjbGFzc10sIHNlbGYpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJl
ZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoRE9NTm9kZSAqKW5hbWVkSXRlbToo
TlNTdHJpbmcgKiluYW1lCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+bmFtZWRJdGVtKG5hbWUpKSk7
Ci19Ci0KLUBlbmQKLQotV2ViQ29yZTo6VGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNvcmUoRE9NVGVz
dE92ZXJyaWRlQnVpbHRpbnMgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RPdmVycmlkZUJ1aWx0aW5zKj4od3JhcHBlci0+X2lu
dGVybmFsKSA6IDA7Ci19Ci0KLURPTVRlc3RPdmVycmlkZUJ1aWx0aW5zICpraXQoV2ViQ29yZTo6
VGVzdE92ZXJyaWRlQnVpbHRpbnMqIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRp
b25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICBpZiAoRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMgKndyYXBwZXIgPSBnZXRET01XcmFwcGVy
KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
LSAgICBET01UZXN0T3ZlcnJpZGVCdWlsdGlucyAqd3JhcHBlciA9IFtbRE9NVGVzdE92ZXJyaWRl
QnVpbHRpbnMgYWxsb2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVy
cHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsK
LSAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIg
YXV0b3JlbGVhc2VdOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnNJbnRlcm5hbC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE92ZXJyaWRlQnVpbHRp
bnNJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjEyYjFiOGIzMGQ4
NTJkOGM4ZjQ4ZDEzMTRiOTc2YWMzYTlhZjEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPdmVycmlkZUJ1aWx0aW5zSW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0T3ZlcnJpZGVCdWls
dGlucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXN0T3ZlcnJpZGVCdWlsdGlu
czsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6VGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNv
cmUoRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMgKik7Ci1XRUJDT1JFX0VYUE9SVCBET01UZXN0T3Zl
cnJpZGVCdWlsdGlucyAqa2l0KFdlYkNvcmU6OlRlc3RPdmVycmlkZUJ1aWx0aW5zKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhODFhNzFmZDM1OGE4MmQzYWRhNTk3
OGFmZDU5YzNiNTkyMzQwNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVj
dC5oPgotCi1AY2xhc3MgTlNTdHJpbmc7Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4
NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSA6IERPTU9iamVjdAotQHByb3BlcnR5IChzdHJvbmcpIE5TU3RyaW5nICp2
YWx1ZTsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgTlNTdHJpbmcgKnJlYWRvbmx5VmFs
dWU7Ci1AcHJvcGVydHkgKHN0cm9uZykgTlNTdHJpbmcgKmNhY2hlZFZhbHVlOwotQHByb3BlcnR5
IChyZWFkb25seSwgc3Ryb25nKSBOU1N0cmluZyAqY2FjaGVkUmVhZG9ubHlWYWx1ZTsKLUBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2E2N2MxNTc3YjQyYTJk
YmUxNWE2MTY5NWE2MzUzNDdkZmVmZmVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UubW0KKysrIC9kZXYvbnVsbApA
QCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLQotI2ltcG9ydCAiRE9NSW50ZXJu
YWwuaCIKLQotI2ltcG9ydCAiRE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
IgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VJbnRlcm5hbC5oIgotI2ltcG9ydCAiRXhjZXB0aW9uSGFu
ZGxlcnMuaCIKLSNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW1wb3J0ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJUaHJlYWRDaGVjay5oIgotI2ltcG9ydCAiV2ViQ29yZU9i
akNFeHRyYXMuaCIKLSNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KF9pbnRlcm5hbCkKLQotQGltcGxl
bWVudGF0aW9uIERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UKLQotLSAodm9p
ZClkZWFsbG9jCi17Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWlu
VGhyZWFkKFtET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIGNsYXNzXSwgc2Vs
ZikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwt
PmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU1N0cmluZyAqKXZhbHVl
Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVy
biBJTVBMLT52YWx1ZSgpLT50b1N0cmluZygpOwotfQotCi0tICh2b2lkKXNldFZhbHVlOihOU1N0
cmluZyAqKW5ld1ZhbHVlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIEFTU0VSVChuZXdWYWx1ZSk7Ci0KLSAgICBJTVBMLT5zZXRWYWx1ZShXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShXVEY6OlN0cmluZyhuZXdWYWx1ZSkpKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilyZWFkb25seVZhbHVlCi17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5yZWFkb25seVZhbHVlKCkt
PnRvU3RyaW5nKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopY2FjaGVkVmFsdWUKLXsKLSAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmNhY2hl
ZFZhbHVlKCktPnRvU3RyaW5nKCk7Ci19Ci0KLS0gKHZvaWQpc2V0Q2FjaGVkVmFsdWU6KE5TU3Ry
aW5nICopbmV3Q2FjaGVkVmFsdWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgQVNTRVJUKG5ld0NhY2hlZFZhbHVlKTsKLQotICAgIElNUEwtPnNldENh
Y2hlZFZhbHVlKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFdURjo6U3Ry
aW5nKG5ld0NhY2hlZFZhbHVlKSkpOwotfQotCi0tIChOU1N0cmluZyAqKWNhY2hlZFJlYWRvbmx5
VmFsdWUKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
cmV0dXJuIElNUEwtPmNhY2hlZFJlYWRvbmx5VmFsdWUoKS0+dG9TdHJpbmcoKTsKLX0KLQotQGVu
ZAotCi1XZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjb3JlKERP
TVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgKndyYXBwZXIpCi17Ci0gICAgcmV0
dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKLX0KLQotRE9NVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSAqa2l0KFdlYkNvcmU6OlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHZhbHVlKQotewotICAgIFdlYkNvcmVUaHJlYWRWaW9s
YXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICBpZiAoRE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSAqd3JhcHBl
ciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwotICAgIERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UgKndyYXBwZXIgPSBbW0RPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgYWxs
b2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERP
TU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAgICBhZGRET01X
cmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2Vd
OwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUludGVybmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlSW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmIwZmFkNWRjYWYzOGYyMzBjZDc1OGRhMjZiMzdhMDU0ZDEwMTBhMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlSW50
ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8
V2ViQ29yZS9ET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U7
Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNvcmUoRE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSAqKTsK
LVdFQkNPUkVfRVhQT1JUIERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgKmtp
dChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0U3Vw
cGxlbWVudGFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RTdXBwbGVtZW50YWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NTBmMWY1MDFjMTk4YzRhYmE3MmNhNmQ3YTFjZmZjMGJkZjRkZTg2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RTdXBwbGVtZW50YWwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxs
IGJ1aWxkIHNjcmlwdHMgdGhhdCBET01UZXN0U3VwcGxlbWVudGFsLmggYW5kCi0gICAgRE9NVGVz
dFN1cHBsZW1lbnRhbC5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RTdXBwbGVtZW50YWwuaWRsLCBh
bmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2Vu
ZXJhdGUgRE9NVGVzdFN1cHBsZW1lbnRhbC5oIGFuZAotICAgIERPTVRlc3RTdXBwbGVtZW50YWwu
Y3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGls
ZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0U3VwcGxlbWVudGFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0U3VwcGxlbWVudGFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM1MGYxZjUwMWMxOThjNGFiYTcyY2E2ZDdhMWNmZmMwYmRmNGRlODYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFN1cHBsZW1lbnRhbC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVz
dCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBET01UZXN0U3VwcGxlbWVudGFsLmggYW5kCi0g
ICAgRE9NVGVzdFN1cHBsZW1lbnRhbC5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RTdXBwbGVtZW50
YWwuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlp
bmcgdG8gZ2VuZXJhdGUgRE9NVGVzdFN1cHBsZW1lbnRhbC5oIGFuZAotICAgIERPTVRlc3RTdXBw
bGVtZW50YWwuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQg
dG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3MDQxMWE4MGZmMTNkNTUxOGE3YzcwOWY3OTBmZWM4NzY4OWUwMWJiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxXZWJD
b3JlL0RPTU9iamVjdC5oPgotCi1AY2xhc3MgRE9NU1ZHUG9pbnQ7Ci1AY2xhc3MgTlNTdHJpbmc7
Ci0KLVdFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgRE9NVGVzdFR5cGVkZWZzIDogRE9NT2JqZWN0Ci1AcHJvcGVydHkgdW5zaWduZWQg
bG9uZyBsb25nIHVuc2lnbmVkTG9uZ0xvbmdBdHRyOwotQHByb3BlcnR5IChzdHJvbmcpIE5TU3Ry
aW5nICppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1AcHJvcGVydHkgaW50IGF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uOwotQHByb3BlcnR5IGludCBhdHRyV2l0aFNldHRlckV4Y2VwdGlv
bjsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb247Ci0KLS0gKHZvaWQpc2V0U2hhZG93OihmbG9hdCl3aWR0aCBoZWlnaHQ6KGZsb2F0KWhl
aWdodCBibHVyOihmbG9hdClibHVyIGNvbG9yOihOU1N0cmluZyAqKWNvbG9yIGFscGhhOihmbG9h
dClhbHBoYTsKLS0gKERPTVNWR1BvaW50ICopaW1tdXRhYmxlUG9pbnRGdW5jdGlvbjsKLS0gKHZv
aWQpbWV0aG9kV2l0aEV4Y2VwdGlvbjsKLUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlYjA0M2Y2MGY2ZmVlZmU2MWQyNWVjZWNkZWQ2
MGYyZTBlOTMzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRl
ZnMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTVRlc3RUeXBl
ZGVmcy5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVNWR1Bv
aW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVRlc3RUeXBlZGVmc0ludGVybmFsLmgiCi0jaW1w
b3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgiCi0jaW1wb3J0ICJTVkdQb2ludC5oIgotI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCi0jaW1wb3J0ICJUZXN0VHlwZWRlZnMuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0j
aW1wb3J0ICJVUkwuaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCi0jaW1wb3J0ICJX
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZp
bmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RUeXBlZGVmcyo+KF9pbnRlcm5h
bCkKLQotQGltcGxlbWVudGF0aW9uIERPTVRlc3RUeXBlZGVmcwotCi0tICh2b2lkKWRlYWxsb2MK
LXsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RP
TVRlc3RUeXBlZGVmcyBjbGFzc10sIHNlbGYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
X2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAodW5zaWduZWQgbG9uZyBsb25nKXVuc2lnbmVkTG9uZ0xvbmdBdHRyCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT51
bnNpZ25lZExvbmdMb25nQXR0cigpOwotfQotCi0tICh2b2lkKXNldFVuc2lnbmVkTG9uZ0xvbmdB
dHRyOih1bnNpZ25lZCBsb25nIGxvbmcpbmV3VW5zaWduZWRMb25nTG9uZ0F0dHIKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+c2V0VW5zaWdu
ZWRMb25nTG9uZ0F0dHIobmV3VW5zaWduZWRMb25nTG9uZ0F0dHIpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQotewotICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+aW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlKCktPnRvU3RyaW5nKCk7Ci19Ci0KLS0gKHZvaWQpc2V0SW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlOihOU1N0cmluZyAqKW5ld0ltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBBU1NFUlQobmV3SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKLQotICAgIElN
UEwtPnNldEltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShXVEY6OlN0cmluZyhuZXdJbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUpKSk7Ci19Ci0KLS0gKGludClhdHRyV2l0aEdldHRlckV4Y2VwdGlvbgotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gSU1QTC0+YXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotLSAodm9pZClzZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbjooaW50
KW5ld0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5l
d0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKTsKLX0KLQotLSAoaW50KWF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBJTVBMLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpOwotfQotCi0tICh2b2lkKXNl
dEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOihpbnQpbmV3QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24K
LXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0QXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24obmV3QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24sIGVjKTsKLSAgICBXZWJDb3JlOjpyYWlz
ZU9uRE9NRXJyb3IoZWMpOwotfQotCi0tIChOU1N0cmluZyAqKXN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQg
PSBJTVBMLT5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYyk7Ci0gICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKXNl
dFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uOihOU1N0cmluZyAqKW5ld1N0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIElNUEwtPnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5ld1N0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oKTsKLX0KLQotLSAodm9pZClzZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbjooTlNT
dHJpbmcgKiluZXdTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbgotewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBJTVBMLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuZXdT
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiwgZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7Ci19Ci0KLS0gKHZvaWQpc2V0U2hhZG93OihmbG9hdCl3aWR0aCBoZWlnaHQ6
KGZsb2F0KWhlaWdodCBibHVyOihmbG9hdClibHVyIGNvbG9yOihOU1N0cmluZyAqKWNvbG9yIGFs
cGhhOihmbG9hdClhbHBoYQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBJTVBMLT5zZXRTaGFkb3cod2lkdGgsIGhlaWdodCwgYmx1ciwgY29sb3IsIGFs
cGhhKTsKLX0KLQotLSAoRE9NU1ZHUG9pbnQgKilpbW11dGFibGVQb2ludEZ1bmN0aW9uCi17Ci0g
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQo
V1RGOjpnZXRQdHIoSU1QTC0+aW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSk7Ci19Ci0KLS0gKHZv
aWQpbWV0aG9kV2l0aEV4Y2VwdGlvbgotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBM
LT5tZXRob2RXaXRoRXhjZXB0aW9uKGVjKTsKLSAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3Io
ZWMpOwotfQotCi1AZW5kCi0KLVdlYkNvcmU6OlRlc3RUeXBlZGVmcyogY29yZShET01UZXN0VHlw
ZWRlZnMgKndyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OlRlc3RUeXBlZGVmcyo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwotfQotCi1E
T01UZXN0VHlwZWRlZnMgKmtpdChXZWJDb3JlOjpUZXN0VHlwZWRlZnMqIHZhbHVlKQotewotICAg
IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Ci0gICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBpZiAoRE9NVGVzdFR5cGVkZWZzICp3cmFwcGVyID0g
Z2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBh
dXRvcmVsZWFzZV07Ci0gICAgRE9NVGVzdFR5cGVkZWZzICp3cmFwcGVyID0gW1tET01UZXN0VHlw
ZWRlZnMgYWxsb2NdIF9pbml0XTsKLSAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJl
dF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOwotICAgIHZhbHVlLT5yZWYoKTsKLSAg
ICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKLSAgICByZXR1cm4gW3dyYXBwZXIgYXV0
b3JlbGVhc2VdOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdFR5cGVkZWZzSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmc0ludGVybmFsLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2RlOGY1OTJkNjNhMjliODAwZDEyOGE5MTlmYWYz
MmU4Y2NmMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFR5cGVkZWZz
SW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9y
dCA8V2ViQ29yZS9ET01UZXN0VHlwZWRlZnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgVGVzdFR5cGVkZWZzOwotfQotCi1XRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpUZXN0VHlwZWRl
ZnMqIGNvcmUoRE9NVGVzdFR5cGVkZWZzICopOwotV0VCQ09SRV9FWFBPUlQgRE9NVGVzdFR5cGVk
ZWZzICpraXQoV2ViQ29yZTo6VGVzdFR5cGVkZWZzKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1dGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjYyYzliNzhjMDczYmZlNjI0YzQ0YmI1ZjY0YTQwNTYw
NmZiMTMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgotCi1AY2xhc3MgTlNTdHJpbmc7Ci0KLVdFQktJVF9D
TEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9N
YXR0cmlidXRlIDogRE9NT2JqZWN0Ci1AcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqcmVhZG9ubHk7Ci1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1dGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1dGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY4ZjhkNTI5MDk5ZWU0OGFhMmQ3YjdiYTk2ZjcyZTQ3ZjI5Zjc0NzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NYXR0cmlidXRlLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRP
TUludGVybmFsLmgiCi0KLSNpbXBvcnQgIkRPTWF0dHJpYnV0ZS5oIgotCi0jaW1wb3J0ICJET01O
b2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTWF0dHJpYnV0ZUludGVybmFsLmgiCi0jaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgotI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
Ci0jaW1wb3J0ICJUaHJlYWRDaGVjay5oIgotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJD
b3JlT2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2lt
cG9ydCAiYXR0cmlidXRlLmgiCi0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1Q
TCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OmF0dHJpYnV0ZSo+KF9pbnRlcm5hbCkKLQotQGlt
cGxlbWVudGF0aW9uIERPTWF0dHJpYnV0ZQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAo
V2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTWF0dHJpYnV0ZSBj
bGFzc10sIHNlbGYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2ludGVybmFsKQotICAg
ICAgICBJTVBMLT5kZXJlZigpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNTdHJp
bmcgKilyZWFkb25seQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4gSU1QTC0+cmVhZG9ubHkoKTsKLX0KLQotQGVuZAotCi1XZWJDb3JlOjph
dHRyaWJ1dGUqIGNvcmUoRE9NYXR0cmlidXRlICp3cmFwcGVyKQotewotICAgIHJldHVybiB3cmFw
cGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjphdHRyaWJ1dGUqPih3cmFwcGVyLT5faW50
ZXJuYWwpIDogMDsKLX0KLQotRE9NYXR0cmlidXRlICpraXQoV2ViQ29yZTo6YXR0cmlidXRlKiB2
YWx1ZSkKLXsKLSAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwotICAg
IGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKERPTWF0dHJpYnV0ZSAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgIERPTWF0dHJpYnV0ZSAqd3JhcHBlciA9IFtbRE9N
YXR0cmlidXRlIGFsbG9jXSBfaW5pdF07Ci0gICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRl
cnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7
Ci0gICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVy
IGF1dG9yZWxlYXNlXTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1dGVJbnRlcm5hbC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2ZmZTZmNGE5NmZjNjE5ZGZhZGRmMjkxOTQ0ZDY4MGVh
OTIwNjk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZUludGVy
bmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdl
YkNvcmUvRE9NYXR0cmlidXRlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIGF0dHJp
YnV0ZTsKLX0KLQotV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6YXR0cmlidXRlKiBjb3JlKERPTWF0
dHJpYnV0ZSAqKTsKLVdFQkNPUkVfRVhQT1JUIERPTWF0dHJpYnV0ZSAqa2l0KFdlYkNvcmU6OmF0
dHJpYnV0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NcmVhZG9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTXJlYWRvbmx5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2
Mzc4NTJhMDgxYjIyYmVlYTdhMmJhYmNlMjI3N2MwYWFjYjM2ODEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NcmVhZG9ubHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4K
LQotV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoOTg3Nl81KQotV0VCQ09SRV9FWFBPUlQgQGlu
dGVyZmFjZSBET01yZWFkb25seSA6IERPTU9iamVjdAotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NcmVhZG9ubHkubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01yZWFkb25seS5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE5NmY4OTljNmU5OTUzNWE3NWFiYTlhNDUzYzQw
OWE4MDhhZDQwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01yZWFkb25seS5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgotCi0jaW1wb3J0ICJET01yZWFkb25seS5oIgot
Ci0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTXJlYWRvbmx5SW50ZXJu
YWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJl
YWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRocmVhZENoZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3Jl
T2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9y
dCAicmVhZG9ubHkuaCIKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6cmVhZG9ubHkqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1l
bnRhdGlvbiBET01yZWFkb25seQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoV2ViQ29y
ZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTXJlYWRvbmx5IGNsYXNzXSwg
c2VsZikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElN
UEwtPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi1AZW5kCi0KLVdlYkNvcmU6
OnJlYWRvbmx5KiBjb3JlKERPTXJlYWRvbmx5ICp3cmFwcGVyKQotewotICAgIHJldHVybiB3cmFw
cGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpyZWFkb25seSo+KHdyYXBwZXItPl9pbnRl
cm5hbCkgOiAwOwotfQotCi1ET01yZWFkb25seSAqa2l0KFdlYkNvcmU6OnJlYWRvbmx5KiB2YWx1
ZSkKLXsKLSAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKERPTXJlYWRvbmx5ICp3cmFw
cGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0
YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgRE9NcmVhZG9ubHkgKndyYXBwZXIgPSBbW0RPTXJlYWRv
bmx5IGFsbG9jXSBfaW5pdF07Ci0gICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRf
Y2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9y
ZWxlYXNlXTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTXJlYWRvbmx5SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTXJlYWRvbmx5SW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTlhMTQ0ZjIyY2MwMDNlMmI3YzA5YTIzOTljYmZiN2RjZWI2ZTM3Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01yZWFkb25seUludGVybmFsLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9N
cmVhZG9ubHkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgcmVhZG9ubHk7Ci19Ci0K
LVdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OnJlYWRvbmx5KiBjb3JlKERPTXJlYWRvbmx5ICopOwot
V0VCQ09SRV9FWFBPUlQgRE9NcmVhZG9ubHkgKmtpdChXZWJDb3JlOjpyZWFkb25seSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvT2JqQ1Rl
c3RTdXBwbGVtZW50YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvT2JqQ1Rlc3RTdXBwbGVtZW50YWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlMzczMjY4MjhmZDI4NmEzMWQxN2JlN2M3NzY2MWQ1MmMyMzQyYjkyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL09iakNUZXN0U3VwcGxlbWVudGFsLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDYgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1c3Qg
dG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgT2JqQ1Rlc3RTdXBwbGVtZW50YWwuaCBhbmQKLSAg
ICBPYmpDVGVzdFN1cHBsZW1lbnRhbC5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RTdXBwbGVtZW50
YWwuaWRsLCBhbmQgdGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlp
bmcgdG8gZ2VuZXJhdGUgT2JqQ1Rlc3RTdXBwbGVtZW50YWwuaCBhbmQKLSAgICBPYmpDVGVzdFN1
cHBsZW1lbnRhbC5jcHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmll
ZCB0byBjb21waWxlLgotKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL09iakNUZXN0U3VwcGxlbWVudGFsLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9PYmpDVGVzdFN1cHBsZW1lbnRhbC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzczMjY4MjhmZDI4NmEzMWQxN2JlN2M3NzY2MWQ1MmMy
MzQyYjkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL09iakNUZXN0U3VwcGxlbWVu
dGFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IE9iakNUZXN0U3VwcGxl
bWVudGFsLmggYW5kCi0gICAgT2JqQ1Rlc3RTdXBwbGVtZW50YWwuY3BwIGFyZSBjcmVhdGVkIGZv
ciBUZXN0U3VwcGxlbWVudGFsLmlkbCwgYW5kIHRodXMKLSAgICBwcmV2ZW50IHRoZSBidWlsZCBz
Y3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIE9iakNUZXN0U3VwcGxlbWVudGFsLmggYW5k
Ci0gICAgT2JqQ1Rlc3RTdXBwbGVtZW50YWwuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUg
bXVzdCBub3QgYmUgdHJpZWQgdG8gY29tcGlsZS4KLSovCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmYyZTQ0MTQzYTVkMGJhNjA0ZDc2YzY4ZDIw
ZWRiY2FlYmE1N2IxNi4uZjNkN2UwZTYyYTJjZjkxZDMzMTY2OTkwZTI5NmE0NWVmYzUxZmQ4OSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE2LTA4LTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBPYmplY3RpdmUtQyBiaW5kaW5ncyBnZW5lcmF0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0
cy9ydW4tYmluZGluZ3MtdGVzdHM6CisgICAgICAgIFVwZGF0ZSB0ZXN0LgorCiAyMDE2LTA4LTAz
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlz
ZSBhIFRlc3RXZWJLaXRBUEkgY29tbWVudCB0byBtZW50aW9uIHRoZSBhY3R1YWwgdW5kZXJseWlu
ZyBwcm9ibGVtCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCmluZGV4IGQzMTZmZTI5MDdhOWRiMmJl
ZTIxZDNmMzNhNjViY2JmOWUzNWExZDEuLmZjMjBhZmVlNTczN2JmZDVmNzA4ZWI1MGZiMTdkMzg4
YjI1YTFjOTIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCisr
KyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCkBAIC00NCw3ICs0NCw2IEBAIGRl
ZiBtYWluKGFyZ3YpOgogCiAgICAgZ2VuZXJhdG9ycyA9IFsKICAgICAgICAgJ0pTJywKLSAgICAg
ICAgJ09iakMnLAogICAgICAgICAnR09iamVjdCcKICAgICBdCiAK
</data>
<flag name="review"
          id="308907"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>